§
    èƒñjjT ã                  ó@'  — d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ d dlT d dlT d dlmZmZ d dlmZmZ d dl m!Z! d dl"Z"d dl#Z#d dl$Z$d dl%Z%d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, dZ-de-z   dz   Z. e%j/        d¦  «        Z0dðd„Z1 e,e1e0¦  «        e0_2         e e%j/        d¦  «        ¬¦  «        Z3d„ Z4d„ Z5 eej6        ¦  «        d„ ¦   «         Z7 eej6        ¦  «        d„ ¦   «         Z8 eej6        ¦  «        d „ ¦   «         Z9 eej6        ¦  «        d!„ ¦   «         Z: eej;        ¦  «        d"„ ¦   «         Z7 eej;        ¦  «        d#„ ¦   «         Z< eej;        ¦  «        dñd&„¦   «         Z9 eej;        ¦  «        d'„ ¦   «         Z: eej=        ¦  «        d(„ ¦   «         Z> eej=        ¦  «        d)„ ¦   «         Z? eej@        ¦  «        d*„ ¦   «         Z> eej@        ¦  «        d+„ ¦   «         Z? eejA        ¦  «        d,„ ¦   «         Z> eejA        ¦  «        d-„ ¦   «         Z? eejB        ¦  «        d.„ ¦   «         Z> eejB        ¦  «        d/„ ¦   «         Z? eejC        ¦  «        d0„ ¦   «         Z> eejC        ¦  «        d1„ ¦   «         Z? eejD        ¦  «        d2„ ¦   «         ZE eejF        ¦  «        d3„ ¦   «         ZG eejH        ¦  «        d4„ ¦   «         Z? eejH        ¦  «        d5„ ¦   «         ZI eejJ        ¦  «        d6„ ¦   «         Z? eejJ        ¦  «        d7„ ¦   «         ZI eejK        ¦  «        d8„ ¦   «         Z? eejL        ¦  «        d9„ ¦   «         ZG eejK        ¦  «        d:„ ¦   «         ZI eejM        ¦  «        d;„ ¦   «         Z? eejM        ¦  «        d<„ ¦   «         ZI eejN        ¦  «        d=„ ¦   «         Z? eejN        ¦  «        d>„ ¦   «         ZI eejO        ¦  «        d?„ ¦   «         Z? eejO        ¦  «        d@„ ¦   «         ZI eej=        ej@        ejA        ejB        ejC        ejH        ejJ        ejK        ejM        ejN        ejO        ¦  «        dA„ ¦   «         ZP eej=        ej@        ejA        ejB        ejC        ejH        ejJ        ejK        ejM        ejN        ejO        ¦  «        dB„ ¦   «         ZQ eej=        ej@        ejA        ejB        ejC        ejR        ejS        ejT        ejU        ¦	  «	        dC„ ¦   «         ZI eej=        ejA        ejC        ¦  «        dD„ ¦   «         ZV eej@        ejB        ejR        ejS        ¦  «        dE„ ¦   «         ZV eejR        ejS        ejT        ejU        ¦  «        dF„ ¦   «         ZW eejR        ejS        ¦  «        dG„ ¦   «         Z> eejR        ejT        ejS        ejU        ¦  «        dH„ ¦   «         Z? eejR        ejS        ejT        ejU        ¦  «        dI„ ¦   «         ZP eejR        ejS        ejT        ejU        ¦  «        dJ„ ¦   «         ZQ eejX        ¦  «        dK„ ¦   «         Z> eejX        ¦  «        dL„ ¦   «         ZV eejX        ejY        ¦  «        dM„ ¦   «         Z? eejX        ejY        ¦  «        dN„ ¦   «         ZI eejX        ejY        ¦  «        dO„ ¦   «         ZP eejX        ejY        ¦  «        dP„ ¦   «         ZQ eejZ        ¦  «        dðdQ„¦   «         Z> eejZ        ¦  «        dR„ ¦   «         Z? eejZ        ¦  «        dS„ ¦   «         ZI eejZ        ¦  «        dT„ ¦   «         ZP eejZ        ¦  «        dU„ ¦   «         ZQ eejZ        ¦  «        dV„ ¦   «         ZV eej[        ¦  «        dW„ ¦   «         Z? eej[        ¦  «        dX„ ¦   «         ZI eej[        ¦  «        dY„ ¦   «         ZP eej[        ¦  «        dZ„ ¦   «         Z\ eej[        ¦  «        d[„ ¦   «         Z] eej^        ¦  «        d\„ ¦   «         ZP eej_        ¦  «        d]„ ¦   «         ZP eej_        ¦  «        d^„ ¦   «         ZQ eej_        ¦  «        d_„ ¦   «         Z` eeja        ¦  «        d`„ ¦   «         ZP eejb        ¦  «        da„ ¦   «         ZP eejc        ¦  «        db„ ¦   «         ZP eejc        ¦  «        dc„ ¦   «         ZQ eejd        ¦  «        dd„ ¦   «         ZP eejd        ¦  «        de„ ¦   «         ZQ eeja        ¦  «        df„ ¦   «         Z` eeja        ¦  «        dg„ ¦   «         Ze eejd        ¦  «        dh„ ¦   «         Z` eejd        ¦  «        di„ ¦   «         Ze eejf        ejg        ¦  «        dj„ ¦   «         Z` eejf        ejg        ¦  «        dk„ ¦   «         Ze eejf        ejg        ¦  «        dl„ ¦   «         Zh eeji        ¦  «        dòdm„¦   «         Z` eeji        ¦  «        dòdn„¦   «         Ze eeji        ¦  «        do„ ¦   «         Zh eejj        ¦  «        dp„ ¦   «         Z` eejj        ¦  «        dq„ ¦   «         Ze eejj        ¦  «        dr„ ¦   «         Zh e ejk        ds¦  «        ¦  «        dt„ ¦   «         Z? e ejk        du¦  «        ¦  «        dv„ ¦   «         Z? e ejk        dw¦  «        ¦  «        dx„ ¦   «         Z? e ejk        dy¦  «        ¦  «        dz„ ¦   «         Z> e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d|„ ¦   «         Z? e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d}„ ¦   «         Zl e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d~„ ¦   «         ZP e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d„ ¦   «         Z\ e ejk        dy¦  «         ejk        d{¦  «        ¦  «        dód€„¦   «         Zm e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d�„ ¦   «         Zn e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d‚„ ¦   «         Zo e ejk        dy¦  «         ejk        d{¦  «        ¦  «        dƒ„ ¦   «         Ze e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d„„ ¦   «         Zp e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d…„ ¦   «         Zq e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d†„ ¦   «         Zr e ejk        dy¦  «         ejk        d{¦  «        ¦  «        d‡„ ¦   «         ZI e ejk        dˆ¦  «        ¦  «        d‰„ ¦   «         Z?dŠ„ Zs e ejk        dˆ¦  «        ¦  «        d‹„ ¦   «         ZI e ejk        dŒ¦  «        ¦  «        d�„ ¦   «         Zq e ejk        dŒ¦  «        ¦  «        dŽ„ ¦   «         Z? e ejk        d�¦  «        ¦  «        d�„ ¦   «         Z? e ejk        d‘¦  «        ¦  «        d’„ ¦   «         Z? e ejk        d“¦  «        ¦  «        d”„ ¦   «         Z? e ejk        d•¦  «        ¦  «        d–„ ¦   «         Z? e ejk        d—¦  «        ¦  «        d˜„ ¦   «         Z> e ejk        d—¦  «        ¦  «        d™„ ¦   «         Z? e ejk        dš¦  «        ¦  «        d›„ ¦   «         Z? e ejk        dœ¦  «        ¦  «        d�„ ¦   «         Zq e ejk        dœ¦  «        ¦  «        dž„ ¦   «         Z?dŸ„ Zt e ejk        d ¦  «        ¦  «        d¡„ ¦   «         Z? e ejk        d¢¦  «        ¦  «        d£„ ¦   «         Z? e ejk        d¤¦  «        ¦  «        d¥„ ¦   «         Z? e ejk        d¦¦  «        ¦  «        d§„ ¦   «         Z? e ejk        d¨¦  «        ¦  «        d©„ ¦   «         Zq e ejk        d¨¦  «        ¦  «        dª„ ¦   «         Z? e ejk        d«¦  «        ¦  «        d¬„ ¦   «         Z?d­„ Zu e ejk        d®¦  «        ¦  «        d¯„ ¦   «         Z> e ejk        d®¦  «        ¦  «        d°„ ¦   «         Z? e ejk        d±¦  «        ¦  «        d²„ ¦   «         ZI eejv        ¦  «        d³„ ¦   «         Z> eejw        ¦  «        d´„ ¦   «         Z> e ejk        dµ¦  «        ¦  «        d¶„ ¦   «         Z? e ejk        dµ¦  «        ¦  «        d·„ ¦   «         Z> e ejk        dµ¦  «        ¦  «        d¸„ ¦   «         ZI e ejk        d¹¦  «        ¦  «        dº„ ¦   «         Z> eejx        ¦  «        d»„ ¦   «         Z? eejy        ¦  «        d¼„ ¦   «         Z? eejz        ¦  «        d½„ ¦   «         Z? eej{        ¦  «        d¾„ ¦   «         Z? eejw        ¦  «        d¿„ ¦   «         Z? e ejk        d¹¦  «        ¦  «        dÀ„ ¦   «         Z? e ej|        dÁ¦  «        j}        ¦  «        dòdÂ„¦   «         Z~ e ejk        dÁ¦  «        ¦  «        dÃ„ ¦   «         Z> e ejk        dÁ¦  «        ¦  «        dÄ„ ¦   «         Zq e ejk        dÁ¦  «        ¦  «        dÅ„ ¦   «         Z? e ejk        dÁ¦  «        ¦  «        dÆ„ ¦   «         ZIdÇ„ ZdôdÉ„Z€ e ejk        dÊ¦  «        ¦  «        dË„ ¦   «         Z>dÌ„ Z� e ejk        dÊ¦  «        ¦  «        dÍ„ ¦   «         Zq e ejk        dÊ¦  «        ¦  «        dÎ„ ¦   «         Z? e ejk        dÏ¦  «        ¦  «        dÐ„ ¦   «         Zq e ejk        dÑ¦  «        ¦  «        dÒ„ ¦   «         Zqh dÓ£Z‚ e ejk        dÔ¦  «        ¦  «        dÕ„ ¦   «         ZIdõdÜ„Zƒ e ejk        dÝ¦  «        ¦  «        dÞ„ ¦   «         ZI G dß„ dàe„¦  «        Z… G dá„ dâe„¦  «        Z† e3dã¦  «        dödä„¦   «         Z‡då„ Zˆdæ„ Z‰ e3dç¦  «        dè„ ¦   «         ZŠdé„ Z‹dê„ ZŒdë„ Z�dì„ ZŽ e3dí¦  «        dðdî„¦   «         Z�g dï¢Z�dS )÷é    )Úannotations)Úconfig)ÚotRound)ÚttLib)ÚotTables)ÚUSE_HARFBUZZ_REPACKER)Ú_compact_layout_tables)Ú
maxCtxFont)ÚNullPen)ÚTimer)ÚmakeOutputFileName)Ú_add_methodÚ
_uniq_sort)Ú*)ÚvarStoreÚmultiVarStore)ÚNameRecordVisitorÚmakeName)ÚmirroredN)ÚCounterÚdefaultdict)Úreduce)Ú
MethodTypez9fonttools subset font-file [glyph...] [--option=value]...a$  fonttools subset -- OpenType font subsetter and optimizer

fonttools subset is an OpenType font subsetter and optimizer, based on
fontTools. It accepts any TT- or CFF-flavored OpenType (.otf or .ttf)
or WOFF (.woff) font file. The subsetted glyph set is based on the
specified glyphs or characters, and specified OpenType layout features.

The tool also performs some size-reducing optimizations, aimed for using
subset fonts as webfonts.  Individual optimizations can be enabled or
disabled, and are enabled by default when they are safe.

Usage: a6:  

At least one glyph or one of --gids, --gids-file, --glyphs, --glyphs-file,
--text, --text-file, --unicodes, or --unicodes-file, must be specified.

Args:

font-file
  The input font file.
glyph
  Specify one or more glyph identifiers to include in the subset. Must be
  PS glyph names, or the special string '*' to keep the entire glyph set.

Initial glyph set specification
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

These options populate the initial glyph set. Same option can appear
multiple times, and the results are accummulated.

--gids=<NNN>[,<NNN>...]
  Specify comma/whitespace-separated list of glyph IDs or ranges as decimal
  numbers.  For example, --gids=10-12,14 adds glyphs with numbers 10, 11,
  12, and 14.

--gids-file=<path>
  Like --gids but reads from a file. Anything after a '#' on any line is
  ignored as comments.

--glyphs=<glyphname>[,<glyphname>...]
  Specify comma/whitespace-separated PS glyph names to add to the subset.
  Note that only PS glyph names are accepted, not gidNNN, U+XXXX, etc
  that are accepted on the command line.  The special string '*' will keep
  the entire glyph set.

--glyphs-file=<path>
  Like --glyphs but reads from a file. Anything after a '#' on any line
  is ignored as comments.

--text=<text>
  Specify characters to include in the subset, as UTF-8 string.

--text-file=<path>
  Like --text but reads from a file. Newline character are not added to
  the subset.

--unicodes=<XXXX>[,<XXXX>...]
  Specify comma/whitespace-separated list of Unicode codepoints or
  ranges as hex numbers, optionally prefixed with 'U+', 'u', etc.
  For example, --unicodes=41-5a,61-7a adds ASCII letters, so does
  the more verbose --unicodes=U+0041-005A,U+0061-007A.
  The special strings '*' will choose all Unicode characters mapped
  by the font.

--unicodes-file=<path>
  Like --unicodes, but reads from a file. Anything after a '#' on any
  line in the file is ignored as comments.

--ignore-missing-glyphs
  Do not fail if some requested glyphs or gids are not available in
  the font.

--no-ignore-missing-glyphs
  Stop and fail if some requested glyphs or gids are not available
  in the font. [default]

--ignore-missing-unicodes [default]
  Do not fail if some requested Unicode characters (including those
  indirectly specified using --text or --text-file) are not available
  in the font.

--no-ignore-missing-unicodes
  Stop and fail if some requested Unicode characters are not available
  in the font.
  Note the default discrepancy between ignoring missing glyphs versus
  unicodes.  This is for historical reasons and in the future
  --no-ignore-missing-unicodes might become default.

Other options
^^^^^^^^^^^^^

For the other options listed below, to see the current value of the option,
pass a value of '?' to it, with or without a '='. In some environments,
you might need to escape the question mark, like this: '--glyph-names\?'.

Examples::

    $ fonttools subset --glyph-names?
    Current setting for 'glyph-names' is: False
    $ fonttools subset --name-IDs=?
    Current setting for 'name-IDs' is: [0, 1, 2, 3, 4, 5, 6]
    $ fonttools subset --hinting? --no-hinting --hinting?
    Current setting for 'hinting' is: True
    Current setting for 'hinting' is: False

Output options
^^^^^^^^^^^^^^

--output-file=<path>
  The output font file. If not specified, the subsetted font
  will be saved in as font-file.subset.

--flavor=<type>
  Specify flavor of output font file. May be 'woff' or 'woff2', or
  'none' (case-insensitive) for uncompressed OpenType. By default,
  the flavor of the input font is preserved.
  Note that WOFF2 requires the Brotli Python extension, available
  at https://github.com/google/brotli

--with-zopfli
  Use the Google Zopfli algorithm to compress WOFF. The output is 3-8 %
  smaller than pure zlib, but the compression speed is much slower.
  The Zopfli Python bindings are available at:
  https://pypi.python.org/pypi/zopfli

--harfbuzz-repacker
  By default, we serialize GPOS/GSUB using the HarfBuzz Repacker when
  uharfbuzz can be imported and is successful, otherwise fall back to
  the pure-python serializer. Set the option to force using the HarfBuzz
  Repacker (raises an error if uharfbuzz can't be found or fails).

--no-harfbuzz-repacker
  Always use the pure-python serializer even if uharfbuzz is available.

Glyph set expansion
^^^^^^^^^^^^^^^^^^^

These options control how additional glyphs are added to the subset.

--retain-gids
  Retain glyph indices; just empty glyphs not needed in-place.

--notdef-glyph
  Add the '.notdef' glyph to the subset (ie, keep it). [default]

--no-notdef-glyph
  Drop the '.notdef' glyph unless specified in the glyph set. This
  saves a few bytes, but is not possible for Postscript-flavored
  fonts, as those require '.notdef'. For TrueType-flavored fonts,
  this works fine as long as no unsupported glyphs are requested
  from the font.

--notdef-outline
  Keep the outline of '.notdef' glyph. The '.notdef' glyph outline is
  used when glyphs not supported by the font are to be shown. It is not
  needed otherwise.

--no-notdef-outline
  When including a '.notdef' glyph, remove its outline. This saves
  a few bytes. [default]

--recommended-glyphs
  Add glyphs 0, 1, 2, and 3 to the subset, as recommended for
  TrueType-flavored fonts: '.notdef', 'NULL' or '.null', 'CR', 'space'.
  Some legacy software might require this, but no modern system does.

--no-recommended-glyphs
  Do not add glyphs 0, 1, 2, and 3 to the subset, unless specified in
  glyph set. [default]

--no-layout-closure
  Do not expand glyph set to add glyphs produced by OpenType layout
  features.  Instead, OpenType layout features will be subset to only
  rules that are relevant to the otherwise-specified glyph set.

--layout-features[+|-]=<feature>[,<feature>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of OpenType layout feature tags that will be preserved.
  Glyph variants used by the preserved features are added to the
  specified subset glyph set. By default, 'calt', 'ccmp', 'clig', 'curs',
  'dnom', 'frac', 'kern', 'liga', 'locl', 'mark', 'mkmk', 'numr', 'rclt',
  'rlig', 'rvrn', and all features required for script shaping are
  preserved. To see the full list, try '--layout-features=?'.
  Use '*' to keep all features.
  Multiple --layout-features options can be provided if necessary.
  Examples:

    --layout-features+=onum,pnum,ss01
        * Keep the default set of features and 'onum', 'pnum', 'ss01'.
    --layout-features-='mark','mkmk'
        * Keep the default set of features but drop 'mark' and 'mkmk'.
    --layout-features='kern'
        * Only keep the 'kern' feature, drop all others.
    --layout-features=''
        * Drop all features.
    --layout-features='*'
        * Keep all features.
    --layout-features+=aalt --layout-features-=vrt2
        * Keep default set of features plus 'aalt', but drop 'vrt2'.

--layout-scripts[+|-]=<script>[,<script>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of OpenType layout script tags that will be preserved. LangSys tags
  can be appended to script tag, separated by '.', for example:
  'arab.dflt,arab.URD,latn.TRK'. By default all scripts are retained ('*').

Hinting options
^^^^^^^^^^^^^^^

--hinting
  Keep hinting [default]

--no-hinting
  Drop glyph-specific hinting and font-wide hinting tables, as well
  as remove hinting-related bits and pieces from other tables (eg. GPOS).
  See --hinting-tables for list of tables that are dropped by default.
  Instructions and hints are stripped from 'glyf' and 'CFF ' tables
  respectively. This produces (sometimes up to 30%) smaller fonts that
  are suitable for extremely high-resolution systems, like high-end
  mobile devices and retina displays.

Optimization options
^^^^^^^^^^^^^^^^^^^^

--desubroutinize
  Remove CFF use of subroutinizes.  Subroutinization is a way to make CFF
  fonts smaller.  For small subsets however, desubroutinizing might make
  the font smaller.  It has even been reported that desubroutinized CFF
  fonts compress better (produce smaller output) WOFF and WOFF2 fonts.
  Also see note under --no-hinting.

--no-desubroutinize [default]
  Leave CFF subroutinizes as is, only throw away unused subroutinizes.

Font table options
^^^^^^^^^^^^^^^^^^

--drop-tables[+|-]=<table>[,<table>...]
  Specify (=), add to (+=) or exclude from (-=) the comma-separated
  set of tables that will be be dropped.
  By default, the following tables are dropped:
  'JSTF', 'DSIG', 'EBDT', 'EBLC', 'EBSC', 'PCLT', 'LTSH'
  and Graphite tables: 'Feat', 'Glat', 'Gloc', 'Silf', 'Sill'.
  The tool will attempt to subset the remaining tables.

  Examples:

  --drop-tables-=BASE
      * Drop the default set of tables but keep 'BASE'.

  --drop-tables+=GSUB
      * Drop the default set of tables and 'GSUB'.

  --drop-tables=DSIG
      * Only drop the 'DSIG' table, keep all others.

  --drop-tables=
      * Keep all tables.

--no-subset-tables+=<table>[,<table>...]
  Add to the set of tables that will not be subsetted.
  By default, the following tables are included in this list, as
  they do not need subsetting (ignore the fact that 'loca' is listed
  here): 'gasp', 'head', 'hhea', 'maxp', 'vhea', 'OS/2', 'loca', 'name',
  'cvt ', 'fpgm', 'prep', 'VMDX', 'DSIG', 'CPAL', 'MVAR', 'cvar', 'STAT'.
  By default, tables that the tool does not know how to subset and are not
  specified here will be dropped from the font, unless --passthrough-tables
  option is passed.

  Example:

   --no-subset-tables+=FFTM
      * Keep 'FFTM' table in the font by preventing subsetting.

--passthrough-tables
  Do not drop tables that the tool does not know how to subset.

--no-passthrough-tables
  Tables that the tool does not know how to subset and are not specified
  in --no-subset-tables will be dropped from the font. [default]

--hinting-tables[-]=<table>[,<table>...]
  Specify (=), add to (+=) or exclude from (-=) the list of font-wide
  hinting tables that will be dropped if --no-hinting is specified.

  Examples:

  --hinting-tables-=VDMX
      * Drop font-wide hinting tables except 'VDMX'.
  --hinting-tables=
      * Keep all font-wide hinting tables (but strip hints from glyphs).

--legacy-kern
  Keep TrueType 'kern' table even when OpenType 'GPOS' is available.

--no-legacy-kern
  Drop TrueType 'kern' table if OpenType 'GPOS' is available. [default]

Font naming options
^^^^^^^^^^^^^^^^^^^

These options control what is retained in the 'name' table. For numerical
codes, see: http://www.microsoft.com/typography/otspec/name.htm

--name-IDs[+|-]=<nameID>[,<nameID>...]
  Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
  entry nameIDs that will be preserved. By default, only nameIDs between 0
  and 6 are preserved, the rest are dropped. Use '*' to keep all entries.

  Examples:

  --name-IDs+=7,8,9
      * Also keep Trademark, Manufacturer and Designer name entries.
  --name-IDs=
      * Drop all 'name' table entries.
  --name-IDs=*
      * keep all 'name' table entries

--name-legacy
  Keep legacy (non-Unicode) 'name' table entries (0.x, 1.x etc.).
  XXX Note: This might be needed for some fonts that have no Unicode name
  entires for English. See: https://github.com/fonttools/fonttools/issues/146

--no-name-legacy
  Drop legacy (non-Unicode) 'name' table entries [default]

--name-languages[+|-]=<langID>[,<langID>]
  Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
  langIDs that will be preserved. By default only records with langID
  0x0409 (English) are preserved. Use '*' to keep all langIDs.

--obfuscate-names
  Make the font unusable as a system font by replacing name IDs 1, 2, 3, 4,
  and 6 with dummy strings (it is still fully functional as webfont).

Glyph naming and encoding options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

--glyph-names
  Keep PS glyph names in TT-flavored fonts. In general glyph names are
  not needed for correct use of the font. However, some PDF generators
  and PDF viewers might rely on glyph names to extract Unicode text
  from PDF documents.
--no-glyph-names
  Drop PS glyph names in TT-flavored fonts, by using 'post' table
  version 3.0. [default]
--legacy-cmap
  Keep the legacy 'cmap' subtables (0.x, 1.x, 4.x etc.).
--no-legacy-cmap
  Drop the legacy 'cmap' subtables. [default]
--symbol-cmap
  Keep the 3.0 symbol 'cmap'.
--no-symbol-cmap
  Drop the 3.0 symbol 'cmap'. [default]

Other font-specific options
^^^^^^^^^^^^^^^^^^^^^^^^^^^

--recalc-bounds
    Recalculate font bounding boxes.
--no-recalc-bounds
    Keep original font bounding boxes. This is faster and still safe
    for all practical purposes. [default]
--recalc-timestamp
    Set font 'modified' timestamp to current time.
--no-recalc-timestamp
    Do not modify font 'modified' timestamp. [default]
--canonical-order
    Order tables as recommended in the OpenType standard. This is not
    required by the standard, nor by any known implementation.
--no-canonical-order
    Keep original order of font tables. This is faster. [default]
--prune-unicode-ranges
    Update the 'OS/2 ulUnicodeRange*' bits after subsetting. The Unicode
    ranges defined in the OpenType specification v1.7 are intersected with
    the Unicode codepoints specified in the font's Unicode 'cmap' subtables:
    when no overlap is found, the bit will be switched off. However, it will
    *not* be switched on if an intersection is found.  [default]
--no-prune-unicode-ranges
    Don't change the 'OS/2 ulUnicodeRange*' bits.
--prune-codepage-ranges
    Update the 'OS/2 ulCodePageRange*' bits after subsetting.  [default]
--no-prune-codepage-ranges
    Don't change the 'OS/2 ulCodePageRange*' bits.
--recalc-average-width
    Update the 'OS/2 xAvgCharWidth' field after subsetting.
--no-recalc-average-width
    Don't change the 'OS/2 xAvgCharWidth' field. [default]
--recalc-max-context
    Update the 'OS/2 usMaxContext' field after subsetting.
--no-recalc-max-context
    Don't change the 'OS/2 usMaxContext' field. [default]
--font-number=<number>
    Select font number for TrueType Collection (.ttc/.otc), starting from 0.
--pretty-svg
    When subsetting SVG table, use lxml pretty_print=True option to indent
    the XML output (only recommended for debugging purposes).

Application options
^^^^^^^^^^^^^^^^^^^

--verbose
    Display verbose information of the subsetting process.
--timing
    Display detailed timing information of the subsetting process.
--xml
    Display the TTX XML representation of subsetted font.

Example
^^^^^^^

Produce a subset containing the characters ' !"#$%' without performing
size-reducing optimizations::

  $ fonttools subset font.ttf --unicodes="U+0020-0025" \
    --layout-features=* --glyph-names --symbol-cmap --legacy-cmap \
    --notdef-glyph --notdef-outline --recommended-glyphs \
    --name-IDs=* --name-legacy --name-languages=*
zfontTools.subsetc                óÜ   ‡— |                       dt          |¦  «        ¦  «         |rE|                     ¦   «         Š|                       dt          ˆfd„|D ¦   «         ¦  «        ¦  «         d S d S )NzGlyph names: %szGlyph IDs:   %sc              3  ó(   •K  — | ]}‰|         V — Œd S ©N© )Ú.0ÚgÚreverseGlyphMaps     €úX/data/share/cad/hardware/.venv/lib/python3.11/site-packages/fontTools/subset/__init__.pyú	<genexpr>z_log_glyphs.<locals>.<genexpr>Ò  s(   øè è € Ð+OÐ+OÀ1¨O¸AÔ,>Ð+OÐ+OÐ+OÐ+OÐ+OÐ+Oó    )ÚinfoÚsortedÚgetReverseGlyphMap)ÚselfÚglyphsÚfontr    s      @r!   Ú_log_glyphsr*   Î  s|   ø€ Ø‡I‚IÐ¥¨¡¤Ñ0Ô0Ð0Øð QØ×1Ò1Ñ3Ô3ˆØ�	Š	Ð#¥VÐ+OÐ+OÐ+OÐ+OÈÐ+OÑ+OÔ+OÑ%OÔ%OÑPÔPÐPÐPÐPðQð Qr#   zfontTools.subset.timer)Úloggerc                ó    ‡ — ˆ fd„|D ¦   «         S )Nc                ó"   •— i | ]}|‰|         “ŒS r   r   )r   r   Úds     €r!   ú
<dictcomp>z _dict_subset.<locals>.<dictcomp>Þ  s   ø€ Ð$Ð$Ð$˜ˆAˆq�ŒtÐ$Ð$Ð$r#   r   )r.   r(   s   ` r!   Ú_dict_subsetr0   Ý  s   ø€ Ø$Ð$Ð$Ð$˜VÐ$Ñ$Ô$Ð$r#   c                óB   ‡ ‡— t          ‰ ¦  «        Šˆˆ fd„|D ¦   «         S )Nc                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   ÚiÚcountÚls     €€r!   ú
<listcomp>z _list_subset.<locals>.<listcomp>ã  s"   ø€ Ð/Ð/Ð/�Q Q¨¢Y YˆAˆaŒD Y Y Yr#   ©Úlen)r5   Úindicesr4   s   ` @r!   Ú_list_subsetr:   á  s,   øø€ Ý�‰FŒF€EØ/Ð/Ð/Ð/Ð/˜'Ð/Ñ/Ô/Ð/r#   c                óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )z3Returns ascending list of matching coverage values.c                ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   )r   r3   r   r(   s      €r!   r6   zintersect.<locals>.<listcomp>é  s"   ø€ Ð@Ð@Ð@‘$�!�Q°A¸°K°KˆA°K°K°Kr#   )Ú	enumerater(   ©r'   r(   s    `r!   Ú	intersectr?   æ  s*   ø€ ð AÐ@Ð@Ð@�) D¤KÑ0Ô0Ð@Ñ@Ô@Ð@r#   c                óD   ‡— t          ˆfd„| j        D ¦   «         ¦  «        S )z#Returns set of intersecting glyphs.c              3  ó$   •K  — | ]
}|‰v ¯|V — Œd S r   r   ©r   r   r(   s     €r!   r"   z#intersect_glyphs.<locals>.<genexpr>ï  s'   øè è € Ð5Ð5�Q¨¨f¨¨ˆq¨¨¨¨Ð5Ð5r#   )Úsetr(   r>   s    `r!   Úintersect_glyphsrD   ì  s*   ø€ õ Ð5Ð5Ð5Ð5˜$œ+Ð5Ñ5Ô5Ñ5Ô5Ð5r#   c                ób   ‡— |                       ‰¦  «        }ˆfd„| j        D ¦   «         | _        |S )z4Returns ascending list of remaining coverage values.c                ó   •— g | ]}|‰v ¯|‘Œ	S r   r   rB   s     €r!   r6   zsubset.<locals>.<listcomp>ö  s   ø€ Ð9Ð9Ð9˜¨Q°&¨[¨[�1¨[¨[¨[r#   ©r?   r(   )r'   r(   r9   s    ` r!   ÚsubsetrH   ò  s8   ø€ ð �nŠn˜VÑ$Ô$€GØ9Ð9Ð9Ð9˜dœkÐ9Ñ9Ô9€D„KØ€Nr#   c                ó.   ‡ — ˆ fd„|D ¦   «         ‰ _         dS )zRemaps coverage.c                ó*   •— g | ]}‰j         |         ‘ŒS r   ©r(   ©r   r3   r'   s     €r!   r6   zremap.<locals>.<listcomp>ý  s   ø€ Ð8Ð8Ð8 a�4”;˜q”>Ð8Ð8Ð8r#   NrK   )r'   Úcoverage_maps   ` r!   ÚremaprN   ú  s$   ø€ ð 9Ð8Ð8Ð8¨<Ð8Ñ8Ô8€D„K€K€Kr#   c                ó¬   ‡ ‡— t          t          ˆ fd„‰D ¦   «         ¦  «        rdgng ˆfd„‰ j                             ¦   «         D ¦   «         z   ¦  «        S )z0Returns ascending list of matching class values.c              3  ó*   •K  — | ]}|‰j         vV — Œd S r   ©Ú	classDefs©r   r   r'   s     €r!   r"   zintersect.<locals>.<genexpr>  s*   øè è € Ð<Ð<°�A˜Tœ^Ð+Ð<Ð<Ð<Ð<Ð<Ð<r#   r   c                ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   ©r   r   Úvr(   s      €r!   r6   zintersect.<locals>.<listcomp>  s"   ø€ Ð
?Ð
?Ð
?‘��A°1¸°;°;ˆ1°;°;°;r#   )r   ÚanyrR   Úitemsr>   s   ``r!   r?   r?      sn   øø€ õ ÝÐ<Ð<Ð<Ð<°VÐ<Ñ<Ô<Ñ<Ô<Ð	Dˆ!ˆˆÀ"Ø
?Ð
?Ð
?Ð
?˜œ×-Ò-Ñ/Ô/Ð
?Ñ
?Ô
?ñ	@ñô ð r#   c                ó°   ‡ ‡‡— ‰dk    rt          ˆ fd„‰D ¦   «         ¦  «        S t          ˆˆfd„‰ j                             ¦   «         D ¦   «         ¦  «        S )z%Returns set of glyphs matching class.r   c              3  ó.   •K  — | ]}|‰j         v¯|V — Œd S r   rQ   rS   s     €r!   r"   z"intersect_class.<locals>.<genexpr>  s/   øè è € Ð@Ð@˜¨°´Ð(?Ð(?�1Ð(?Ð(?Ð(?Ð(?Ð@Ð@r#   c              3  ó6   •K  — | ]\  }}|‰k    ¯|‰v ¯|V — Œd S r   r   )r   r   rV   r(   Úklasss      €€r!   r"   z"intersect_class.<locals>.<genexpr>  s3   øè è € ÐRÐR‘T�Q˜°q¸E²z°zÀaÈ6ÀkÀkˆqÀkÀkÀkÀkÐRÐRr#   )rC   rR   rX   )r'   r(   r\   s   ```r!   Úintersect_classr]   	  sg   øøø€ ð �‚z€zÝÐ@Ð@Ð@Ð@˜fÐ@Ñ@Ô@Ñ@Ô@Ð@ÝÐRÐRÐRÐRÐR˜Tœ^×1Ò1Ñ3Ô3ÐRÑRÔRÑRÔRÐRr#   FTc                ó8  ‡ ‡— ˆfd„‰ j                              ¦   «         D ¦   «         ‰ _         t          |rt          ˆ fd„‰D ¦   «         ¦  «        rdgng t	          ‰ j                              ¦   «         ¦  «        z   ¦  «        }|r‰                      |¦  «         |S )z,Returns ascending list of remaining classes.c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rU   s      €r!   r/   zsubset.<locals>.<dictcomp>  s$   ø€ ÐMÐMÐM™t˜q !ÀÀfÀÀ�a˜ÀÀÀr#   c              3  ó*   •K  — | ]}|‰j         vV — Œd S r   rQ   rS   s     €r!   r"   zsubset.<locals>.<genexpr>  s*   øè è € Ð&OÐ&OÀ1 q°´Ð'>Ð&OÐ&OÐ&OÐ&OÐ&OÐ&Or#   r   )rR   rX   r   rW   ÚlistÚvaluesrN   )r'   r(   rN   Ú	useClass0r9   s   ``   r!   rH   rH     s¸   øø€ ð NÐMÐMÐM t¤~×';Ò';Ñ'=Ô'=ÐMÑMÔM€D„Nõ ð ðÝ#&Ð&OÐ&OÐ&OÐ&OÈÐ&OÑ&OÔ&OÑ#OÔ#OðˆQˆCˆCàå
ˆtŒ~×$Ò$Ñ&Ô&Ñ
'Ô
'ñ	(ñô €Gð ð Ø�
Š
�7ÑÔÐØ€Nr#   c                ó\   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         dS )zRemaps classes.c                óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r   ©Úindex)r   r   rV   Ú	class_maps      €r!   r/   zremap.<locals>.<dictcomp>(  s+   ø€ ÐOÐOÐO±°°1�a˜Ÿš¨Ñ+Ô+ÐOÐOÐOr#   N)rR   rX   )r'   rh   s    `r!   rN   rN   %  s3   ø€ ð PÐOÐOÐO¸¼×8LÒ8LÑ8NÔ8NÐOÑOÔO€D„N€N€Nr#   c                ó‚   ‡— |j                              ˆfd„| j                             ¦   «         D ¦   «         ¦  «         d S )Nc              3  ó*   •K  — | ]\  }}|‰v ¯	|V — Œd S r   r   )r   r   rV   Ú
cur_glyphss      €r!   r"   z!closure_glyphs.<locals>.<genexpr>-  s+   øè è € ÐJÐJ™$˜!˜Q¸!¸z¸/¸/�A¸/¸/¸/¸/ÐJÐJr#   )r(   ÚupdateÚmappingrX   ©r'   Úsrk   s     `r!   Úclosure_glyphsrp   +  s@   ø€ à„H‡O‚OÐJÐJÐJÐJ $¤,×"4Ò"4Ñ"6Ô"6ÐJÑJÔJÑJÔJÐJÐJÐJr#   c                ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                ó@   •— i | ]\  }}|‰j         v ¯|‰j         v ¯||“ŒS r   rK   ©r   r   rV   ro   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>2  s7   ø€ ð ð ð Ù��A°°a´h°°À1ÈÌÀ=À=ˆˆ1À=À=À=r#   ©rm   rX   Úbool©r'   ro   s    `r!   Úsubset_glyphsrw   0  sM   ø€ ðð ð ð Øœ×+Ò+Ñ-Ô-ðñ ô €D„Lõ �”ÑÔÐr#   c                ó€   — | j                              ¦   «         D ]#\  }}||v r|j                             |¦  «         Œ$d S r   )rm   rX   r(   rl   )r'   ro   rk   ÚglyphÚsubsts        r!   rp   rp   8  sM   € àœ×*Ò*Ñ,Ô,ð #ð #‰ˆˆuØ�JÐÐØŒH�OŠO˜EÑ"Ô"Ð"øð#ð #r#   c                ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                ód   •— i | ],\  }}|‰j         v ¯t          ˆfd „|D ¦   «         ¦  «        ¯)||“Œ-S )c              3  ó*   •K  — | ]}|‰j         v V — Œd S r   rK   )r   Úsubro   s     €r!   r"   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>D  s)   øè è € Ð >Ð >°S ¨¬ Ð >Ð >Ð >Ð >Ð >Ð >r#   )r(   Úallrs   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>A  sS   ø€ ð ð ð áˆAˆqØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸AÐ >Ñ >Ô >Ñ>Ô>ˆ=ð 	
ˆ1àˆ=ˆ=r#   rt   rv   s    `r!   rw   rw   ?  sM   ø€ ðð ð ð à”L×&Ò&Ñ(Ô(ðñ ô €D„Lõ
 �”ÑÔÐr#   c                ól   ‡—  |j         j        ˆfd„| j                             ¦   «         D ¦   «         Ž  d S )Nc              3  ó*   •K  — | ]\  }}|‰v ¯	|V — Œd S r   r   )r   r   Úvlistrk   s      €r!   r"   z!closure_glyphs.<locals>.<genexpr>K  s+   øè è € ÐWÐW¡  5ÀqÈJÀÀ�eÀÀÀÀÐWÐWr#   )r(   rl   Ú
alternatesrX   rn   s     `r!   rp   rp   I  s=   ø€ à€A„H„OÐWÐWÐWÐW¨D¬O×,AÒ,AÑ,CÔ,CÐWÑWÔWÐXÐXÐXÐXr#   c                ó€   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                ó|   •— i | ]8\  }}|‰j         v ¯t          ˆfd „|D ¦   «         ¦  «        ¯)|ˆfd„|D ¦   «         “Œ9S )c              3  ó*   •K  — | ]}|‰j         v V — Œd S r   rK   ©r   rV   ro   s     €r!   r"   z+subset_glyphs.<locals>.<dictcomp>.<genexpr>S  s)   øè è € Ð >Ð >°1  a¤h Ð >Ð >Ð >Ð >Ð >Ð >r#   c                ó&   •— g | ]}|‰j         v ¯|‘ŒS r   rK   r‡   s     €r!   r6   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>Q  s    ø€ Ð.Ð.Ð.�!  Q¤X  ˆA   r#   )r(   rW   )r   r   r‚   ro   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>P  sh   ø€ ð ð ð áˆAˆuØ�”ˆ=ˆ=�SÐ >Ð >Ð >Ð >¸Ð >Ñ >Ô >Ñ>Ô>ˆ=ð 	
Ð.Ð.Ð.Ð.�uÐ.Ñ.Ô.àˆ=ˆ=r#   )rƒ   rX   ru   rv   s    `r!   rw   rw   N  sM   ø€ ðð ð ð àœ×-Ò-Ñ/Ô/ðñ ô €D„Oõ
 �”Ñ Ô Ð r#   c                óp   ‡‡—  ‰j         j        ˆˆfd„| j                             ¦   «         D ¦   «         Ž  d S )Nc              3  óB   •K  — | ]\  }}|‰v ¯	ˆfd „|D ¦   «         V — ŒdS )c                ó^   •— g | ])}t          ˆfd „|j        D ¦   «         ¦  «        ¯"|j        ‘Œ*S )c              3  ó*   •K  — | ]}|‰j         v V — Œd S r   rK   ©r   Úcro   s     €r!   r"   z6closure_glyphs.<locals>.<genexpr>.<listcomp>.<genexpr>\  s)   øè è € Ð0VÐ0VÀ1°°a´h°Ð0VÐ0VÐ0VÐ0VÐ0VÐ0Vr#   )r   Ú	ComponentÚLigGlyph©r   Úseqro   s     €r!   r6   z,closure_glyphs.<locals>.<genexpr>.<listcomp>\  s?   ø€ ÐWÐWÐW˜c­SÐ0VÐ0VÐ0VÐ0VÈÌÐ0VÑ0VÔ0VÑ-VÔ-VÐWˆSŒ\ÐWÐWÐWr#   Nr   )r   r   Úseqsrk   ro   s      €€r!   r"   z!closure_glyphs.<locals>.<genexpr>[  sN   øè è € ð 

ð 

á��4Ø�Jˆˆð XÐWÐWÐW TÐWÑWÔWàˆˆˆð

ð 

r#   )r(   rl   Ú	ligaturesrX   rn   s    ``r!   rp   rp   X  sZ   øø€ à€A„H„Oð

ð 

ð 

ð 

ð 

àœ>×/Ò/Ñ1Ô1ð

ñ 

ô 

ðð ð ð r#   c                ó$  ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         ˆfd„| j                              ¦   «         D ¦   «         | _         d„ | j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        S )Nc                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   rK   rs   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>e  s&   ø€ ÐOÐOÐO™t˜q !ÀÀaÄhÀÀ�a˜ÀÀÀr#   c                ó4   •— i | ]\  }}|ˆfd „|D ¦   «         “ŒS )c                óp   •— g | ]2}|j         ‰j        v ¯t          ˆfd „|j        D ¦   «         ¦  «        ¯0|‘Œ3S )c              3  ó*   •K  — | ]}|‰j         v V — Œd S r   rK   r�   s     €r!   r"   z6subset_glyphs.<locals>.<dictcomp>.<listcomp>.<genexpr>j  s)   øè è € Ð/UÐ/UÀ!°°Q´X°Ð/UÐ/UÐ/UÐ/UÐ/UÐ/Ur#   )r�   r(   r   r�   r‘   s     €r!   r6   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>g  sV   ø€ ð 
ð 
ð 
àØŒ|˜qœxÐ'Ð'­CÐ/UÐ/UÐ/UÐ/UÀsÄ}Ð/UÑ/UÔ/UÑ,UÔ,UÐ'ð à'Ð'Ð'r#   r   )r   r   r“   ro   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>f  sU   ø€ ð ð ð ñ ˆAˆtð 	
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ðð ð r#   c                ó   — i | ]
\  }}|¯||“ŒS r   r   )r   r   rV   s      r!   r/   z!subset_glyphs.<locals>.<dictcomp>n  s#   € ÐCÐCÐC™t˜q !ÀÐC�a˜ÐCÐCÐCr#   )r”   rX   ru   rv   s    `r!   rw   rw   c  sœ   ø€ àOÐOÐOÐO t¤~×';Ò';Ñ'=Ô'=ÐOÑOÔO€D„Nðð ð ð ð ”~×+Ò+Ñ-Ô-ðñ ô €D„Nð DÐC t¤~×';Ò';Ñ'=Ô'=ÐCÑCÔC€D„NÝ�”ÑÔÐr#   c                ó  ‡ ‡— ‰ j         dk    rn‰ j                             |¦  «        }|r(t          ˆfd„‰ j        ‰ j        z   D ¦   «         ¦  «        sd S ‰j                             ˆ fd„|D ¦   «         ¦  «         d S J d‰ j         z  ¦   «         ‚)Né   c              3  óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r   rG   r�   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>v  sE   øè è € ð "
ð "
àð �KŠK˜œÑ!Ô!ð"
ð "
ð "
ð "
ð "
ð "
r#   c              3  ó2   •K  — | ]}‰j         |         V — Œd S r   )Ú
SubstituterL   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>{  s*   øè è € Ð<Ð<¨q˜œ¨Ô*Ð<Ð<Ð<Ð<Ð<Ð<r#   r   úunknown format: %s)ÚFormatÚCoverager?   r   ÚLookAheadCoverageÚBacktrackCoverager(   rl   )r'   ro   rk   r9   s   ``  r!   rp   rp   r  s¼   øø€ à„{�aÒÐØ”-×)Ò)¨*Ñ5Ô5ˆØð 	�cð "
ð "
ð "
ð "
àÔ+¨dÔ.DÑDð"
ñ "
ô "
ñ 
ô 
ð 	ð ˆFØ	Œ�ŠÐ<Ð<Ð<Ð<°GÐ<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ó  ‡— | j         dk    râ| j                             ‰j        ¦  «        }t	          | j        |¦  «        | _        ˆfd„t          | j        ¦  «        D ¦   «         }t	          | j        |¦  «        | _        | j                             |¦  «         t          | j        ¦  «        | _	        t          | j	        o't          ˆfd„| j        | j        z   D ¦   «         ¦  «        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   c                ó,   •— g | ]\  }}|‰j         v ¯|‘ŒS r   rK   )r   r3   r~   ro   s      €r!   r6   z!subset_glyphs.<locals>.<listcomp>†  s$   ø€ ÐQÐQÐQ™˜˜CÀÈÌÀÀ�1ÀÀÀr#   c              3  óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r   ©rH   r(   r�   s     €r!   r"   z subset_glyphs.<locals>.<genexpr>Œ  sE   øè è € ð ð àð —’˜œÑ"Ô"ðð ð ð ð ð r#   r   r    )r¡   r¢   rH   r(   r:   rŸ   r=   rN   r8   Ú
GlyphCountru   r   r£   r¤   ©r'   ro   r9   s    ` r!   rw   rw   €  s	  ø€ à„{�aÒÐØ”-×&Ò& q¤xÑ0Ô0ˆÝ& t¤¸Ñ@Ô@ˆŒàQÐQÐQÐQ¥9¨T¬_Ñ#=Ô#=ÐQÑQÔQˆÝ& t¤¸Ñ@Ô@ˆŒØŒ×Ò˜GÑ$Ô$Ð$Ý˜dœoÑ.Ô.ˆŒÝØŒOð Ýð ð ð ð àÔ/°$Ô2HÑHðñ ô ñ ô ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ó   — | j         dv S )N©rœ   é   é   )ÚDeltaFormat©r'   s    r!   Ú
is_hintingr±   •  s   € àÔ˜yÐ(Ð(r#   c                ó~   — dD ]9}t          | |d ¦  «        }|�$|                     ¦   «         rt          | |¦  «         Œ:d S )N)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDevice)Úgetattrr±   Údelattr©r'   ÚnamerV   s      r!   Úprune_hintsr»   š  sN   € àHð  ð  ˆÝ�D˜$ Ñ%Ô%ˆØˆ=˜QŸ\š\™^œ^ˆ=Ý�D˜$ÑÔÐøð ð  r#   c                óš  ‡‡— | j         dk    r,t          | j                             |j        ¦  «        ¦  «        S | j         dk    rv| j                             |j        ¦  «        }| j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         | _        t          | j        ¦  «        | _        t          | j        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   r­   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r3   r4   rb   s     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>ª  s"   ø€ Ð>Ð>Ð> A°A¸²I°I�f˜Q”i°I°I°Ir#   r   r    )r¡   r8   r¢   rH   r(   ÚValueÚ
ValueCountru   )r'   ro   r9   r4   rb   s      @@r!   rw   rw   ¢  sº   øø€ à„{�aÒÐÝ�4”=×'Ò'¨¬Ñ1Ô1Ñ2Ô2Ð2Ø	Œ˜Ò	Ð	Ø”-×&Ò& q¤xÑ0Ô0ˆØ”ˆÝ�F‘”ˆØ>Ð>Ð>Ð>Ð>¨Ð>Ñ>Ô>ˆŒ
Ý˜dœj™/œ/ˆŒÝ�D”OÑ$Ô$Ð$à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óš  ‡ — ‰ j         €‰ j        dk    sJ ‚dS ‰ j        dk    r?|j        s‰ j                              ¦   «          ‰ j                              ¦   «         ‰ _        n–‰ j        dk    r‹d ‰ j         v r.‰ j        dk    sJ ‚t          d„ ‰ j         D ¦   «         ¦  «        sJ ‚nT|j        s‰ j         D ]}|                     ¦   «          Œt          t          j	        d„ ‰ j         D ¦   «         d¦  «        ‰ _        ‰ j        dk    rHt          ˆ fd„‰ j         D ¦   «         ¦  «        r(d‰ _        ‰ j        dk    r‰ j         d         nd ‰ _         ‰ `
dS )Nr   Trœ   r­   c              3  ó   K  — | ]}|d u V — Œ	d S r   r   ©r   rV   s     r!   r"   z$prune_post_subset.<locals>.<genexpr>¿  s&   è è € Ð5Ð5 Q�q˜D�yÐ5Ð5Ð5Ð5Ð5Ð5r#   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r   )ÚgetEffectiveFormatrÂ   s     r!   r6   z%prune_post_subset.<locals>.<listcomp>Å  s$   € ÐHÐHÐH¸˜Q×1Ò1Ñ3Ô3ÐHÐHÐHr#   c              3  ó:   •K  — | ]}|‰j         d          k    V — ŒdS ©r   N)r¾   )r   rV   r'   s     €r!   r"   z$prune_post_subset.<locals>.<genexpr>É  s.   øè è € ÐGÐG°q  T¤Z°¤]Ò 2ÐGÐGÐGÐGÐGÐGr#   )r¾   ÚValueFormatr¡   Úhintingr»   rÄ   r   r   ÚintÚ__or__r¿   )r'   r)   ÚoptionsrV   s   `   r!   Úprune_post_subsetrÌ   ±  sx  ø€ à„zÐØÔ 1Ò$Ð$Ð$Ð$Øˆtð „{�aÒÐØŒð 	%ØŒJ×"Ò"Ñ$Ô$Ð$Øœ:×8Ò8Ñ:Ô:ˆÔÐØ	Œ˜Ò	Ð	Ø�4”:ÐÐØÔ# qÒ(Ð(Ð(Ð(ÝÐ5Ð5¨$¬*Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5à”?ð $Øœð $ð $�AØ—M’M‘O”O�O�OÝ%Ý”
ÐHÐH¸T¼ZÐHÑHÔHÈ!ñ ô  ˆDÔð
 „{�aÒÐ�CÐGÐGÐGÐG¸D¼JÐGÑGÔGÑGÔGÐØˆŒØ&*Ô&6¸!Ò&;Ð&;�T”Z ”]�]ÀˆŒ
ØˆOàˆ4r#   c                ó‚  ‡ ‡‡‡‡— ‰ j         dk    �r‰ j                             ‰j        ¦  «        }‰ j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         ‰ _        ‰ j        D ]3}ˆfd„|j        D ¦   «         |_        t          |j        ¦  «        |_        Œ4d„ t          ‰ j        ¦  «        D ¦   «         }‰ j         	                    |¦  «         t          ‰ j        |¦  «        ‰ _        t          ‰ j        ¦  «        ‰ _        t          ‰ j        ¦  «        S ‰ j         dk    �rˆ fd„‰ j                             ‰j                             ‰ j        j        ¦  «        d¬¦  «        D ¦   «         }ˆ fd	„‰ j                             ‰j        dd
¬¦  «        D ¦   «         }ˆ fd„|D ¦   «         ‰ _        ‰ j        D ]Šˆfd„|D ¦   «         ‰_        Œt          |¦  «        ‰ _        t          |¦  «        ‰ _        t          ‰ j        o)‰ j        dk    o‰ j                             ‰j        ¦  «        ¦  «        S J d‰ j         z  ¦   «         ‚)Nrœ   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r3   r4   Úpairss     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>×  s"   ø€ Ð?Ð?Ð? Q°Q¸²Y°Y˜˜aœ°Y°Y°Yr#   c                ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚSecondGlyphr(   )r   Úrro   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>Ù  s.   ø€ ð !ð !ð !Ø°´ÀÄÐ0IÐ0I�Ð0IÐ0IÐ0Ir#   c                ó&   — g | ]\  }}|j         ¯|‘ŒS r   )ÚPairValueCount)r   r3   Úps      r!   r6   z!subset_glyphs.<locals>.<listcomp>Þ  s$   € ÐMÐMÐM™˜˜A¸AÔ<LÐM�1ÐMÐMÐMr#   r­   c                ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )ÚClass1Count©r   rŽ   r'   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>ä  s5   ø€ ð 
ð 
ð 
àð �4Ô#Ò#Ð#ð	 ð $Ð#Ð#r#   T©rN   c                ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )ÚClass2CountrØ   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>ë  s1   ø€ ð 
ð 
ð 
àØ�4Ô#Ò#Ð#ð à#Ð#Ð#r#   F)rN   rc   c                ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass1RecordrL   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>ð  s!   ø€ ÐFÐFÐF°a˜TÔ.¨qÔ1ÐFÐFÐFr#   c                ó*   •— g | ]}‰j         |         ‘ŒS r   )ÚClass2Record©r   r3   rŽ   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>ò  s    ø€ ÐDÐDÐD°A˜aœn¨QÔ/ÐDÐDÐDr#   r   r    )r¡   r¢   rH   r(   ÚPairSetr8   ÚPairValueRecordrÔ   r=   rN   r:   ÚPairSetCountru   Ú	ClassDef1ÚintersectionÚ	ClassDef2rÝ   rß   r×   rÛ   )	r'   ro   r9   rÕ   Ú
class1_mapÚ
class2_maprŽ   r4   rÏ   s	   ``    @@@r!   rw   rw   Ñ  sˆ  øøøøø€ à„{�aÒÑØ”-×&Ò& q¤xÑ0Ô0ˆØ”ˆÝ�E‘
”
ˆØ?Ð?Ð?Ð?Ð?¨'Ð?Ñ?Ô?ˆŒØ”ð 	6ð 	6ˆAð!ð !ð !ð !ØÔ,ð!ñ !ô !ˆAÔõ  # 1Ô#4Ñ5Ô5ˆAÔÐàMÐM¥¨4¬<Ñ!8Ô!8ÐMÑMÔMˆØŒ×Ò˜GÑ$Ô$Ð$Ý# D¤L°'Ñ:Ô:ˆŒÝ ¤Ñ-Ô-ˆÔÝ�DÔ%Ñ&Ô&Ð&Ø	Œ˜Ò	Ñ	ð
ð 
ð 
ð 
à”^×*Ò*Ø”×%Ò% d¤mÔ&:Ñ;Ô;À4ð +ñ ô ð
ñ 
ô 
ˆ
ð
ð 
ð 
ð 
à”^×*Ò*¨1¬8¸4È5Ð*ÑQÔQð
ñ 
ô 
ˆ
ð
 GÐFÐFÐF¸:ÐFÑFÔFˆÔØÔ"ð 	Eð 	EˆAØDÐDÐDÐD¸ÐDÑDÔDˆAŒNˆNÝ˜z™?œ?ˆÔÝ˜z™?œ?ˆÔåØÔð /ØÔ! AÒ%ð/à”×$Ò$ Q¤XÑ.Ô.ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óò  — |j         sÕdddœ| j                 \  }}dx| _        | _        t	          | |¦  «        D ]£}t	          ||¦  «        D ]�}|j        r@|j                             ¦   «          | xj        |j                             ¦   «         z  c_        |j        r@|j                             ¦   «          | xj        |j                             ¦   «         z  c_        Œ‘Œ¤t          | j        | j        z  ¦  «        S )N)rá   râ   )rÝ   rß   ©rœ   r­   r   )
rÈ   r¡   ÚValueFormat1ÚValueFormat2r·   ÚValue1r»   rÄ   ÚValue2ru   )r'   r)   rË   Úattr1Úattr2ÚrowrÒ   s          r!   rÌ   rÌ   ÿ  s  € àŒ?ð Gà-Ø/ð
ð 
ð Œ+ô‰ˆˆuð
 12Ð1ˆÔ˜DÔ-Ý˜4 Ñ'Ô'ð 	Gð 	GˆCÝ˜S %Ñ(Ô(ð Gð G�Ø”8ð GØ”H×(Ò(Ñ*Ô*Ð*ØÐ%Ô%¨¬×)DÒ)DÑ)FÔ)FÑFÐ%Ô%Ø”8ð GØ”H×(Ò(Ñ*Ô*Ð*ØÐ%Ô%¨¬×)DÒ)DÑ)FÔ)FÑFÐ%Ô%øðGõ �Ô! DÔ$5Ñ5Ñ6Ô6Ð6r#   c                ó,  ‡‡— | j         dk    rv| j                             |j        ¦  «        }| j        Št          ‰¦  «        Šˆˆfd„|D ¦   «         | _        t          | j        ¦  «        | _        t          | j        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   )r   r3   r4   Úrecordss     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>  s"   ø€ ÐIÐIÐI¨q¸qÀ5ºy¸y ¨¤
¸y¸y¸yr#   r   r    )r¡   r¢   rH   r(   ÚEntryExitRecordr8   ÚEntryExitCountru   )r'   ro   r9   r4   rô   s      @@r!   rw   rw     s”   øø€ à„{�aÒÐØ”-×&Ò& q¤xÑ0Ô0ˆØÔ&ˆÝ�G‘”ˆØIÐIÐIÐIÐI°GÐIÑIÔIˆÔÝ! $Ô"6Ñ7Ô7ˆÔÝ�DÔ'Ñ(Ô(Ð(à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óô   — | j         dk    r	d| _         d S | j         dk    rTdD ]:}t          | |d ¦  «        }|�%|                     ¦   «         rt          | |d ¦  «         Œ;| j        €| j        €d| _         d S d S d S d S )Nr­   rœ   r®   )ÚXDeviceTableÚYDeviceTable)r¡   r·   r±   Úsetattrrø   rù   r¹   s      r!   r»   r»   !  s�   € à„{�aÒÐØˆŒˆˆØ	Œ˜Ò	Ð	Ø4ð 	*ð 	*ˆDÝ˜˜d DÑ)Ô)ˆAØˆ} §¢¡¤ˆ}Ý˜˜d DÑ)Ô)Ð)øØÔÐ$¨Ô):Ð)BØˆDŒKˆKˆKð 
Ð	ð
 %Ð$Ð)BÐ)Br#   c                ó¨   — |j         sJ| j        D ]B}|j        r|j                             ¦   «          |j        r|j                             ¦   «          ŒCdS ©NT)rÈ   rõ   ÚEntryAnchorr»   Ú
ExitAnchor)r'   r)   rË   Úrecs       r!   rÌ   rÌ   .  s`   € àŒ?ð -ØÔ'ð 	-ð 	-ˆCØŒð .Ø”×+Ò+Ñ-Ô-Ð-ØŒ~ð -Ø”×*Ò*Ñ,Ô,Ð,øØˆ4r#   c                óâ  ‡‡‡	— | j         dk    �rÏ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Št          ‰¦  «        Š	ˆˆˆ	fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          ‰¦  «        | _        | j        j        D ]!}‰                     |j        ¦  «        |_        Œ"| j        j        D ]}t	          |j        ‰¦  «        |_        Œt)          | j        o| j        j        o| j        j        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   c              3  ó$   K  — | ]}|j         V — Œd S r   ©ÚClassrÂ   s     r!   r"   z subset_glyphs.<locals>.<genexpr>A  ó$   è è € Ð"NÐ"N¨q 1¤7Ð"NÐ"NÐ"NÐ"NÐ"NÐ"Nr#   c                óZ   •‡— g | ]&Š‰‰k     ¯t          ˆˆfd „‰D ¦   «         ¦  «        ¯$‰‘Œ'S )c              3  óB   •K  — | ]}‰‰         j         |         d uV — Œd S r   )Ú
BaseAnchor)r   ÚjÚbase_recordsr3   s     €€r!   r"   z+subset_glyphs.<locals>.<listcomp>.<genexpr>J  s4   øè è € ÐUÐUÀ!�L ”OÔ.¨qÔ1¸Ð=ÐUÐUÐUÐUÐUÐUr#   ©rW   )r   r3   r	  Úclass_indicesÚnum_base_recordss    @€€€r!   r6   z!subset_glyphs.<locals>.<listcomp>F  sX   øø€ ð 
ð 
ð 
àØÐ#Ò#Ð#ÝÐUÐUÐUÐUÐUÀ}ÐUÑUÔUÑUÔUð $ð à#Ð#Ð#r#   Fr   r    )r¡   ÚMarkCoveragerH   r(   r:   Ú	MarkArrayÚ
MarkRecordr8   Ú	MarkCountr   ÚBaseCoverager?   Ú	BaseArrayÚ
BaseRecordrN   Ú	BaseCountÚ
ClassCountrg   r  r  ru   )
r'   ro   Úmark_indicesÚintersect_base_indicesÚbase_indicesÚmÚbr	  r  r  s
          @@@r!   rw   rw   9  sì  øøø€ à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ Ý"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆà!%Ô!2×!<Ò!<¸Q¼XÑ!FÔ!FÐØ”~Ô0ˆÝ˜|Ñ,Ô,Ðð
ð 
ð 
ð 
ð 
ð 
à+ð
ñ 
ô 
ˆð ð 	Ø�5àÔ×Ò Ñ-Ô-Ð-Ý$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ å˜mÑ,Ô,ˆŒØ”Ô*ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØ”Ô*ð 	Eð 	EˆAÝ'¨¬°mÑDÔDˆAŒLˆLÝØŒOÐU ¤Ô 8ÐU¸T¼^Ô=Uñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óÐ   — |j         s^| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#dS rü   )rÈ   r  r  Ú
MarkAnchorr»   r  r  r  )r'   r)   rË   r  r  Úas         r!   rÌ   rÌ   a  s†   € àŒ?ð $Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØ”Ô*ð 	$ð 	$ˆAØ”\ð $ð $�Øð $Ø—M’M‘O”O�Oøð$ð ˆ4r#   c                óö  ‡‡	‡
— | j         dk    �rÙ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Š	| j        j        Š
ˆˆ	ˆ
fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          ‰¦  «        | _        | j        j        D ]!}‰                     |j        ¦  «        |_        Œ"| j        j        D ])}|€Œ|j        D ]}t	          |j        ‰¦  «        |_        ŒŒ*t+          | j        o| j        j        o| j        j        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   c              3  ó$   K  — | ]}|j         V — Œd S r   r  rÂ   s     r!   r"   z subset_glyphs.<locals>.<genexpr>v  r  r#   c                ól   •— g | ]0}|‰k     ¯t          ˆfd „‰|         j        D ¦   «         ¦  «        ¯.|‘Œ1S )c              3  óP   •‡K  — | ]Št          ˆfd „‰D ¦   «         ¦  «        V — Œ dS )c              3  ó6   •K  — | ]}‰j         |         d uV — Œd S r   )ÚLigatureAnchor)r   r  Ú	components     €r!   r"   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>�  s0   øè è € ÐSÐSÀ�IÔ,¨QÔ/°tÐ;ÐSÐSÐSÐSÐSÐSr#   Nr
  )r   r$  r  s    @€r!   r"   z+subset_glyphs.<locals>.<listcomp>.<genexpr>€  sU   øøè è € ð ð àõ ÐSÐSÐSÐSÀ]ÐSÑSÔSÑSÔSðð ð ð ð ð r#   )rW   ÚComponentRecord)r   r3   r  Úligature_arrayÚnum_ligaturess     €€€r!   r6   z!subset_glyphs.<locals>.<listcomp>|  sn   ø€ ð 
ð 
ð 
àØ�=Ò Ð Ýð ð ð ð à!/°Ô!2Ô!Bðñ ô ñ ô ð !ð à Ð Ð r#   Fr   r    )r¡   r  rH   r(   r:   r  r  r8   r  r   ÚLigatureCoverager?   ÚLigatureArrayÚLigatureAttachÚLigatureCountrN   r  rg   r  r%  r#  ru   )r'   ro   r  Úintersect_ligature_indicesÚligature_indicesr  r5   rŽ   r  r&  r'  s           @@@r!   rw   rw   n  s  øøø€ à„{�aÒÑØÔ(×/Ò/°´Ñ9Ô9ˆÝ$0ØŒNÔ% |ñ%
ô %
ˆŒÔ!õ $' t¤~Ô'@Ñ#AÔ#AˆŒÔ Ý"Ð"NÐ"N°D´NÔ4MÐ"NÑ"NÔ"NÑNÔNˆà%)Ô%:×%DÒ%DÀQÄXÑ%NÔ%NÐ"ØÔ+Ô:ˆØÔ*Ô8ˆð
ð 
ð 
ð 
ð 
ð 
à/ð
ñ 
ô 
Ðð  ð 	Ø�5àÔ×#Ò#Ð$4Ñ5Ô5Ð5Ý,8ØÔÔ-Ð/?ñ-
ô -
ˆÔÔ)õ ,/¨tÔ/AÔ/PÑ+QÔ+QˆÔÔ(å˜mÑ,Ô,ˆŒØ”Ô*ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØÔ#Ô2ð 	Qð 	QˆAØˆyØØÔ&ð Qð Q�Ý#/°Ô0@À-Ñ#PÔ#P�Ô Ð ðQåØŒOð 1Ø”Ô(ð1àÔ"Ô0ñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óê   — |j         sk| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]/}|€Œ|j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#Œ0dS rü   )	rÈ   r  r  r  r»   r)  r*  r%  r#  )r'   r)   rË   r  r5   rŽ   r  s          r!   rÌ   rÌ      s§   € àŒ?ð 
(Ø”Ô*ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØÔ#Ô2ð 	(ð 	(ˆAØˆyØØÔ&ð (ð (�ØÔ)ð (ð (�AØð (ØŸš™œ˜øð(ð(ð ˆ4r#   c                óâ  ‡‡‡	— | j         dk    �rÏ| j                             |j        ¦  «        }t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          d„ | j        j        D ¦   «         ¦  «        Š| j
                             |j        ¦  «        }| j        j        Št          ‰¦  «        Š	ˆˆˆ	fd„|D ¦   «         }|sdS | j
                             |¦  «         t	          | j        j        |¦  «        | j        _        t          | j        j        ¦  «        | j        _        t          ‰¦  «        | _        | j        j        D ]!}‰                     |j        ¦  «        |_        Œ"| j        j        D ]}t	          |j        ‰¦  «        |_        Œt'          | j        o| j        j        o| j        j        ¦  «        S J d| j         z  ¦   «         ‚)Nrœ   c              3  ó$   K  — | ]}|j         V — Œd S r   r  rÂ   s     r!   r"   z subset_glyphs.<locals>.<genexpr>¸  s$   è è € Ð"OÐ"O¨q 1¤7Ð"OÐ"OÐ"OÐ"OÐ"OÐ"Or#   c                óZ   •‡— g | ]&Š‰‰k     ¯t          ˆˆfd „‰D ¦   «         ¦  «        ¯$‰‘Œ'S )c              3  óB   •K  — | ]}‰‰         j         |         d uV — Œd S r   )ÚMark2Anchor)r   r  r3   Úmark2_recordss     €€r!   r"   z+subset_glyphs.<locals>.<listcomp>.<genexpr>Á  s5   øè è € ÐWÐWÀA�M !Ô$Ô0°Ô3¸4Ð?ÐWÐWÐWÐWÐWÐWr#   r
  )r   r3   r  r4  Únum_mark2_recordss    @€€€r!   r6   z!subset_glyphs.<locals>.<listcomp>½  sX   øø€ ð 
ð 
ð 
àØÐ$Ò$Ð$ÝÐWÐWÐWÐWÐWÈÐWÑWÔWÑWÔWð %ð à$Ð$Ð$r#   Fr   r    )r¡   ÚMark1CoveragerH   r(   r:   Ú
Mark1Arrayr  r8   r  r   ÚMark2Coverager?   Ú
Mark2ArrayÚMark2RecordrN   r  rg   r  r3  ru   )
r'   ro   Úmark1_indicesÚintersect_mark2_indicesÚmark2_indicesr  r  r  r4  r5  s
          @@@r!   rw   rw   °  sì  øøø€ à„{�aÒÑØÔ*×1Ò1°!´(Ñ;Ô;ˆÝ%1ØŒOÔ&¨ñ&
ô &
ˆŒÔ"õ %(¨¬Ô(BÑ$CÔ$CˆŒÔ!Ý"Ð"OÐ"O°D´OÔ4NÐ"OÑ"OÔ"OÑOÔOˆà"&Ô"4×">Ò">¸q¼xÑ"HÔ"HÐØœÔ3ˆÝ Ñ.Ô.Ðð
ð 
ð 
ð 
ð 
ð 
à,ð
ñ 
ô 
ˆð ð 	Ø�5àÔ× Ò  Ñ/Ô/Ð/Ý&2ØŒOÔ'¨ñ'
ô '
ˆŒÔ#õ %(¨¬Ô(CÑ$DÔ$DˆŒÔ!å˜mÑ,Ô,ˆŒØ”Ô+ð 	3ð 	3ˆAØ#×)Ò)¨!¬'Ñ2Ô2ˆAŒGˆGØ”Ô,ð 	Gð 	GˆAÝ(¨¬¸ÑFÔFˆAŒMˆMÝØŒOÐW ¤Ô 9ÐW¸d¼oÔ>Wñ
ô 
ð 	
ð 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óÐ   — |j         s^| j        j        D ]"}|j        r|j                             ¦   «          Œ#| j        j        D ]"}|j        D ]}|r|                     ¦   «          ŒŒ#dS rü   )rÈ   r7  r  r  r»   r9  r:  r3  )r'   r)   rË   r  r  s        r!   rÌ   rÌ   Ø  s†   € àŒ?ð $Ø”Ô+ð 	+ð 	+ˆAØŒ|ð +Ø”×(Ò(Ñ*Ô*Ð*øØ”Ô,ð 	$ð 	$ˆAØ”]ð $ð $�Øð $Ø—M’M‘O”O�Oøð$ð ˆ4r#   c                ó   — d S r   r   ©r'   Úlookup_indicess     r!   Úsubset_lookupsrB  å  s	   € ð 	€Dr#   c                ó   — g S r   r   r°   s    r!   Úcollect_lookupsrD  ö  s	   € ð €Ir#   c                ó   — dS rü   r   ©r'   r)   rË   s      r!   rÌ   rÌ     s	   € ð ˆ4r#   c                ó   — dS )NFr   r°   s    r!   Úmay_have_non_1to1rH    s	   € ð ˆ5r#   c                ó   — dS rü   r   r°   s    r!   rH  rH    s	   € ð ˆ4r#   c                ó(  —  G d„ dt           ¦  «        }| j        dvrd S t          | j        d¦  «        si | j        _        | j        | j        j        vr* || j        | j        ¦  «        }|| j        j        | j        <   | j        j        | j                 S )Nc                  ó   — e Zd Zd„ ZdS )ú0__subset_classify_context.<locals>.ContextHelperc                óÒ  — |j                              d¦  «        rd}d}nd}d}|j                              d¦  «        rd}d}d}nd}d}d}||z   }|| _        || _        || _        || _        || _        || _        |d	z   | _	        |dk    rd
„ }	d„ }
d„ }d„ }d }d }d„ }d„ }d„ }d„ }nS|dk    rd„ }	d„ }
d„ }d„ }d„ }d„ }d„ }d„ }d„ }d„ }n.|dk    rd„ }	d„ }
d }d }d }d }d„ }d „ }d!„ }d"„ }nJ d#|z  ¦   «         ‚|r$|
| _
        || _        || _        || _        || _        n#|	| _
        || _        || _        || _        || _        |dk    r2|d$z   | _        |d%z   | _        |d&z   | _        |d'z   | _        d(„ | _        d S |dk    rS|d)z   | _        |d*z   | _        |d+z   | _        |d,z   | _        d-„ | _        |rd.nd/| _        |rdnd| _        |rd0nd1| _        d S |dk    r|rd2nd3| _        d S d S )4NÚSubstÚSubÚPosÚChainrœ   r®   Ú r   ÚLookupRecordc                ó   — | j         S r   ©r¢   ©rÒ   s    r!   ú<lambda>zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>J  ó   €  Q¤Z€ r#   c                ó   — | j         S r   rU  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>K  ó   € ¨!¬*€ r#   c                ó   — dS )Nr   r   rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>L  s   € ¨€ r#   c                ó   — dS )N)NNNr   rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>M  s   € Ð-?€ r#   c                ó   — | j         fS r   )ÚInputrV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>P  ó
   €  a¤g Z€ r#   c                ó*   — | j         | j        | j        fS r   ©Ú	Backtrackr^  Ú	LookAheadrV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>Q  ó   € ¨1¬;¸¼ÀÄÐ*M€ r#   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó:   K  — | ]}t          |¦  «        d z   V — ŒdS ©rœ   Nr7   ©r   Úxs     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>U  ó,   è è € Ð&=Ð&=°a¥s¨1¡v¤v°¡zÐ&=Ð&=Ð&=Ð&=Ð&=Ð&=r#   )r^  r©   ©rÒ   r.   s     r!   ÚSetRuleDatazN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataS  ó&   € Ø!"‘J�Q”WØ&=Ð&=¸1Ð&=Ñ&=Ô&=‘O�Q”\�\�\r#   c                óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S ©Nr   rœ   r­   ©rb  r^  rc  r8   ÚBacktrackGlyphCountÚInputGlyphCountÚLookAheadGlyphCountrk  s     r!   ÚChainSetRuleDatazS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataW  ó\   € Ø89Ñ5�A”K ¤¨!¬+õ
 ˜Q˜qœT™œ¥C¨¨!¬¡I¤I°¡Mµ3°q¸´t±9´9ð	ØÔ-ØÔ)ØÔ-Ð-Ð-r#   r­   c                ó   — | j         S r   rU  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>`  rX  r#   c                ó   — | j         S r   rU  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>a  rZ  r#   c                ó   — | j         fS r   ©ÚClassDefrV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>b  s
   € ¨¬¨€ r#   c                ó*   — | j         | j        | j        fS r   ©ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefrV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>c  s   € ØÔ'Ø”OØÔ'ð.€ r#   c                ó   — |\  | _         d S r   ry  rk  s     r!   ÚSetContextDatazQ__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetContextDatai  s   € Ø$%‘M�Q”Z�Z�Zr#   c                ó0   — |\  | _         | _        | _        d S r   r|  rk  s     r!   ÚSetChainContextDatazV__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetChainContextDatal  s   € ØPQÑM�AÔ'¨¬¸!Ô:MÐ:MÐ:Mr#   c                ó   — | j         fS r   r  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>o  r_  r#   c                ó*   — | j         | j        | j        fS r   ra  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>p  rd  r#   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó:   K  — | ]}t          |¦  «        d z   V — ŒdS rg  r7   rh  s     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>t  rj  r#   )r  r©   rk  s     r!   rl  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDatar  rm  r#   c                óÔ   — |\  | _         | _        | _        t          |d         ¦  «        t          |d         ¦  «        dz   t          |d         ¦  «        c| _        | _        | _        d S ro  rp  rk  s     r!   rt  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDatav  ru  r#   c                ó   — | j         d         S ©Nr   rU  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>  s   €  Q¤Z°¤]€ r#   c                ó   — | j         d         S rŠ  )ÚInputCoveragerV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>€  s   € ¨!¬/¸!Ô*<€ r#   c                ó   — | j         S r   rU  rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>…  rX  r#   c                ó0   — | j         | j        z   | j        z   S r   )r¤   rŒ  r£   rV  s    r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>†  s   € ØÔ'¨!¬/Ñ9¸AÔ<OÑOð r#   c                ó>   — |\  | _         d„ |D ¦   «         \  | _        d S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   r7   rh  s     r!   r"   za__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleData.<locals>.<genexpr>Œ  s(   è è € Ð&9Ð&9°!¥s¨1¡v¤vÐ&9Ð&9Ð&9Ð&9Ð&9Ð&9r#   )r¢   r©   rk  s     r!   rl  zN__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.SetRuleDataŠ  s&   € Ø$%‘M�Q”ZØ&9Ð&9°qÐ&9Ñ&9Ô&9‘O�Q”\�\�\r#   c                ón   — |\  | _         | _        | _        d„ |D ¦   «         \  | _        | _        | _        d S )Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   r7   rh  s     r!   r"   zf__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleData.<locals>.<genexpr>”  s(   è è € Ð+Ð+ A�˜Q™œÐ+Ð+Ð+Ð+Ð+Ð+r#   )r¤   rŒ  r£   rq  rr  rs  rk  s     r!   rt  zS__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.ChainSetRuleDataŽ  sF   € ØPQÑM�AÔ'¨¬¸!Ô:Mð
 ,Ð+¨Ð+Ñ+Ô+ñ	ØÔ-ØÔ)ØÔ-Ð-Ð-r#   r    ÚRuleÚ	RuleCountÚRuleSetÚRuleSetCountc                ó   — || v r|gng S r   r   ©r(   rŽ   rÒ   s      r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>«  s   € ¸QÀ&¸[¸[°q°c°cÈb€ r#   Ú	ClassRuleÚClassRuleCountÚClassSetÚClassSetCountc                óx   — |r|                      | |¦  «        n"|dk    rt          | ¦  «        nt          ¦   «         S rŠ  )r]   rC   r˜  s      r!   rW  zK__subset_classify_context.<locals>.ContextHelper.__init__.<locals>.<lambda>±  s=   € àð<�A×%Ò% f¨aÑ0Ô0Ð0à)*¨aª¨�#˜f™+œ+˜+µS±U´Uð r#   r~  rz  r^  r  rŒ  r¢   )Ú__name__ÚendswithÚ
startswithÚTypÚTyperQ  ÚChainTypÚInputIdxÚDataLenrS  r¢   ÚContextDatar�  ÚRuleDatarl  r“  r”  r•  r–  Ú	Intersectrz  ÚClassDefIndexr^  )r'   r\   r¡   r¡  r¢  rQ  r¤  r¥  r£  r¢   ÚChainCoverager¦  ÚChainContextDatar�  rƒ  r§  ÚChainRuleDatarl  rt  s                      r!   Ú__init__z9__subset_classify_context.<locals>.ContextHelper.__init__/  sW  € ØŒ~×&Ò& wÑ/Ô/ð Ø�Ø��à�Ø�ØŒ~×(Ò(¨Ñ1Ô1ð Ø�Ø�Ø��à�Ø�Ø�Ø˜s‘{ˆHàˆDŒHØˆDŒIØˆDŒJØ$ˆDŒMØ$ˆDŒMØ"ˆDŒLà $ ~Ñ 5ˆDÔà˜Š{ˆ{Ø/Ð/�Ø 4Ð 4�Ø/Ð/�Ø#?Ð#?Ð Ø!%�Ø&*Ð#Ø/Ð/�Ø MÐ M�ð>ð >ð >ð>ð >ð >ð >ð ˜1’�Ø/Ð/�Ø 4Ð 4�Ø5Ð5�ð$ð $Ð ð&ð &ð &ðRð Rð Rð 0Ð/�Ø MÐ M�ð>ð >ð >ð>ð >ð >ð >ð ˜1’�Ø2Ð2�Ø <Ð <�Ø"�Ø#'Ð Ø!%�Ø&*Ð#Ø/Ð/�ð!ð !�ð:ð :ð :ð,ð ,ð ,ð ,ð 8Ð.°Ñ7Ñ7Ô7Ð7àð /Ø -�”Ø#3�Ô Ø&9�Ô#Ø -�”Ø#3�Ô Ð à (�”Ø#.�Ô Ø&4�Ô#Ø (�”Ø#.�Ô à˜Š{ˆ{Ø$ vÑ-�”	Ø!)¨KÑ!7�”Ø'¨)Ñ3�”Ø$,¨~Ñ$=�Ô!Ø!PÐ!P�”��Ø˜1’�Ø$ {Ñ2�”	Ø!)Ð,<Ñ!<�”Ø'¨*Ñ4�”Ø$,¨Ñ$>�Ô!ð"ð "�”ð 49Ð H  ¸j�”Ø*/Ð%6 Q Q°Q�Ô"Ø(-Ð:˜W˜W°7�”
�
�
Ø˜1’�Ø05ÐE˜_˜_¸:�”
�
�
ð �r#   N)rž  Ú
__module__Ú__qualname__r­  r   r#   r!   ÚContextHelperrL  .  s-   € € € € € ðL	Fð L	Fð L	Fð L	Fð L	Fr#   r°  r¬   Ú_subset__ContextHelpers)Úobjectr¡   ÚhasattrÚ	__class__r±  )r'   r°  Úhelpers      r!   Ú__subset_classify_contextr¶  '  sº   € ðMFð MFð MFð MFð MF�ñ MFô MFð MFð^ „{˜)Ð#Ð#ØˆtÝ�4”>Ð#<Ñ=Ô=ð 4Ø13ˆŒÔ.Ø„{˜$œ.Ô@Ð@Ð@Ø�˜tœ~¨t¬{Ñ;Ô;ˆØ>DˆŒÔ.¨t¬{Ñ;ØŒ>Ô1°$´+Ô>Ð>r#   c                óè  ‡‡— |                       ¦   «         Š‰                     | ¦  «                             |¦  «        }|sg S ‰                     | ¦  «                             |¦  «        }| j        dk    �rÖ‰                     | ¦  «        }t          | ‰j        ¦  «        }t          | ‰j        ¦  «        }|D �]‘}||k    s||         sŒt          ||         ‰j	        ¦  «        D �]b}|sŒt          ˆˆfd„t          |‰                     |¦  «        ¦  «        D ¦   «         ¦  «        sŒDt          ¦   «         }	t          |‰j        ¦  «        D ]ú}
|
sŒ|
j        }||	v rd }nS|dk    r/t!          ‰                     | ¦  «        j        |         g¦  «        }nt!          |j        |dz
           g¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         r8|	                     t5          |t7          |j        ¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         Œû�Œd�Œ“d S | j        dk    �r+t          | ‰j        ¦  «        }|                     |¦  «        }‰                     | ¦  «        }t          | ‰j        ¦  «        }t          | ‰j        ¦  «        }|D �]¼}||k    s||         sŒt          ||         ‰j	        ¦  «        D �]�}|sŒt          ˆˆfd„t          |‰                     |¦  «        ¦  «        D ¦   «         ¦  «        sŒDt          ¦   «         }	t          |‰j        ¦  «        D �]$}
|
sŒ|
j        }||	v rd }nn|dk    r$t!          |                     ||¦  «        ¦  «        }nDt!          |                     ‰j        t          |‰j        ¦  «        |dz
           ¦  «        ¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         rF|	                     t5          |t7          t          |‰j        ¦  «        ¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         �Œ&�Œ��Œ¾d S | j        dk    �rRt          ˆfd„‰                     | ¦  «        D ¦   «         ¦  «        sg S | }t          |‰j        ¦  «        }t          ¦   «         }	t          |‰j        ¦  «        D ]å}
|
sŒ|
j        }||	v rd }nC|dk    rt!          |¦  «        }n-t!          ||                              ‰j        ¦  «        ¦  «        }‰j        j        j        |
j                 }|	                     |¦  «         |                     ¦   «         r3|	                     t5          |t7          |¦  «        dz   ¦  «        ¦  «         |                     ‰|¬¦  «         Œæd S J d	| j        z  ¦   «         ‚)
Nrœ   c              3  óZ   •‡K  — | ]$\  Š}t          ˆˆˆfd „|D ¦   «         ¦  «        V — Œ%dS )c              3  óP   •K  — | ] }‰                      ‰j        ‰|¦  «        V — Œ!d S r   ©r¨  r(   ©r   ÚkrŽ   Úcdro   s     €€€r!   r"   z+closure_glyphs.<locals>.<genexpr>.<genexpr>Û  ó5   øè è € ÐDÐD¸˜Ÿš A¤H¨b°!Ñ4Ô4ÐDÐDÐDÐDÐDÐDr#   N©r   ©r   Úklistr½  rŽ   ro   s     @€€r!   r"   z!closure_glyphs.<locals>.<genexpr>Ú  ó_   øøè è € ð ð á!˜˜Eõ ÐDÐDÐDÐDÐDÐD¸eÐDÑDÔDÑDÔDðð ð ð ð ð r#   r   r­   )rk   c              3  óZ   •‡K  — | ]$\  Š}t          ˆˆˆfd „|D ¦   «         ¦  «        V — Œ%dS )c              3  óP   •K  — | ] }‰                      ‰j        ‰|¦  «        V — Œ!d S r   rº  r»  s     €€€r!   r"   z+closure_glyphs.<locals>.<genexpr>.<genexpr>þ  r¾  r#   Nr¿  rÀ  s     @€€r!   r"   z!closure_glyphs.<locals>.<genexpr>ý  rÂ  r#   r®   c              3  óT   •K  — | ]"}|d uo|                      ‰j        ¦  «        V — Œ#d S r   rG   ©r   ri  ro   s     €r!   r"   z!closure_glyphs.<locals>.<genexpr>  s:   øè è € ÐUÐU¸q�1˜D�=Ð: Q§[¢[°´Ñ%:Ô%:ÐUÐUÐUÐUÐUÐUr#   r    )r¶  r¢   r?   rD   r¡   r¦  r·   r•  r–  r“  r   Úzipr§  rC   rS  ÚSequenceIndexÚ	frozensetr(   r^  ÚtableÚ
LookupListÚLookupÚLookupListIndexÚaddrH  rl   Úranger8   rp   rz  r]   )r'   ro   rk   r9   r¦  ÚrssÚrssCountr3   rÒ   ÚchaosÚllÚseqiÚ
pos_glyphsÚlookuprz  Úinput_coveragesrŽ   s    `              @r!   rp   rp   Ç  s[  øø€ à×&Ò&Ñ(Ô(€Aà�jŠj˜ÑÔ×(Ò(¨Ñ4Ô4€GØð Øˆ	Ø—’˜DÑ!Ô!×2Ò2°:Ñ>Ô>€Jà„{�aÒÑØ—m’m DÑ)Ô)ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØð 	Dñ 	DˆAØ�HŠ}ˆ} C¨¤Fˆ}ØÝ˜S œV Q¤VÑ,Ô,ð Dñ D�Øð ØÝð ð ð ð ð å%(¨°a·j²jÀ±m´mÑ%DÔ%Dðñ ô ñ ô ð ð Ý™œ�Ý! ! Q¤^Ñ4Ô4ð Dð D�BØð !Ø ØÔ+�DØ˜u�}�}à%)˜
˜
à 1š9˜9Ý)2°A·J²J¸tÑ4DÔ4DÔ4KÈAÔ4NÐ3OÑ)PÔ)P˜J˜Jå)2°A´G¸DÀ1¹HÔ4EÐ3FÑ)GÔ)G˜JØœWÔ/Ô6°rÔ7IÔJ�FØ—I’I˜d‘O”O�OØ×/Ò/Ñ1Ô1ð DØŸš¥U¨4µ°Q´W±´ÀÑ1AÑ%BÔ%BÑCÔCÐCØ×)Ò)¨!¸
Ð)ÑCÔCÐCÐCñ!DñDð	Dð 	Dð: 
Œ˜Ò	Ñ	Ý˜4 ¤Ñ,Ô,ˆØ×$Ò$ ZÑ0Ô0ˆØ—m’m DÑ)Ô)ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØð "	Dñ "	DˆAØ�HŠ}ˆ} C¨¤Fˆ}ØÝ˜S œV Q¤VÑ,Ô,ð Dñ D�Øð ØÝð ð ð ð ð å%(¨°a·j²jÀ±m´mÑ%DÔ%Dðñ ô ñ ô ð ð Ý™œ�Ý! ! Q¤^Ñ4Ô4ð Dñ D�BØð !Ø ØÔ+�DØ˜u�}�}à%)˜
˜
à 1š9˜9Ý)2Ø (× 8Ò 8¸ÀQÑ GÔ Gñ*ô *˜J˜Jõ *3Ø (× 8Ò 8Ø$%¤H­g°a¸¼Ñ.AÔ.AÀ$ÈÁ(Ô.Kñ!"ô !"ñ*ô *˜Jð
 œWÔ/Ô6°rÔ7IÔJ�FØ—I’I˜d‘O”O�OØ×/Ò/Ñ1Ô1ð PØŸš¥U¨4µµW¸QÀÄÑ5HÔ5HÑ1IÔ1IÈAÑ1MÑ%NÔ%NÑOÔOÐOØ×)Ò)¨!¸
Ð)ÑCÔCÐCÑCñ-DñDð"	Dð "	DðF 
Œ˜Ò	Ñ	ÝÐUÐUÐUÐUÀAÇJÂJÈtÑDTÔDTÐUÑUÔUÑUÔUð 	ØˆIØˆÝ! ! Q¤WÑ-Ô-ˆÝ‘”ˆÝ˜!˜Qœ^Ñ,Ô,ð 	<ð 	<ˆBØð ØØÔ#ˆDØ�uˆ}ˆ}à!�
�
à˜1’9�9Ý!*¨:Ñ!6Ô!6�J�Jå!*Ø'¨Ô-×>Ò>¸q¼xÑHÔHñ"ô "�Jð ”WÔ'Ô.¨rÔ/AÔBˆFØ�IŠI�d‰OŒOˆOØ×'Ò'Ñ)Ô)ð DØ—’�U 4­¨_Ñ)=Ô)=ÀÑ)AÑBÔBÑCÔCÐCØ×!Ò! !°
Ð!Ñ;Ô;Ð;Ð;ð%	<ð 	<ð( 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óp  ‡‡‡‡‡	‡
— |                       ¦   «         Š| j        dk    �rJ| j                             ‰j        ¦  «        Št          | ‰j        ¦  «        Š	t          | ‰j        ¦  «        Š
ˆ	ˆ
fd„‰D ¦   «         Š	‰	D ]b}|sŒt          |‰j        ¦  «        }ˆˆfd„|D ¦   «         }t          |‰j        |¦  «         t          |‰j
        t          |¦  «        ¦  «         Œcˆfd„t          ‰	¦  «        D ¦   «         Š| j                             ‰¦  «         t          ‰	‰¦  «        Š	t          | ‰j        ‰	¦  «         t          | ‰j        t          ‰	¦  «        ¦  «         t          ‰	¦  «        S | j        dk    �rð| j                             ‰j        ¦  «        sdS ‰                     | ¦  «        }ˆfd„|D ¦   «         Š‰‰j                 Št          | ‰j        ¦  «        Š	t          | ‰j        ¦  «        Š
ˆ	ˆ
fd„‰D ¦   «         Š	‹
t          | ‰j        ¦  «                             | j        j        ¦  «        Šˆfd	„t          ‰	¦  «        D ¦   «         Š	‰	D ]¨}|sŒt          |‰j        ¦  «        }ˆˆfd
„|D ¦   «         }t          |‰j        |¦  «         t          |‰j
        t          |¦  «        ¦  «         |D ]C}‰                     |d„ t+          ‰‰                     |¦  «        ¦  «        D ¦   «         ¦  «         ŒDŒ©ˆfd„‰	D ¦   «         Š	‰	r‰	d         €‰	d= ‰	r‰	d         ®t          | ‰j        ‰	¦  «         t          | ‰j        t          ‰	¦  «        ¦  «         t          ‰	¦  «        S | j        dk    r.t/          ˆfd„‰                     | ¦  «        D ¦   «         ¦  «        S J d| j        z  ¦   «         ‚)Nrœ   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   ©r   r3   rÐ  rÑ  s     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>D  ó"   ø€ Ð7Ð7Ð7˜!¨!¨hª,¨,ˆs�1Œv¨,¨,¨,r#   c                ót   •— g | ]4}|¯t          ˆfd „‰                     |¦  «        D ¦   «         ¦  «        ¯2|‘Œ5S )c              3  óN   •K  — | ]}t          ˆfd „|D ¦   «         ¦  «        V — Œ dS )c              3  ó*   •K  — | ]}|‰j         v V — Œd S r   rK   ©r   r   ro   s     €r!   r"   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>M  s)   øè è € Ð9Ð9¨a˜A ¤˜MÐ9Ð9Ð9Ð9Ð9Ð9r#   Nr¿  )r   Úglistro   s     €r!   r"   z+subset_glyphs.<locals>.<listcomp>.<genexpr>M  s@   øè è € ÐUÐU¸e�Ð9Ð9Ð9Ð9°5Ð9Ñ9Ô9Ñ9Ô9ÐUÐUÐUÐUÐUÐUr#   )r   r§  )r   rÒ   rŽ   ro   s     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>I  sa   ø€ ð ð ð àØðõ ÐUÐUÐUÐUÀqÇzÂzÐRSÁ}Ä}ÐUÑUÔUÑUÔUð	Øðð ð r#   c                óH   •— g | ]\  }}|¯t          |‰j        ¦  «        ¯|‘ŒS r   ©r·   r“  )r   r3   ÚrsrŽ   s      €r!   r6   z!subset_glyphs.<locals>.<listcomp>R  s3   ø€ ÐOÐOÐO™˜˜B°BÐO½7À2ÀqÄvÑ;NÔ;NÐO�1ÐOÐOÐOr#   r­   Fc                óP   •— g | ]"}|r|                      ‰j        d ¬¦  «        nd‘Œ#S )TrÙ   Nr¨   rÆ  s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>\  sB   ø€ ð 
ð 
ð 
Ø>?¨aÐ9ˆA�HŠH�Q”X TˆHÑ*Ô*Ð*°Tð
ð 
ð 
r#   c                ó,   •— g | ]}|‰k     ¯‰|         ‘ŒS r   r   rÚ  s     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>d  rÛ  r#   c                ó&   •— g | ]\  }}|‰v r|nd ‘ŒS r   r   )r   r3   rÐ  r9   s      €r!   r6   z!subset_glyphs.<locals>.<listcomp>h  s)   ø€ ÐJÐJÐJ±°°C�a˜7�l�lˆsˆs¨ÐJÐJÐJr#   c                óŒ   •— g | ]@}|¯t          d „ t          ‰‰                     |¦  «        ¦  «        D ¦   «         ¦  «        ¯>|‘ŒAS )c              3  óT   ‡K  — | ]"\  Š}t          ˆfd „|D ¦   «         ¦  «        V — Œ#dS )c              3  ó    •K  — | ]}|‰v V — Œ	d S r   r   ©r   r¼  Ú	klass_maps     €r!   r"   z5subset_glyphs.<locals>.<listcomp>.<genexpr>.<genexpr>s  s'   øè è € Ð6Ð6¨1˜˜Y˜Ð6Ð6Ð6Ð6Ð6Ð6r#   Nr¿  ©r   rÁ  rë  s     @r!   r"   z+subset_glyphs.<locals>.<listcomp>.<genexpr>r  sX   øè è € ð ð á(˜	 5õ Ð6Ð6Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6ðð ð ð ð ð r#   )r   rÇ  r§  )r   rÒ   rŽ   Ú
klass_mapss     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>n  ss   ø€ ð ð ð àØðõ ð ð å,/°
¸A¿JºJÀq¹M¼MÑ,JÔ,Jðñ ô ñ ô ð	Øðð ð r#   c                ó2   ‡— g | ]\  Š}ˆfd „|D ¦   «         ‘ŒS )c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rf   rê  s     €r!   r6   z,subset_glyphs.<locals>.<listcomp>.<listcomp>  s%   ø€ Ð;Ð;Ð;°˜Ÿš¨Ñ+Ô+Ð;Ð;Ð;r#   r   rì  s     @r!   r6   z!subset_glyphs.<locals>.<listcomp>~  sA   ø€ ð ð ð á,˜I uð <Ð;Ð;Ð;°UÐ;Ñ;Ô;ðð ð r#   c                óF   •— g | ]}|rt          |‰j        ¦  «        r|nd ‘ŒS r   râ  )r   rã  rŽ   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>…  s3   ø€ ÐHÐHÐH¸b�RÐ9�G B¨¬Ñ/Ô/Ð9ˆrˆr°TÐHÐHÐHr#   éÿÿÿÿr®   c              3  óT   •K  — | ]"}|d uo|                      ‰j        ¦  «        V — Œ#d S r   r¨   rÆ  s     €r!   r"   z subset_glyphs.<locals>.<genexpr>’  s:   øè è € ÐRÐR¸A�1˜D�=Ð7 Q§X¢X¨a¬hÑ%7Ô%7ÐRÐRÐRÐRÐRÐRr#   r   r    )r¶  r¡   r¢   rH   r(   r·   r•  r–  r“  rú   r”  r8   r=   rN   r:   ru   r¦  r©  rz  r?   rl  rÇ  r§  r   )r'   ro   rã  Ússr¦  rÒ   rŽ   r9   rí  rÐ  rÑ  s    `    @@@@@r!   rw   rw   7  s<  øøøøøø€ ð 	×&Ò&Ñ(Ô(€Aà„{�aÒÑØ”-×&Ò& q¤xÑ0Ô0ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØ7Ð7Ð7Ð7Ð7˜wÐ7Ñ7Ô7ˆØð 	.ð 	.ˆBØð ØÝ˜˜QœVÑ$Ô$ˆBðð ð ð ð àðñ ô ˆBõ �B˜œ Ñ#Ô#Ð#Ý�B˜œ¥S¨¡W¤WÑ-Ô-Ð-Ð-àOÐOÐOÐO¥)¨C¡.¤.ÐOÑOÔOˆØŒ×Ò˜GÑ$Ô$Ð$Ý˜3 Ñ(Ô(ˆÝ��a”i Ñ%Ô%Ð%Ý��a”n¥c¨#¡h¤hÑ/Ô/Ð/Ý�C‰yŒyÐØ	Œ˜Ò	Ñ	ØŒ}×#Ò# A¤HÑ-Ô-ð 	Ø�5Ø—m’m DÑ)Ô)ˆð
ð 
ð 
ð 
ØCNð
ñ 
ô 
ˆ
ð
 ˜Qœ_Ô-ˆÝ�d˜AœIÑ&Ô&ˆÝ˜4 ¤Ñ0Ô0ˆØ7Ð7Ð7Ð7Ð7˜wÐ7Ñ7Ô7ˆØå˜$ ¤
Ñ+Ô+×5Ò5°d´mÔ6JÑKÔKˆØJÐJÐJÐJ½9ÀS¹>¼>ÐJÑJÔJˆàð 	ð 	ˆBØð ØÝ˜˜QœVÑ$Ô$ˆBðð ð ð ð àðñ ô ˆBõ �B˜œ Ñ#Ô#Ð#Ý�B˜œ¥S¨¡W¤WÑ-Ô-Ð-ð ð ð �Ø—’Øðð å03°JÀÇ
Â
È1ÁÄÑ0NÔ0Nðñ ô ñô ð ð ðð IÐHÐHÐHÀCÐHÑHÔHˆØð 	�c˜"”g�oØ�B�ð ð 	�c˜"”g�oå��a”i Ñ%Ô%Ð%Ý��a”n¥c¨#¡h¤hÑ/Ô/Ð/õ �C‰yŒyÐØ	Œ˜Ò	Ð	ÝÐRÐRÐRÐRÀÇÂÈDÑAQÔAQÐRÑRÔRÑRÔRÐRà4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ó¨  ‡— |                       ¦   «         }| j        dv r§t          | |j        ¦  «        D ]�}|sŒt          ||j        ¦  «        D ]t}|sŒt          ||j        ˆfd„t          ||j        ¦  «        D ¦   «         ¦  «         t          ||j        ¦  «        D ]$}|sŒ‰                     |j        ¦  «        |_        Œ%ŒuŒ�d S | j        dk    rqt          | |j        ˆfd„t          | |j        ¦  «        D ¦   «         ¦  «         t          | |j        ¦  «        D ]$}|sŒ‰                     |j        ¦  «        |_        Œ%d S J d| j        z  ¦   «         ‚)Nrê   c                ó*   •— g | ]}|r|j         ‰v ¯|‘ŒS r   ©rÍ  ©r   rÓ  rA  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>ª  s;   ø€ ð ð ð àØðð #%Ô"4¸Ð"FÐ"Fð à"FÐ"FÐ"Fr#   r®   c                ó*   •— g | ]}|r|j         ‰v ¯|‘ŒS r   rö  r÷  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>¸  s;   ø€ ð ð ð àØðð Ô,°Ð>Ð>ð à>Ð>Ð>r#   r   r    )	r¶  r¡   r·   r•  r“  rú   rS  rg   rÍ  )r'   rA  rŽ   rã  rÒ   rÓ  s    `    r!   rB  rB  —  sâ  ø€ ð 	×&Ò&Ñ(Ô(€Aà„{�fÐÐÝ˜$ ¤	Ñ*Ô*ð 	Rð 	RˆBØð ØÝ˜R ¤Ñ(Ô(ð Rð R�Øð ØÝØØ”Nðð ð ð å")¨!¨Q¬^Ñ"<Ô"<ðñ ô ñô ð õ " ! Q¤^Ñ4Ô4ð Rð R�BØð !Ø Ø)7×)=Ò)=¸bÔ>PÑ)QÔ)Q�BÔ&Ð&ðRðRð	Rð 	Rð& 
Œ˜Ò	Ð	ÝØØŒNðð ð ð å! $¨¬Ñ7Ô7ðñ ô ñ	
ô 	
ð 	
õ ˜$ ¤Ñ/Ô/ð 	Jð 	JˆBØð ØØ!/×!5Ò!5°bÔ6HÑ!IÔ!IˆBÔÐð	Jð 	Jð
 	5Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óø   ‡— |                       ¦   «         Š| j        dv r!ˆfd„t          | ‰j        ¦  «        D ¦   «         S | j        dk    rd„ t          | ‰j        ¦  «        D ¦   «         S J d| j        z  ¦   «         ‚)Nrê   c                óŠ   •— g | ]?}|¯t          |‰j        ¦  «        D ]%}|¯t          |‰j        ¦  «        D ]}|¯|j        ‘ŒŒ&Œ@S r   )r·   r“  rS  rÍ  )r   rã  rÒ   rÓ  rŽ   s       €r!   r6   z#collect_lookups.<locals>.<listcomp>Ð  sŒ   ø€ ð 
ð 
ð 
àØð
õ ˜R ¤Ñ(Ô(ð	
ð 
ð Øð
õ ˜a ¤Ñ0Ô0ð
ð 
ð Øð
ØÔð
ð 
ð 
ð 
ð 
r#   r®   c                ó    — g | ]}|¯|j         ‘ŒS r   rö  )r   rÓ  s     r!   r6   z#collect_lookups.<locals>.<listcomp>Ú  s    € ÐQÐQÐQ rÈbÐQ�Ô"ÐQÐQÐQr#   r   r    )r¶  r¡   r·   r•  rS  )r'   rŽ   s    @r!   rD  rD  Æ  sŸ   ø€ ð 	×&Ò&Ñ(Ô(€Aà„{�fÐÐð
ð 
ð 
ð 
å˜d A¤IÑ.Ô.ð
ñ 
ô 
ð 	
ð 
Œ˜Ò	Ð	ØQÐQ­W°T¸1¼>Ñ-JÔ-JÐQÑQÔQÐQà4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óv   — | j         dk    r| j                             ||¦  «         d S J d| j         z  ¦   «         ‚©Nrœ   r   r    )r¡   ÚExtSubTablerp   rn   s      r!   rp   rp   ß  sD   € à„{�aÒÐØÔ×'Ò'¨¨:Ñ6Ô6Ð6Ð6Ð6à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ón   — | j         dk    r| j                             ¦   «         S J d| j         z  ¦   «         ‚rý  )r¡   rþ  rH  r°   s    r!   rH  rH  ç  s:   € à„{�aÒÐØÔ×1Ò1Ñ3Ô3Ð3à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óp   — | j         dk    r| j                             |¦  «        S J d| j         z  ¦   «         ‚rý  )r¡   rþ  rw   rv   s     r!   rw   rw   ï  s<   € à„{�aÒÐØÔ×-Ò-¨aÑ0Ô0Ð0à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ór   — | j         dk    r| j                             ||¦  «        S J d| j         z  ¦   «         ‚rý  )r¡   rþ  rÌ   rF  s      r!   rÌ   rÌ   ÷  s>   € à„{�aÒÐØÔ×1Ò1°$¸Ñ@Ô@Ð@à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                óp   — | j         dk    r| j                             |¦  «        S J d| j         z  ¦   «         ‚rý  )r¡   rþ  rB  r@  s     r!   rB  rB  ÿ  s<   € à„{�aÒÐØÔ×.Ò.¨~Ñ>Ô>Ð>à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ón   — | j         dk    r| j                             ¦   «         S J d| j         z  ¦   «         ‚rý  )r¡   rþ  rD  r°   s    r!   rD  rD    s:   € à„{�aÒÐØÔ×/Ò/Ñ1Ô1Ð1à4Ð&¨¬Ñ4Ñ4Ô4Ð4r#   c                ó²  — |€t          |j        ¦  «        }t          | ¦  «        }|j        }|                     |d¦  «        \  }}|t          |j        ¦  «        k    r*t          |j        ¦  «        t          ¦   «         fx\  }}||<   |                     |¦  «        rd S |                     |¦  «         | j	        D ]}|sŒ| 
                    ||¦  «         Œd S )NrÆ   )rÉ  r(   ÚidÚ_doneLookupsÚgetr8   rC   Úissubsetrl   ÚSubTablerp   )r'   ro   rk   ÚkeyÚdoneLookupsr4   ÚcoveredÚsts           r!   rp   rp     så   € àÐÝ˜qœxÑ(Ô(ˆ
õ ˆT‰(Œ(€CØ”.€KØ —_’_ S¨)Ñ4Ô4�N€Eˆ7Ø•�A”H‘”ÒÐÝ-0°´©]¬]½C¹E¼EÐ,BÐB‰ˆˆw˜ SÑ)Ø×Ò˜7Ñ#Ô#ð ØˆØ‡N‚N�:ÑÔÐàŒmð )ð )ˆØð 	ØØ
×Ò˜!˜ZÑ(Ô(Ð(Ð(ð)ð )r#   c                óp  ‡— ˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | d¦  «        ra| j        �Z| j        ‰j        vr(d | _        | xj        dz  c_        | xj        dz  c_        n$‰j                             | j        ¦  «        | _        t          | j        ¦  «        S )Nc                óB   •— g | ]}|¯|                      ‰¦  «        ¯|‘ŒS r   ©rw   )r   r  ro   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>&  s1   ø€ ÐNÐNÐN˜B°2ÐN¸"×:JÒ:JÈ1Ñ:MÔ:MÐN�RÐNÐNÐNr#   ÚMarkFilteringSetiïÿÿÿé   )	r	  r8   ÚSubTableCountr³  r  Úused_mark_setsÚ
LookupFlagrg   ru   rv   s    `r!   rw   rw   $  s¶   ø€ àNÐNÐNÐN $¤-ÐNÑNÔN€D„MÝ˜Tœ]Ñ+Ô+€DÔÝˆtÐ'Ñ(Ô(ð R¨TÔ-BÐ-NØÔ ¨Ô(8Ð8Ð8Ø$(ˆDÔ!ØˆOŒO˜uÑ$ˆOŒOØˆOŒO˜sÑ"ˆOŒOˆOà$%Ô$4×$:Ò$:¸4Ô;PÑ$QÔ$QˆDÔ!Ý�Ô"Ñ#Ô#Ð#r#   c                óT   — d}| j         D ]}|sŒ|                     ||¦  «        rd}Œ|S ©NFT)r	  rÌ   )r'   r)   rË   Úretr  s        r!   rÌ   rÌ   2  sF   € à
€CØŒmð ð ˆØð 	ØØ×Ò  gÑ.Ô.ð 	ØˆCøØ€Jr#   c                óD   — | j         D ]}|                     |¦  «         Œd S r   )r	  rB  )r'   rA  ro   s      r!   rB  rB  =  s4   € àŒ]ð )ð )ˆØ	×Ò˜Ñ(Ô(Ð(Ð(ð)ð )r#   c                ó@   — t          d„ | j        D ¦   «         g ¦  «        S )Nc              3  óB   K  — | ]}|¯|                      ¦   «         V — Œd S r   )rD  ©r   r  s     r!   r"   z"collect_lookups.<locals>.<genexpr>E  s3   è è € ÐCÐC¨ÀÐC�×"Ò"Ñ$Ô$ÐCÐCÐCÐCÐCÐCr#   )Úsumr	  r°   s    r!   rD  rD  C  s#   € åÐCÐC¨t¬}ÐCÑCÔCÀRÑHÔHÐHr#   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  óB   K  — | ]}|¯|                      ¦   «         V — Œd S r   )rH  r  s     r!   r"   z$may_have_non_1to1.<locals>.<genexpr>J  s3   è è € ÐDÐD¨"ÀÐDˆr×#Ò#Ñ%Ô%ÐDÐDÐDÐDÐDÐDr#   )rW   r	  r°   s    r!   rH  rH  H  s!   € åÐDÐD°´ÐDÑDÔDÑDÔDÐDr#   c                óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )z(Returns the indices of nonempty lookups.c                óH   •— g | ]\  }}|¯|                      ‰¦  «        ¯|‘ŒS r   r  )r   r3   r5   ro   s      €r!   r6   z!subset_glyphs.<locals>.<listcomp>P  s3   ø€ ÐMÐMÐM‘$�!�Q°AÐM¸!¿/º/È!Ñ:LÔ:LÐMˆAÐMÐMÐMr#   )r=   rÌ  rv   s    `r!   rw   rw   M  s*   ø€ ð NÐMÐMÐM�) D¤KÑ0Ô0ÐMÑMÔMÐMr#   c                óT   — d}| j         D ]}|sŒ|                     ||¦  «        rd}Œ|S r  )rÌ  rÌ   )r'   r)   rË   r  r5   s        r!   rÌ   rÌ   S  sF   € à
€CØŒ[ð ð ˆØð 	ØØ×Ò˜t WÑ-Ô-ð 	ØˆCøØ€Jr#   c                óÆ   ‡ — ‰                       ¦   «          ˆ fd„|D ¦   «         ‰ _        t          ‰ j        ¦  «        ‰ _        ‰ j        D ]}|                     |¦  «         Œd S )Nc                ó@   •— g | ]}|‰j         k     ¯‰j        |         ‘ŒS r   )ÚLookupCountrÌ  rL   s     €r!   r6   z"subset_lookups.<locals>.<listcomp>a  s,   ø€ ÐRÐRÐR a¸QÀÔAQÒ=QÐ=Q�4”;˜q”>Ð=QÐ=QÐ=Qr#   )ÚensureDecompiledrÌ  r8   r%  rB  )r'   rA  r5   s   `  r!   rB  rB  ^  st   ø€ à×ÒÑÔÐØRÐRÐRÐR¨>ÐRÑRÔR€D„KÝ˜4œ;Ñ'Ô'€DÔØŒ[ð )ð )ˆØ	×Ò˜Ñ(Ô(Ð(Ð(ð)ð )r#   c                óz   ‡— |                       ¦   «          ˆfd„t          | j        ¦  «        D ¦   «         | _        dS )ú+Sets lookups not in lookup_indices to None.c                ó&   •— g | ]\  }}|‰v r|nd ‘ŒS r   r   )r   r3   r5   rA  s      €r!   r6   z"neuter_lookups.<locals>.<listcomp>k  s8   ø€ ð ð ð Ù/3¨q°!ˆQ�.Ð Ð ˆˆ dðð ð r#   N)r&  r=   rÌ  r@  s    `r!   Úneuter_lookupsr*  g  sO   ø€ ð 	×ÒÑÔÐðð ð ð Ý7@ÀÄÑ7MÔ7Mðñ ô €D„K€K€Kr#   c                óð   ‡ ‡— t          ‰¦  «        Š‰}	 t          ˆ fd„|D ¦   «         g ¦  «        }ˆˆ fd„|D ¦   «         }|st          ‰¦  «        S t          |¦  «        }‰                     |¦  «         |}Œc)zBReturns sorted index of all lookups reachable from lookup_indices.Tc              3  ól   •K  — | ].}|‰j         k     ¯‰j        |                              ¦   «         V — Œ/d S r   )r%  rÌ  rD  rL   s     €r!   r"   z"closure_lookups.<locals>.<genexpr>w  sB   øè è € ÐWÐW°!À!ÀdÔFVÒBVÐBVˆTŒ[˜Œ^×+Ò+Ñ-Ô-ÐBVÐBVÐBVÐBVÐWÐWr#   c                ó2   •— g | ]}|‰v¯|‰j         k     ¯|‘ŒS r   )r%  )r   r5   rA  r'   s     €€r!   r6   z#closure_lookups.<locals>.<listcomp>z  s;   ø€ ð 
ð 
ð 
àØ˜Ð&Ð&¨1¨tÔ/?Ò+?Ð+?ð à+?Ð+?Ð+?r#   )r   r  Úextend)r'   rA  ÚrecurseÚrecurse_lookupss   ``  r!   Úclosure_lookupsr1  p  s¶   øø€ õ   Ñ/Ô/€NØ€Gð"ÝØWÐWÐWÐW°wÐWÑWÔWØñ
ô 
ˆð
ð 
ð 
ð 
ð 
à$ð
ñ 
ô 
ˆð
 ð 	.Ý˜nÑ-Ô-Ð-Ý$ _Ñ5Ô5ˆØ×Ò˜oÑ.Ô.Ð.Ø!ˆð"r#   c                óâ   ‡— ˆfd„| j         D ¦   «         | _         ˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        | j        pt          | j        t
          j        ¦  «        S )z2 "Returns True if feature is non-empty afterwards.c                ó   •— g | ]}|‰v ¯|‘Œ	S r   r   ©r   r5   rA  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>‰  s#   ø€ ÐSÐSÐS !¸qÀNÐ?RÐ?R˜AÐ?RÐ?RÐ?Rr#   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rf   r4  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>‹  s'   ø€ ÐRÐRÐR¸˜N×0Ò0°Ñ3Ô3ÐRÐRÐRr#   )rÍ  r8   r%  Ú
isinstanceÚFeatureParamsr   ÚFeatureParamsSizer@  s    `r!   rB  rB  †  s€   ø€ ð TÐSÐSÐS tÔ';ÐSÑSÔS€DÔàRÐRÐRÐR¸TÔ=QÐRÑRÔR€DÔÝ˜4Ô/Ñ0Ô0€DÔð Ôð �zØÔ�HÔ6ñ ô  ð r#   c                óD   ‡— ˆfd„t          | j        ¦  «        D ¦   «         S )ú)Returns the indices of nonempty features.c                ód   •— g | ],\  }}|j                              ‰¦  «        s|j        d k    ¯*|‘Œ-S )Úpref)ÚFeaturerB  Ú
FeatureTag)r   r3   ÚfrA  s      €r!   r6   z"subset_lookups.<locals>.<listcomp>œ  sN   ø€ ð ð ð áˆAˆqØŒI×$Ò$ ^Ñ4Ô4ðð 9:¼ÈÒ8NÐ8Nð 	
à8NÐ8NÐ8Nr#   )r=   ÚFeatureRecordr@  s    `r!   rB  rB  •  s9   ø€ ðð ð ð å˜dÔ0Ñ1Ô1ðñ ô ð r#   c                ó<   ‡ — t          ˆ fd„|D ¦   «         g ¦  «        S )Nc              3  ó\   •K  — | ]&}|‰j         k     ¯‰j        |         j        j        V — Œ'd S r   )ÚFeatureCountr@  r=  rÍ  rL   s     €r!   r"   z"collect_lookups.<locals>.<genexpr>¦  sK   øè è € ð 	
ð 	
àØ�4Ô$Ò$Ð$ð Ô˜qÔ!Ô)Ô9à$Ð$Ð$Ð$ð	
ð 	
r#   )r  ©r'   Úfeature_indicess   ` r!   rD  rD  £  s@   ø€ åð	
ð 	
ð 	
ð 	
à$ð	
ñ 	
ô 	
ð
 	ñô ð r#   c                ó¸   — |                       ¦   «          t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r&  r:   r@  r8   rC  ru   rD  s     r!   Úsubset_featuresrG  ¯  sM   € à×ÒÑÔÐÝ% dÔ&8¸/ÑJÔJ€DÔÝ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ñ"Ô"Ð"r#   c                ó*   ‡— ˆfd„| j         D ¦   «         S )r:  c                óR   •— g | ]#}|j                              ‰¦  «        ¯|j        ‘Œ$S r   )r=  rB  ÚFeatureIndex)r   rÒ   rA  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>º  sA   ø€ ð ð ð àØŒ9×#Ò# NÑ3Ô3ðØ	Œðð ð r#   )ÚSubstitutionRecordr@  s    `r!   rB  rB  ·  s1   ø€ ðð ð ð àÔ(ðñ ô ð r#   c                óÀ   ‡— d„ t          |¦  «        D ¦   «         Šˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t	          | j        ¦  «        S )Nc                ó   — i | ]\  }}||“Œ	S r   r   ©r   ÚnewÚolds      r!   r/   z"subset_lookups.<locals>.<dictcomp>Ã  s   € ÐEÐEÐE™x˜s C�#�sÐEÐEÐEr#   c                ó(   •— g | ]}|‰v ¯‰|         ‘ŒS r   r   )r   rg   Ú
lookup_maps     €r!   r6   z"subset_lookups.<locals>.<listcomp>Ä  s/   ø€ ð ð ð Ø#¸5ÀJÐ;NÐ;Nˆ
�5ÔÐ;NÐ;NÐ;Nr#   )r=   ÚLookupIndexr8   ÚLookupIndexCountru   )r'   rA  rR  s     @r!   rB  rB  Á  sr   ø€ àEÐE­9°^Ñ+DÔ+DÐEÑEÔE€Jðð ð ð Ø'+Ô'7ðñ ô €DÔõ   Ô 0Ñ1Ô1€DÔÝ�Ô Ñ!Ô!Ð!r#   c                óŽ   ‡— ˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | j         ¦  «        S )Nc                óH   •— g | ]}|j                              ‰¦  «        ¯|‘ŒS r   )ÚLookupIndexListrB  )r   ÚrecordrA  s     €r!   r6   z"subset_lookups.<locals>.<listcomp>Í  s@   ø€ ð "ð "ð "àØÔ!×0Ò0°Ñ@Ô@ð"Øð"ð "ð "r#   )ÚLookupConditionRecordr8   ÚLookupConditionCountru   r@  s    `r!   rB  rB  Ë  sW   ø€ ð"ð "ð "ð "àÔ0ð"ñ "ô "€DÔõ
 !$ DÔ$>Ñ ?Ô ?€DÔÝ�Ô*Ñ+Ô+Ð+r#   c                ó@   — t          d„ | j        D ¦   «         g ¦  «        S )Nc              3  ó.   K  — | ]}|j         j        V — Œd S r   )rW  rS  ©r   rX  s     r!   r"   z"collect_lookups.<locals>.<genexpr>Ù  s(   è è € ÐUÐU°ˆÔ	Ô	+ÐUÐUÐUÐUÐUÐUr#   )r  rY  r°   s    r!   rD  rD  Ö  s+   € åØUÐU¸$Ô:TÐUÑUÔUØ
ñô ð r#   c                óÚ   ‡— t          ˆfd„| j        D ¦   «         g ¦  «        }t          | dg ¦  «        D ]6}|j                             ‰¦  «        r|                     |j        ¦  «         Œ7|S )r:  c              3  óZ   •K  — | ]%}|j         ®	|j                              ‰¦  «        V — Œ&d S r   )ÚFeatureTableSubstitutionrB  )r   r?  rA  s     €r!   r"   z!subset_lookups.<locals>.<genexpr>â  sI   øè è € ð 	
ð 	
àØÔ)Ð5ð Ô&×5Ò5°nÑEÔEà5Ð5Ð5Ð5ð	
ð 	
r#   ÚLookupVariationRecord)r  ÚFeatureVariationRecordr·   ÚFeatureLookupsTablerB  ÚappendrJ  )r'   rA  rE  rX  s    `  r!   rB  rB  Þ  s—   ø€ õ ð	
ð 	
ð 	
ð 	
àÔ0ð	
ñ 	
ô 	
ð
 	ñô €Oõ ˜$Ð 7¸Ñ<Ô<ð 8ð 8ˆØÔ%×4Ò4°^ÑDÔDð 	8Ø×"Ò" 6Ô#6Ñ7Ô7Ð7øØÐr#   c                óª   ‡— t          ˆfd„| j        D ¦   «         g ¦  «        }|                     ˆfd„t          | dg ¦  «        D ¦   «         ¦  «         |S )Nc              3  ón   •K  — | ]/}|j         �&|j         j        D ]}|j        ‰v ¯|j        j        V — ŒŒ0d S r   )r`  rK  rJ  r=  rÍ  )r   ÚvrrÒ   rE  s      €r!   r"   z"collect_lookups.<locals>.<genexpr>ò  sc   øè è € ð 	
ð 	
àØÔ*Ð6ØÔ0ÔCð 7Ð6ØØŒ~ Ð0Ð0ð	 ŒIÔ%ð 1Ð0Ð0Ð0Ð0ð	
ð 	
r#   c              3  óf   •K  — | ]+}|j         ‰v ¯|j                             ¦   «         D ]}|V — ŒŒ,d S r   )rJ  rc  rD  )r   rX  Úlookup_indexrE  s      €r!   r"   z"collect_lookups.<locals>.<genexpr>û  s]   øè è € ð ð àØÔ /Ð1Ð1Ø"Ô6×FÒFÑHÔHð 2Ð1Øð 	à1Ð1Ð1Ð1Ð1ðð r#   ra  )r  rb  r.  r·   )r'   rE  rA  s    ` r!   rD  rD  ï  s•   ø€ åð	
ð 	
ð 	
ð 	
àÔ1ð	
ñ 	
ô 	
ð 	ñ	ô 	€Nð ×Òð ð ð ð å˜dÐ$;¸RÑ@Ô@ðñ ô ñ ô ð ð Ðr#   c                ó  ‡— |                       ¦   «          ˆfd„| j        D ¦   «         | _        | j        D ]!}‰                     |j        ¦  «        |_        Œ"t	          | j        ¦  «        | _        t          | j        ¦  «        S )Nc                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   ©rJ  )r   rÒ   rE  s     €r!   r6   z#subset_features.<locals>.<listcomp>  s,   ø€ ð ð ð Ø¨a¬nÀÐ.OÐ.OˆÐ.OÐ.OÐ.Or#   )r&  rK  rg   rJ  r8   ÚSubstitutionCountru   )r'   rE  rÒ   s    ` r!   rG  rG    s”   ø€ à×ÒÑÔÐðð ð ð ØÔ*ðñ ô €DÔð Ô$ð ?ð ?ˆØ(×.Ò.¨q¬~Ñ>Ô>ˆŒˆÝ  Ô!8Ñ9Ô9€DÔÝ�Ô&Ñ'Ô'Ð'r#   c                óî   ‡— |                       ¦   «          ˆfd„| j        D ¦   «         | _        | j        D ]}‰|j                 |_        Œt          | j        ¦  «        | _        t          | j        ¦  «        S )Nc                óJ   •— g | ]}|j         ‰                     ¦   «         v ¯|‘Œ S r   )rJ  Úkeys)r   rÒ   Úfeature_index_maps     €r!   r6   z"prune_features.<locals>.<listcomp>  s9   ø€ ð ð ð Ø¨a¬nÐ@Q×@VÒ@VÑ@XÔ@XÐ.XÐ.XˆÐ.XÐ.XÐ.Xr#   )r&  rK  rJ  r8   rm  ru   )r'   rq  rÒ   s    ` r!   Úprune_featuresrr    s‹   ø€ à×ÒÑÔÐðð ð ð ØÔ*ðñ ô €DÔð Ô$ð ;ð ;ˆØ*¨1¬>Ô:ˆŒˆÝ  Ô!8Ñ9Ô9€DÔÝ�Ô&Ñ'Ô'Ð'r#   c                óÜ  ‡— |                       ¦   «          | j        D ]#}|j        �|j                             |¦  «         Œ$| j        rr| j        d         j        �| j        d         j        j        sI| j                             ¦   «          | j        r)| j        d         j        ®2| j        d         j        j        ¯It          | j        ¦  «        | _        d„ t          |¦  «        D ¦   «         Št          | d¦  «        rMˆfd„| j
        D ¦   «         | _
        | j
        D ]}‰|j                 |_        Œt          | j
        ¦  «        | _        t          | j        pt          | dd¦  «        ¦  «        S )Nrñ  c                ó   — i | ]\  }}||“Œ	S r   r   rN  s      r!   r/   z#subset_features.<locals>.<dictcomp>/  s   € ÐGÐGÐG¡  S�3˜ÐGÐGÐGr#   ra  c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   rl  )r   rX  Úfeature_maps     €r!   r6   z#subset_features.<locals>.<listcomp>1  s1   ø€ ð &
ð &
ð &
àØÔ" kÐ1Ð1ð à1Ð1Ð1r#   ÚLookupVariationCountr   )r&  rb  r`  rG  rm  Úpopr8   ÚFeatureVariationCountr=   r³  ra  rJ  rw  ru   r·   )r'   rE  rÒ   rX  rv  s       @r!   rG  rG    s£  ø€ à×ÒÑÔÐØÔ(ð Hð HˆØÔ%Ð1ØÔ&×6Ò6°ÑGÔGÐGøð Ô
%ð *ØÔ# BÔ'Ô@ÐHØÔ*Øô
ä
"Ô#4ð 	Ið
 	Ô#×'Ò'Ñ)Ô)Ð)ð Ô
%ð *ØÔ# BÔ'Ô@ÐHØÔ*Øô
ä
"Ô#4ð 	Iõ "% TÔ%@Ñ!AÔ!A€DÔàGÐG­I°oÑ,FÔ,FÐGÑGÔG€KÝˆtÐ,Ñ-Ô-ð Dð&
ð &
ð &
ð &
àÔ4ð&
ñ &
ô &
ˆÔ"ð
 Ô0ð 	Cð 	CˆFØ"-¨fÔ.AÔ"BˆFÔÐÝ$'¨Ô(BÑ$CÔ$CˆÔ!å�Ô*ÐV­g°dÐ<RÐTUÑ.VÔ.VÑWÔWÐWr#   c                óª  ‡— |                       ¦   «          | j        D ]#}|j        �|j                             ‰¦  «         Œ$| j        rr| j        d         j        �| j        d         j        j        sI| j                             ¦   «          | j        r)| j        d         j        ®2| j        d         j        j        ¯It          | j        ¦  «        | _        t          | d¦  «        rMˆfd„| j	        D ¦   «         | _	        | j	        D ]}‰|j
                 |_
        Œt          | j	        ¦  «        | _        t          | j        pt          | dd¦  «        ¦  «        S )Nrñ  ra  c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   rl  )r   rX  rq  s     €r!   r6   z"prune_features.<locals>.<listcomp>O  s2   ø€ ð &
ð &
ð &
àØÔ"Ð&7Ð7Ð7ð à7Ð7Ð7r#   rw  r   )r&  rb  r`  rr  rm  rx  r8   ry  r³  ra  rJ  rw  ru   r·   )r'   rq  rÒ   rX  s    `  r!   rr  rr  =  s‰  ø€ à×ÒÑÔÐØÔ(ð Ið IˆØÔ%Ð1ØÔ&×5Ò5Ð6GÑHÔHÐHøð Ô
%ð *ØÔ# BÔ'Ô@ÐHØÔ*Øô
ä
"Ô#4ð 	Ið
 	Ô#×'Ò'Ñ)Ô)Ð)ð Ô
%ð *ØÔ# BÔ'Ô@ÐHØÔ*Øô
ä
"Ô#4ð 	Iõ "% TÔ%@Ñ!AÔ!A€DÔåˆtÐ,Ñ-Ô-ð Dð&
ð &
ð &
ð &
àÔ4ð&
ñ &
ô &
ˆÔ"ð
 Ô0ð 	Ið 	IˆFØ"3°FÔ4GÔ"HˆFÔÐÝ$'¨Ô(BÑ$CÔ$CˆÔ!å�Ô*ÐV­g°dÐ<RÐTUÑ.VÔ.VÑWÔWÐWr#   c                ó4  ‡— | j         ‰v r ‰                     | j         ¦  «        | _         nd| _         ˆfd„| j        D ¦   «         | _        ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p
| j         dk    ¦  «        S )Néÿÿ  c                ó   •— g | ]}|‰v ¯|‘Œ	S r   r   ©r   r?  rE  s     €r!   r6   z#subset_features.<locals>.<listcomp>a  s#   ø€ ÐNÐNÐN˜q¸¸oÐ9MÐ9M˜Ð9MÐ9MÐ9Mr#   c                óB   •— g | ]}|‰v ¯‰                      |¦  «        ‘ŒS r   rf   r  s     €r!   r6   z#subset_features.<locals>.<listcomp>c  s8   ø€ ð ð ð Ø%&¸qÀOÐ?SÐ?Sˆ×Ò˜aÑ Ô Ð?SÐ?SÐ?Sr#   )ÚReqFeatureIndexrg   rJ  r8   rC  ru   rD  s    `r!   rG  rG  [  sµ   ø€ àÔ˜Ð.Ð.Ø.×4Ò4°TÔ5IÑJÔJˆÔÐà$ˆÔØNÐNÐNÐN DÔ$5ÐNÑNÔN€DÔðð ð ð Ø*.Ô*;ðñ ô €DÔõ ˜DÔ-Ñ.Ô.€DÔÝ�Ô!ÐB TÔ%9¸UÒ%BÑCÔCÐCr#   c                óä   ‡— ‰                      | j        d¦  «        | _        ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p
| j        dk    ¦  «        S )Nr}  c                óL   •— g | ] }|‰                      ¦   «         v ¯‰|         ‘Œ!S r   )rp  )r   r?  rq  s     €r!   r6   z"prune_features.<locals>.<listcomp>m  s=   ø€ ð ð ð Ø!"¸1Ð@Q×@VÒ@VÑ@XÔ@XÐ;XÐ;XÐ˜!ÔÐ;XÐ;XÐ;Xr#   )r  r�  rJ  r8   rC  ru   )r'   rq  s    `r!   rr  rr  j  s   ø€ à,×0Ò0°Ô1EÀuÑMÔM€DÔðð ð ð Ø&*Ô&7ðñ ô €DÔõ ˜DÔ-Ñ.Ô.€DÔÝ�Ô!ÐB TÔ%9¸UÒ%BÑCÔCÐCr#   c                óˆ   — | j         d d …         }| j        dk    r|                     | j        ¦  «         t          |¦  «        S ©Nr}  )rJ  r�  rd  r   rD  s     r!   Úcollect_featuresr†  t  sF   € àÔ'¨¨¨Ô*€OØÔ˜uÒ$Ð$Ø×Ò˜tÔ3Ñ4Ô4Ð4Ý�oÑ&Ô&Ð&r#   c                óð   ‡— | j         r#| j                              ‰¦  «        s	|sd | _         ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p| j         ¦  «        S )Nc                óH   •— g | ]}|j                              ‰¦  «        ¯|‘ŒS r   )ÚLangSysrG  )r   r5   rE  s     €r!   r6   z#subset_features.<locals>.<listcomp>„  s>   ø€ ð ð ð Ø¨¬×)BÒ)BÀ?Ñ)SÔ)SðØ	ðð ð r#   )ÚDefaultLangSysrG  ÚLangSysRecordr8   ÚLangSysCountru   )r'   rE  ÚkeepEmptyDefaultLangSyss    ` r!   rG  rG  |  s™   ø€ ð 	Ôð#àÔ#×3Ò3°OÑDÔDð#ð (ð#ð
 #ˆÔðð ð ð ØÔ%ðñ ô €DÔõ ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ð8 TÔ%8Ñ9Ô9Ð9r#   c                óð   ‡— | j         r#| j                              ‰¦  «        s	|sd | _         ˆfd„| j        D ¦   «         | _        t          | j        ¦  «        | _        t          | j        p| j         ¦  «        S )Nc                óH   •— g | ]}|j                              ‰¦  «        ¯|‘ŒS r   )r‰  rr  )r   r5   rq  s     €r!   r6   z"prune_features.<locals>.<listcomp>“  s?   ø€ ð ð ð Ø¨¬×)AÒ)AÐBSÑ)TÔ)TðØ	ðð ð r#   )rŠ  rr  r‹  r8   rŒ  ru   )r'   rq  r�  s    ` r!   rr  rr  ‹  sš   ø€ ð 	Ôð#àÔ#×2Ò2Ð3DÑEÔEð#ð (ð#ð
 #ˆÔðð ð ð ØÔ%ðñ ô €DÔõ ˜DÔ.Ñ/Ô/€DÔÝ�Ô!Ð8 TÔ%8Ñ9Ô9Ð9r#   c                óÄ   — d„ | j         D ¦   «         }| j        r,|                     | j                             ¦   «         ¦  «         t	          t          |g ¦  «        ¦  «        S )Nc                ó@   — g | ]}|j                              ¦   «         ‘ŒS r   )r‰  r†  )r   r5   s     r!   r6   z$collect_features.<locals>.<listcomp>œ  s&   € ÐPÐPÐP¸�q”y×1Ò1Ñ3Ô3ÐPÐPÐPr#   )r‹  rŠ  rd  r†  r   r  rD  s     r!   r†  r†  š  s_   € àPÐP¸TÔ=OÐPÑPÔP€OØÔð GØ×Ò˜tÔ2×CÒCÑEÔEÑFÔFÐFÝ•c˜/¨2Ñ.Ô.Ñ/Ô/Ð/r#   c                ó’   ‡‡— ˆˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | j        ¦  «        S )Nc                ó`   •— g | ]*}|j                              ‰|j        d k    ¦  «        s‰¯(|‘Œ+S ©ÚDFLT)ÚScriptrG  Ú	ScriptTag)r   ro   rE  Úretain_emptys     €€r!   r6   z#subset_features.<locals>.<listcomp>¥  sR   ø€ ð ð ð àØŒ8×#Ò# O°Q´[ÀFÒ5JÑKÔKðð ð	Ø	ðð ð r#   ©ÚScriptRecordr8   ÚScriptCountru   )r'   rE  r˜  s    ``r!   rG  rG  ¢  ó]   øø€ ðð ð ð ð àÔ"ðñ ô €DÔõ ˜4Ô,Ñ-Ô-€DÔÝ�Ô Ñ!Ô!Ð!r#   c                ó’   ‡‡— ˆˆfd„| j         D ¦   «         | _         t          | j         ¦  «        | _        t          | j        ¦  «        S )Nc                ó`   •— g | ]*}|j                              ‰|j        d k    ¦  «        s‰¯(|‘Œ+S r”  )r–  rr  r—  )r   ro   rq  r˜  s     €€r!   r6   z"prune_features.<locals>.<listcomp>²  sS   ø€ ð ð ð àØŒ8×"Ò"Ð#4°a´kÀVÒ6KÑLÔLðð ð	Ø	ðð ð r#   r™  )r'   rq  r˜  s    ``r!   rr  rr  ¯  rœ  r#   c                óZ   — t          t          d„ | j        D ¦   «         g ¦  «        ¦  «        S )Nc              3  óH   K  — | ]}|j                              ¦   «         V — Œd S r   )r–  r†  ©r   ro   s     r!   r"   z#collect_features.<locals>.<genexpr>¾  s0   è è € ÐRÐR¸1˜1œ8×4Ò4Ñ6Ô6ÐRÐRÐRÐRÐRÐRr#   )r   r  rš  r°   s    r!   r†  r†  ¼  s-   € å•cÐRÐRÀÔ@QÐRÑRÔRÐTVÑWÔWÑXÔXÐXr#   ÚEBLCc                ó¸   ‡— | j         D ]:}|j        D ]}ˆfd„|j        D ¦   «         |_        Œd„ |j        D ¦   «         |_        Œ;d„ | j         D ¦   «         | _         dS )Nc                ó&   •— g | ]}|‰j         v ¯|‘ŒS r   rK   )r   Únro   s     €r!   r6   z!subset_glyphs.<locals>.<listcomp>Æ  s    ø€ Ð"SÐ"SÐ"S¨ÀQÈ!Ì(À]À] 1À]À]À]r#   c                ó    — g | ]}|j         ¯	|‘ŒS r   )Únames)r   r3   s     r!   r6   z!subset_glyphs.<locals>.<listcomp>Ç  s   € Ð MÐ MÐ M qÀQÄWÐ M Ð MÐ MÐ Mr#   c                ó    — g | ]}|j         ¯	|‘ŒS r   )ÚindexSubTablesr¡  s     r!   r6   z!subset_glyphs.<locals>.<listcomp>È  s    € Ð@Ð@Ð@˜!¨qÔ/?Ð@�AÐ@Ð@Ð@r#   T)Ústrikesr©  r§  )r'   ro   ÚstrikeÚindexSubTables    `  r!   rw   rw   Â  s„   ø€ à”,ð Nð NˆØ#Ô2ð 	Tð 	TˆMØ"SÐ"SÐ"SÐ"S¨mÔ.AÐ"SÑ"SÔ"SˆMÔÐØ MÐ M¨FÔ,AÐ MÑ MÔ MˆÔÐØ@Ð@˜tœ|Ð@Ñ@Ô@€D„Làˆ4r#   ÚEBDTc                óP   ‡— ˆfd„| j         D ¦   «         }d„ |D ¦   «         | _         dS )Nc                ó8   •‡— g | ]Šˆfd „‰j         D ¦   «         ‘ŒS )c                ó*   •— i | ]}|‰v ¯|‰|         “ŒS r   r   ©r   r   r«  s     €r!   r/   z,subset_glyphs.<locals>.<listcomp>.<dictcomp>Ñ  s$   ø€ Ð7Ð7Ð7˜!¨1°¨;¨;ˆˆF�1ŒI¨;¨;¨;r#   rK   )r   r«  ro   s    @€r!   r6   z!subset_glyphs.<locals>.<listcomp>Ð  s>   øø€ ð ð ð Ø<BÐ7Ð7Ð7Ð7˜qœxÐ7Ñ7Ô7ðð ð r#   c                ó   — g | ]}|¯|‘ŒS r   r   )r   r«  s     r!   r6   z!subset_glyphs.<locals>.<listcomp>Õ  s   € ÐAÐAÐA &¸&ÐA�vÐAÐAÐAr#   T)Ú
strikeData)r'   ro   r³  s    ` r!   rw   rw   Î  sJ   ø€ ðð ð ð ØFJÄoðñ ô €Jð
 BÐA¨JÐAÑAÔA€D„OØˆ4r#   Úsbixc                óp   ‡— | j                              ¦   «         D ]Šˆfd„|j        D ¦   «         ‰_        ŒdS )Nc                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   rK   r±  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>Ü  s.   ø€ ÐUÐUÐU°À!ÀvÄ}ÐBTÐBT˜˜FœM¨!Ô,ÐBTÐBTÐBTr#   T)rª  rb   r(   )r'   ro   r«  s     @r!   rw   rw   Ù  sF   ø€ à”,×%Ò%Ñ'Ô'ð Vð VˆØUÐUÐUÐU°a´hÐUÑUÔUˆŒˆàˆ4r#   ÚGSUBc                óŽ  — | j         |_         | j         j        r| j         j                             ¦   «         }ng }| j         j        r | j         j                             |¦  «        }ng }t          | j         dd ¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        rˆi |_	        	 t          |j        ¦  «        }|D ]Z}|| j         j        j        k    rŒ| j         j        j        |         sŒ0| j         j        j        |                              |¦  «         Œ[||j        k    rnŒ~|`	|` d S )NÚFeatureVariations)rÊ  Ú
ScriptListr†  ÚFeatureListrD  r·   r¹  r   rË  r  rÉ  r(   r%  rÌ  rp   )r'   ro   rE  rA  Úorig_glyphsr3   s         r!   rp   rp   á  sS  € àŒj€A„GØ„zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ„zÔð ØœÔ/×?Ò?ÀÑPÔPˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð XØ˜$œ*Ô6×FÒFÀÑWÔWÑWˆÝ Ñ/Ô/€NØ„zÔð ØˆŒð		Ý# A¤HÑ-Ô-ˆKØ#ð Bð B�Ø˜œ
Ô-Ô9Ò9Ð9ØØ”zÔ,Ô3°AÔ6ð ØØ”
Ô%Ô,¨QÔ/×>Ò>¸qÑAÔAÐAÐAØ˜aœhÒ&Ð&Øð		ð ˆNØ	ˆˆˆr#   ÚGPOSc                ó¤   — |j         |_        | j        j        r | j        j                             |¦  «        }ng }|                      |¦  «         dS rü   )Úglyphs_gsubedr(   rÊ  rË  rw   rB  )r'   ro   rA  s      r!   rw   rw   ÿ  sP   € àŒ€A„HØ„zÔð ØœÔ.×<Ò<¸QÑ?Ô?ˆˆàˆØ×Ò˜Ñ'Ô'Ð'Øˆ4r#   c                ó<   — | j         t          j        d¦  «        k    S )Nr·  )r´  r   ÚgetTableClassr°   s    r!   Úretain_empty_scriptsrÂ  
  s   € ð Œ>�UÔ0°Ñ8Ô8Ò8Ð8r#   c                ó†  — | j         j        r| j         j                             |¦  «         | j         j        r | j         j                             |¦  «        }ng }t	          | j         dd¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        r| j         j                             |¦  «         t	          | j         dd¦  «        r| j         j                             |¦  «         | j         j        r4| j         j                             ||  	                    ¦   «         ¦  «         dS dS )zZRetains specified lookups, then removes empty features, language
    systems, and scripts.r¹  N)
rÊ  rË  rB  r»  r·   r¹  r   rG  rº  rÂ  )r'   rA  rE  s      r!   rB  rB    s?  € ð „zÔð =ØŒ
Ô×,Ò,¨^Ñ<Ô<Ð<Ø„zÔð Øœ*Ô0×?Ò?ÀÑOÔOˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð WØ˜4œ:Ô7×FÒFÀ~ÑVÔVÑVˆÝ  Ñ1Ô1€OØ„zÔð @ØŒ
Ô×.Ò.¨Ñ?Ô?Ð?ÝˆtŒzÐ.°Ñ5Ô5ð FØŒ
Ô$×4Ò4°_ÑEÔEÐEØ„zÔð 
ØŒ
Ô×-Ò-Ø˜T×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r#   c                ó`   — | j         j        r!| j         j                             |¦  «         dS dS )r(  N)rÊ  rË  r*  r@  s     r!   r*  r*  (  s:   € ð „zÔð =ØŒ
Ô×,Ò,¨^Ñ<Ô<Ð<Ð<Ð<ð=ð =r#   c                ó  — | j         j        r| j         j                             ¦   «         }ng }| j         j        r | j         j                             |¦  «        }ng }t          | j         dd¦  «        r"|| j         j                             |¦  «        z  }t          |¦  «        }| j         j        r | j         j         	                    |¦  «        }ng }|r|  
                    |¦  «         dS |                      |¦  «         dS )z/Remove (default) or neuter unreferenced lookupsr¹  N)rÊ  rº  r†  r»  rD  r·   r¹  r   rË  r1  rB  r*  )r'   rN   rE  rA  s       r!   Úprune_lookupsrÆ  /  s  € ð „zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ„zÔð ØœÔ/×?Ò?ÀÑPÔPˆˆàˆÝˆtŒzÐ.°Ñ5Ô5ð XØ˜$œ*Ô6×FÒFÀÑWÔWÑWˆÝ Ñ/Ô/€NØ„zÔð ØœÔ.×>Ò>¸~ÑNÔNˆˆàˆØð ,Ø×Ò˜NÑ+Ô+Ð+Ð+Ð+à×Ò˜NÑ+Ô+Ð+Ð+Ð+r#   c                ó¢  ‡— | j         j        rˆfd„t          | j         j        j        ¦  «        D ¦   «         }| j         j                             |¦  «         t          | j         dd ¦  «        r| j         j                             |¦  «         ng }| j         j        r4| j         j                             ||                      ¦   «         ¦  «         d S d S )Nc                ó,   •— g | ]\  }}|j         ‰v ¯|‘ŒS r   )r>  )r   r3   r?  Úfeature_tagss      €r!   r6   z'subset_feature_tags.<locals>.<listcomp>J  s4   ø€ ð 
ð 
ð 
á��1ØŒ|˜|Ð+Ð+ð à+Ð+Ð+r#   r¹  )	rÊ  r»  r=   r@  rG  r·   r¹  rº  rÂ  )r'   rÉ  rE  s    ` r!   Úsubset_feature_tagsrÊ  G  sé   ø€ à„zÔð 
ð
ð 
ð 
ð 
å! $¤*Ô"8Ô"FÑGÔGð
ñ 
ô 
ˆð
 	Œ
Ô×.Ò.¨Ñ?Ô?Ð?Ý�4”:Ð2°DÑ9Ô9ð 	JØŒJÔ(×8Ò8¸ÑIÔIÐIøàˆØ„zÔð 
ØŒ
Ô×-Ò-Ø˜T×6Ò6Ñ8Ô8ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r#   c                ó>  ‡‡‡— i Št          ¦   «         Š|D ]’}d|v r|                     d¦  «        n|df\  }}‰                     |                     d¦  «        ¦  «         ‰                     |t          ¦   «         ¦  «                             |                     d¦  «        ¦  «         Œ“| j        j        ræˆfd„| j        j        j        D ¦   «         | j        j        _        t          | j        j        j        ¦  «        | j        j        _	        | j        j        j        D ]}Š‰j
        ‰v rpd‰‰j
                 vraˆˆfd„‰j        j        D ¦   «         ‰j        _        t          ‰j        j        ¦  «        ‰j        _        d‰‰j
                 vrd ‰j        _        Œ|d S d S )Nú.r   é   c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   )r—  )r   ro   Úscript_tagss     €r!   r6   z&subset_script_tags.<locals>.<listcomp>d  s,   ø€ ð .
ð .
ð .
Ø¸Q¼[ÈKÐ=WÐ=WˆAÐ=WÐ=WÐ=Wr#   z*   c                ó<   •— g | ]}|j         ‰‰j                 v ¯|‘ŒS r   )Ú
LangSysTagr—  )r   r5   ÚlangsysrX  s     €€r!   r6   z&subset_script_tags.<locals>.<listcomp>k  s8   ø€ ð /ð /ð /àØ”| w¨vÔ/?Ô'@Ð@Ð@ð à@Ð@Ð@r#   Údflt)rC   ÚsplitrÎ  ÚljustÚ
setdefaultrÊ  rº  rš  r8   r›  r—  r–  r‹  rŒ  rŠ  )r'   ÚtagsÚtagÚ
script_tagÚlang_tagrÒ  rX  rÏ  s        @@@r!   Úsubset_script_tagsrÛ  Z  s¼  øøø€ à€GÝ‘%”%€KØð Eð EˆØ14¸°°˜sŸyšy¨™~œ~˜~À#ÀsÀÑˆ
�HØ�Š˜
×(Ò(¨Ñ+Ô+Ñ,Ô,Ð,Ø×Ò˜:¥s¡u¤uÑ-Ô-×1Ò1°(·.².ÀÑ2CÔ2CÑDÔDÐDÐDà„zÔð 8ð.
ð .
ð .
ð .
Ø”zÔ,Ô9ð.
ñ .
ô .
ˆŒ
ÔÔ*õ -0°´
Ô0EÔ0RÑ,SÔ,SˆŒ
ÔÔ)à”jÔ+Ô8ð 		8ð 		8ˆFØÔ 7Ð*Ð*¨v¸WÀVÔEUÔ=VÐ/VÐ/Vð/ð /ð /ð /ð /à#œ]Ô8ð/ñ /ô /�”Ô+õ
 .1°´Ô1LÑ-MÔ-M�”Ô*Ø ¨Ô)9Ô!:Ð:Ð:Ø37�F”MÔ0øð8ð 8ð		8ð 		8r#   c                óÐ  — | j         j        r| j         j                             ¦   «         }ng }|                      |¦  «        \  }}| j         j        r| j         j                             |¦  «         t          | j         dd¦  «        r| j         j                             |¦  «         | j         j        r4| j         j                             ||  	                    ¦   «         ¦  «         dS dS )z§Remove unreferenced and duplicate features in FeatureList
    Remove unreferenced features and remap duplicate feature indices in ScriptList and FeatureVariations
    r¹  N)
rÊ  rº  r†  Úremap_duplicate_featuresr»  rG  r·   r¹  rr  rÂ  )r'   rE  rq  s      r!   rr  rr  u  sï   € ð
 „zÔð Øœ*Ô/×@Ò@ÑBÔBˆˆàˆØ)-×)FÒ)FÀÑ)WÔ)WÑ&€OÐ&à„zÔð @ØŒ
Ô×.Ò.¨Ñ?Ô?Ð?ÝˆtŒzÐ.°Ñ5Ô5ð GØŒ
Ô$×3Ò3Ð4EÑFÔFÐFØ„zÔð 
ØŒ
Ô×,Ò,Ø˜t×8Ò8Ñ:Ô:ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r#   c                ó˜  — | j         j        j        }i }i }d„ t          t          | j         dd¦  «        dg ¦  «        D ¦   «         }|D ]�}||         }|j        }|                     |¦  «        }	|	€t          |g¦  «        ||<   |||<   ŒAd}
|	D ]}||vr||vr||         |k    r	d}
|||<    nŒ |
s|	                     |¦  «         |||<   Œ‚i }d}|D ]?}|                     ||¦  «        }|                     |¦  «        }|€|||<   |dz  }Œ:|||<   Œ@t          t          d	„ | 
                    ¦   «         D ¦   «         g ¦  «        ¦  «        }||fS )
zPReturn retained feature indices(without duplicates) and remapped feature indicesc                ó   — h | ]	}|j         ’Œ
S r   rl  r]  s     r!   ú	<setcomp>z+remap_duplicate_features.<locals>.<setcomp>‘  s+   € ð !ð !ð !àð 	Ôð!ð !ð !r#   r¹  Nra  FTr   rœ   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   )ra   r¡  s     r!   r"   z+remap_duplicate_features.<locals>.<genexpr>À  s(   è è € Ð7Ð7˜�T�!‰WŒWÐ7Ð7Ð7Ð7Ð7Ð7r#   )rÊ  r»  r@  r·   r>  r  rC   rÎ  r   r  rb   )r'   rE  ÚfeaturesÚunique_featuresÚduplicate_featuresÚlookup_variation_featuresr3   r?  rØ  Úsame_tag_featuresÚfoundÚother_irv  Únew_idxÚunique_irV   Úretained_feature_indicess                    r!   rÝ  rÝ  Š  sÜ  € ð ŒzÔ%Ô3€Hà€OØÐð!ð !åÝ�D”JÐ 3°TÑ:Ô:Ø#Øñ
ô 
ð!ñ !ô !Ðð ð &ð &ˆØ�QŒKˆØŒlˆà+×/Ò/°Ñ4Ô4ÐØÐ$Ý#&¨ s¡8¤8ˆO˜CÑ Ø$%Ð˜qÑ!ØàˆØ(ð 	ð 	ˆGàÐ2Ð2Ð2ØÐ#<Ð<Ð<Ø˜WÔ%¨Ò*Ð*à�Ø(/Ð" 1Ñ%Ø�øàð 	&Ø×!Ò! !Ñ$Ô$Ð$Ø$%Ð˜qÑ!øð €KØ€Gàð ð ˆØ%×)Ò)¨!¨QÑ/Ô/ˆØ�OŠO˜HÑ%Ô%ˆØˆ9Ø$ˆK˜‰NØ�q‰LˆGˆGàˆK˜‰NˆNå)ÝÐ7Ð7˜o×4Ò4Ñ6Ô6Ð7Ñ7Ô7¸Ñ<Ô<ñ ô  Ðð % kÐ2Ð2r#   c                ó¾   — d|j         vr|                      |j         ¦  «         d|j        vr|                      |j        ¦  «         |                      d¬¦  «         dS )Nr   FrÙ   T)Úlayout_scriptsrÛ  Úlayout_featuresrÊ  rÆ  rF  s      r!   Úprune_pre_subsetrï  Å  sj   € ð �'Ô(Ð(Ð(Ø×Ò Ô 6Ñ7Ô7Ð7Ø
�'Ô)Ð)Ð)Ø× Ò  Ô!8Ñ9Ô9Ð9à×Ò˜UÐÑ#Ô#Ð#Øˆ4r#   c                óz  — | j         }|j        r|j        sd S |j        j        }|j        j        D �]	}|j        j        }|sŒ|j        j        d d …         D ]â}|j        }t          |j
        ¦  «        t          |j
        ¦  «        k    rŒ4|j        dk    |j        dk    k    rŒM|j        dk    r||j                 ||j                 k    rŒut          t          |j
        ¦  «        ¦  «        D ],}||j
        |                  ||j
        |                  k    r n Œ-|j        j                             |¦  «         Œã�Œd S r…  )rÊ  rº  r»  r@  rš  r–  rŠ  r‹  r‰  r8   rJ  r�  rÏ  Úremove)r'   rÊ  râ  ro   r.   Úlrr5   r3   s           r!   Úremove_redundant_langsysró  Ñ  sb  € àŒJ€EØÔð  5Ô#4ð ØˆàÔ Ô.€HàÔÔ*ð 2ñ 2ˆØŒHÔ#ˆØð 	ØØ”(Ô(¨¨¨Ô+ð 	2ð 	2ˆBØ”
ˆAå�1”>Ñ"Ô"¥c¨!¬.Ñ&9Ô&9Ò9Ð9ØØÔ! UÒ*°Ô0AÀUÒ0JÒKÐKØàÔ  EÒ)Ð)Ø˜AÔ-Ô.°(¸1Ô;LÔ2MÒMÐMØå�3˜qœ~Ñ.Ô.Ñ/Ô/ð 2ð 2�Ø˜AœN¨1Ô-Ô.°(¸1¼>È!Ô;LÔ2MÒMÐMØ�Eð Nð ”Ô&×-Ò-¨bÑ1Ô1Ð1øñ#	2ð	2ð 2r#   c                óº  — | j         }|                      ¦   «          |j        r|j                             ||¦  «         |j        sd |_        |j        r(|                      ¦   «          |                      ¦   «          t          |d¦  «        rP|j        r0|j        r"|j        j	        st          |j        dg ¦  «        sd |_        |j        s|j        dk    rd|_        dS )Nr¹  ra  i  é   T)rÊ  rÆ  rË  rÌ   r»  ró  rr  r³  r¹  rb  r·   ÚVersion©r'   r)   rË   rÊ  s       r!   rÌ   rÌ   ñ  s  € àŒJ€Eà×ÒÑÔÐàÔð :ØÔ×*Ò*¨4°Ñ9Ô9Ð9ð Ôð !Ø ˆÔàÔð Ø×%Ò%Ñ'Ô'Ð'à×ÒÑÔÐõ ˆuÐ)Ñ*Ô*ð 'àÔ"ð 	+ØÔð	+ð Ô'Ô>ð	+õ ˜5Ô2Ð4KÈRÑPÔPð		+ð '+ˆEÔ#ð Ô&ð 	'¨5¬=¸JÒ+FÐ+FØ&ˆEŒMàˆ4r#   ÚGDEFc                óº  ‡‡‡— |j         Š| j        Š‰j        rf‰j        j                             ‰¦  «        }t          ‰j        j        |¦  «        ‰j        _        t          ‰j        j        ¦  «        ‰j        _        ‰j	        r4ˆfd„‰j	        j
                             ¦   «         D ¦   «         ‰j	        _
        ‰j        r4ˆfd„‰j        j
                             ¦   «         D ¦   «         ‰j        _
        ‰j        rg‰j        j                             ‰¦  «        }‰j        j        Šˆˆfd„|D ¦   «         ‰j        _        t          ‰j        j        ¦  «        ‰j        _        t!          ‰d¦  «        rh‰j        ra‰j        }|j        D ]}|r|                     ‰¦  «         Œd„ t%          |j        ¦  «        D ¦   «         |_        d„ |j        D ¦   «         |_        dS )Nc                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rU   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>-	  s,   ø€ ð .
ð .
ð .
Ù�Q˜È1ÐPVÈ;È;ˆAˆqÈ;È;È;r#   c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   rU   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>1	  s+   ø€ ð )
ð )
ð )
Ù�Q˜ÀaÈ6ÀkÀkˆAˆqÀkÀkÀkr#   c                ó@   •— g | ]}|‰k     ¯‰j         j        |         ‘ŒS r   )Ú
AttachListÚAttachPoint)r   r3   r©   rÊ  s     €€r!   r6   z!subset_glyphs.<locals>.<listcomp>7	  s0   ø€ ð (
ð (
ð (
Ø01ÀÀJÂÀˆEÔÔ(¨Ô+ÀÀÀr#   ÚMarkGlyphSetsDefc                ó&   — g | ]\  }}|j         ¯|‘ŒS r   rK   rà   s      r!   r6   z!subset_glyphs.<locals>.<listcomp>A	  s#   € ÐXÐXÐX¡$ ! QÈqÌxÐX˜AÐXÐXÐXr#   c                ó    — g | ]}|j         ¯	|‘ŒS r   rK   )r   rŽ   s     r!   r6   z!subset_glyphs.<locals>.<listcomp>B	  s   € Ð!PÐ!PÐ!P¨ÀqÄxÐ!P !Ð!PÐ!PÐ!Pr#   T)r¿  rÊ  ÚLigCaretListr¢   rH   r:   r�   r8   ÚLigGlyphCountÚMarkAttachClassDefrR   rX   ÚGlyphClassDefrý  r©   rþ  r³  rÿ  r=   r  )r'   ro   r9   ÚmarkGlyphSetsÚcoverager©   r(   rÊ  s        @@@r!   rw   rw   $	  s  øøø€ àŒ_€FØŒJ€EØÔð LØÔ$Ô-×4Ò4°VÑ<Ô<ˆÝ&2°5Ô3EÔ3NÐPWÑ&XÔ&XˆÔÔ#Ý+.¨uÔ/AÔ/JÑ+KÔ+KˆÔÔ(ØÔð 
ð.
ð .
ð .
ð .
Ø"Ô5Ô?×EÒEÑGÔGð.
ñ .
ô .
ˆÔ Ô*ð Ôð 
ð)
ð )
ð )
ð )
Ø"Ô0Ô:×@Ò@ÑBÔBð)
ñ )
ô )
ˆÔÔ%ð Ôð HØÔ"Ô+×2Ò2°6Ñ:Ô:ˆØÔ%Ô0ˆ
ð(
ð (
ð (
ð (
ð (
Ø5<ð(
ñ (
ô (
ˆÔÔ$õ '*¨%Ô*:Ô*FÑ&GÔ&GˆÔÔ#ÝˆuÐ(Ñ)Ô)ð Q¨eÔ.Dð QØÔ.ˆØ%Ô.ð 	(ð 	(ˆHØð (Ø—’ Ñ'Ô'Ð'øàXÐX­)°MÔ4JÑ*KÔ*KÐXÑXÔXˆÔØ!PÐ!P¨]Ô-CÐ!PÑ!PÔ!PˆÔàˆ4r#   c                óä  ‡— d| vrd S | d         }|j         }t          |dd ¦  «        €d S |j        Št          ¦   «         }|                     |¦  «         dD ]&}|| v r | |         j                              |¦  «         Œ'ˆfd„|D ¦   «         }‰                     |¦  «        }t          ¦   «         }|                     ||¬¦  «         dD ](}|| v r"| |         j                              ||¬¦  «         Œ)d S )Nrø  ÚVarStore)r·  r½  ÚMATHÚJSTFc                óœ   •— h | ]H}|d z	  t          ‰j        ¦  «        k     r+|dz  t          ‰j        |d z	           j        ¦  «        k     ¯F|’ŒIS )é   r}  )r8   ÚVarDataÚItem)r   rg   Ústores     €r!   rà  z_pruneGDEF.<locals>.<setcomp>[	  sd   ø€ ð ð ð àØ�B‰;�˜Uœ]Ñ+Ô+Ò+Ð+Ø�F‰N�S ¤¨u¸©{Ô!;Ô!@ÑAÔAÒAÐAð 	ð BÐAÐAr#   )Údone)rÊ  r·   r	  rC   Úcollect_device_varidxesÚsubset_varidxesÚremap_device_varidxes)r)   ÚgdefrÊ  ÚusedVarIdxesrØ  Ú
varidx_mapr  r  s          @r!   Ú
_pruneGDEFr  G	  s<  ø€ Ø�TÐÐØˆØ�Œ<€DØŒJ€EÝˆu�j $Ñ'Ô'Ð/ØˆàŒN€Eå‘5”5€Lð 
×!Ò! ,Ñ/Ô/Ð/Ø/ð Bð BˆØ�$ˆ;ˆ;Ø�ŒIŒO×3Ò3°LÑAÔAÐAøðð ð ð à!ðñ ô €Lð ×&Ò& |Ñ4Ô4€Jõ ‰5Œ5€DØ	×Ò 
°ÐÑ6Ô6Ð6Ø/ð Ið IˆØ�$ˆ;ˆ;Ø�ŒIŒO×1Ò1°*À4Ð1ÑHÔHÐHøðIð Ir#   c                ó‚  — | j         }|j        r|j        j        sd |_        |j        r|j        j        sd |_        |j        r|j        j        sd |_        |j        r|j        j        sd |_        t          |d¦  «        r8t          |¦  «         |j
        �|j
        j        dk    r|j        dk    rd|_        t          |d¦  «        r|j        r|j        j        sd |_        |j        dk    rd|_        t          |j        p8|j        p1|j        p*|j        p#|j        dk    o|j        p|j        dk    o|j
        ¦  «        S )Nr	  r   i  i  rÿ  rõ  )rÊ  r  r  r  rR   r  rý  r©   r³  r  r	  ÚVarDataCountrö  rÿ  r¢   ru   r÷  s       r!   rÌ   rÌ   k	  sŒ  € àŒJ€EàÔð " %Ô"4Ô"Bð "Ø!ˆÔØÔð (¨Ô(@Ô(Jð (Ø#'ˆÔ ØÔð # 5Ô#6Ô#@ð #Ø"ˆÔØÔð   Ô 0Ô ;ð  ØˆÔÝˆu�jÑ!Ô!ð +Ý�4ÑÔÐØŒ>Ð! U¤^Ô%@ÀAÒ%EÐ%EØŒ} 
Ò*Ð*Ø *�”å�EÐ-Ñ.Ô.ð'àÔ%ð'ð Ô%Ô.ð'ð
 "&ˆÔØŒ=˜JÒ&Ð&Ø&ˆEŒMÝØÔð 	<ØÔ#ð	<àÔð	<ð Ôð	<ð ŒM˜ZÒ'ÐB¨EÔ,Bð		<ð
 ŒM˜ZÒ'Ð:¨E¬Nñô ð r#   Úkernc                óV   — d„ | j         D ¦   «         | _         t          | j         ¦  «        S )Nc                ó2   — g | ]}t          |d ¦  «        ¯|‘ŒS ©Ú	kernTable)r³  ©r   Úts     r!   r6   z$prune_pre_subset.<locals>.<listcomp>‘	  s'   € ÐMÐMÐM˜QµW¸QÀÑ5LÔ5LÐM�qÐMÐMÐMr#   )Ú
kernTablesru   rF  s      r!   rï  rï  Ž	  s,   € ð NÐM $¤/ÐMÑMÔM€D„OÝ�”Ñ Ô Ð r#   c                óÎ   ‡— |j         Š| j        D ],}ˆfd„|j                             ¦   «         D ¦   «         |_        Œ-d„ | j        D ¦   «         | _        t	          | j        ¦  «        S )Nc                ó6   •— i | ]\  \  }}}|‰v ¯|‰v ¯||f|“ŒS r   r   )r   r  r  rV   r(   s       €r!   r/   z!subset_glyphs.<locals>.<dictcomp>™	  s@   ø€ ð 
ð 
ð 
á‘��A˜Ø�Fˆ{ˆ{˜q F˜{˜{ð �ˆF�Aà*˜{˜{r#   c                ó    — g | ]}|j         ¯	|‘ŒS r   r  r   s     r!   r6   z!subset_glyphs.<locals>.<listcomp>ž	  s   € ÐAÐAÐA˜Q°Q´[ÐA�qÐAÐAÐAr#   )r¿  r"  r  rX   ru   )r'   ro   r!  r(   s      @r!   rw   rw   •	  s   ø€ àŒ_€FØŒ_ð 
ð 
ˆð
ð 
ð 
ð 
àœ[×.Ò.Ñ0Ô0ð
ñ 
ô 
ˆŒˆð
 BÐA $¤/ÐAÑAÔA€D„OÝ�”Ñ Ô Ð r#   Úvmtxc                ó�   — t          | j        |j        ¦  «        | _        |j        D ]}d| j        |<   Œt	          | j        ¦  «        S )N©r   r   )r0   Úmetricsr(   Úglyphs_emptiedru   ©r'   ro   r   s      r!   rw   rw   ¢	  sF   € å ¤¨a¬hÑ7Ô7€D„LØÔð !ð !ˆØ ˆŒ�Q‰ˆÝ�”ÑÔÐr#   Úhmtxc                ól   — t          | j        |j        ¦  «        | _        |j        D ]}d| j        |<   ŒdS )Nr(  T)r0   r)  r(   r*  r+  s      r!   rw   rw   ª	  s;   € å ¤¨a¬hÑ7Ô7€D„LØÔð !ð !ˆØ ˆŒ�Q‰ˆØˆ4r#   Úhdmxc                óÈ   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         | j         D ]}‰j        D ]}d| j         |         |<   ŒŒt          | j         ¦  «        S )Nc                óB   •— i | ]\  }}|t          |‰j        ¦  «        “ŒS r   )r0   r(   )r   Úszr5   ro   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>´	  s+   ø€ ÐNÐNÐN±5°2°q�•\ ! Q¤XÑ.Ô.ÐNÐNÐNr#   r   )r.  rX   r*  ru   )r'   ro   r1  r   s    `  r!   rw   rw   ²	  ss   ø€ àNÐNÐNÐN¸D¼I¿OºOÑ<MÔ<MÐNÑNÔN€D„IØŒið !ð !ˆØÔ!ð 	!ð 	!ˆAØ ˆDŒI�bŒM˜!ÑÐð	!å�”	‰?Œ?Ðr#   Úankrc                ó¶   ‡— | j         j        Š‰j        dk    sJ d‰j        z  ¦   «         ‚ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S )Nr   zunknown 'ankr' format %sc                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚAnchors©r   ry   rÊ  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>¿	  s5   ø€ ð ð ð Ø(-¸UÀeÄmÐ=SÐ=SˆˆuŒ}˜UÔ#Ð=SÐ=SÐ=Sr#   )rÊ  ÚAnchorPointsr¡   r(   r5  r8   ©r'   ro   rÊ  s     @r!   rw   rw   »	  ss   ø€ àŒJÔ#€EØŒ<˜1ÒÐÐÐ8¸5¼<ÑGÑÔÐðð ð ð Ø12´ðñ ô €E„Mõ ˆuŒ}ÑÔ Ò!Ð!r#   Úbslnc                ór   — | j         j        }|j        dv r!|j                             |j        ¦  «         d S d S )N)r­   r®   )rÊ  ÚBaseliner¡   r(   rÎ  ÚStandardGlyphr8  s      r!   rp   rp   Å	  s>   € àŒJÔ€EØ„|�vÐÐØ	Œ�Š�UÔ(Ñ)Ô)Ð)Ð)Ð)ð Ðr#   c                ó¬  ‡‡— | j         j        Š‰j        dv r¼ˆfd„|j        D ¦   «         }t	          |¦  «        dk    rdt          |                     ¦   «         ¦  «                             d¦  «        d         \  Š}‰‰_        ˆfd„| 	                    ¦   «         D ¦   «         }t	          |¦  «        dk    r|‰_
        ndddœ‰j                 ‰_        ‰`
dS )N)rœ   r®   c                óR   •— i | ]#}|‰j                              |‰j        ¦  «        “Œ$S r   )ÚBaselineValuesr  ÚDefaultBaseliner6  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>Ð	  sA   ø€ ð 
ð 
ð 
àð �5Ô'×+Ò+¨E°5Ô3HÑIÔIð
ð 
ð 
r#   r   rœ   c                ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   ry   r  Ú
mostCommons      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>×	  s$   ø€ ÐWÐWÐW¡h e¨QÀqÈJÂÀ˜ ÀÀÀr#   r­   T)rÊ  r;  r¡   r(   r8   r   rb   Úmost_commonr@  rX   r?  )r'   ro   Ú	baselinesÚ_cntrB  rÊ  s       @@r!   rw   rw   Ì	  sï   øø€ àŒJÔ€EØ„|�vÐÐð
ð 
ð 
ð 
àœð
ñ 
ô 
ˆ	õ ˆy‰>Œ>˜AÒÐÝ& y×'7Ò'7Ñ'9Ô'9Ñ:Ô:×FÒFÀqÑIÔIÈ!ÔLÑˆJ˜Ø$.ˆEÔ!ØWÐWÐWÐW°)·/²/Ñ2CÔ2CÐWÑWÔWˆIÝˆy‰>Œ>˜AÒÐØ#,ˆEÔ Ð à  Q˜<˜<¨¬Ô5ˆEŒLØÐ$Øˆ4r#   Úlcarc                ó²   ‡— | j         j        Š‰j        dv r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S J d‰j        z  ¦   «         ‚)N)r   rœ   c                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚCaretsr6  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>ä	  s5   ø€ ð 
ð 
ð 
Ø+0ÀÈÌÐ@UÐ@UˆE�5”< Ô&Ð@UÐ@UÐ@Ur#   r   Fzunknown 'lcar' format %s)rÊ  ÚLigatureCaretsr¡   r(   rI  r8   r8  s     @r!   rw   rw   à	  ss   ø€ àŒJÔ%€EØ„|�vÐÐð
ð 
ð 
ð 
Ø45´Hð
ñ 
ô 
ˆŒõ �5”<Ñ Ô  1Ò$Ð$à?Ð0°5´<Ñ?Ñ?Ô?Ð?r#   Úgvarc                óL   — |j         r|j        sg | j        |j        d         <   dS ©Nr   T)Únotdef_glyphÚnotdef_outlineÚ
variationsÚ
glyphOrderrF  s      r!   rï  rï  ì	  s/   € àÔð 1 GÔ$:ð 1Ø.0ˆŒ˜œ¨Ô*Ñ+Øˆ4r#   c                óš   — t          | j        |j        ¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r0   rP  r(   r8   Ú
glyphCountru   rv   s     r!   rw   rw   ó	  s8   € å" 4¤?°A´HÑ=Ô=€D„OÝ˜$œ/Ñ*Ô*€D„OÝ�”Ñ Ô Ð r#   c                óä   ‡— ˆfd„|j                              ¦   «         D ¦   «         }‰|j         | j                          }| j                             ¦   «         D ]\  }}|| j        k    r|nd||<   Œ|S )Nc                ó(   •— i | ]\  }}|‰|         “ŒS r   r   )r   r¼  rV   r  s      €r!   r/   z$_remap_index_map.<locals>.<dictcomp>û	  s#   ø€ ÐCÐCÐC¡  AˆAˆz˜!Œ}ÐCÐCÐCr#   r   )rm   rX   Úlast_retained_glyphÚreverseEmptiedGlyphMapÚlast_retained_order)ro   r  Ú	table_mapÚmap_Úlast_idxr   r3   s    `     r!   Ú_remap_index_mapr\  ú	  s…   ø€ ØCÐCÐCÐC¨Ô):×)@Ò)@Ñ)BÔ)BÐCÑCÔC€Dð ˜)Ô+¨AÔ,AÔBÔC€HØÔ(×.Ò.Ñ0Ô0ð ?ð ?‰ˆˆ1Ø !Ô"7Ò7Ð7�(�(¸QˆˆQ‰ˆØ€Kr#   ÚHVARc                óT  — | j         }t          ¦   «         }t          ¦   «         }d}|j        r[t          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         nL|                     |j                             ¦   «         ¦  «         | 	                    ¦   «         }|j
        j        }|j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j                             |||¬¦  «        }|j        r t!          |||j        ¦  «        |j        _        |j        r t!          |||j        ¦  «        |j        _        |j        r t!          |||j        ¦  «        |j        _        dS ©NF)ÚretainFirstMapÚadvIdxesT)rÊ  rC   ÚAdvWidthMapr0   rm   r(   rl   rb   ÚreverseOrigGlyphMapÚcopyrË   Úretain_gidsÚLsbMapÚRsbMapr	  r  r\  ©r'   ro   rÊ  ÚusedÚ	advIdxes_ÚretainAdvMapr  s          r!   rw   rw   
  sÏ  € àŒJ€Eå‰5Œ5€DÝ‘”€IØ€LàÔð -Ý$0°Ô1BÔ1JÈAÌHÑ$UÔ$UˆÔÔ!Ø�Š�EÔ%Ô-×4Ò4Ñ6Ô6Ñ7Ô7Ð7Ð7à�Š�AÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ø—I’I‘K”Kˆ	Ø”yÔ,ˆà„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2à”×/Ò/Ø˜\°Ið 0ñ ô €Jð Ôð WÝ$4°Q¸
ÀEÔDUÑ$VÔ$VˆÔÔ!Ø„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔð ˆ4r#   ÚVVARc                ód  — | j         }t          ¦   «         }t          ¦   «         }d}|j        r[t          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         nL|                     |j                             ¦   «         ¦  «         | 	                    ¦   «         }|j
        j        }|j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j        rZt          |j        j        |j        ¦  «        |j        _        |                     |j        j                             ¦   «         ¦  «         |j                             |||¬¦  «        }|j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        |j        r t#          |||j        ¦  «        |j        _        dS r_  )rÊ  rC   ÚAdvHeightMapr0   rm   r(   rl   rb   rc  rd  rË   re  ÚTsbMapÚBsbMapÚVOrgMapr	  r  r\  rh  s          r!   rw   rw   +
  s:  € àŒJ€Eå‰5Œ5€DÝ‘”€IØ€LàÔð -Ý%1°%Ô2DÔ2LÈaÌhÑ%WÔ%WˆÔÔ"Ø�Š�EÔ&Ô.×5Ò5Ñ7Ô7Ñ8Ô8Ð8Ð8à�Š�AÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ø—I’I‘K”Kˆ	Ø”yÔ,ˆà„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„|ð 3Ý+¨E¬LÔ,@À!Ä(ÑKÔKˆŒÔØ�Š�E”LÔ(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ø„}ð 4Ý ,¨U¬]Ô-BÀAÄHÑ MÔ MˆŒÔØ�Š�E”MÔ)×0Ò0Ñ2Ô2Ñ3Ô3Ð3à”×/Ò/Ø˜\°Ið 0ñ ô €Jð Ôð YÝ%5°a¸ÀUÔEWÑ%XÔ%XˆÔÔ"Ø„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„|ð MÝ/°°:¸u¼|ÑLÔLˆŒÔØ„}ð OÝ 0°°JÀÄÑ NÔ NˆŒÔð ˆ4r#   ÚVORGc                óŽ   ‡— ˆfd„| j                              ¦   «         D ¦   «         | _         t          | j         ¦  «        | _        dS )Nc                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   rK   rs   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>X
  s-   ø€ ð ð ð Ù��A¸¸Q¼X¸¸ˆˆ1¸¸¸r#   T)ÚVOriginRecordsrX   r8   ÚnumVertOriginYMetricsrv   s    `r!   rw   rw   V
  sW   ø€ ðð ð ð ØÔ,×2Ò2Ñ4Ô4ðñ ô €DÔõ "% TÔ%8Ñ!9Ô!9€DÔØˆ4r#   Úopbdc                ó,  ‡— | j         j        Š‰j        dk    r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S ‰j        dk    r0ˆfd„|j        D ¦   «         ‰_        t          ‰j        ¦  «        dk    S J d‰j        z  ¦   «         ‚)Nr   c                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚOpticalBoundsDeltasr6  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>c
  ó;   ø€ ð %
ð %
ð %
àØ˜Ô1Ð1Ð1ð �5Ô,¨UÔ3à1Ð1Ð1r#   rœ   c                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )ÚOpticalBoundsPointsr6  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>j
  r{  r#   Fzunknown 'opbd' format %s)rÊ  ÚOpticalBoundsr¡   r(   rz  r8   r}  r8  s     @r!   rw   rw   _
  sÇ   ø€ àŒJÔ$€EØ„|�qÒÐð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1Ø	Œ˜Ò	Ð	ð%
ð %
ð %
ð %
àœð%
ñ %
ô %
ˆÔ!õ
 �5Ô,Ñ-Ô-°Ò1Ð1à?Ð0°5´<Ñ?Ñ?Ô?Ð?r#   Úpostc                ó"   — |j         sd| _        dS )Nç      @T)Úglyph_namesÚ
formatTyperF  s      r!   rï  rï  t
  s   € àÔð ØˆŒØˆ4r#   c                ó   — g | _         dS rü   )Ú
extraNamesrv   s     r!   rw   rw   {
  s   € à€D„OØˆ4r#   Úpropc                óö  ‡‡— | j         j        Š‰j        dk    r‰j        dk    S ‰j        dk    r¹ˆfd„|j        D ¦   «         ‰_        t          ‰j                             ¦   «         ¦  «                             d¦  «        d         \  Š}‰‰_        ˆfd„‰j         	                    ¦   «         D ¦   «         ‰_        t          ‰j        ¦  «        dk    r‰`d‰_        ‰j        dk    S dS J d‰j        z  ¦   «         ‚)Nr   rœ   c                óR   •— i | ]#}|‰j                              |‰j        ¦  «        “Œ$S r   )Ú
Propertiesr  ÚDefaultProperties)r   r   r†  s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>‡
  s=   ø€ ð 
ð 
ð 
ØBCˆAˆtŒ×"Ò" 1 dÔ&<Ñ=Ô=ð
ð 
ð 
r#   c                ó(   •— i | ]\  }}|‰k    ¯||“ŒS r   r   )r   r   r†  rB  s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>Œ
  s0   ø€ ð 
ð 
ð 
Ù˜˜4¸dÀjÒ>PÐ>PˆAˆtÐ>PÐ>PÐ>Pr#   TFzunknown 'prop' format %s)rÊ  ÚGlyphPropertiesr¡   rŠ  r(   r‰  r   rb   rC  rX   r8   )r'   ro   rE  rB  r†  s      @@r!   rw   rw   �
  s#  øø€ àŒ:Ô%€DØ„{�aÒÐØÔ%¨Ò*Ð*Ø	Œ˜Ò	Ð	ð
ð 
ð 
ð 
ØGHÄxð
ñ 
ô 
ˆŒõ # 4¤?×#9Ò#9Ñ#;Ô#;Ñ<Ô<×HÒHÈÑKÔKÈAÔNÑˆ
�DØ!+ˆÔð
ð 
ð 
ð 
Ø#'¤?×#8Ò#8Ñ#:Ô#:ð
ñ 
ô 
ˆŒõ ˆtŒÑÔ 1Ò$Ð$Ø�ØˆDŒKØÔ)¨QÒ.Ð.Øˆtà>Ð0°4´;Ñ>Ñ>Ô>Ð>r#   c                óZ   ‡— t          ¦   «         Šˆfd„}|                      ||¦  «         ‰S )Nc                ó²   •— | j         t          j        j        t          j        j        t          j        j        hv r‰                     | j        ¦  «         d S d S r   )r¡   r   ÚPaintFormatÚ
PaintGlyphÚPaintGlyph2ÚPaintColrGlyphrÎ  ÚGlyph)ÚpaintÚresults    €r!   Úcallbackz$_paint_glyph_names.<locals>.callback›
  sX   ø€ ØŒ<ÝÔ Ô+ÝÔ Ô,ÝÔ Ô/ð
ð 
ð 
ð
 �JŠJ�u”{Ñ#Ô#Ð#Ð#Ð#ð
ð 
r#   )rC   Útraverse)r”  Úcolrr–  r•  s      @r!   Ú_paint_glyph_namesr™  ˜
  s@   ø€ Ý‰UŒU€Fð$ð $ð $ð $ð $ð 
‡N‚N�4˜Ñ"Ô"Ð"Ø€Mr#   ÚCOLRc                ó4  — | j         dk    r?|                      | j        ¦  «        | _        d„ | j        j        j        D ¦   «         | _        |j        }|rÄt          ¦   «         }|D ]‰}| j         	                    |g ¦  «        D ]}| 
                    |j        ¦  «         Œ| j         dk    rD| j         	                    |¦  «        }|�(|                     t          || j        ¦  «        ¦  «         ŒŠ||j        z  }|j                             |¦  «         |}|°Âd S d S )Nr   c                ó(   — i | ]}|j         |j        “ŒS r   )Ú	BaseGlyphÚPaint)r   rÿ   s     r!   r/   z"closure_glyphs.<locals>.<dictcomp>¯
  s.   € ð 
ð 
ð 
àð ŒM˜3œ9ð
ð 
ð 
r#   )ÚversionÚ_decompileColorLayersV0rÊ  ÚColorLayersÚBaseGlyphListÚBaseGlyphPaintRecordÚColorLayersV1r(   rC   r  rÎ  rº   rl   r™  )r'   ro   Ú	decomposeÚlayersr   Úlayerr”  s          r!   rp   rp   §
  sB  € à„|�aÒÐð
  ×7Ò7¸¼
ÑCÔCˆÔð
ð 
à”zÔ/ÔDð
ñ 
ô 
ˆÔð
 ”€IØ
ð Ý‘”ˆØð 	Ið 	IˆAØÔ)×-Ò-¨a°Ñ4Ô4ð 'ð '�Ø—
’
˜5œ:Ñ&Ô&Ð&Ð&àŒ|˜aÒÐØÔ*×.Ò.¨qÑ1Ô1�ØÐ$Ø—M’MÕ"4°U¸D¼JÑ"GÔ"GÑHÔHÐHøà�!”(ÑˆØ	Œ�Š˜ÑÔÐØˆ	ð ð ð ð ð ð r#   c                óh  ‡ ‡‡‡‡— ddl m} ddlm}m} ‰j        ‰_        ˆ fd„‰j        D ¦   «         ‰ _        ‰ j        dk    rt          ‰ j        ¦  «        S  |‰ j
        j        ‰ j
        j        ¦  «        Š |ˆˆfd„‰D ¦   «         ¦  «        \  ‰ j
        _        ‰ j
        _        ‰ `‰ j
        j        �/‰ j
        j        j        Šˆˆfd„‰D ¦   «         ‰ j
        j        _        ‰ j        Š‰ j
        j        j        sd‰ _        ‰ `
t          ‰¦  «        S  |‰ j
        ˆfd„‰D ¦   «         ¦  «         ‰ `dS )	Nr   )ÚunbuildColrV1)ÚbuildColrV1ÚpopulateCOLRv0c                ó>   •— i | ]}|‰j         v ¯|‰j         |         “ŒS r   )r¡  rS   s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>Ø
  s7   ø€ ð ð ð Ø#$°A¸Ô9IÐ4IÐ4Iˆˆ4Ô˜AÔÐ4IÐ4IÐ4Ir#   c                ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rK   )r   r   ÚcolorGlyphsV1ro   s     €€r!   r/   z!subset_glyphs.<locals>.<dictcomp>à
  s'   ø€ ÐEÐEÐE °q¸A¼H°}°}ˆˆM˜!Ô°}°}°}r#   c                ó4   •— i | ]}|‰j         v ¯|‰|         “ŒS r   rK   )r   r   Úclipsro   s     €€r!   r/   z!subset_glyphs.<locals>.<dictcomp>æ
  s&   ø€ Ð$QÐ$QÐ$Q°QÀ1ÈÌÀ=À= Q¨¨a¬À=À=À=r#   c                ó6   •— i | ]}|d „ ‰|         D ¦   «         “ŒS )c                ó*   — g | ]}|j         |j        f‘ŒS r   )rº   ÚcolorID)r   r§  s     r!   r6   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>ñ
  s!   € ÐBÐBÐB¨UˆeŒj˜%œ-Ð(ÐBÐBÐBr#   r   )r   r   ÚlayersV0s     €r!   r/   z!subset_glyphs.<locals>.<dictcomp>ñ
  s.   ø€ ÐUÐUÐUÀqˆÐBÐB°h¸q´kÐBÑBÔBÐUÐUÐUr#   T)ÚfontTools.colorLib.unbuilderr©  ÚfontTools.colorLib.builderrª  r«  Úglyphs_colredr(   r¡  rŸ  ru   rÊ  Ú	LayerListr¢  r¤  ÚClipListr°  r£  )r'   ro   r©  rª  r«  r°  r®  r´  s   ``   @@@r!   rw   rw   Å
  s‘  øøøøø€ à:Ð:Ð:Ð:Ð:Ð:ØFÐFÐFÐFÐFÐFÐFÐFð Œ€A„Hðð ð ð Ø()¬ðñ ô €DÔð „|�qÒÐÝ�DÔ$Ñ%Ô%Ð%à!�M $¤*Ô"6¸¼
Ô8PÑQÔQ€MØ5@°[ØEÐEÐEÐEÐE mÐEÑEÔEñ6ô 6Ñ2€D„JÔ˜$œ*Ô2ð 	Ðà„zÔÐ&Ø”
Ô#Ô)ˆØ$QÐ$QÐ$QÐ$QÐ$Q¸%Ð$QÑ$QÔ$QˆŒ
ÔÔ!àÔ€HØŒ:Ô#Ô8ð àˆŒØˆJÝ�H‰~Œ~Ðà€NØŒ
ØUÐUÐUÐUÈHÐUÑUÔUñô ð ð 	Ðð ˆ4r#   ÚCPALc                ó¤  ‡‡— d|v rdS |                      d¦  «        }|sdS t          t          ¦  «        Šˆfd„}|j        dk    rB|j                             ¦   «         D ]'}|D ]"}‰|j                                      |¦  «         Œ#Œ(nt|j        j	        r4|j        j	        j
        D ]"}‰|j                                      |¦  «         Œ#|j        j        j        D ]"}|j                             |j        |¦  «         Œ#t!          ‰                     ¦   «         ¦  «        dhz
  Š| j        D ]D}ˆfd„t'          |¦  «        D ¦   «         |d d …<   t)          |¦  «        t)          ‰¦  «        k    sJ ‚ŒEt'          t+          ‰¦  «        ¦  «        D ]N\  }	}
‰|
         D ]@}t-          |d	¦  «        r|	|_        Œt-          |d
¦  «        r|	|_        Œ2t/          |¦  «        ‚ŒOt)          | j        d         ¦  «        | _        | j        dk    r<g }t'          | j        ¦  «        D ]\  }}|‰v r|                     |¦  «         Œ|| _        t5          | j        ¦  «        S )NzSVG Trš  Fc                óî   •— t          | d¦  «        r"‰| j                                      | ¦  «         d S t          | d¦  «        r/| j        j        D ]$}‰|j                                      |¦  «         Œ#d S d S )NÚPaletteIndexÚ	ColorLine)r³  r½  rd  r¾  Ú	ColorStop)r”  ÚstopÚcolors_by_indexs     €r!   Úcollect_colors_by_indexz2prune_post_subset.<locals>.collect_colors_by_index	  s˜   ø€ Ý�5˜.Ñ)Ô)ð 	@Ø˜EÔ.Ô/×6Ò6°uÑ=Ô=Ð=Ð=Ð=Ý�U˜KÑ(Ô(ð 	@ØœÔ1ð @ð @�Ø Ô 1Ô2×9Ò9¸$Ñ?Ô?Ð?Ð?ð	@ð 	@ð@ð @r#   r   r}  c                ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r   r   )r   r3   rŽ   Úretained_palette_indicess      €r!   r6   z%prune_post_subset.<locals>.<listcomp>  s(   ø€ ÐXÐXÐX™D˜A˜q¸!Ð?WÐ:WÐ:W�aÐ:WÐ:WÐ:Wr#   r³  r½  rœ   )r  r   ra   rŸ  r¡  rb   r³  rd  rÊ  ÚLayerRecordArrayÚLayerRecordr½  r¢  r£  rž  r—  rC   rp  Úpalettesr=   r8   r%   r³  ÚAssertionErrorÚnumPaletteEntriesÚpaletteEntryLabelsru   )r'   r)   rË   r˜  rÂ  r¦  r§  rX  ÚpaletteÚ	new_indexÚ	old_indexÚkept_labelsr3   ÚlabelrÁ  rÄ  s                 @@r!   rÌ   rÌ   ù
  sÇ  øø€ ð �€~€~Øˆtà�8Š8�FÑÔ€DØð Øˆuå!¥$Ñ'Ô'€Oð@ð @ð @ð @ð @ð „|�qÒÐØÔ&×-Ò-Ñ/Ô/ð 	=ð 	=ˆFØð =ð =�Ø ¤Ô.×5Ò5°eÑ<Ô<Ð<Ð<ð=ð	=ð Œ:Ô&ð 	BØœÔ4Ô@ð Bð B�Ø Ô 2Ô3×:Ò:¸5ÑAÔAÐAÐAØ”jÔ.ÔCð 	Gð 	GˆFØŒL×!Ò! $¤*Ð.EÑFÔFÐFÐFõ  # ?×#7Ò#7Ñ#9Ô#9Ñ:Ô:¸f¸XÑEÐØ”=ð =ð =ˆØXÐXÐXÐX¥I¨gÑ$6Ô$6ÐXÑXÔXˆ���‰
Ý�7‰|Œ|�sÐ#;Ñ<Ô<Ò<Ð<Ð<Ð<Ð<å )­&Ð1IÑ*JÔ*JÑ KÔ Kð -ð -Ñˆ	�9Ø% iÔ0ð 	-ð 	-ˆFÝ�v˜yÑ)Ô)ð -Ø!*�”�Ý˜ Ñ0Ô0ð -Ø&/�Ô#Ð#å$ VÑ,Ô,Ð,ð	-õ ! ¤¨qÔ!1Ñ2Ô2€DÔà„|�qÒÐØˆÝ! $Ô"9Ñ:Ô:ð 	*ð 	*‰HˆAˆuØÐ,Ð,Ð,Ø×"Ò" 5Ñ)Ô)Ð)øØ"-ˆÔÝ�Ô&Ñ'Ô'Ð'r#   c                óÊ   — t          ¦   «         }| j        D ]}|                     |j        ¦  «         Œ| j        r)| j        j        D ]}|                     |j        ¦  «         Œ|S r   )rC   ÚMathGlyphVariantRecordrÎ  ÚVariantGlyphÚGlyphAssemblyÚPartRecordsry   )r'   r(   ÚvariantsrV   rÕ   s        r!   rp   rp   6  sp   € å‰uŒu€HØÔ(ð %ð %ˆØ�Š�Q”^Ñ$Ô$Ð$Ð$ØÔð "ØÔ#Ô/ð 	"ð 	"ˆAØ�LŠL˜œÑ!Ô!Ð!Ð!Ø€Or#   c                óâ  — t          |j        ¦  «        }t          ¦   «         }| j        rR| j                             |¦  «        }|D ]5}|                     | j        |                              |¦  «        ¦  «         Œ6| j        rR| j                             |¦  «        }|D ]5}|                     | j	        |                              |¦  «        ¦  «         Œ6|j                             |¦  «         d S r   )
rÉ  r(   rC   ÚVertGlyphCoverager?   rl   ÚVertGlyphConstructionrp   ÚHorizGlyphCoverageÚHorizGlyphConstruction)r'   ro   r(   rÕ  r9   r3   s         r!   rp   rp   A  sð   € å�q”xÑ Ô €FÝ‰uŒu€HàÔð RØÔ(×2Ò2°6Ñ:Ô:ˆØð 	Rð 	RˆAØ�OŠO˜DÔ6°qÔ9×HÒHÈÑPÔPÑQÔQÐQÐQàÔð SØÔ)×3Ò3°FÑ;Ô;ˆØð 	Sð 	SˆAØ�OŠO˜DÔ7¸Ô:×IÒIÈ&ÑQÔQÑRÔRÐRÐRà„H‡O‚O�HÑÔÐÐÐr#   ÚVARCc                óâ   — | j         j                             |j        ¦  «        }t	          | j         j        j        |¦  «        | j         j        _        t          | j         j        j        ¦  «        S r   )rÊ  r¢   rH   r(   r:   ÚVarCompositeGlyphsÚVarCompositeGlyphru   rª   s      r!   rw   rw   S  sX   € àŒjÔ!×(Ò(¨¬Ñ2Ô2€GÝ6BØŒ
Ô%Ô7¸ñ7ô 7€D„JÔ!Ô3õ �”
Ô-Ô?Ñ@Ô@Ð@r#   c                ó  — | j         j        €d S d„ t          | j         j        j        ¦  «        D ¦   «         }| j         j        j        }|j        }t          ¦   «         }t          |¦  «        }|r’|}t          ¦   «         }|D ]{}||v rŒ|                     |¦  «         |                     |¦  «        }	|	€Œ4||	         }
|
j	        D ]7}|j
        }|                     |¦  «         ||vr|                     |¦  «         Œ8Œ||°�d S d S )Nc                ó   — i | ]\  }}||“Œ	S r   r   )r   r3   Ú	glyphNames      r!   r/   z"closure_glyphs.<locals>.<dictcomp>a  s   € ÐWÐWÐW¡  I�	˜1ÐWÐWÐWr#   )rÊ  rÝ  r=   r¢   r(   rÞ  rC   rÎ  r  Ú
componentsrá  )r'   ro   ÚglyphMapÚglyphRecordsr(   r  rO  ÚoldNewrá  Úidxry   Úcomprº   s                r!   rp   rp   \  s.  € à„zÔ$Ð,ØˆàWÐWµ¸4¼:Ô;NÔ;UÑ1VÔ1VÐWÑWÔW€HØ”:Ô0ÔB€LàŒX€FÝ‰eŒe€GÝ
ˆf‰+Œ+€CØ
ð "ØˆÝ‰eŒeˆØð 	"ð 	"ˆIØ˜GÐ#Ð#ØØ�KŠK˜	Ñ"Ô"Ð"Ø—,’,˜yÑ)Ô)ˆCØˆ{ØØ  Ô%ˆEØÔ(ð "ð "�Ø”~�Ø—
’
˜4Ñ Ô Ð Ø˜wÐ&Ð&Ø—G’G˜D‘M”M�Møð	"ð ð "ð "ð "ð "ð "r#   c                ó  — | j         }|j        }|�È|j        }t          ¦   «         }|j        j        D ]-}|j        D ]#}|j        �|                     |j        ¦  «         Œ$Œ.t          |¦  «        }|rat          ||¦  «        |_        d„ t          |¦  «        D ¦   «         }	|j        j        D ]%}|j        D ]}|j        �|	|j                 |_        ŒŒ&nd |_        |j        }
|
�È|
j        }t          ¦   «         }|j        j        D ]-}|j        D ]#}|j        �|                     |j        ¦  «         Œ$Œ.t          |¦  «        }|rat          ||¦  «        |
_        d„ t          |¦  «        D ¦   «         }	|j        j        D ]%}|j        D ]}|j        �|	|j                 |_        ŒŒ&nd |_        |j        }|�Vt          ¦   «         }|                     |¦  «         |                     |¦  «        }|                     |¦  «         |sd |_        dS )Nc                ó   — i | ]\  }}||“Œ	S r   r   rN  s      r!   r/   z%prune_post_subset.<locals>.<dictcomp>ˆ  ó   € ÐGÐGÐG¡H C¨�s˜CÐGÐGÐGr#   c                ó   — i | ]\  }}||“Œ	S r   r   rN  s      r!   r/   z%prune_post_subset.<locals>.<dictcomp>›  rê  r#   T)rÊ  ÚAxisIndicesListr  rC   rÝ  rÞ  râ  ÚaxisIndicesIndexrÎ  r%   r:   r=   ÚConditionListÚConditionTableÚconditionIndexÚMultiVarStoreÚcollect_varidxesr  Úremap_varidxes)r'   r)   rË   rÊ  ÚaxisIndicesListrX   ÚusedIndicesry   rç  rm   ÚconditionListÚconditionTablesr  r  r  s                  r!   rÌ   rÌ   y  s„  € àŒJ€EàÔ+€OØÐ"ØÔ$ˆÝ‘e”eˆØÔ-Ô?ð 	;ð 	;ˆEØÔ(ð ;ð ;�ØÔ(Ð4Ø—O’O DÔ$9Ñ:Ô:Ð:øð;õ ˜[Ñ)Ô)ˆØð 	)Ý#/°°{Ñ#CÔ#CˆOÔ ØGÐGµ	¸+Ñ0FÔ0FÐGÑGÔGˆGØÔ1ÔCð Oð O�Ø!Ô,ð Oð O�DØÔ,Ð8Ø07¸Ô8MÔ0N˜Ô-øðOðOð
 %)ˆEÔ!àÔ'€MØÐ Ø'Ô6ˆÝ‘e”eˆØÔ-Ô?ð 	9ð 	9ˆEØÔ(ð 9ð 9�ØÔ&Ð2Ø—O’O DÔ$7Ñ8Ô8Ð8øð9õ ˜[Ñ)Ô)ˆØð 	'Ý+7¸ÈÑ+UÔ+UˆMÔ(ØGÐGµ	¸+Ñ0FÔ0FÐGÑGÔGˆGØÔ1ÔCð Kð K�Ø!Ô,ð Kð K�DØÔ*Ð6Ø.5°dÔ6IÔ.J˜Ô+øðKðKð
 #'ˆEÔð Ô€EØÐÝ‘u”uˆØ×Ò˜|Ñ,Ô,Ð,Ø×*Ò*¨<Ñ8Ô8ˆ
Ø×Ò˜ZÑ(Ô(Ð(Øð 	'Ø"&ˆEÔàˆ4r#   r
  c                ó`   — | j         j        r!| j         j                             |¦  «         d S d S r   )rÊ  ÚMathVariantsrp   rv   s     r!   rp   rp   °  s8   € à„zÔð 2ØŒ
Ô×.Ò.¨qÑ1Ô1Ð1Ð1Ð1ð2ð 2r#   c                óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )r¢   rH   r(   r:   ÚItalicsCorrectionr8   ÚItalicsCorrectionCountru   rª   s      r!   rw   rw   ¶  sR   € àŒm×"Ò" 1¤8Ñ,Ô,€GÝ)¨$Ô*@À'ÑJÔJ€DÔÝ"% dÔ&<Ñ"=Ô"=€DÔÝ�Ô+Ñ,Ô,Ð,r#   c                óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )ÚTopAccentCoveragerH   r(   r:   ÚTopAccentAttachmentr8   ÚTopAccentAttachmentCountru   rª   s      r!   rw   rw   ¾  sS   € àÔ$×+Ò+¨A¬HÑ5Ô5€GÝ+¨DÔ,DÀgÑNÔN€DÔÝ$'¨Ô(@Ñ$AÔ$A€DÔ!Ý�Ô-Ñ.Ô.Ð.r#   c                óÎ   — | j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        S r   )ÚMathKernCoveragerH   r(   r:   ÚMathKernInfoRecordsr8   ÚMathKernCountru   rª   s      r!   rw   rw   Æ  sS   € àÔ#×*Ò*¨1¬8Ñ4Ô4€GÝ+¨DÔ,DÀgÑNÔN€DÔÝ˜TÔ5Ñ6Ô6€DÔÝ�Ô"Ñ#Ô#Ð#r#   c                ó  — | j         r| j                              |¦  «         | j        r| j                             |¦  «         | j        r| j                             |¦  «         | j        r| j                             |j        ¦  «         dS rü   )ÚMathItalicsCorrectionInforw   ÚMathTopAccentAttachmentÚMathKernInfoÚExtendedShapeCoveragerH   r(   rv   s     r!   rw   rw   Î  s‘   € àÔ%ð 8ØÔ&×4Ò4°QÑ7Ô7Ð7ØÔ#ð 6ØÔ$×2Ò2°1Ñ5Ô5Ð5ØÔð +ØÔ×'Ò'¨Ñ*Ô*Ð*ØÔ!ð 4ØÔ"×)Ò)¨!¬(Ñ3Ô3Ð3Øˆ4r#   c                ój  — | j         rR| j                              |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _        | j        rR| j                             |j        ¦  «        }t          | j        |¦  «        | _        t          | j        ¦  «        | _	        dS rü   )
r×  rH   Úglyphs_wo_math_closurer:   rØ  r8   ÚVertGlyphCountrÙ  rÚ  ÚHorizGlyphCountrª   s      r!   rw   rw   Û  s¡   € àÔð >ØÔ(×/Ò/°Ô0HÑIÔIˆÝ%1°$Ô2LÈgÑ%VÔ%VˆÔ"Ý! $Ô"<Ñ=Ô=ˆÔàÔð @ØÔ)×0Ò0°Ô1IÑJÔJˆÝ&2°4Ô3NÐPWÑ&XÔ&XˆÔ#Ý" 4Ô#>Ñ?Ô?ˆÔàˆ4r#   c                óÊ   — |j         |_        | j        j        r| j        j                             |¦  «         | j        j        r| j        j                             |¦  «         dS rü   )Úglyphs_mathedr(   rÊ  ÚMathGlyphInforw   rù  rv   s     r!   rw   rw   ê  s\   € àŒ€A„HØ„zÔð 2ØŒ
Ô ×.Ò.¨qÑ1Ô1Ð1Ø„zÔð 1ØŒ
Ô×-Ò-¨aÑ0Ô0Ð0Øˆ4r#   Úglyfc                ó*  — | j         r,t          j        d| j         d d…         ¦  «        d         dk    rd S t          | j         ¦  «        x}| _         d}d}|r¼||         dz  ||dz            z  }|r|dz  rdnd}|dz   }||z   }	t                               |||	…         d	¦  «        }
||
         }
|
                     |d	¦  «        |||	…<   |	}t	          |¦  «        }|dz  r|d
z  }n|dz  }|dz  r|dz  }n|dz  r|d
z  }n
|dz  r|dz  }|dz  }|°ºd S d S )Nz>hr­   r   é
   rœ   r  i    r®   ÚbigrÍ  é@   é€   é    )ÚdataÚstructÚunpackÚ	bytearrayrÉ   Ú
from_bytesÚto_bytes)r'   Ú
glyphidmapÚextendedr  r3   ÚmoreÚflagsÚglyphIDSizeÚglyphIDStartÚ
glyphIDEndÚglyphIDs              r!   ÚremapComponentsFastr&  ô  s‚  € àŒ9ð �œ d¨D¬I°b°q°b¬MÑ:Ô:¸1Ô=ÀÒBÐBØˆÝ  ¤Ñ+Ô+Ð+€Dˆ4Œ9Ø
€AØ€DØ
ð Ø�a”˜A‘  a¨!¡e¤Ñ,ˆØ#Ð=¨°©Ð=�a�a¸AˆØ˜1‘uˆØ! KÑ/ˆ
Ý—.’.  l°:Ð&=Ô!>ÀÑFÔFˆà˜WÔ%ˆØ(/×(8Ò(8¸ÀeÑ(LÔ(Lˆˆ\˜*Ð$Ñ%ØˆÝ�E‘
”
ˆà�6‰>ð 	Ø�‰FˆAˆAà�‰FˆAØ�6‰>ð 	Ø�‰FˆAˆAØ�V‰^ð 	Ø�‰FˆAˆAØ�V‰^ð 	Ø�‰FˆAØ�v‰~ˆð- ð ð ð ð ð r#   c                ó  — | j         }|j         }|rwt          ¦   «         }|D ]<}||vrŒ||         }|                     | ¦  «        D ]}|                     |¦  «         ŒŒ=||j         z  }|j                              |¦  «         |}|°ud S d S r   )r(   rC   ÚgetComponentNamesrÎ  rl   )r'   ro   ÚglyphSetr¥  râ  r   ÚglrŽ   s           r!   rp   rp     sÁ   € àŒ{€HØ”€IØ
ð 
Ý‘U”Uˆ
Øð 	"ð 	"ˆAØ˜Ð Ð ØØ˜!”ˆBØ×)Ò)¨$Ñ/Ô/ð "ð "�Ø—’˜qÑ!Ô!Ð!Ð!ð"à�a”hÑˆ
Ø	Œ�Š˜
Ñ#Ô#Ð#Øˆ	ð ð 
ð 
ð 
ð 
ð 
r#   c                óˆ   — |j         r:|j        s3| | j        d                  }|j                             ¦   «          d|_        dS )Nr   r#   T)rN  rO  rQ  Ú__dict__Úclearr  )r'   r)   rË   r   s       r!   rï  rï  %  sH   € àÔð  GÔ$:ð Ø�” Ô#Ô$ˆà	Œ
×ÒÑÔÐØˆŒØˆ4r#   c                ó  ‡— t          | j        ‰j        ¦  «        | _        ‰j        j        s�ˆfd„t	          | j        ¦  «        D ¦   «         }d„ t	          |¦  «        D ¦   «         }| j                             ¦   «         D ].}t          |d¦  «        r|                     || j	        ¬¦  «         Œ/t          j        d¦  «        j        }‰j        D ]&} |¦   «         | j        |<   d| j        |         _        Œ'ˆfd„| j        D ¦   «         | _        dS )	Nc                ó,   •— g | ]\  }}|‰j         v ¯|‘ŒS r   rK   )r   r3   r   ro   s      €r!   r6   z!subset_glyphs.<locals>.<listcomp>3  s$   ø€ ÐMÐMÐM™˜˜A¸qÀAÄH¸}¸}�1¸}¸}¸}r#   c                ó   — i | ]\  }}||“Œ	S r   r   )r   r¥  Úos      r!   r/   z!subset_glyphs.<locals>.<dictcomp>4  s   € Ð8Ð8Ð8™T˜Q �A�qÐ8Ð8Ð8r#   r  )r  r  r#   c                ó8   •— g | ]}|‰j         v s	|‰j        v ¯|‘ŒS r   )r(   r*  rß  s     €r!   r6   z!subset_glyphs.<locals>.<listcomp><  s7   ø€ ð ð ð Ø a¨1¬8 m m°q¸AÔ<LÐ7LÐ7LˆÐ7LÐ7LÐ7Lr#   T)r0   r(   rË   re  r=   rQ  rb   r³  r&  r  r   ÚgetTableModuler“  r*  r  )r'   ro   r9   ÚglyphmaprV   r“  r   s    `     r!   rw   rw   /  s,  ø€ å˜tœ{¨A¬HÑ5Ô5€D„KØŒ9Ô ð HØMÐMÐMÐM¥¨4¬?Ñ!;Ô!;ÐMÑMÔMˆØ8Ð8¥Y¨wÑ%7Ô%7Ð8Ñ8Ô8ˆØ”×#Ò#Ñ%Ô%ð 	Hð 	HˆAÝ�q˜&Ñ!Ô!ð HØ×%Ò% h¸¼Ð%ÑGÔGÐGøÝÔ  Ñ(Ô(Ô.€EØÔð "ð "ˆØ˜™œˆŒ�A‰Ø!ˆŒ�AŒÔÐðð ð ð Ø”?ðñ ô €D„Oð ˆ4r#   c                ó†   — |j          }| j                             ¦   «         D ]}|                     || j        ¬¦  «         ŒdS )N)Úremove_hintingr  T)rÈ   r(   rb   Útrimr  )r'   r)   rË   r6  rV   s        r!   rÌ   rÌ   C  sK   € à œÐ(€NØŒ[×ÒÑ!Ô!ð Fð FˆØ	�Š˜n°t´}ˆÑEÔEÐEÐEØˆ4r#   c                óÒ   — | j         j        rZt          ¦   «         }| j        D ](}t	          |¦  «        }|�|                     |¦  «         Œ)| j                             |¦  «         d S d S r   )rË   Úbidi_closurerC   Úunicodes_requestedr   rÎ  rl   )ro   Úadditional_unicodesÚuÚmirror_us       r!   Ú_cmap_add_bidi_mirroringr>  K  sy   € à„yÔð 9Ý!™eœeÐØÔ%ð 	2ð 	2ˆAÝ ‘{”{ˆHØÐ#Ø#×'Ò'¨Ñ1Ô1Ð1øØ	Ô×#Ò#Ð$7Ñ8Ô8Ð8Ð8Ð8ð9ð 9r#   r   c                ó¢  ‡‡‡‡— d„ | j         D ¦   «         }t          ¦   «         }d }d }|D �]„}|j        dv rÂt          ¦   «         }	|j                             ¦   «         D ]€\  ŠŠ‰‰j        vrŒˆˆˆfd„‰D ¦   «         }
|	                     ˆˆfd„|
D ¦   «         ¦  «         d„ |
D ¦   «         }d |v r|                     d ¦  «         ‰j                             |¦  «         Œ�|€|	n| 	                    |	¦  «        }ŒÎ|j
        Š‰j         	                    ‰                     ¦   «         ¦  «        }|                     |¦  «         | j        dk    rˆˆfd„|D ¦   «         }|                     |¦  «         ‰j                             ˆfd„|D ¦   «         ¦  «         |€|n| 	                    |¦  «        }�Œ†||pt          ¦   «         |pt          ¦   «         fS )	Nc                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   ©Ú	isUnicoder   s     r!   r6   z(_cmap_closure_glyphs.<locals>.<listcomp>W  s%   € Ð6Ð6Ð6�A¨¯ª©¬Ð6ˆaÐ6Ð6Ð6r#   ©é   é   c                ó<   •— g | ]\  }}|‰j         v r
‰|f‰v¯||f‘ŒS r   ©r:  )r   r<  r   Úexcluded_uvsro   ÚvarSelectors      €€€r!   r6   z(_cmap_closure_glyphs.<locals>.<listcomp>c  sK   ø€ ð ð ð á˜˜1Ø˜AÔ0Ð0Ð0Ø$ aÐ(°Ð<Ð<ð ˜�Fð =Ð<Ð<r#   c              3  óH   •K  — | ]\  }}|‰j         d          k    ¯‰|fV — ŒdS rÆ   ©Úorig_glyph_order)r   r<  r   ro   rI  s      €€r!   r"   z'_cmap_closure_glyphs.<locals>.<genexpr>k  sH   øè è € ð !ð !Ù)-¨¨A¸AÀÔASÐTUÔAVÒ<VÐ<V�[ !Ð$Ð<VÐ<VÐ<VÐ<Vð!ð !r#   c                ó   — h | ]\  }}|’ŒS r   r   )r   Ú_r   s      r!   rà  z'_cmap_closure_glyphs.<locals>.<setcomp>n  s   € Ð0Ð0Ð0¡  1˜!Ð0Ð0Ð0r#   ÚDMAPc                óB   •— h | ]}‰|         ‰j         d          k    ¯|’ŒS ©r   rK  )r   r<  Úcmapro   s     €€r!   rà  z'_cmap_closure_glyphs.<locals>.<setcomp>}  s6   ø€ ð  ð  ð  Ø¨t°A¬w¸!Ô:LÈQÔ:OÒ/OÐ/O�AÐ/OÐ/OÐ/Or#   c              3  ó(   •K  — | ]}‰|         V — Œd S r   r   )r   r<  rR  s     €r!   r"   z'_cmap_closure_glyphs.<locals>.<genexpr>�  s'   øè è € Ð:Ð:¨˜D œGÐ:Ð:Ð:Ð:Ð:Ð:r#   )ÚtablesrC   ÚformatÚuvsDictrX   r:  rl   rñ  r(   rå   rR  rp  Údifference_updateÚtableTag)r'   ro   Úexcluded_unicodesrH  rT  Úmatched_unicodesÚcovered_unicodesÚcovered_uvsrÊ  Ú	table_uvsÚmatchesr(   rå   rR  rI  s    ` `         @@r!   Ú_cmap_closure_glyphsr_  V  sn  øøøø€ Ø6Ð6˜œÐ6Ñ6Ô6€FÝ‘u”uÐØÐØ€Kð ð )ñ )ˆØŒ<˜8Ð#Ð#Ý™œˆIØ%*¤]×%8Ò%8Ñ%:Ô%:ð (ð (Ñ!�˜TØ aÔ&:Ð:Ð:Øðð ð ð ð ð à $ðñ ô �ð × Ò ð !ð !ð !ð !ð !Ø18ð!ñ !ô !ñ ô ð ð 1Ð0¨Ð0Ñ0Ô0�Ø˜6�>�>Ø—M’M $Ñ'Ô'Ð'Ø”—’ Ñ'Ô'Ð'Ð'ð Ð&ð �	à ×-Ò-¨iÑ8Ô8ð ˆKð ”:ˆDØÔ/×<Ò<¸T¿YºY¹[¼[ÑIÔIˆLØ×*Ò*Ð+<Ñ=Ô=Ð=ØŒ} Ò&Ð&ð ð  ð  ð  ð  Ø+ð ñ  ô  �ð ×#Ò# LÑ1Ô1Ð1ØŒH�OŠOÐ:Ð:Ð:Ð:¨\Ð:Ñ:Ô:Ñ:Ô:Ð:ð $Ð+ð �à%×2Ò2°<Ñ@Ô@ð Ñð Ð-Ð6µ±´¸Ð8LÅsÁuÄuÐLÐLr#   rR  c                óŠ   — t          |¦  «         t          | |¦  «        \  }}}|j                             |¦  «        |_        d S r   )r>  r_  r:  Ú
differenceÚunicodes_missing)r'   ro   rZ  rN  s       r!   rp   rp   Œ  sI   € å˜QÑÔÐÝ1°$¸Ñ:Ô:ÑÐ�a˜ð Ô-×8Ò8Ð9IÑJÔJ€AÔÐÐr#   c                ór  — t          |¦  «         t          ¦   «         }t          ¦   «         }t          ¦   «         }d| v rt          | d         |¦  «        \  }}}t          ¦   «         }d| v rt          | d         |||¬¦  «        \  }}}||_        ||_        |j                             ||z  ¦  «        |_        d S )NrO  rR  )rY  rH  )r>  rC   r_  Úunicodes_dmapedÚ
uvs_dmapedr:  ra  rb  )r)   ro   Údmap_unicodesÚdmap_uvsÚmatched_dmap_unicodesÚcmap_unicodesrN  s          r!   Ú_closure_glyphs_cmap_and_dmaprj  •  sÎ   € Ý˜QÑÔÐå‘E”E€MÝ‰uŒu€HÝ™EœEÐØ�€~€~Ý9MØ�ŒL˜!ñ:
ô :
Ñ6Ð˜}¨hõ ‘E”E€MØ�€~€~Ý2Ø�ŒLØØ+Ø!ð	
ñ 
ô 
Ñˆ�q˜!ð &€AÔØ€A„LØÔ-×8Ò8Ø Ñ-ñô €AÔÐÐr#   c                ó  — |j         sd„ | j        D ¦   «         | _        |j        sd„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        t          | j        ¦  «        | _        | j        dk    pt          | j        ¦  «        S )Nc                ób   — g | ],}|                      ¦   «         s|                     ¦   «         ¯*|‘Œ-S r   )rB  ÚisSymbolr   s     r!   r6   z$prune_pre_subset.<locals>.<listcomp>´  s2   € ÐOÐOÐO˜Q°·²±´ÐOÀ!Ç*Â*Á,Ä,ÐO�qÐOÐOÐOr#   c                ó:   — g | ]}|                      ¦   «         °|‘ŒS r   )rm  r   s     r!   r6   z$prune_pre_subset.<locals>.<listcomp>¶  s%   € ÐBÐBÐB˜Q°Q·Z²Z±\´\ÐB�qÐBÐBÐBr#   c                ó(   — g | ]}|j         d k    ¯|‘ŒS rQ  )rU  r   s     r!   r6   z$prune_pre_subset.<locals>.<listcomp>¹  s   € Ð;Ð;Ð;˜¨Q¬X¸ª]¨]�1¨]¨]¨]r#   rR  )Úlegacy_cmaprT  Úsymbol_cmapr8   ÚnumSubTablesrX  ru   rF  s      r!   rï  rï  °  s�   € àÔð PàOÐO $¤+ÐOÑOÔOˆŒØÔð CØBÐB $¤+ÐBÑBÔBˆŒð <Ð;˜dœkÐ;Ñ;Ô;€D„KÝ˜DœKÑ(Ô(€DÔØŒ=˜FÒ"Ð7¥d¨4¬;Ñ&7Ô&7Ð7r#   c                óŠ  ‡‡‡‡‡	— d ‰_         | j        dk    Š‰rt          ‰dd¦  «        ndŠ‰rt          ‰dd¦  «        ndŠg }i }i }| j        D �]]}|j        dk    r|j        dk    r
|||j        <   |j        dk    r|j        dk    r
|||j        <   |j        dv rTˆˆfd	„|j         	                    ¦   «         D ¦   «         |_        d
„ |j         	                    ¦   «         D ¦   «         |_        Œ | 
                    ¦   «         rˆˆˆfd„|j         	                    ¦   «         D ¦   «         |_        |j        dk    rF|j        r?t          |j                             ¦   «         ¦  «        dk     r|                     |¦  «         �Œ3ˆfd„|j         	                    ¦   «         D ¦   «         |_        �Œ_‰r|ndD ]©}|j        dk    rI|j        dk    r>|j        |v r5||j                 j        |j        k    r|j                             ¦   «          ŒV|j        dk    rH|j        dk    r=|j        |v r4||j                 j        |j        k    r|j                             ¦   «          Œªd„ | j        D ¦   «         Š	‰s‰	rˆ	fd„| j        D ¦   «         n‰	| _        t!          | j        ¦  «        | _        | j        dk    pt%          | j        ¦  «        S )NrR  rd  r   re  r   r®   rœ   rC  c                óL   •‡— i | ]\  Š}‰‰j         v ¯‰ˆˆˆfd „|D ¦   «         “Œ S )c                óN   •— g | ]!\  }}|‰j         v s|‰j        v ¯‰|f‰v¯||f‘Œ"S r   )Úglyphs_requestedr:  )r   r<  r   rH  ro   rV   s      €€€r!   r6   z,subset_glyphs.<locals>.<dictcomp>.<listcomp>Ô  sX   ø€ ð ð ð á˜˜1Ø˜AÔ.Ð.Ð.Ø˜QÔ1Ð1Ð1°q¸!°fÀLÐ6PÐ6Pð ˜�Fð 7QÐ6PÐ6Pr#   rG  )r   r5   rV   rH  ro   s     @€€r!   r/   z!subset_glyphs.<locals>.<dictcomp>Ó  sj   øø€ ð 	ð 	ð 	ñ �A�qØ˜Ô,Ð,Ð,ð ð ð ð ð ð ð à !ðñ ô ð -Ð,Ð,r#   c                ó   — i | ]
\  }}|¯||“ŒS r   r   )r   rV   r5   s      r!   r/   z!subset_glyphs.<locals>.<dictcomp>Ý  s#   € ÐAÐAÐA¡$ ! Q¸qÐA˜˜AÐAÐAÐAr#   c                ón   •— i | ]1\  }}‰s|‰j         d          k    r|‰j        v s|‰j        v ¯*|‰v¯.||“Œ2S rQ  )rL  rv  r:  )r   r<  r   rY  Úis_cmapro   s      €€€r!   r/   z!subset_glyphs.<locals>.<dictcomp>ß  sp   ø€ ð ð ð á�A�qØðð  ! AÔ$6°qÔ$9Ò9Ð9à˜Ô+Ð+Ð+Ø˜QÔ1Ð1Ð1°aÐ?PÐ6PÐ6Pð �1ð
 7QÐ6PÐ6Pr#   é   rõ  c                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r   )rv  )r   r<  r   ro   s      €r!   r/   z!subset_glyphs.<locals>.<dictcomp>í  s,   ø€ ÐQÐQÐQ™t˜q !¸¸aÔ>PÐ9PÐ9P�a˜Ð9PÐ9PÐ9Pr#   rÍ  r  c                óB   — g | ]}|j         d vr|j        ¯n|j        ¯|‘ŒS )rC  )rU  rR  rV  r   s     r!   r6   z!subset_glyphs.<locals>.<listcomp>  s<   € ð ð ð Ø¨Q¬X¸XÐ-EÐ-E 1¤6Ð-EÐ-EÈ1Ì9Ð-EˆÐ-EÐ-EÐ-Er#   c                óD   •— g | ]}|                      ¦   «         s|‰v ¯|‘ŒS r   rA  )r   r!  Únonempty_tabless     €r!   r6   z!subset_glyphs.<locals>.<listcomp>  s0   ø€ ÐIÐIÐIˆq 1§;¢;¡=¤=ÐI°A¸Ð4HÐ4HˆÐ4HÐ4HÐ4Hr#   )r(   rX  r·   rT  Ú
platformIDÚ	platEncIDÚlanguagerU  rV  rX   rB  rR  Úmaxrp  rd  r-  r8   rr  ru   )
r'   ro   Útables_format12_bmpÚtable_plat0_enc3Útable_plat3_enc1r!  rY  rH  ry  r~  s
    `    @@@@r!   rw   rw   ¾  s2  øøøøø€ à€A„HØŒm˜vÒ%€GØ=DÐL� Ð#4°bÑ9Ô9Ð9È"ÐØ3:ÐB•7˜1˜l¨BÑ/Ô/Ð/À€LàÐØÐØÐàŒ[ð $Rñ $RˆØŒ<˜1ÒÐ ¤°Ò!1Ð!1Ø+,Ð˜QœZÑ(ØŒ<˜1ÒÐ ¤°Ò!1Ð!1Ø+,Ð˜QœZÑ(àŒ8�xÐÐð	ð 	ð 	ð 	ð 	ð œIŸOšOÑ-Ô-ð	ñ 	ô 	ˆAŒIð BÐA¨!¬)¯/ª/Ñ*;Ô*;ÐAÑAÔAˆAŒIˆIØ�[Š[‰]Œ]ð 	Rðð ð ð ð ð àœFŸLšL™NœNðñ ô ˆAŒFð Œx˜2Š~ˆ~ !¤&ˆ~­S°´·²±´Ñ-?Ô-?À'Ò-IÐ-IØ#×*Ò*¨1Ñ-Ô-Ð-ùàQÐQÐQÐQ q¤v§|¢|¡~¤~ÐQÑQÔQˆAŒF‰Fð %,Ð3Ð Ð °ð ð ˆàŒL˜AÒÐØ”˜qÒ Ð Ø”
Ð.Ð.Ð.Ø  ¤Ô,Ô1°Q´VÒ;Ð;àŒF�LŠL‰NŒNˆNˆNàŒL˜AÒÐØ”˜rÒ!Ð!Ø”
Ð.Ð.Ð.Ø  ¤Ô,Ô1°Q´VÒ;Ð;àŒF�LŠL‰NŒNˆNøðð Ø”;ðñ ô €Oð ð	Ø*ð	ÐIÐIÐIÐI�D”KÐIÑIÔIÐIàð 	„Kõ
 ˜DœKÑ(Ô(€DÔð Œ=˜FÒ"Ð7¥d¨4¬;Ñ&7Ô&7Ð7r#   ÚDSIGc                ó"   — d| _         g | _        dS rM  )Ú	usNumSigsÚsignatureRecordsrF  s      r!   rï  rï    s   € ð €D„NØ€DÔØˆ4r#   Úmaxpc                óŒ   — |j         s<| j        dk    r1d| _        d| _        d| _        d| _        d| _        d| _        d| _        dS )Nrõ  rœ   r   T)	rÈ   ÚtableVersionÚmaxZonesÚmaxTwilightPointsÚ
maxStorageÚmaxFunctionDefsÚmaxInstructionDefsÚmaxStackElementsÚmaxSizeOfInstructionsrF  s      r!   rï  rï    sU   € àŒ?ð +ØÔ 
Ò*Ð*ØˆDŒMØ%&ˆDÔ"ØˆDŒOØ#$ˆDÔ Ø&'ˆDÔ#Ø$%ˆDÔ!Ø)*ˆDÔ&Øˆ4r#   >   rœ   r­   r®   rÍ  é   r  é   é   rº   c                óP  ‡‡— t          ¦   «         }|                     |¦  «         t          ‰j        ¦  «        |j        z  Šd‰j        v r‰d„ | j        D ¦   «         z  Šˆfd„| j        D ¦   «         | _        ‰j        sd„ | j        D ¦   «         | _        d‰j        vrˆfd„| j        D ¦   «         | _        ‰j        rêg }|j         	                    t          ¦  «        }|rt          ||¦  «         | j        D ]¨}|j        dv r1|                     ¦   «         rd                     d¦  «        nd|_        nW|j        d	v r1|                     ¦   «         rd
                     d¦  «        nd
|_        n|j        dk    rd|_        n
|j        dv rŒ“|                     |¦  «         Œ©|| _        dS )Nr   c                ó2   — h | ]}|j         d k     ¯|j         ’ŒS )é   ©ÚnameID©r   r¥  s     r!   rà  z$prune_post_subset.<locals>.<setcomp>1  s!   € ÐCÐCÐC °A´H¸s²N°N�A”H°N°N°Nr#   c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS r   rš  )r   r¥  ÚnameIDss     €r!   r6   z%prune_post_subset.<locals>.<listcomp>2  s%   ø€ Ð?Ð?Ð?˜¨1¬8°wÐ+>Ð+>�!Ð+>Ð+>Ð+>r#   c                ó:   — g | ]}|                      ¦   «         ¯|‘ŒS r   rA  rœ  s     r!   r6   z%prune_post_subset.<locals>.<listcomp>6  s%   € Ð=Ð=Ð=˜A¨q¯{ª{©}¬}Ð=�aÐ=Ð=Ð=r#   c                ó0   •— g | ]}|j         ‰j        v ¯|‘ŒS r   )ÚlangIDÚname_languages)r   r¥  rË   s     €r!   r6   z%prune_post_subset.<locals>.<listcomp>:  s(   ø€ ÐRÐRÐR˜A¨q¬x¸7Ô;QÐ/QÐ/Q�aÐ/QÐ/QÐ/Qr#   )rœ   rÍ  z.Ú	utf_16_be)r­   r”  úr®   rR  )r  r•  r–  T)r   ÚvisitrC   Úname_IDsÚseenr§  Úname_legacyr¢  Úobfuscate_namesrå   ÚNAME_IDS_TO_OBFUSCATEÚ_remap_select_name_idsr›  rB  ÚencodeÚstringrd  )r'   r)   rË   ÚvisitorÚnamerecsÚneedRemappingr¥  rž  s     `    @r!   rÌ   rÌ   +  sË  øø€ åÑ!Ô!€GØ‡M‚M�$ÑÔÐÝ�'Ô"Ñ#Ô# g¤lÑ2€GØ
ˆgÔÐÐØÐCÐC d¤jÐCÑCÔCÑCˆØ?Ð?Ð?Ð?˜TœZÐ?Ñ?Ô?€D„JØÔð >ð >Ð= ¤Ð=Ñ=Ô=ˆŒ
à
�'Ô(Ð(Ð(àRÐRÐRÐR ¤ÐRÑRÔRˆŒ
ØÔð Øˆð  œ×1Ò1Õ2GÑHÔHˆØð 	8Ý" 4¨Ñ7Ô7Ð7Ø”ð 		ð 		ˆAØŒx˜6Ð!Ð!Ø:;¿+º+¹-¼-ÐT˜7Ÿ>š>¨+Ñ6Ô6Ð6ÈW�”�Ø”˜VÐ#Ð#Ø9:¿º¹¼ÐR˜6Ÿ=š=¨Ñ5Ô5Ð5ÈF�”�Ø”˜Q’�Ø�”�Ø”˜\Ð)Ð)ØØ�OŠO˜AÑÔÐÐØˆŒ
Øˆ4r#   r)   úttLib.TTFontr°  úset[int]ÚreturnÚNonec                óš  — d| vrd| vrdS | d         }d„ |j         D ¦   «         }i }|                     ¦   «         dz
  }|D ]/}|dz  }||vs
J d¦   «         ‚|dk    rt          d	¦  «        ‚|||<   Œ0g }|j         D ]S}|j        |vrŒt	          |j        ||j                 |j        |j        |j        ¦  «        }	| 	                    |	¦  «         ŒT|j          
                    |¦  «         |                      d¦  «        }
|
�}|
j        D ]'}|                     |j        |j        ¦  «        |_        Œ(|
j        D ]F}|j        }|                     ||¦  «        |_        |j        }|                     ||¦  «        |_        ŒG|                      d¦  «        }|€dS |j        j        }|                     ||¦  «        |j        _        |j        j        r9|j        j        j        D ]'}|                     |j        |j        ¦  «        |_        Œ(|j        j        r9|j        j        j        D ])}|                     |j        |j        ¦  «        |_        Œ(dS dS )
a;  Remap a set of IDs so that the originals can be safely scrambled or
    dropped.

    For each name record whose name id is in the `needRemapping` set, make a copy
    and allocate a new unused name id in the font-specific range (> 255).

    Finally update references to these in the `fvar` and `STAT` tables.
    ÚfvarÚSTATNrº   c                ó   — h | ]	}|j         ’Œ
S r   rš  r]  s     r!   rà  z)_remap_select_name_ids.<locals>.<setcomp>`  s   € Ð:Ð:Ð: V�6”=Ð:Ð:Ð:r#   rœ   z#_findUnusedNameID did not skip gapsiÿ  z8Ran out of name IDs while trying to remap existing ones.)r§  Ú_findUnusedNameIDÚ
ValueErrorr›  r   r­  r  r€  r¡  rd  r.  r  ÚaxesÚ
axisNameIDÚ	instancesÚsubfamilyNameIDÚpostscriptNameIDrÊ  ÚElidedFallbackNameIDÚDesignAxisRecordÚAxisÚ
AxisNameIDÚAxisValueArrayÚ	AxisValueÚValueNameID)r)   r°  rº   ÚexistingIdsÚ	remappingÚnextIdÚnameIdÚcopiedRecordsrX  Ú
recordCopyr¶  ÚaxisÚinstancer›  ÚstatÚelidedNameIDÚvalues                    r!   r«  r«  P  s¬  € ð �TÐÐ˜f¨DÐ0Ð0Øˆà�Œ<€Dð ;Ð:¨t¬zÐ:Ñ:Ô:€KØ€IØ×#Ò#Ñ%Ô%¨Ñ)€FØð #ð #ˆØ�!‰ˆØ˜[Ð(Ð(Ð(Ð*OÑ(Ô(Ð(Ø�EŠ>ˆ>ÝÐWÑXÔXÐXØ"ˆ	�&ÑÐð €MØ”*ð 
)ð 
)ˆØŒ= Ð-Ð-ØÝØŒMØ�f”mÔ$ØÔØÔØŒMñ
ô 
ˆ
ð 	×Ò˜ZÑ(Ô(Ð(Ð(Ø„J×Ò�mÑ$Ô$Ð$ð
 �8Š8�FÑÔ€DØÐØ”Ið 	Nð 	NˆDØ'Ÿmšm¨D¬O¸T¼_ÑMÔMˆDŒOˆOØœð 	Fð 	FˆHØÔ-ˆFØ'0§}¢}°V¸VÑ'DÔ'DˆHÔ$ØÔ.ˆFØ(1¯ª°f¸fÑ(EÔ(EˆHÔ%Ð%à�8Š8�FÑÔ€DØ€|ØˆØ”:Ô2€LØ&/§m¢m°LÀ,Ñ&OÔ&O€D„JÔ#Ø„zÔ"ð NØ”JÔ/Ô4ð 	Nð 	NˆDØ'Ÿmšm¨D¬O¸T¼_ÑMÔMˆDŒOˆOØ„zÔ ð TØ”ZÔ.Ô8ð 	Tð 	TˆEØ )§¢¨eÔ.?ÀÔARÑ SÔ SˆEÔÐðTð Tð	Tð 	Tr#   Úheadc                ó   — dS rü   r   rF  s      r!   rÌ   rÌ   –  s	   € ð ˆ4r#   c                  ó8  — e Zd Z G d„ de¦  «        Z G d„ de¦  «        Zg d¢Zeg d¢z  Zg d¢Zg d¢Zg d	¢g d
¢g d¢g d¢ddgddgdgdgg d¢g d¢g d¢g d¢g d¢g d¢dœZ	 e
 e ee	                     ¦   «         ¦  «        g ¦  «        ¦  «        Zd„ Zd„ Zg fd„ZdS )ÚOptionsc                  ó   — e Zd ZdS )úOptions.OptionErrorN©rž  r®  r¯  r   r#   r!   ÚOptionErrorr×  ª  ó   € € € € € Øˆr#   rÙ  c                  ó   — e Zd ZdS )úOptions.UnknownOptionErrorNrØ  r   r#   r!   ÚUnknownOptionErrorrÜ  ­  rÚ  r#   rÝ  )r  r†  r­  r¢  ÚEBSCÚPCLTÚLTSH)ÚFeatÚGlatÚGlocÚSilfÚSill)ÚavarÚBASEr¶  ÚgasprÒ  ÚhheaÚHHEArŠ  ÚMAXPÚvheaÚVHEAúOS/2ÚlocaÚLOCArº   ÚcvtÚfpgmÚprepÚVDMXr†  rº  ÚMVARÚcvarr·  )rñ  rö  rò  ró  r.  rô  )ÚrvrnÚccmpÚligaÚloclÚmarkÚmkmkÚrlig)ÚfracÚnumrÚdnom)ÚcaltÚcligÚcursr  Úrclt)ÚvaltÚvertÚvkrnÚvpalÚvrt2ÚltraÚltrmÚrtlaÚrtlmÚrandÚjalt)ÚHarfÚHARFÚBuzzÚBUZZ)ÚchwsÚvchwÚhaltÚvhalÚpalt)
ÚinitÚmediÚfinaÚisolÚmed2Úfin2Úfin3ÚcswhÚmsetÚstch)ÚljmoÚvjmoÚtjmo)ÚabvsÚblwsÚabvmÚblwm)ÚnuktÚakhnÚrphfÚrkrfr<  ÚblwfÚhalfÚabvfÚpstfÚcfarÚvatuÚcjctr  Úpresr&  r'  ÚpstsÚhalnÚdistr(  r)  )ÚcommonÚ	fractionsÚ
horizontalÚverticalÚltrÚrtlr  ÚjustifyÚprivateÚeast_asian_spacingÚarabicÚhangulÚtibetanÚindicc                óÔ  — | j         d d …         | _        | j        d d …         | _        d| _        | j        d d …         | _        d| _        d| _        | j	        d d …         | _
        dg| _        d| _        d| _        d| _        d| _        d| _        d| _        g d¢| _        d| _        dg| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _         d | _!        d| _"        d| _#        tH          j%        | _&        d| _'        d| _(        d| _)        d| _*        d| _+        d| _,        d| _-         | j.        di |¤Ž d S )NFTr   )r   rœ   r­   r®   rÍ  é   r”  i	  rñ  r   )/Ú_drop_tables_defaultÚdrop_tablesÚ_no_subset_tables_defaultÚno_subset_tablesÚpassthrough_tablesÚ_hinting_tables_defaultÚhinting_tablesÚlegacy_kernÚlayout_closureÚ_layout_features_defaultrî  rí  Úignore_missing_glyphsÚignore_missing_unicodesrÈ   r‚  rp  rq  r¦  r¨  r¢  r©  re  rN  rO  Úrecommended_glyphsÚrecalc_boundsÚrecalc_timestampÚprune_unicode_rangesÚprune_codepage_rangesÚrecalc_average_widthÚrecalc_max_contextÚcanonical_orderÚflavorÚwith_zopfliÚdesubroutinizer   ÚdefaultÚharfbuzz_repackerÚverboseÚtimingÚxmlÚfont_numberÚ
pretty_svgÚlazyr9  rC   )r'   Úkwargss     r!   r­  zOptions.__init__  s�  € ØÔ4°Q°Q°QÔ7ˆÔØ $Ô >¸q¸q¸qÔ AˆÔØ"'ˆÔØ"Ô:¸1¸1¸1Ô=ˆÔØ ˆÔØ"ˆÔØ#Ô<¸Q¸Q¸QÔ?ˆÔØ"˜eˆÔØ%*ˆÔ"Ø'+ˆÔ$ØˆŒØ ˆÔØ ˆÔØ ˆÔð
ð 
ð 
ˆŒð !ˆÔØ%˜hˆÔØ$ˆÔØ ˆÔØ ˆÔØ#ˆÔØ"'ˆÔØ"ˆÔØ %ˆÔØ$(ˆÔ!Ø%)ˆÔ"Ø$)ˆÔ!Ø"'ˆÔØ#ˆÔØˆŒØ ˆÔØ#ˆÔÝ!6Ô!>ˆÔØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒ	Ø ˆÔàˆŒÐÐ�6ÐÐÐÐÐr#   c                ó¬   — |                      ¦   «         D ]>\  }}t          | |¦  «        s|                      d|z  ¦  «        ‚t          | ||¦  «         Œ?d S )NúUnknown option '%s')rX   r³  rÝ  rú   )r'   rg  r¼  rV   s       r!   rC   zOptions.setC  si   € Ø—L’L‘N”Nð 	 ð 	 ‰DˆAˆqÝ˜4 Ñ#Ô#ð IØ×-Ò-Ð.CÀaÑ.GÑHÔHÐHÝ�D˜!˜QÑÔÐÐð	 ð 	 r#   c                ó�  — g }g }|D �]º}|}|                      d¦  «        s|                     |¦  «         Œ0|dd …         }|                     d¦  «        }d}|dk    rQ|                      d¦  «        r|dd …         }	|	dk    rd }
nd}
n|}	d	}
|	                     d
¦  «        r|	d d…         }	d
}
n6|d |…         }	|	d         dv r|	d         dz   }|	d d…         }	||dz   d …         }
|	}|	                     dd¦  «        }	t          | |	¦  «        s7|d	u s||v r|                     |¦  «         �Œ%|                      d|z  ¦  «        ‚t          | |	¦  «        }|
d
k    rt          d|›d|›�¦  «         �Œjt          |t          ¦  «        rt          |
¦  «        }
�nt          |t          ¦  «        rt          |
¦  «        }
nôt          |t          ¦  «        rt          |
¦  «        }
nÏt          |t          ¦  «        rºt          |
t          ¦  «        r|                      d|z  ¦  «        ‚|
                     dd¦  «                             ¦   «         }|dgk    rg }d„ |D ¦   «         }|dk    r|}
nG|dk    r|}
|
                     |¦  «         n)|dk    r!|}
|D ]}||
v r|
                     |¦  «         ŒnJ ‚t%          | |	|
¦  «         �Œ¼||z   S )Nz--r­   ú=rñ  zno-r®   zcanonical-orderFTÚ?z-+rœ   ú-rN  ri  zCurrent setting for 'z' is: z5Option '%s' requires values to be specified using '='ú,ú rR  c                ód   — g | ]-}t          |¦  «        r|d          dv rt          |d ¦  «        n|‘Œ.S )r   Ú
0123456789)r8   rÉ   rh  s     r!   r6   z&Options.parse_opts.<locals>.<listcomp>„  s=   € ÐVÐVÐVÈa¥3 q¡6¤6ÐI¨a°¬d°lÐ.BÐ.B•c˜!˜Q‘i”i�iÈÐVÐVÐVr#   z+=z-=)r   rd  ÚfindrŸ  Úreplacer³  rÝ  r·   Úprintr6  ru   rÉ   Ústrra   rÙ  rÔ  r.  rñ  rú   )r'   ÚargvÚignore_unknownÚposargsÚpassthru_optionsr  Úorig_ar3   Úopr¼  rV   ÚokÚovÚvvri  s                  r!   Ú
parse_optszOptions.parse_optsI  sG  € ØˆØÐØð F	 ñ F	 ˆAØˆFØ—<’< Ñ%Ô%ð Ø—’˜qÑ!Ô!Ð!ØØ�!�"�"”ˆAØ—’�s‘”ˆAØˆBØ�BŠwˆwØ—<’< Ñ&Ô&ð 
Ø˜!˜"˜"œ�AØÐ-Ò-Ð-ð !˜˜à!˜˜à�AØ�AØ—:’:˜c‘?”?ð Ø˜#˜2˜#œ�AØ�Aøà�b�q�b”E�Ø�R”5˜D�=�=Ø˜2œ ™�BØ˜#˜2˜#œ�AØ�a˜!‘e�g�g”J�ØˆBØ—	’	˜#˜sÑ#Ô#ˆAÝ˜4 Ñ#Ô#ð MØ! TÐ)Ð)¨R°>Ð-AÐ-AØ$×+Ò+¨FÑ3Ô3Ð3Ùà×1Ò1Ð2GÈ!Ñ2KÑLÔLÐLå˜˜qÑ!Ô!ˆBØ�CŠxˆxÝ�¸2¸2¸2¸r¸rÐBÑCÔCÐCÙÝ˜"�dÑ#Ô#ð !Ý˜‘G”G�‘Ý˜B¥Ñ$Ô$ð !Ý˜‘F”F��Ý˜B¥Ñ$Ô$ð !Ý˜‘F”F��Ý˜B¥Ñ%Ô%ð !Ý˜a¥Ñ&Ô&ð Ø×*Ò*ØOÐRSÑSñô ð ð —Y’Y˜s CÑ(Ô(×.Ò.Ñ0Ô0�Ø˜"˜’:�:Ø�BØVÐVÐSUÐVÑVÔV�Ø˜’9�9Ø�A�AØ˜4’Z�ZØ�AØ—H’H˜R‘L”L�L�LØ˜4’Z�ZØ�AØð (ð (˜Ø ˜6˜6ØŸHšH Q™KœK˜Køð(ð !�Lå�D˜!˜QÑÔÐÑàÐ)Ñ)Ð)r#   N)rž  r®  r¯  Ú	ExceptionrÙ  rÝ  rH  rJ  rM  Ú_layout_features_groupsr   r  Úiterrb   rQ  r­  rC   r  r   r#   r!   rÕ  rÕ  ©  sº  € € € € € ðð ð ð ð �iñ ô ð ðð ð ð ð ˜[ñ ô ð ðð ð Ðð ÐDÐDÐDÑDÐð!ð !ð !Ðð4 NÐMÐMÐð
 KÐJÐJØ-Ð-Ð-Ø>Ð>Ð>Ø<Ð<Ð<Ø˜ÐØ˜ÐØ�Ø�8Ø3Ð3Ð3ØFÐFÐFð
ð 
ð 
ð +Ð*Ð*Ø3Ð3Ð3ð
ð 
ð 
ð72ð 2Ððf  *˜zØˆˆDˆDÐ(×/Ò/Ñ1Ô1Ñ2Ô2°BÑ7Ô7ñ ô  Ðð2ð 2ð 2ðh ð  ð  ð /1ð K*ð K*ð K*ð K*ð K*ð K*r#   rÕ  c                  óž   — e Zd Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdd„Zg g g d	fd
„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ ZdS )Ú	Subsetterc                  ó   — e Zd ZdS )úSubsetter.SubsettingErrorNrØ  r   r#   r!   ÚSubsettingErrorr†  ˜  rÚ  r#   r‡  c                  ó   — e Zd ZdS )ú&Subsetter.MissingGlyphsSubsettingErrorNrØ  r   r#   r!   ÚMissingGlyphsSubsettingErrorr‰  ›  rÚ  r#   rŠ  c                  ó   — e Zd ZdS )ú(Subsetter.MissingUnicodesSubsettingErrorNrØ  r   r#   r!   ÚMissingUnicodesSubsettingErrorrŒ  ž  rÚ  r#   r�  Nc                ó¦   — |st          ¦   «         }|| _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d S r   )rÕ  rË   rC   r:  Úglyph_names_requestedÚglyph_ids_requested)r'   rË   s     r!   r­  zSubsetter.__init__¡  sD   € Øð 	 Ý‘i”iˆGàˆŒÝ"%¡%¤%ˆÔÝ%(¡U¤UˆÔ"Ý#&¡5¤5ˆÔ Ð Ð r#   rR  c                ó®  — | j                              |¦  «         t          |t          ¦  «        r|                     d¦  «        }|                     d¦  «        }t          |¦  «        dz  }t          j        d|z  |¦  «        D ]}| j          	                    |¦  «         Œ| j
                             |¦  «         | j                             |¦  «         d S )NÚutf_8z	utf-32-berÍ  z>%dL)r:  rl   r6  ÚbytesÚdecoder¬  r8   r  r  rÎ  r�  r�  )r'   r(   ÚgidsÚunicodesÚtextÚ
text_utf32Úncharsr<  s           r!   ÚpopulatezSubsetter.populateª  sÊ   € ØÔ×&Ò& xÑ0Ô0Ð0Ý�d�EÑ"Ô"ð 	(Ø—;’;˜wÑ'Ô'ˆDØ—[’[ Ñ-Ô-ˆ
Ý�Z‘” AÑ%ˆÝ”˜v¨™°
Ñ;Ô;ð 	+ð 	+ˆAØÔ#×'Ò'¨Ñ*Ô*Ð*Ð*ØÔ"×)Ò)¨&Ñ1Ô1Ð1ØÔ ×'Ò'¨Ñ-Ô-Ð-Ð-Ð-r#   c                óì  — |                       |¦  «        D �]\}|                     ¦   «         | j        j        v sB|                     ¦   «         | j        j        v r| j        j        r|dk    r/| j        j        s#d|v rt                               d|¦  «         ||= Œ„t          j
        |¦  «        }t          |d¦  «        r´t          d|z  ¦  «        5  ||         }d d d ¦  «         n# 1 swxY w Y   t          d|z  ¦  «        5  |                     || j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |s t                               d|¦  «         ||= �ŒAt                               d|¦  «         �Œ^d S )	Nr  r½  z
%s droppedrï  z	load '%s'ú
prune '%s'ú%s pruned to empty; droppedú	%s pruned)Ú_sort_tablesÚstriprË   rI  rN  rÈ   rO  Úlogr$   r   rÁ  r³  Útimerrï  ©r'   r)   rØ  ÚclazzrÊ  Úretains         r!   Ú_prune_pre_subsetzSubsetter._prune_pre_subsetµ  s  € Ø×$Ò$ TÑ*Ô*ð 	/ñ 	/ˆCà—	’	‘”˜tœ|Ô7Ð7Ð7à—I’I‘K”K 4¤<Ô#>Ð>Ð>Ø œLÔ0ð ?ð ˜6’M�M¨4¬<Ô+C�MÈÐRVÈÈå—’˜ sÑ+Ô+Ð+Ø˜�IØåÔ'¨Ñ,Ô,ˆEå�uÐ0Ñ1Ô1ð 
/Ý˜;¨Ñ,Ñ-Ô-ð &ð &Ø  œI�Eð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å˜<¨#Ñ-Ñ.Ô.ð Hð HØ"×3Ò3°D¸$¼,ÑGÔG�FðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hàð /Ý—H’HÐ:¸CÑ@Ô@Ð@Ø˜S˜	Ùå—H’H˜[¨#Ñ.Ô.Ð.ùð3	/ð 	/s$   Ã	C%Ã%C)	Ã,C)	ÄD*Ä*D.	Ä1D.	c           	     ó¢  ‡ ‡‡‡‡— t          ‰                     ¦   «         ¦  «        }‰                     ¦   «         x‰ _        Št          ¦   «         ‰ _        ‰ j                             ‰ j        ¦  «         ‰ j                             ˆfd„‰ j        D ¦   «         ¦  «         t          ¦   «         ‰ _        ‰ j                             ‰ j                             |¦  «        ¦  «         ‰ j                             ˆfd„‰ j        D ¦   «         ¦  «         ‰ j        rFt           
                    d‰ j        ¦  «         ‰ j        j        s‰                      ‰ j        ¦  «        ‚‰ j                             ¦   «         ‰ _        t          ¦   «         ‰ _        d‰v sd‰v rQt#          d¦  «        5  t%          ‰‰ ¦  «         ‰ j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _        ‰ j        rNd„ ‰ j        D ¦   «         }t           
                    d|¦  «         ‰ j        j        s‰                      |¦  «        ‚~‰ j        j        r„d	‰v sd
‰v rH‰ j                             ‰                     d¦  «        ¦  «         t           
                    d¦  «         n4‰ j                             d¦  «         t           
                    d¦  «         ‰ j        j        rŽd	‰v sd
‰v r†t9          t;          dt=          ‰                     ¦   «         ¦  «        ¦  «        ¦  «        D ]/}‰ j                             ‰                     |¦  «        ¦  «         Œ0t           
                    d¦  «         t)          ‰ j        ¦  «        ‰ _        d‰v røt#          d¦  «        5  t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                               ‰ ¦  «         ‰ j                             |¦  «         t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _!        ‰ j        j"        rüd‰v røt#          d¦  «        5  t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                               ‰ ¦  «         ‰ j                             |¦  «         t           
                    dt=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _#        dD �]=}|‰v rýt#          d|z  ¦  «        5  t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰|                               ‰ ¦  «         ‰ j                             |¦  «         t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   tI          ‰ d| %                    ¦   «         › d�t)          ‰ j        ¦  «        ¦  «         �Œ?d ‰v røt#          d!¦  «        5  t           
                    d"t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d                                ‰ ¦  «         ‰ j                             |¦  «         t           
                    d#t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _&        d$D �]}|‰vrŒt#          d|z  ¦  «        5  t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰|                               ‰ ¦  «         ‰ j                             |¦  «         t           
                    d|t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   �Œt)          ‰ j        ¦  «        ‰ _&        d%‰v røt#          d&¦  «        5  t           
                    d't=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         ‰d%                               ‰ ¦  «         ‰ j                             |¦  «         t           
                    d(t=          ‰ j        ¦  «        ¦  «         t                               ‰ j        ‰¬¦  «         d d d ¦  «         n# 1 swxY w Y   t)          ‰ j        ¦  «        ‰ _'        t)          ‰ j        ¦  «        ‰ _(        ‰ )                    ¦   «         Šˆfd)„‰ j(        D ¦   «         ‰ _*        tW          ‰ j*         ,                    ¦   «         ¦  «        ‰ _-        ‰                     ¦   «         ‰ j-                 ‰ _.        t)          ¦   «         ‰ _/        ‰ j        j0        rˆˆ fd*„|‰ j(        z
  D ¦   «         ‰ _/        ˆfd+„‰ j/        D ¦   «         ‰ _1        ‰ j        j0        sˆ fd,„‰D ¦   «         Šnˆˆ fd-„‰D ¦   «         Š‰‰ _2        ˆˆfd.„t9          t=          ‰¦  «        ¦  «        D ¦   «         ‰ _3        t           
                    d/t=          ‰ j(        ¦  «        ¦  «         ‰ `d S )0Nc              3  óN   •K  — | ]}|t          ‰¦  «        k     ¯‰|         V — Œ d S r   r7   ©r   r3   Úglyph_orders     €r!   r"   z,Subsetter._closure_glyphs.<locals>.<genexpr>×  sB   øè è € ð %
ð %
Ø ÀÅCÈÑDTÔDTÒ@TÐ@TˆK˜ŒNÐ@TÐ@TÐ@TÐ@Tð%
ð %
r#   c              3  óB   •K  — | ]}|t          ‰¦  «        k    ¯|V — Œd S r   r7   r©  s     €r!   r"   z,Subsetter._closure_glyphs.<locals>.<genexpr>Ý  s>   øè è € ð #
ð #
Ø°1½¸KÑ8HÔ8HÒ3HÐ3HˆAÐ3HÐ3HÐ3HÐ3Hð#
ð #
r#   zMissing requested glyphs: %srR  rO  z$close glyph list over character mapsc                ó   — g | ]}d |z  ‘ŒS )zU+%04Xr   )r   r<  s     r!   r6   z-Subsetter._closure_glyphs.<locals>.<listcomp>î  s   € ÐCÐCÐC¨�x !‘|ÐCÐCÐCr#   z)Missing glyphs for requested Unicodes: %sr  ÚGLYFr   zAdded gid0 to subsetz.notdefzAdded .notdef to subsetrÍ  z!Added first four glyphs to subsetr
  zclose glyph list over 'MATH'z0Closing glyph list over 'MATH': %d glyphs before©r)   z.Closed glyph list over 'MATH': %d glyphs afterr·  zclose glyph list over 'GSUB'z0Closing glyph list over 'GSUB': %d glyphs beforez.Closed glyph list over 'GSUB': %d glyphs after)rš  r9  zclose glyph list over '%s'z.Closing glyph list over '%s': %d glyphs beforez,Closed glyph list over '%s': %d glyphs afterÚglyphs_ÚedrÛ  zclose glyph list over 'VARC'z0Closing glyph list over 'VARC': %d glyphs beforez.Closed glyph list over 'VARC': %d glyphs after)r  r­  zCFF zclose glyph list over 'CFF 'z0Closing glyph list over 'CFF ': %d glyphs beforez.Closed glyph list over 'CFF ': %d glyphs afterc                ó"   •— i | ]}|‰|         “ŒS r   r   ©r   r   Úorders     €r!   r/   z-Subsetter._closure_glyphs.<locals>.<dictcomp>d  s   ø€ Ð#NÐ#NÐ#N°A A u¨Q¤xÐ#NÐ#NÐ#Nr#   c                ó6   •— h | ]}‰|         ‰j         k    ¯|’ŒS r   )rX  )r   r   r³  r'   s     €€r!   rà  z,Subsetter._closure_glyphs.<locals>.<setcomp>k  s5   ø€ ð #ð #ð #àØ˜”8˜tÔ7Ò7Ð7ð à7Ð7Ð7r#   c                ó"   •— i | ]}|‰|         “ŒS r   r   r²  s     €r!   r/   z-Subsetter._closure_glyphs.<locals>.<dictcomp>q  s   ø€ Ð&PÐ&PÐ&P°q q¨%°¬(Ð&PÐ&PÐ&Pr#   c                ó&   •— g | ]}|‰j         v ¯|‘ŒS r   )Úglyphs_retainedrS   s     €r!   r6   z-Subsetter._closure_glyphs.<locals>.<listcomp>t  s&   ø€ ÐSÐSÐS Q¸¸dÔ>RÐ9RÐ9R˜qÐ9RÐ9RÐ9Rr#   c                óP   •— g | ]"}‰                      |¦  «        ‰j        k    ¯ |‘Œ#S r   )Ú
getGlyphIDrX  )r   r   r)   r'   s     €€r!   r6   z-Subsetter._closure_glyphs.<locals>.<listcomp>v  s9   ø€ ð ð ð Ø¨$¯/ª/¸!Ñ*<Ô*<ÀÔ@XÒ*XÐ*X�Ð*XÐ*XÐ*Xr#   c                ó.   •— i | ]}‰‰|                  |“ŒS r   r   )r   r3   Únew_glyph_orderr³  s     €€r!   r/   z-Subsetter._closure_glyphs.<locals>.<dictcomp>~  s2   ø€ ð  
ð  
ð  
Ø-.ˆE�/ !Ô$Ô% qð 
ð  
ð  
r#   zRetaining %d glyphs)4rC   ÚgetGlyphOrderrL  rv  rl   r�  r�  Úglyphs_missingra  r¡  r$   rË   rR  rŠ  rd  r(   rb  r¢  rj  Úintersection_updaterÉ  Úglyphs_cmapedrS  r�  rN  rÎ  ÚgetGlyphNamerT  rÏ  Úminr8   r  rp   r  rP  r¿  rú   ÚlowerÚglyphs_glyfedÚglyphs_cffedr·  r&   rc  r‚  rb   rX  rV  r*  re  rW  r»  Úglyph_index_map)	r'   r)   Ú
realGlyphsÚmissingr3   rÊ  rª  r»  r³  s	   ``    @@@r!   Ú_closure_glyphszSubsetter._closure_glyphsÑ  sã  øøøøø€ Ý˜×+Ò+Ñ-Ô-Ñ.Ô.ˆ
Ø.2×.@Ò.@Ñ.BÔ.BÐBˆÔ å #¡¤ˆÔØÔ×$Ò$ TÔ%?Ñ@Ô@Ð@ØÔ×$Ò$ð %
ð %
ð %
ð %
Ø$(Ô$<ð%
ñ %
ô %
ñ 	
ô 	
ð 	
õ "™eœeˆÔØÔ×"Ò" 4Ô#8×#CÒ#CÀJÑ#OÔ#OÑPÔPÐPØÔ×"Ò"ð #
ð #
ð #
ð #
ØÔ/ð#
ñ #
ô #
ñ 	
ô 	
ð 	
ð Ôð 	MÝ�HŠHÐ3°TÔ5HÑIÔIÐIØ”<Ô5ð MØ×7Ò7¸Ô8KÑLÔLÐLàÔ+×0Ò0Ñ2Ô2ˆŒå #¡¤ˆÔØ�Tˆ>ˆ>˜V t˜^˜^ÝÐ=Ñ>Ô>ð <ð <Ý-¨d°DÑ9Ô9Ð9Ø”×/Ò/°
Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ ' t¤{Ñ3Ô3ˆÔØÔ ð 	ØCÐC¨TÔ-BÐCÑCÔCˆGÝ�HŠHÐ@À'ÑJÔJÐJØ”<Ô7ð CØ×9Ò9¸'ÑBÔBÐBØàŒ<Ô$ð 	4Ø˜ˆ~ˆ~ ¨4  Ø”—’ × 1Ò 1°!Ñ 4Ô 4Ñ5Ô5Ð5Ý—’Ð/Ñ0Ô0Ð0Ð0à”—’ 	Ñ*Ô*Ð*Ý—’Ð2Ñ3Ô3Ð3ØŒ<Ô*ð 	>Ø˜ˆ~ˆ~ ¨4  Ý�s 1¥c¨$×*<Ò*<Ñ*>Ô*>Ñ&?Ô&?Ñ@Ô@ÑAÔAð :ð :�AØ”K—O’O D×$5Ò$5°aÑ$8Ô$8Ñ9Ô9Ð9Ð9Ý—’Ð<Ñ=Ô=Ð=å&/°´Ñ&<Ô&<ˆÔ#Ø�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔàŒ<Ô&ð 	3¨6°T¨>¨>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔà%ð 	Oñ 	OˆEØ˜ˆ}ˆ}ÝÐ7¸%Ñ?Ñ@Ô@ð 7ð 7Ý—H’HØHØÝ˜DœKÑ(Ô(ñô ð õ
 —J’J˜tœ{°�JÑ6Ô6Ð6Ø˜”K×.Ò.¨tÑ4Ô4Ð4Ø”K×3Ò3°JÑ?Ô?Ð?Ý—H’HØFØÝ˜DœKÑ(Ô(ñô ð õ
 —J’J˜tœ{°�JÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ �DÐ5 E§K¢K¡M¤MÐ5Ð5Ð5µyÀÄÑ7MÔ7MÑNÔNÐNÑNà�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ ' t¤{Ñ3Ô3ˆÔà%ð 	3ñ 	3ˆEØ˜DÐ Ð ØÝÐ3°eÑ;Ñ<Ô<ð 3ð 3Ý—’ØDØÝ˜œÑ$Ô$ñô ð õ
 —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�U”×*Ò*¨4Ñ0Ô0Ð0Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØBØÝ˜œÑ$Ô$ñô ð õ
 —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ùõ ' t¤{Ñ3Ô3ˆÔà�Tˆ>ˆ>ÝÐ5Ñ6Ô6ð 
3ð 
3Ý—’ØFÍÈDÌKÑHXÔHXñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2Ø�V”×+Ò+¨DÑ1Ô1Ð1Ø”×/Ò/°
Ñ;Ô;Ð;Ý—’ØDÅcÈ$Ì+ÑFVÔFVñô ð õ —
’
˜4œ;¨T�
Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3õ & d¤kÑ2Ô2ˆÔå(¨¬Ñ5Ô5ˆÔà×'Ò'Ñ)Ô)ˆØ#NÐ#NÐ#NÐ#N¸Ô9MÐ#NÑ#NÔ#NˆÔ å#& tÔ'?×'FÒ'FÑ'HÔ'HÑ#IÔ#IˆÔ Ø#'×#5Ò#5Ñ#7Ô#7¸Ô8PÔ#QˆÔ å'™kœkˆÔØŒ<Ô#ð 	ð#ð #ð #ð #ð #à# dÔ&:Ñ:ð#ñ #ô #ˆDÔð 'QÐ&PÐ&PÐ&P¸DÔ<OÐ&PÑ&PÔ&PˆÔ#àŒ|Ô'ð 	ØSÐSÐSÐS¨+ÐSÑSÔSˆOˆOðð ð ð ð Ø&ðñ ô ˆOð  /ˆÔð 
ð  
ð  
ð  
ð  
Ý27½¸OÑ8LÔ8LÑ2MÔ2Mð 
ñ  
ô  
ˆÔõ 	�ŠÐ&­¨DÔ,@Ñ(AÔ(AÑBÔBÐBàˆKˆKˆKs„   Æ$+GÇGÇ"GÎ*CRÒRÒRÓCV)Ö)V-Ö0V-×(C[Û[	Û[	Ü!C_?ß?`à`à?Cdäd#	ä&d#	åCh6è6h:è=h:c                ó>  — g | _         |                      |¦  «        D �]<}t          j        |¦  «        }|                     ¦   «         | j        j        v rt                               d|¦  «         ŒSt          |d¦  «        r’t          d|z  ¦  «        5  ||         }| j        | _        |                     | ¦  «        }| `d d d ¦  «         n# 1 swxY w Y   |st                               d|¦  «         ||= ŒÙt                               d|¦  «         Œõ| j        j        rt                               d|¦  «         �Œt                               d|¦  «         ||= �Œ>t          d¦  «        5  |                     | j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nz%s subsetting not neededrw   zsubset '%s'z%s subsetted to empty; droppedz%s subsettedz'%s NOT subset; don't know how to subsetz0%s NOT subset; don't know how to subset; droppedzsubset GlyphOrder)r  rŸ  r   rÁ  r   rË   rK  r¡  r$   r³  r¢  r·  r(   rw   rL  ÚwarningÚsetGlyphOrderr»  r£  s         r!   Ú_subset_glyphszSubsetter._subset_glyphs†  s  € Ø ˆÔØ×$Ò$ TÑ*Ô*ð 	ñ 	ˆCÝÔ'¨Ñ,Ô,ˆEà�yŠy‰{Œ{˜dœlÔ;Ð;Ð;Ý—’Ð3°SÑ9Ô9Ð9Ð9Ý˜ Ñ0Ô0ð Ý˜=¨3Ñ.Ñ/Ô/ð $ð $Ø  œI�EØ"&Ô"6�D”KØ"×0Ò0°Ñ6Ô6�FØ˜ð	$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð
 ð 2Ý—H’HÐ=¸sÑCÔCÐCØ˜S˜	˜	å—H’H˜^¨SÑ1Ô1Ð1Ð1Ø”Ô0ð Ý—’ÐBÀCÑHÔHÐHÑHå—’ÐNÐPSÑTÔTÐTØ˜�I‘IåÐ&Ñ'Ô'ð 	5ð 	5Ø×Ò˜tÔ3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s$   Â,C
Ã
C	ÃC	Å*FÆFÆFc                óP  — |                      ¦   «         }d|v r*|                     d¦  «         |                     d¦  «         |D �]_}|dk    rŒ
|dk    �r | j        j        rf||                              ¦   «         }||                              |d¬¦  «        }||k    r)t                               d|t          |¦  «        ¦  «         | j        j
        rw||         j        dk    rf||                              ¦   «         }||                              |d¬¦  «        }||k    r)t                               d|t          |¦  «        ¦  «         | j        j        rJ||         j        }||                              |¦  «        }	||	k    rt                               d	||	¦  «         | j        j        rIt%          |¦  «        }
|
||         j        k    r)|
||         _        t                               d
||
¦  «         t)          j        |¦  «        }t-          |d¦  «        rŠt/          d|z  ¦  «        5  ||         }|                     || j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |s t                               d|¦  «         ||= �ŒDt                               d|¦  «         �Œad S )Nrº   Ú
GlyphOrderrî  T)Ú	pruneOnlyz%s Unicode ranges pruned: %srœ   z%s CodePage ranges pruned: %sz%s xAvgCharWidth updated: %dz%s usMaxContext updated: %drÌ   rœ  r�  rž  )rp  rñ  rd  rË   rW  ÚgetUnicodeRangesÚrecalcUnicodeRangesr¡  r$   r%   rX  rŸ  ÚgetCodePageRangesÚrecalcCodePageRangesrY  ÚxAvgCharWidthÚrecalcAvgCharWidthrZ  r
   ÚusMaxContextr   rÁ  r³  r¢  rÌ   )r'   r)   Ú	tableTagsrØ  Úold_unirangesÚnew_unirangesÚold_codepagesÚnew_codepagesÚold_avg_widthÚnew_avg_widthÚmax_contextr¤  rÊ  r¥  s                 r!   Ú_prune_post_subsetzSubsetter._prune_post_subset¡  s  € Ø—I’I‘K”Kˆ	ð �YÐÐØ×Ò˜VÑ$Ô$Ð$Ø×Ò˜VÑ$Ô$Ð$Øð )	/ñ )	/ˆCØ�lÒ"Ð"ØØ�fŠ}‰}Ø”<Ô4ð Ø$(¨¤I×$>Ò$>Ñ$@Ô$@�MØ$(¨¤I×$AÒ$AÀ$ÐRVÐ$AÑ$WÔ$W�MØ$¨Ò5Ð5ÝŸšØ:¸CÅÈÑAVÔAVñô ð ð ”<Ô5ð 
¸$¸s¼)Ô:KÈqÒ:PÐ:Pð %)¨¤I×$?Ò$?Ñ$AÔ$A�MØ$(¨¤I×$BÒ$BÀ4ÐSWÐ$BÑ$XÔ$X�MØ$¨Ò5Ð5ÝŸšØ;ØÝ" =Ñ1Ô1ñô ð ð
 ”<Ô4ð UØ$(¨¤IÔ$;�MØ$(¨¤I×$@Ò$@ÀÑ$FÔ$F�MØ$¨Ò5Ð5ÝŸšÐ!?ÀÀmÑTÔTÐTØ”<Ô2ð RÝ",¨TÑ"2Ô"2�KØ" d¨3¤iÔ&<Ò<Ð<Ø1<˜˜Sœ	Ô.ÝŸšÐ!>ÀÀ[ÑQÔQÐQÝÔ'¨Ñ,Ô,ˆEÝ�uÐ1Ñ2Ô2ð /Ý˜<¨#Ñ-Ñ.Ô.ð Ið IØ  œI�EØ"×4Ò4°T¸4¼<ÑHÔH�FðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið ð /Ý—H’HÐ:¸CÑ@Ô@Ð@Ø˜S˜	™	å—H’H˜[¨#Ñ.Ô.Ð.ùðS)	/ð )	/s   È,$IÉI 	É#I 	c                ó¢   ‡— g d¢Šd„ t          ‰¦  «        D ¦   «         Št          |                     ¦   «         ˆfd„¬¦  «        }d„ |D ¦   «         S )N)
rø  r½  r·  r¶  ræ  rK  ÚGVARrº   r  r­  c                ó    — i | ]\  }}||d z   “ŒS )rœ   r   )r   r3   r!  s      r!   r/   z*Subsetter._sort_tables.<locals>.<dictcomp>á  s"   € Ð=Ð=Ð=¡  A�A�q˜1‘uÐ=Ð=Ð=r#   c                ó0   •— ‰                      | d¦  «        S rŠ  )r  )rØ  ÚtagOrders    €r!   rW  z(Subsetter._sort_tables.<locals>.<lambda>â  s   ø€ °8·<²<ÀÀQÑ3GÔ3G€ r#   )r
  c                ó   — g | ]
}|d k    ¯|‘ŒS )rÎ  r   r   s     r!   r6   z*Subsetter._sort_tables.<locals>.<listcomp>ã  s"   € Ð5Ð5Ð5�a 1¨Ò#4Ð#4�Ð#4Ð#4Ð#4r#   )r=   r%   rp  )r'   r)   r×  rä  s      @r!   rŸ  zSubsetter._sort_tablesÔ  si   ø€ ð
ð 
ð 
ˆð >Ð=­°8Ñ)<Ô)<Ð=Ñ=Ô=ˆÝ�d—i’i‘k”kÐ'GÐ'GÐ'GÐ'GÐHÑHÔHˆØ5Ð5˜4Ð5Ñ5Ô5Ð5r#   c                óþ   — t          |¦  «        5  |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )r	   r¦  rÈ  rÌ  rß  )r'   r)   s     r!   rH   zSubsetter.subsetå  sÄ   € Ý# DÑ)Ô)ð 	*ð 	*Ø×"Ò" 4Ñ(Ô(Ð(Ø× Ò  Ñ&Ô&Ð&Ø×Ò Ñ%Ô%Ð%Ø×#Ò# DÑ)Ô)Ð)ð		*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   �AA2Á2A6Á9A6r   )rž  r®  r¯  r€  r‡  rŠ  r�  r­  rš  r¦  rÈ  rÌ  rß  rŸ  rH   r   r#   r!   r„  r„  —  s$  € € € € € ðð ð ð ð ˜)ñ ô ð ðð ð ð ð  ñ ô ð ðð ð ð ð ¨ñ ô ð ð)ð )ð )ð )ð ! r°B¸Rð 	.ð 	.ð 	.ð 	.ð/ð /ð /ð8sð sð sðj5ð 5ð 5ð61/ð 1/ð 1/ðf6ð 6ð 6ð"*ð *ð *ð *ð *r#   r„  z	load fontc                óì   — t          j        | ||j        |j        ||j        ¬¦  «        }|rHt          j        d¦  «        }|j        }|j        |_        |d         }|j        dk    rd|_        ||_        |S )N)ÚcheckChecksumsÚrecalcBBoxesÚrecalcTimestamprf  Ú
fontNumberr  g       @r�  )	r   ÚTTFontrU  rV  rd  rÁ  Údecode_format_2_0Údecode_format_3_0rƒ  )	ÚfontFilerË   rè  ÚdontLoadGlyphNamesrf  r)   r  Úsavedr?  s	            r!   Ú	load_fontrò  í  sŠ   € åŒ<ØØ%ØÔ*ØÔ0ØØÔ&ðñ ô €Dð$ ð 'ÝÔ" 6Ñ*Ô*ˆØÔ&ˆØ!%Ô!7ˆÔØ�ŒLˆØŒ<˜3ÒÐØˆAŒLØ!&ˆÔà€Kr#   c                ó¨   — t          | t          ¦  «        r |                      ¦   «         }|dv rdS |dv r|S t                               d| ›d�¦  «        ‚)zyMap an explicit --flavor value to TTFont.flavor.

    Empty string and 'none' (any case) mean uncompressed OpenType.
    )rR  ÚnoneN)ÚwoffÚwoff2zInvalid --flavor z! (use 'woff', 'woff2', or 'none'))r6  ru  rÂ  rÕ  rÙ  )r\  r
  s     r!   Ú_normalize_output_flavorr÷    si   € õ
 �&�#ÑÔð Ø�lŠl‰nŒnˆØ�,ÐÐØ�4ØÐ#Ð#Ð#ØˆJÝ
×
Ò
Ð
ØBHÀ&À&ÐJñô ð r#   c                ó    — | j         dk    rdndS )NÚOTTOz.otfz.ttf)ÚsfntVersionr®  s    r!   Ú_sfnt_extensionrû    s   € ØÔ%¨Ò/Ð/ˆ6ˆ6°VÐ;r#   zcompile and save fontc                ó¼   — |j         r|j        dk    rddlm} d|_        |j        | _        |j        | j        t          <   |                      ||j	        ¬¦  «         d S )Nrõ  r   )ÚsfntT)ÚreorderTables)
r]  r\  ÚfontTools.ttLibrý  Ú
USE_ZOPFLIr`  Úcfgr   Úsaver[  )r)   ÚoutfilerË   rý  s       r!   Ú	save_fontr  !  sj   € àÔð ˜wœ~°Ò7Ð7Ø(Ð(Ð(Ð(Ð(Ð(àˆŒØ”.€D„KØ&-Ô&?€D„HÕ"Ñ#Ø‡I‚Iˆg WÔ%<€IÑ=Ô=Ð=Ð=Ð=r#   c           
     óÂ  — dd l }|                     dd| ¦  «        } |                     dd| ¦  «        } g }|                      ¦   «         D ]•}|                     d¦  «        }t          |¦  «        dk    r$|                     t          |d¦  «        ¦  «         ŒN|\  }}|                     t          t          |d¦  «        t          |d¦  «        dz   ¦  «        ¦  «         Œ–|S )Nr   z0[xX]ro  z[<+>,;&#\\xXuU\n	]rm  rœ   r  )Úrer~   rÔ  r8   rd  rÉ   r.  rÏ  )ro   r  r5   ÚitemÚfieldsÚstartÚends          r!   Úparse_unicodesr  ,  sÑ   € Ø€I€I€Ià
�Šˆx˜˜aÑ Ô €AØ
�ŠÐ$ c¨1Ñ-Ô-€AØ
€AØ—’‘	”	ð >ð >ˆØ—’˜C‘”ˆÝˆv‰;Œ;˜!ÒÐØ�HŠH•S˜˜r‘]”]Ñ#Ô#Ð#Ð#à‰JˆE�3Ø�HŠH•U�3˜u b™>œ>­3¨s°B©<¬<¸!Ñ+;Ñ<Ô<Ñ=Ô=Ð=Ð=Ø€Hr#   c           
     óš  — g }|                       dd¦  «                             ¦   «         D ]Ÿ}|                     d¦  «        }t          |¦  «        dk    r)|                     t	          |d         ¦  «        ¦  «         ŒS|                     t          t	          |d         ¦  «        t	          |d         ¦  «        dz   ¦  «        ¦  «         Œ |S )Nrn  ro  rm  rœ   r   )rs  rÔ  r8   rd  rÉ   r.  rÏ  )ro   r5   r  r  s       r!   Ú
parse_gidsr  <  s®   € Ø
€AØ—	’	˜#˜sÑ#Ô#×)Ò)Ñ+Ô+ð @ð @ˆØ—’˜C‘”ˆÝˆv‰;Œ;˜!ÒÐØ�HŠH•S˜ œ‘^”^Ñ$Ô$Ð$Ð$à�HŠH•U�3˜v aœy™>œ>­3¨v°a¬y©>¬>¸AÑ+=Ñ>Ô>Ñ?Ô?Ð?Ð?Ø€Hr#   c                óR   — |                       dd¦  «                             ¦   «         S )Nrn  ro  )rs  rÔ  )ro   s    r!   Úparse_glyphsr  G  s"   € Ø�9Š9�S˜#ÑÔ×$Ò$Ñ&Ô&Ð&r#   c                 ó~   — t          dt          t          j        ¬¦  «         t          dt          j        ¬¦  «         d S )Nzusage:©Úfilez2Try fonttools subset --help for more information.
)rt  Ú	__usage__ÚsysÚstderrr   r#   r!   Úusager  K  s5   € Ý	ˆ(•I¥C¤JÐ/Ñ/Ô/Ð/Ý	Ð
?ÅcÄjÐQÑQÔQÐQÐQÐQr#   z%make one with everything (TOTAL TIME)c           
     ó  — ddl m} ddlm} | €t          j        dd…         } d| v rt          t          ¦  «         dS t          ¦   «         }	 | 	                    | g d¢¬¦  «        } nB# |j
        $ r5}t          ¦   «          t          d	|t          j        ¬
¦  «         Y d}~dS d}~ww xY wt          | ¦  «        dk     rt          ¦   «          dS  ||j        rt          j        nt          j        ¬¦  «         |j        r*t&          j                             t          j        ¦  «         ndt&          j        _        | d         }| dd…         } t1          |¬¦  «        }d}g }g }	g }
d}d}d}| D �]†}|dk    rd}Œ|                     d¦  «        r|dd…         }Œ,|                     d¦  «        r||dd…         z  }ŒO|                     d¦  «        r]t5          |dd…         d¬¦  «        5 }||                     ¦   «                              dd¦  «        z  }ddd¦  «         n# 1 swxY w Y   ŒÁ|                     d¦  «        r=|dd…         dk    rd}n*|
                     t=          |dd…         ¦  «        ¦  «         �Œ|                     d¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|
                     t=          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œ¬|                     d ¦  «        r,|	                     tC          |dd…         ¦  «        ¦  «         �Œí|                     d!¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|	                     tC          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œ†|                     d"¦  «        r=|d#d…         dk    rd}n*|                     tE          |d#d…         ¦  «        ¦  «         �ŒØ|                     d$¦  «        r„t5          |dd…         ¦  «        5 }|                     ¦   «         D ]=}|                     tE          |                      d¦  «        d         ¦  «        ¦  «         Œ>	 ddd¦  «         n# 1 swxY w Y   �Œq| #                    |¦  «         �Œˆ|j$         o| }|j%        }tM          ||||¬%¦  «        }|j'        }|€|j'        |_'        n]	 tQ          |¦  «        |_'        nG# t          j
        $ r5}t          ¦   «          t          d	|t          j        ¬
¦  «         Y d}~dS d}~ww xY w|€4|j'        �d&|j'        z   }ntS          |¦  «        }tU          ||dd'¬(¦  «        }t'          d)¦  «        5  |r'|                     | +                    ¦   «         ¦  «         |r�d*D ]Œ}||vrŒ||         j,        D ]w}| -                    ¦   «         ra|
                     |j.         /                    ¦   «         ¦  «         |j0        d+v r,|
                     |j1         /                    ¦   «         ¦  «         ŒxŒ�d|vsJ ‚	 ddd¦  «         n# 1 swxY w Y   td           3                    d,|z  ¦  «         td           3                    d-|
¦  «         td           3                    d.|¦  «         td           3                    d/|	¦  «         | 4                    ||	|
|¬0¦  «         | 5                    |¦  «         tm          |||¦  «         |j        rrddl7}td           3                    d1|j8         9                    |¦  «        |fz  ¦  «         td           3                    d2|j8         9                    |¦  «        |fz  ¦  «         |j:        r| ;                    t          j<        ¦  «         | =                    ¦   «          dS )3z%OpenType font subsetter and optimizerr   )Úsplitext)ÚconfigLoggerNrœ   z--help)	r•  z	gids-filer(   zglyphs-filer—  z	text-filer–  zunicodes-filezoutput-file)rw  zERROR:r  r­   )ÚlevelT)rË   FrR  r   z--output-file=rD  z--text=é   z--text-file=rz  z	utf-8-sig)Úencodingú
z--unicodes=é   z--unicodes-file=r  ú#z--gids=z--gids-file=z	--glyphs=é	   z--glyphs-file=)rð  rf  rÌ  z.subset)Ú	extensionÚ	overWriteÚsuffixzcompile glyph list)rR  rO  rC  z
Text: '%s'zUnicodes: %sz
Glyphs: %szGids: %s)r(   r•  r–  r—  zInput font:% 7d bytes: %szSubset font:% 7d bytes: %s)>Úos.pathr  Ú	fontToolsr  r  rv  rt  Ú__doc__rÕ  r  rÙ  r  r  r8   ra  ÚloggingÚINFOÚWARNINGrb  r¢  r+   ÚsetLevelÚDEBUGÚdisabledr„  r   ÚopenÚreadrs  r.  r  Ú	readlinesrÔ  r  r  rd  r‚  rf  rò  r\  r÷  rû  r   r¼  rT  rB  rR  rp  rU  rV  r¡  r$   rš  rH   r  ÚosÚpathÚgetsizerc  ÚsaveXMLÚstdoutÚclose)Úargsr  r  rË   ÚeÚfontfileÚ	subsetterr  r(   r•  r–  Úwildcard_glyphsÚwildcard_unicodesr—  r   r?  Úlinerð  rf  r)   Úrequested_flavorÚextrØ  r!  r0  s                            r!   Úmainr?  P  sœ	  € ð !Ð Ð Ð Ð Ð Ø&Ð&Ð&Ð&Ð&Ð&à€|ÝŒx˜˜˜Œ|ˆà�4ÐÐÝ�g‰ŒˆØˆqå‰iŒi€GðØ×!Ò!Øð
ð 
ð 
ð "ñ 
ô 
ˆˆøð Ôð ð ð Ý‰ŒˆÝˆh˜¥¤
Ð+Ñ+Ô+Ð+Øˆqˆqˆqˆqˆqøøøøðøøøõ
 ˆ4�y„y�1‚}€}Ý‰ŒˆØˆqà€L w¤ÐK•w”|�|½G¼OÐLÑLÔLÐLØ„~ð %ÝŒ×Ò�gœmÑ,Ô,Ð,Ð,à $�ŒÔà�AŒw€HØ���Œ8€Då 'Ð*Ñ*Ô*€IØ€GØ€FØ€DØ€HØ€OØÐØ€DØð ,ñ ,ˆØ�Š8ˆ8Ø"ˆOØØ�<Š<Ð(Ñ)Ô)ð 	Ø˜˜˜”fˆGØØ�<Š<˜	Ñ"Ô"ð 	Ø�A�a�b�b”E‰MˆDØØ�<Š<˜Ñ'Ô'ð 	Ý�a˜˜˜”f {Ð3Ñ3Ô3ð 3°qØ˜Ÿš™œ×(Ò(¨¨rÑ2Ô2Ñ2�ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3àØ�<Š<˜Ñ&Ô&ð 	Ø���Œv˜Š}ˆ}Ø$(Ð!Ð!à—’¥¨q°°°¬vÑ 6Ô 6Ñ7Ô7Ð7ÙØ�<Š<Ð*Ñ+Ô+ð 	Ý�a˜˜˜”f‘”ð H ØŸKšK™MœMð Hð H�DØ—O’O¥N°4·:²:¸c±?´?À1Ô3EÑ$FÔ$FÑGÔGÐGÐGðHðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hñ Ø�<Š<˜	Ñ"Ô"ð 	Ø�KŠK�
 1 Q R R¤5Ñ)Ô)Ñ*Ô*Ð*ÙØ�<Š<˜Ñ'Ô'ð 	Ý�a˜˜˜”f‘”ð @ ØŸKšK™MœMð @ð @�DØ—K’K¥
¨4¯:ª:°c©?¬?¸1Ô+=Ñ >Ô >Ñ?Ô?Ð?Ð?ð@ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ñ Ø�<Š<˜Ñ$Ô$ð 	Ø���Œu˜Š|ˆ|Ø"&��à—’�l¨1¨Q¨R¨R¬5Ñ1Ô1Ñ2Ô2Ð2ÙØ�<Š<Ð(Ñ)Ô)ð 	Ý�a˜˜˜”f‘”ð D ØŸKšK™MœMð Dð D�DØ—M’M¥,¨t¯zªz¸#©¬¸qÔ/AÑ"BÔ"BÑCÔCÐCÐCðDðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dñ Ø�Š�aÑÔÐÑà$Ô0Ð0Ð?¸°ZÐØŒ<€DÝØ�'Ð.@Àtðñ ô €Dð ”~ÐØÐØœˆŒˆð	Ý5Ð6FÑGÔGˆGŒNˆNøÝÔ"ð 	ð 	ð 	Ý‰GŒGˆGÝ�(˜A¥C¤JÐ/Ñ/Ô/Ð/Ø�1�1�1�1�1øøøøð	øøøð
 €ØŒ>Ð%Ø˜œÑ&ˆCˆCå! $Ñ'Ô'ˆCÝ$Ø ¨t¸Ið
ñ 
ô 
ˆõ 
Ð#Ñ	$Ô	$ð  ð  Øð 	0Ø�MŠM˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øð 	>Ø'ð >ð >�Ø˜d�?�?ØØ˜cœÔ)ð >ð >�AØ—{’{‘}”}ð >Ø Ÿš¨¬¯ª©¬Ñ6Ô6Ð6Øœ8 xÐ/Ð/Ø$ŸOšO¨A¬I¯NªNÑ,<Ô,<Ñ=Ô=Ð=øð	>ð
 ˜ÐÐÐÐÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  õ ‡H‚Hˆ\˜DÑ Ñ!Ô!Ð!Ý‡H‚Hˆ^˜XÑ&Ô&Ð&Ý‡H‚Hˆ\˜6Ñ"Ô"Ð"Ý‡H‚HˆZ˜ÑÔÐà×Ò˜f¨4¸(ÈÐÑNÔNÐNØ×Ò�TÑÔÐåˆd�G˜WÑ%Ô%Ð%à„ð UØˆ	ˆ	ˆ	å�ŠÐ,°´·²ÀÑ0IÔ0IÈ8Ð/TÑTÑUÔUÐUÝ�ŠÐ-°´·²ÀÑ1IÔ1IÈ7Ð0SÑSÑTÔTÐTà„{ð !Ø�Š•S”ZÑ Ô Ð à‡J‚J�L„L€L€L€LsŽ   ÁA& Á&
B%Á0*B Â B%Ç%,HÈH!	È$H!	Ê'ALÌL	ÌL	ÎAO!Ï!O%	Ï(O%	Ñ,ASÓS	ÓS	Ô,U ÕVÕ*V Ö V×CZÚZÚ"Z)rÕ  r„  rò  r  r  r  r  r?  r   )FT)F)T)r   r   )r)   r±  r°  r²  r³  r´  )r   FT)‘Ú
__future__r   r%  r   ÚfontTools.misc.roundToolsr   r   ÚfontTools.ttLib.tablesr   ÚfontTools.ttLib.tables.otBaser   ÚfontTools.ttLib.beyond64kr	   ÚfontTools.otlLib.maxContextCalcr
   ÚfontTools.pens.basePenr   ÚfontTools.misc.loggingToolsr   ÚfontTools.misc.cliToolsr   ÚfontTools.subset.utilr   r   ÚfontTools.subset.cffÚfontTools.subset.svgÚfontTools.varLibr   r   ÚfontTools.ttLib.tables._n_a_m_er   r   ÚfontTools.unicodedatar   r  r  Úarrayr'  Úcollectionsr   r   Ú	functoolsr   Útypesr   r  r&  Ú	getLoggerr¡  r*   r(   r¢  r0   r:   r¢   r?   rD   rH   rN   rz  r]   ÚSingleSubstrp   rw   ÚMultipleSubstÚAlternateSubstÚLigatureSubstÚReverseChainSingleSubstÚDevicer±   ÚValueRecordr»   Ú	SinglePosrÌ   ÚPairPosÚ
CursivePosÚAnchorÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosrB  rD  ÚContextSubstÚChainContextSubstÚ
ContextPosÚChainContextPosrH  r¶  ÚExtensionSubstÚExtensionPosrÌ  rË  r*  r1  r=  r»  rG  r`  rW  rc  r¹  rr  rŠ  r‰  r†  r–  rº  rÁ  rÂ  rÆ  rÊ  rÛ  rÝ  rï  ró  r  r\  r™  ÚMathGlyphConstructionrù  r  r  r  r  r3  r“  r&  r>  r_  rj  rª  r«  r²  rÕ  r„  rò  r÷  rû  r  r  r  r  r  r?  Ú__all__r   r#   r!   ú<module>rj     s¨   ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø *Ð *Ð *Ð *Ð *Ð *Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ *Ð *Ð *Ð *Ð *Ð *Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àG€	ðð ñðWñeð ðT €gÔÐ*Ñ+Ô+€ðQð Qð Qð Qð ˆZ˜ SÑ)Ô)€„
ð 	ˆÐ&�WÔ&Ð'?Ñ@Ô@ÐAÑAÔA€ð%ð %ð %ð0ð 0ð 0ð
 €ˆXÔÑÔðAð Añ  ÔðAð
 €ˆXÔÑÔð6ð 6ñ  Ôð6ð
 €ˆXÔÑÔðð ñ  Ôðð €ˆXÔÑÔð9ð 9ñ  Ôð9ð
 €ˆXÔÑÔðð ñ  Ôðð €ˆXÔÑÔðSð Sñ  ÔðSð €ˆXÔÑÔðð ð ñ  Ôðð& €ˆXÔÑÔðPð Pñ  ÔðPð
 €ˆXÔ!Ñ"Ô"ðKð Kñ #Ô"ðKð €ˆXÔ!Ñ"Ô"ðð ñ #Ô"ðð €ˆXÔ#Ñ$Ô$ð#ð #ñ %Ô$ð#ð €ˆXÔ#Ñ$Ô$ðð ñ %Ô$ðð €ˆXÔ$Ñ%Ô%ðYð Yñ &Ô%ðYð €ˆXÔ$Ñ%Ô%ð!ð !ñ &Ô%ð!ð €ˆXÔ#Ñ$Ô$ðð ñ %Ô$ðð €ˆXÔ#Ñ$Ô$ð ð  ñ %Ô$ð ð €ˆXÔ-Ñ.Ô.ð
5ð 
5ñ /Ô.ð
5ð €ˆXÔ-Ñ.Ô.ð5ð 5ñ /Ô.ð5ð( €ˆXŒ_ÑÔð)ð )ñ Ôð)ð €ˆXÔ!Ñ"Ô"ð ð  ñ #Ô"ð ð €ˆXÔÑ Ô ð5ð 5ñ !Ô ð5ð €ˆXÔÑ Ô ðð ñ !Ô ðð> €ˆXÔÑÔð*5ð *5ñ Ôð*5ðZ €ˆXÔÑÔð7ð 7ñ Ôð7ð( €ˆXÔ Ñ!Ô!ð	5ð 	5ñ "Ô!ð	5ð €ˆXŒ_ÑÔð	ð 	ñ Ôð	ð €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ!Ñ"Ô"ð$5ð $5ñ #Ô"ð$5ðN €ˆXÔ!Ñ"Ô"ð	ð 	ñ #Ô"ð	ð €ˆXÔ Ñ!Ô!ð.5ð .5ñ "Ô!ð.5ðb €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ!Ñ"Ô"ð$5ð $5ñ #Ô"ð$5ðN €ˆXÔ!Ñ"Ô"ð	ð 	ñ #Ô"ð	ð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔØÔØÔñô ð	ð 	ñô ð	ð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔØÔØÔñô ðð ñô ðð €ØÔØÔØÔØÔØÔ$ØÔØÔØÔØÔñ
ô 
ðð ñ
ô 
ðð €ØÔ˜(Ô1°8Ô3Sñô ðð ñô ðð €ØÔØÔØÔØÔñ	ô ðð ñô ðð €ØÔØÔØÔØÔñ	ô ðW?ð W?ñô ðW?ðt €ˆXÔ" HÔ$>Ñ?Ô?ðl5ð l5ñ @Ô?ðl5ð^ €ØÔØÔØÔØÔñ	ô ðW5ð W5ñô ðW5ðt €ØÔØÔØÔØÔñ	ô ð&5ð &5ñô ð&5ðR €ØÔØÔØÔØÔñ	ô ð5ð 5ñô ð5ð& €ˆXÔ$Ñ%Ô%ð5ð 5ñ &Ô%ð5ð €ˆXÔ$Ñ%Ô%ð5ð 5ñ &Ô%ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXÔ$ hÔ&;Ñ<Ô<ð5ð 5ñ =Ô<ð5ð €ˆXŒ_ÑÔð)ð )ð )ñ Ôð)ð( €ˆXŒ_ÑÔð
$ð 
$ñ Ôð
$ð €ˆXŒ_ÑÔðð ñ Ôðð €ˆXŒ_ÑÔð)ð )ñ Ôð)ð
 €ˆXŒ_ÑÔðIð Iñ ÔðIð €ˆXŒ_ÑÔðEð Eñ ÔðEð €ˆXÔ Ñ!Ô!ðNð Nñ "Ô!ðNð
 €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ Ñ!Ô!ð)ð )ñ "Ô!ð)ð €ˆXÔ Ñ!Ô!ðð ñ "Ô!ðð €ˆXÔ Ñ!Ô!ð"ð "ñ "Ô!ð"ð* €ˆXÔÑÔðð ñ Ôðð €ˆXÔ!Ñ"Ô"ð
ð 
ñ #Ô"ð
ð €ˆXÔ!Ñ"Ô"ðð ñ #Ô"ðð €ˆXÔ!Ñ"Ô"ð#ð #ñ #Ô"ð#ð €ˆXÔ.Ñ/Ô/ðð ñ 0Ô/ðð €ˆXÔ%Ñ&Ô&ð"ð "ñ 'Ô&ð"ð €ˆXÔ)Ñ*Ô*ð,ð ,ñ +Ô*ð,ð €ˆXÔ)Ñ*Ô*ðð ñ +Ô*ðð €ˆXÔ'Ñ(Ô(ðð ñ )Ô(ðð  €ˆXÔ'Ñ(Ô(ðð ñ )Ô(ðð( €ˆXÔ.Ñ/Ô/ð	(ð 	(ñ 0Ô/ð	(ð €ˆXÔ.Ñ/Ô/ð	(ð 	(ñ 0Ô/ð	(ð €ˆXÔ'Ñ(Ô(ðXð Xñ )Ô(ðXð< €ˆXÔ'Ñ(Ô(ðXð Xñ )Ô(ðXð: €ˆXÔ$ hÔ&6Ñ7Ô7ðDð Dñ 8Ô7ðDð €ˆXÔ$ hÔ&6Ñ7Ô7ðDð Dñ 8Ô7ðDð €ˆXÔ$ hÔ&6Ñ7Ô7ð'ð 'ñ 8Ô7ð'ð €ˆXŒ_ÑÔð:ð :ð :ñ Ôð:ð €ˆXŒ_ÑÔð:ð :ð :ñ Ôð:ð €ˆXŒ_ÑÔð0ð 0ñ Ôð0ð €ˆXÔ Ñ!Ô!ð	"ð 	"ñ "Ô!ð	"ð €ˆXÔ Ñ!Ô!ð	"ð 	"ñ "Ô!ð	"ð €ˆXÔ Ñ!Ô!ðYð Yñ "Ô!ðYð
 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð: €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFðð ñ GÔFðð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð9ð 9ñ GÔFð9ð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð, €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð=ð =ñ GÔFð=ð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð,ð ,ð ,ñ GÔFð,ð. €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð$ €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð8ð 8ñ GÔFð8ð4 €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð
ð 
ñ GÔFð
ð( €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð73ð 73ñ GÔFð73ðt €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFðð ñ GÔFðð €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð2ð 2ñ GÔFð2ð> €Ð ˆUÔ  Ñ(Ô(Ð*=¨%Ô*=¸fÑ*EÔ*EÑFÔFð/ð /ñ GÔFð/ðd €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ððD!Ið !Ið !IðH €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ððD €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð	!ð 	!ñ *Ô)ð	!ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð*ð *ñ *Ô)ð*ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð& €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð@ð @ñ *Ô)ð@ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ðð ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ðJ €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð'ð 'ñ *Ô)ð'ðT €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð@ð @ñ *Ô)ð@ð( €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð
 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð?ð ?ñ *Ô)ð?ð,ð ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð: €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð0ð 0ñ *Ô)ð0ðf €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð9(ð 9(ñ *Ô)ð9(ðx €ˆXÔ+Ñ,Ô,ðð ñ -Ô,ðð €ˆXÔ"Ñ#Ô#ðð ñ $Ô#ðð" €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðAð Añ *Ô)ðAð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð"ð "ñ *Ô)ð"ð8 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð3ð 3ñ *Ô)ð3ðl €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð2ð 2ñ *Ô)ð2ð
 €ˆXÔ/Ñ0Ô0ð-ð -ñ 1Ô0ð-ð €ˆXÔ-Ñ.Ô.ð/ð /ñ /Ô.ð/ð €ˆXÔ"Ñ#Ô#ð$ð $ñ $Ô#ð$ð €ˆXÔ#Ñ$Ô$ð	ð 	ñ %Ô$ð	ð €ˆXÔ"Ñ#Ô#ðð ñ $Ô#ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð!ˆUÔ! &Ñ)Ô)Ô/Ñ0Ô0ðð ð ñ 1Ô0ðð> €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð  €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð& €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð9ð 9ð 9ð3Mð 3Mð 3Mð 3Mðl €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðKð Kñ *Ô)ðKðð ð ð6 €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
8ð 
8ñ *Ô)ð
8ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðP8ð P8ñ *Ô)ðP8ðf €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð
ð 
ñ *Ô)ð
ð 4Ð3Ð3Ð ð €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ð!ð !ñ *Ô)ð!ðHCTð CTð CTð CTðL €Ð ˆUÔ  Ñ(Ô(Ñ)Ô)ðð ñ *Ô)ðð$k*ð k*ð k*ð k*ð k*ˆfñ k*ô k*ð k*ð\S*ð S*ð S*ð S*ð S*�ñ S*ô S*ð S*ðl
 €€{ÑÔðð ð ñ Ôðð>ð ð ð <ð <ð <ð €ÐÑÔð>ð >ñ  Ôð>ðð ð ð ð ð ð'ð 'ð 'ðRð Rð Rð
 €Ð.Ñ/Ô/ð_ð _ð _ñ 0Ô/ð_ðD	ð 	ð 	€€€r#   