rust *l2#rustc 1.98.1 (48a229cea 2026-09-01)ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ‰m6GÞ­n6ÇèÆ2-64f5f36fb0927694Á«ª1Úë• ¢›ºXÝÓrŽ*-1ad4f876c768bda9Á±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5Á»ÄóG Øg{ë(3íi«F×-06449a08aaab5e30Árustc_std_workspace_coreÁ€û{ù`ä"Ei¥€ÞÏ%G-cb0d4d77988d81b5Áó"Æ)ΉÉðÛÕpEÍ—E-3ec41d3a5a80a4a4Á miniz_oxideÁÐ8°ø‚ðbž Lƨ°J-e44eaef1807e5fc0Áadler2Á9lí©yA6P/D$UBŸ-dca52f01a59c33e7Á hashbrownÁ™¸ÈXó®÷ …ùý{e-143c77bb957d9940Árustc_std_workspace_allocÁð…¨À �¶÷Üúò·_z%í-145a318e0772276cÁ std_detectÁK(ƒ0ì*ãÛ8²D?-f99feda5ce9e492aÁrustc_demangleÁµ%jŽeårVŠÕÓ•-cfd0ab54bb33760eÁcfg_ifÁÍ}λ—©ŒÕž§C•×o-360da4ba13154744Á addr2lineÁ‹c²ŽúY\ÈGÞö÷ö--09755979c57b7e64ÁgimliÁ¢±QÄÍ`ª§DÞåù¬y-9a1fede77fbbf2f0ÁobjectÁö‚F λâËvú.zËí-7ff85ea729a864ffÁmemchrÁž˜]²1<õ¶=U�ý�Où-0e3477fb2664a277Á  ÿŽ—jl‹®¾To–K™G-549498e8b2e4d924Á regex_syntaxÁ‚IÈF;êxX5òìùà§½-636256372870642bÁ aho_corasickÁYäôE�¸l¸=¿P%çÜŸ-110409be5ce6a150ÁìlnÚŠtþÌÝQ܃£#®-ec7afda4ecf07cd0Á AutomatonÁLósÓ dfa-searchÁ´´s OverlappingStateÁ„þsÓí&( StartErrorÁT�tÓíDF StartKindÁL¨tÓíac denseÁ,ÕxÓí´´x testsÁ,þúÍ$Þú regexÁ,´yÓí´“y sparseÁ4âyÓí´Áy accelÁ,™zÓí´ñy automatonÁLÃzÓí´¦z determinizeÁ\ðzÓ dfa-buildÁ¬Ôz minimizeÁDŸ{Ó� ¬ƒ{Ôà ,âCÓ� ¬ÆC searchÁ4–|Óí´ù{ specialÁ<Á|Óí´¤| ‚,í|Óí´Ð|ûStateMapÁD× Ó‰|¿ Œ¾ ûû ,¸Á Í$˜Á Ÿdfa_try_search_half_revÁ¼ÍÓ� ¬§Ÿ dfa_eoi_revÁ\û=Ó� ¬«=Ûû ,âùÍ$×ùêû ,Ý*Í$Ò*÷dfa_try_search_half_fwdÁ¼�Ó� ¬ê÷ dfa_eoi_fwdÁ\ü1Ó� ¬¬1‚û ,ìÚÍ$áÚ£ dfaÁ‰ Ó� ¬æ ² û ,¸Á Í$­Á ¯ û ,­Æ Í$¢Æ é û ,å¿ Í$Ú¿ ‰ û ,è¡ Í$Ý¡ Î û ,œ„Í$øƒÅÍ<�Óinternal-instrument-pikevmÁüä&ÅCountersÁD³ÙÓæüëØ&Êû ,Ú§Í$ϧ–û ,ˆ„Í$éƒôCaptureNameMapÁt©¢Ó‰|‘¢Œ�¢”û ,åTÍ$ÚTžlazyÁ$ºDÓ«Œ¡Dœ Džû ,Ò†Í$džØ is_word_charÁd¨èÓsyntaxÁ”ðçÓ unicode-perlÁÄ„èüïç.üëç3ØÑdûõÓunicode-word-boundaryÁüÒõ!üÑõ#Øû ,�ûÍ$öú¬innerÁ,‡ÒÓ‰|ðÑŒïѬû ,Ï’Í$Ä’£û ,�zÍ$…zôNEÁ܆·Ò¬´†ôû ,§ŒÍ$ˆŒóû ,À÷Í$µ÷Æð,© Óperf-literal-substringÁüô "üó $Ïû ,ÞµÍ$Óµå perl_wordÁLÝÓí”ËÓ€ĨüÍúüÉÿû‰«macrosÁlogÁ¨traceÁÒ DEADÁ onepassÁ                                        ! " 1˜ 1 match_kindÁ1starts_for_each_patternÁ1 byte_classesÁ1 size_limitÁ1get_match_kindÁ1get_starts_for_each_patternÁ1get_byte_classesÁ1get_size_limitÁ1 overwriteÁ <˜ <buildÁ< build_manyÁ?Œ<build_from_nfaÁ< configureÁ<í<thompsonÁ E'aÁE˜ EáEshuffle_statesÁEcompile_transitionÁJ Eadd_start_stateÁEadd_dfa_state_for_nfa_stateÁEadd_empty_stateÁN E stack_pushÁ Q˜ Qnew_manyÁSŒQ new_from_nfaÁQ always_matchÁQ never_matchÁQconfigÁQbuilderÁQcreate_capturesÁQ create_cacheÁQ reset_cacheÁQ get_configÁQget_nfaÁQ pattern_lenÁQ state_lenÁQ alphabet_lenÁQstride2ÁQstrideÁQ memory_usageÁd fis_matchÁg'hÁg…ffindÁj¸j…fcapturesÁm¸m…f try_searchÁftry_search_slotsÁftry_search_slots_impÁ s search_impÁs find_matchÁ v‚v start_patternÁv transitionÁvset_transitionÁvsparse_transitionsÁvpattern_epsilonsÁvset_pattern_epsilonsÁv prev_state_idÁv last_state_idÁv swap_statesÁvremapÁ�impl Fn(StateID) -> StateIDÁ ƒñ„debug_state_transitionsÁ †Ä†Ÿ†¥   Š˜ ŠresetÁŠŽŠexplicit_slotsÁŠ setup_searchÁ  � STATE_ID_BITSÁ�STATE_ID_SHIFTÁ�STATE_ID_LIMITÁ�MATCH_WINS_SHIFTÁ� INFO_MASKÁ�˜ �is_deadÁ� match_winsÁ�state_idÁ� set_state_idÁ�epsilonsÁ  œñ  žPATTERN_ID_BITSÁžPATTERN_ID_SHIFTÁžPATTERN_ID_NONEÁžPATTERN_ID_LIMITÁžPATTERN_ID_MASKÁž EPSILONS_MASKÁžemptyÁžis_emptyÁž pattern_idÁžpattern_id_uncheckedÁžset_pattern_idÁž®#ž set_epsilonsÁ  ¬ñ ® SLOT_MASKÁ® SLOT_SHIFTÁ® LOOK_MASKÁ®Ø$®å$®slotsÁ® set_slotsÁ®looksÁ® set_looksÁ ¸ñ ºLIMITÁºinsertÁºremoveÁºå$º�ºapplyÁ Áñ ßå  ÆnfaÁÆwordÁÆtoo_many_statesÁÆtoo_many_patternsÁÆunsupported_lookÁÆexceeded_size_limitÁÆ not_one_passÁ ÎsourceÁÏ ÑñÒ remapperÁÔÔÔ RemappableÁ×Ð×óן ×± Û¾ Ôݘ Þimpl RemappableÁÞ ÝswapÁáõ)ݱ ãõ)ã Ôæto_indexÁæ to_state_idÁÔëéééééîÐîóîŸ î± ò¾ hybridÁôôôôôôôÒûûûûûûûûûû û û û û ûûûûûûûûûûûûûûûûûûû û!û"û#û$û%û&û'û(û)û MIN_STATESÁûSENTINEL_STATESÁû¨˜ ¨ûªŒ¨¤¨·¨É¨Ö¨ú¨�¨¾¨¿¨Ÿ¨°¨ó¨�¨Žû¹try_search_fwdÁº » ¹try_search_revÁ½ ¾ ¹try_search_overlapping_fwdÁÀ ¹try_search_overlapping_revÁ ¹try_which_overlapping_matchesÁûÅ next_stateÁÅnext_state_untaggedÁÅnext_state_untagged_uncheckedÁÅnext_eoi_stateÁÅ start_stateÁÅstart_state_forwardÁË Åstart_state_reverseÁÍ Å match_lenÁÅ match_patternÁûј Ñ´!Ñ search_startÁÑ search_updateÁÑ search_finishÁÑsearch_total_lenÁ× Ñ clear_countÁÑŽÚID_SIZEÁÚ STATE_SIZEÁûݶûµ ûà'iÁà'cÁà˜ àÐäÄàcache_next_stateÁæ àcache_start_groupÁàcache_start_oneÁé àadd_builder_stateÁë#impl Fn(LazyStateID) -> LazyStateIDÁà add_stateÁíÙ4à next_state_idÁàtry_clear_cacheÁà�à clear_cacheÁò à init_cacheÁô ô ô à save_stateÁàsaved_state_idÁàset_all_transitionsÁà—àset_start_stateÁàget_state_builderÁàput_state_builderÁûÿÂ3ÿÌ3ÿ˜ ÿget_cached_start_idÁÿget_cached_stateÁÿ is_sentinelÁÿ unknown_idÁÿdead_idÁÿquit_idÁÿis_validÁÿstate_fits_in_cacheÁÿstate_builder_fits_in_cacheÁÿmemory_usage_for_one_more_stateÁŒ‡3Œ–3û�¾ � take_to_saveÁ� take_savedÁû“˜ “�“ prefilterÁ“¡“¿“unicode_word_boundaryÁ“quitÁ“specialize_start_statesÁ“cache_capacityÁ“skip_cache_capacity_checkÁ“minimum_cache_clear_countÁ“minimum_bytes_per_stateÁ“ã“ get_prefilterÁ“ø“š“get_unicode_word_boundaryÁ“get_quitÁ¥ “get_specialize_start_statesÁ“get_cache_capacityÁ“get_skip_cache_capacity_checkÁ“get_minimum_cache_clear_countÁ“get_minimum_bytes_per_stateÁ“get_minimum_cache_capacityÁ“byte_classes_from_nfaÁ“quit_set_from_nfaÁ“Ư û ±˜ ±á±í´Œ±…±š±í±±û º‚º get_matchÁû"skip_empty_utf8_splits_overlappingÁ½‚ûminimum_lazy_state_idÁûminimum_cache_capacityÁÀ‡3À–3ôerrorÁÃÃÃÃÃÈß'Èinsufficient_cache_capacityÁÈinsufficient_state_id_capacityÁÈ%unsupported_dfa_word_boundary_unicodeÁÃÍñ(ÃÏñÃÑcacheÁѼ:Ñunsupported_anchoredÁÃÕñ(Ã×ñÃÙtoo_many_cache_clearsÁÙbad_efficiencyÁÃÃÝñôidÁßàMAX_BITÁà MASK_UNKNOWNÁà MASK_DEADÁà MASK_QUITÁà MASK_STARTÁà MASK_MATCHÁàMAXÁà˜ à¢ àas_usize_untaggedÁàas_usize_uncheckedÁà to_unknownÁàto_deadÁàto_quitÁàto_startÁàto_matchÁà is_taggedÁà is_unknownÁàé"àis_quitÁàis_startÁà©ß÷ attemptedÁßßúñô• üüüüüüüüüü ü ü ü ü üüŒ˜ ŒûŽŒŒÖŒúŒ�ü“©”¸”…“È—¸—…“ find_iterÁš'rÁšÌ3š¸š…üŸþŸ is_anchoredÁü¢forwardÁ¢reverseÁ¢¾ü¦æG¦Ì3¦¸¦Ÿ¦¥ « ü­˜ ­´!­­H­¼H­ forward_mutÁ­ reverse_mutÁ­as_partsÁ­ as_parts_mutÁ­Žü·˜ ·á·íºŒ·build_from_dfasÁ·í·±·ÒüÀ>ôå      Âfind_fwdÁ find_fwd_impÁÒnext_uncheckedÁÒ Ò Âfind_revÁ find_rev_impÁ×ÎK× × Âfind_overlapping_fwdÁÂfind_overlapping_fwd_impÁÜ Âfind_overlapping_revÁÞ Âinit_fwdÁÂinit_revÁÂeoi_fwdÁâ â Âeoi_revÁå å Âprefilter_restartÁÂgave_upÁª êêêêêêêêêê ê ê°@ööööööööþpatternÁþÒþ syntax_errorÁþastÁþhirÁþß'ö…ñ(ö‡ñööŠñöŒ”öŽ˜ öö‘ñö “”ö • from_offsetÁö ö ˜ñö š”öœ”�êlimitedÁŸŸŸŸŸŸŸŸhybrid_try_search_half_revÁ§ § Ÿhybrid_eoi_revÁª ª êЭ­­­­­­­alternation_literalsÁµµµêprefixÁ¹¹¹¹¹¹hir_can_contain_literalÁ¿ ¹hir_has_fixed_lengthÁÁ  ¹has_disjoint_class_separatorÁÄ Ä ¹has_disjoint_class_separator_atÁÇ ¹hir_matches_empty_onlyÁ¹required_classÁ¹hir_is_disjoint_from_classÁË ¹ uncaptureÁ¹classes_are_disjointÁ¹class_is_disjoint_from_literalsÁÏ ¹class_is_disjoint_from_literalÁÑ Ñ Ó ¹hir_can_consume_byteÁÕ ¹byte_class_containsÁ× ¹unicode_class_containsÁÙ ê• ÛÛÛÛÛÛÛÛÛÛ Û Û Û Û ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Û!Û"Û#Û$Û%Û&Û'Û(Û)Û*Û+Û,Û CachePoolÁÛCachePoolGuardÁŠÄÛ CachePoolFnÁÛ�˜ �û�Œ�É�ÖÛ“©”¸”…“È—¸—…“ᚸš…“ÕG�æG�¸�…“ captures_iterÁ¡æG¡¸¡…“splitÁ¥æG¥¸¥…“splitnÁ©æG©¸©…Û­å ­ search_halfÁ­search_capturesÁ­ search_slotsÁ­which_overlapping_matchesÁÛ³ search_withÁ³search_half_withÁ³search_captures_withÁ³search_slots_withÁ³which_overlapping_matches_withÁÛ¹ä¹ú¹¾¹ captures_lenÁ¹static_captures_lenÁ¾ ¹ group_infoÁ¹Ÿ¹is_acceleratedÁ¹ŽÛÄŽÅ Ûǘ ÇÉÇpropsÁÇ props_unionÁÇ¾ÇŽÍ Çis_anchored_startÁÇis_always_anchored_startÁÐÇis_always_anchored_endÁÒÇcaptures_disabledÁÇ is_impossibleÁÛÖæGÖ¸Ö• ÖinputÁÚ'sÁÛÜæGܸܟܥ à ÜŠâ Û äæGä¸Û çæGç¸ç• ç–`ë£`Û íæGí¸íŸí¥ ñ íŠó Û õæGõ¸Û øæGø¸ø–`û£`ÛýæGý¸ýŸý¥ Û‚æG‚¸Û…æG…¸…–`ˆ£`ÛŠæGŠ¸ŠŸŠ¥ Š size_hintÁÛ�æG�¸Û“˜ “´!“ŽÛ—˜ —�— utf8_emptyÁ—auto_prefilterÁ—þ9—which_capturesÁ—nfa_size_limitÁ—onepass_size_limitÁ—hybrid_cache_capacityÁ—dfa_size_limitÁ—dfa_state_limitÁ—¿—line_terminatorÁ— pool_capacityÁ—ª+—Ò—ë— backtrackÁ—ã—get_utf8_emptyÁ—get_auto_prefilterÁ—æ;—get_which_capturesÁ—get_nfa_size_limitÁ—get_onepass_size_limitÁ—get_hybrid_cache_capacityÁ—get_dfa_size_limitÁ—get_dfa_state_limitÁ—š—get_line_terminatorÁ—get_pool_capacityÁ¶DEFAULT_POOL_CAPACITYÁ¶ ¸¸AVAILABLE_PARALLELISMÁº » — get_hybridÁ—get_dfaÁ— get_onepassÁ— get_backtrackÁ—to_thompson_configÁ—ÆÂ ÛĘ ÄáÄíÇŒÇÇ Ç Äbuild_from_hirÁÄbuild_many_from_hirÁÍ„Í Í ÄšÄíê reverse_innerÁÓÓÓÓÓÓÓÓÓÓ Ó Ó Óhas_no_earlier_matchÁà Ó☠Óprefilter_with_literalsÁÓ top_concatÁå ÓflattenÁç ç êreverse_suffixÁêêêêêêêêÊkêstrip_literal_suffixÁêstrip_literal_suffix_atÁêstrip_repetition_literal_suffixÁõ êstopatÁ÷÷÷÷÷÷hybrid_try_search_half_fwdÁý ÷hybrid_eoi_fwdÁÿ ÿ êstrategyÁ‚‚‚‚‚‚‚‚‚‚ ‚ ‚ ‚ ‚ ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ ‚!‚"‚#‚$‚%‚&‚'‚(‚)‚*‚+‚,‚-‚.‚/‚StrategyÁ³‚ ³Ö]³ú³�³ð]³Ž³å ³›[³©³Å[³Ù[‚˜ ¿ ‚ÁŒÁ˜ ‚Ä from_prefixesÁÄfrom_alternation_literalsÁƂȌȂ ÈÖ]ÈúÈ�Èð]ÈŽÈå Ð Ð È›[Ó È©ÈÅ[ÈÙ[‚ؘ Øtry_search_mayfailÁØ search_nofailÁØsearch_half_nofailÁØsearch_slots_nofailÁØis_match_nofailÁØis_capture_search_neededÁ‚à‚ àÖ]àúà�àð]å àŽç ç àå à›[à©àÅ[àÙ[‚ï˜ ïtry_search_half_anchored_revÁ‚ò‚ òÖ]òúò�òð]òŽòå ò›[ò©òÅ[òÙ[‚þ˜ ÿ þtry_search_half_startÁþtry_search_half_fwdÁþtry_search_half_rev_limitedÁ‚„ ‚ „ Ö]„ ú„ �„ ð]„ Ž„ å „ ›[„ ©„ Å[„ Ù[‚ � ˜ ‘ � try_search_fullÁ� try_search_half_fwd_stopatÁ� ‡w‚ – ‚ – Ö]– ú– �– ð]– Ž– å – ›[– ©– Å[– Ù[‚copy_match_to_slotsÁêwrappersÁ£ £ £ £ £ £ £ £ £ £  £  £  £  £  £ £ £ £ £ £ £ £ £ £ » ˜ » ú» getÁ£ ¿ ˜ ¿ ©¿ Å[¿ Ù[£ Ä ¾ Ä ´!Ä ŽÇ Ä êzÉ £ Ë ˜ Ë úË êz£ Ï ˜ Ï ©Ï Å[Ï max_haystack_lenÁ£ Ô ¾ Ô ´!Ô Ž× Ô êzÙ £ Û ˜ Û úÛ êzÛ Žß £ á ˜ á Å[á Žá °£ æ ¾ æ ˜ è æ ´!æ Žë £  í ¾ í ˜ í úí êzí is_someÁ£  ó ˜ ó þõ ó ìv÷ ó °xó try_search_half_revÁú ó ‡wó ñ/ý £  ÿ ¾ ÿ ˜ � ÿ ´!ÿ Ž„ £  † ¾ † ˜ † êz† í}† Ž‹ £  � ˜ � þ� ìv� °x� «~� ‡w� ñ/� Ž£ – ¾ – ˜ – ú– êz£ › ˜ › ‡w£ ž ¾ ž ˜   ž ´!ž Ž£ £ ¥ ¾ ¥ ˜ ¥ êz¥ í}¥ Žª £ ¬ ˜ ¬ ‡w¬ Žß'° ±± ÿe² ² ² ² ² ² ² ² ² ²  ²  ²  ²  ²  ² ² ² ² ² ² ² ² ² ² ² ² ² min_visited_capacityÁ² Î ˜ Î þ9Î visited_capacityÁÎ æ;Î get_visited_capacityÁÓ DEFAULTÁÎ ÆÕ ² × ˜ × á× íÚ Œ× …× š× í× ±² à ˜ à ûâ Œà ‘à ¤à ·à Éà Öà úà äà �à ¾à Ÿà °à ƒ|² ð  try_is_matchÁñ ¸ñ …ñ ð try_findÁõ ¸õ …ð  try_capturesÁø ¸ø …ð  try_find_iterÁû æGû Ì3û ¸û …ð try_captures_iterÁ€ æG€ Ì3€ ¸€ …² … þ… �‡ ‡ ‡ ‡ … ¦Œ � … Å… ÿe… stepÁ‘ ² “ æG“ Ì3“ ¸“ Ÿ“ ¥ ˜ ² š æGš Ì3š ¸š Ÿš ¥ Ÿ ² ¡ ˜ ¡ ´!¡ Ž¡ ß!² ¦  BLOCK_SIZEÁ¦ ˜ ¦ ‚'¦ ´!¦ ß!« ¦ ޲ div_ceilÁ± Ö¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯  ¯  ¯  ¯  ¯  ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ Æ gotoÁÆ Ž¯ É ˜ É clearÁÉ áÉ òÍ É finish_patternÁÉ current_pattern_idÁÉ ¾É  add_emptyÁÉ  add_unionÁÉ add_union_reverseÁÉ  add_rangeÁÉ  add_sparseÁÉ add_lookÁÉ add_capture_startÁÉ add_capture_endÁÉ add_failÁÉ  add_matchÁÉ œÜ É patchÁÉ set_utf8ÁÉ get_utf8ÁÉ  set_reverseÁÉ  get_reverseÁÉ set_look_matcherÁÉ get_look_matcherÁÉ set_size_limitÁÉ ±É ŽÉ check_size_limitÁ± °é é é é é é é é é é  é  é  é  é  é é é é é é é é é é é é é é é é é é é  é !é "é � ˜ � utf8Á� ¼H� ¹d� shrinkÁ� á� £d�  look_matcherÁ� š�� ½�� êf�  get_shrinkÁ�  get_capturesÁ� Ðf� è�� get_unanchored_prefixÁ� Æž é   >é ¢ is_noneÁ¢ is_anyÁé ¥ ˜ ¥ á¥ í¨ Œ¥ ¦j¥ ¼j« „¥ š¥ íé ¯ compileÁ° „° ° ¯ ™´ ´ ´ ´ ¯ c_concatÁ¹ …¯  c_alt_sliceÁ» » ¯  c_alt_iterÁ¾ …¯ c_capÁ¯  c_repetitionÁ¯  c_boundedÁ¯  c_at_leastÁà ¯  c_zero_or_oneÁ¯  c_exactlyÁÆ ¯  c_byte_classÁ¯ c_unicode_classÁÉ ¯ #c_unicode_class_reverse_with_suffixÁ¯ c_lookÁ¯  c_literalÁÍ ¯ c_rangeÁ¯ c_emptyÁ¯ c_failÁ¯ ýŒ¯ ò¯ ùН ±‹¯ 싯 ý‹¯ �Œ¯ ‹¯ Ó‹¯ ŸŒ¯ ¸Œ¯ ÏŒ¯ ߌ¯  is_reverseÁé à ˜ à ׊é ã Äã ˜ ã finishÁã œç è ã  compile_fromÁã Ë’ã  add_suffixÁã ±‹ã  pop_freezeÁã pop_rootÁã top_last_freezeÁé ñ set_last_transitionÁ± °@ó ó ó ó ó ó ó ú Òú ¦ú íú áú ê'ú �(ú ö'ú ¾(ú invalid_capture_indexÁú unsupported_capturesÁó … ñ(ó ‡ ñ±  literal_trieÁ‰ ‰ ‰ ‰ ‰ ‰ ‰ ‰ ‰ ‰  ‰  ‰  ‰  ‰ — ­H— ¼H— œ— get_or_add_stateÁ› › — Ë’‰ Ÿ ñ‰ ¡ Ä¡ ˜ ‰ ¤ ߌ¤ is_leafÁ¤ chunksÁ¤  active_chunkÁ¤ active_chunk_startÁ© ‰ « ñ‰ ­ Ä­ Ÿ­ ¥ ‰ ± ñ± ƒ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³  ³ PRIMEÁ³ INITÁ³ À ˜ À ׊À ÆÀ êzÀ setÁ³ Æ ˜ Æ ׊Æ ÆÉ ¤�É ±�Æ êzÆ ã�± ß'Î Î Î Î Î Î Î Î Î Î  Î  Î  Î  Î  Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î Î  Î !Î "Î #Î ó ˜ ó ûõ Œó ¤ó ·ó Éó °ó patternsÁó ¾ó start_anchoredÁó start_unanchoredÁó òó byte_class_setÁó ¿ó ƒó statesÁó Ö]ó  has_captureÁó  has_emptyÁó is_utf8Áó ê–ó is_always_start_anchoredÁó ¼�ó  look_set_anyÁó look_set_prefix_anyÁó Ž�Î �ñÎ ‘into_nfaÁ‘Ö]‘œ‘ set_startsÁ‘Š�‘ª�‘Ð�‘ set_capturesÁ™ š ‘± Î �ñÎ Ÿ is_epsilonÁŸŽŸ± Î £ñ¤ ¤ Î §matchesÁ¨ § matches_unitÁª § matches_byteÁÎ ­¨¤® ­¼¤° ­Õ¤­�³ ³³ ³ Î ¸¨¤¹ ¸¼¤» ¸Õ¤Î  ¾ñ¿Î  ÁÄÁŸÁ¥ ± pikevmÁÅÅÅÅÅÅÅÅÅÅ Å Å Å Å ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ instrumentÁÅ㘠ã�ãþ9ãããæ;ãÆé Åë˜ ëáëíîŒë…ëšëíë±Åô˜ ôûöŒô‘ô¤ô·ôÉôÖôäôúô�ô¾ôŸô°Åƒ©„¸„…ƒÈ‡¸‡…ƒáЏЅƒÕG�æG�Ì3�¸�…ƒ–Z’æG’Ì3’¸’…Å—å —Å[™ ™ —search_slots_impÁœ � —Ù[Å Å which_overlapping_impÁ nextsÁ nexts_overlappingÁ ¥  epsilon_closureÁ epsilon_closure_exploreÁ  start_configÁÅ©æG©Ì3©¸©Ÿ©¥ ® ŰæG°Ì3°¸°Ÿ°¥ µ Å·˜ ·´!·Žº·ß!Å ½˜ ½´!½Ž½ß!И ´!Ä ÂŽÂß! for_stateÁ all_absentÁ±  range_trieÁÊÊÊÊÊÊÊÊÊÊ Ê Ê ÊFINALÁÊROOTÁÊÙ˜ Ù׊Ù�Ü�܂ق'ß Ù±‹Ù duplicateÁÙadd_transitionÁÙadd_transition_atÁÙset_transition_atÁÙƒÙ state_mutÁÊèÈé binary_searchÁê�ê‚é è׊Êï˜ ð ïpushÁïŠ#ïrangesÁÊõ˜ ö ö ö ö õparts1Áõparts2Áõparts3Áõas_sliceÁÊÿñÊ�ñ‚ Ê„ñÊ intersectsÁ± ± ± ± ± ± ± ± ± ±  ±  ±  ±  ±  utilÁ•alphabetÁ–––––––�™�eoiÁ�as_u8Á�as_eoiÁ�as_usizeÁ�is_byteÁ£ �is_eoiÁ� is_word_byteÁ–§ñ–©Ø$ª © singletonsÁ© from_bytesÁ©write_toÁ© write_to_lenÁ©ã�©êz© get_by_unitÁ©æ³©à©ó© is_singletonÁ©�©representativesÁ¸Ž¸©elementsÁ©element_rangesÁ–½>–¿ñ–ÁÄÁŸÁ¥ –ÅÄÅŸÅ¥ –ÉÄÉŸÉ¥ –ÍÄÍŸÍ¥ – Ñ>– ÓØ$Ó set_rangeÁÓadd_setÁÓ¿– ØØ$Ù ØœØ�'ØcontainsÁØcontains_rangeÁÞ Ø�Ø iter_rangesÁØå$؃µãØ•µå�娥µ– éñ– ëÄëŸë¥ –ïÄïŸï¥ ò •áôôôôôôôôôô ô ô ô ô ôôô…ª…¨¤…Ø$…©…îN…¢?… get_groupÁ…get_group_by_nameÁ…�Ž … group_lenÁ…Ö]…interpolate_stringÁ…interpolate_string_intoÁ“ “ …interpolate_bytesÁ…interpolate_bytes_intoÁ— — …extractÁš¸šŠš š š … extract_bytesÁ ¸ Š      ô¦׊¦ set_patternÁ¦©&¦ slots_mutÁô«ñôCapturesDebugMapÁ­Ä­pidÁ­capsÁô±Ä±ñ³KeyÁ´ ´Ä´ó´ô³¹Ä¹ñô¼Ä¼Ÿ¼¥ ¼›c¼ŠôÂÄôÄÄôƘ ÇŒÇƒÇŠÇ ÆØ$Ì Æ¿*Î Æto_nameÁÆ pattern_namesÁÑ Æ all_namesÁÆ©&Ô ÆslotÁÆ¾ÆØ»Æ all_group_lenÁÆslot_lenÁÆimplicit_slot_lenÁÆexplicit_slot_lenÁÆŽÝôÚôàadd_first_groupÁàadd_explicit_groupÁâŠâ àfixup_slot_rangesÁåå à¾àØ»àsmall_slot_lenÁê ô ì�(ìtoo_many_groupsÁìmissing_groupsÁìfirst_must_be_unnamedÁìÛ¯ô òñ(ô ôñõô ÷Ø$ô ùÄùŸù¥ ü ù›cùŠô€Äô‚Äô„Ä„Ÿ„¥ •escapeÁˆˆŠñ‹ ˆ DebugHaystackÁ� �Ä�óˆ‘Ä‘ñ• interpolateÁ”””””stringÁ™impl FnMut(usize, &mut String)Á™!impl FnMut(&str) -> OptionÁ™ ”bytesÁ�impl FnMut(usize, &mut Vec)Á�ÈÆ� ”¡Ä¡””¤”” find_cap_refÁ”find_cap_ref_bracedÁ§ § ”is_valid_cap_letterÁ•�«««««««²¸²˜ ²–`µ£`² advance_halfÁ·‚²advanceÁ¹‚²try_advance_halfÁ»‚² try_advanceÁ½‚²into_half_matches_iterÁ¿‚²into_matches_iterÁÁ‚²into_captures_iterÁ²#handle_overlapping_empty_half_matchÁÅ‚²handle_overlapping_empty_matchÁÇ‚«TryHalfMatchesIterÁɸɂÉitÁÉfinderÁ«Î¸Î‚Î infallibleÁΖ`ÒÂ3«Ô¸Ô‚ÔŸÔ¥ «Ù¸Ù‚Ùñ«Ý¸Ý‚Ý–`àÂ3«â¸â‚âŸâ¥ «TryMatchesIterÁç¸ç‚çÛËçåË«ì¸ì‚ìˆÌì–`ðÂ3«ò¸ò‚òŸò¥ «÷¸÷‚÷ñ« û¸û‚û–`þÂ3« €¸€‚€Ÿ€¥ «TryCapturesIterÁ…¸…‚…ÛË…ɾ…åË« ‹¸‹‚‹ˆÌ« �¸�‚�Ÿ�¥ “ « •¸•‚•ñ«™¸™‚™Ÿ™¥ •›žžLazyÁ   � ‚ óž¥�¥‚¥˜ ž©�©‚©êzž­�­‚­ë­Ãž²�²‚²ñž›¶¶¶¶¶¶¶¶�Ѿ�¾‚¾dataÁ¾createÁ¾ownedÁ¶Ä�Ä‚¶Ç�ǂǘ ¶Ë�Ë‚ËêzËÀ ¶Ð�ЂÐñ¶Ô�Ô‚Ôõ•lookÁØØØØÜreversedÁÜas_reprÁÜ from_reprÁÜas_charÁØáØ$á¢á singletonÁá¶áå$á̸ácontains_anchorÁácontains_anchor_haystackÁácontains_anchor_lineÁácontains_anchor_lfÁácontains_anchor_crlfÁá contains_wordÁácontains_word_unicodeÁácontains_word_asciiÁá�á‚'á set_insertÁá�'á set_removeÁásubtractÁá set_subtractÁáCá set_unionÁá intersectÁá set_intersectÁá read_reprÁá write_reprÁá availableÁØþñØ€Ÿ€¥ ؃˜ ƒset_line_terminatorÁƒ€hƒ¨¤ƒmatches_inlineÁƒ matches_setÁƒmatches_set_inlineÁƒadd_to_bytesetÁ‹ ƒØEƒis_endÁƒ is_start_lfÁƒ is_end_lfÁƒ is_start_crlfÁƒ is_end_crlfÁƒ is_word_asciiÁƒis_word_ascii_negateÁƒis_word_unicodeÁƒis_word_unicode_negateÁƒis_word_start_asciiÁƒis_word_end_asciiÁƒis_word_start_unicodeÁƒis_word_end_unicodeÁƒis_word_start_half_asciiÁƒis_word_end_half_asciiÁƒis_word_start_half_unicodeÁƒis_word_end_half_unicodeÁØŸ>Ø¡checkÁØØ¤ñØÑ¦¦æÝ¦fwdÁ¦revÁ¦is_word_characterÁ•poolÁ¬PoolÁ­ ­�­‚­ó¬²�²‚²˜ ² with_capacityÁ²#with_available_parallelism_capacityÁ··Ûh¹ º ¬¼�¼‚¼êz¬À�À‚Àñ¬ PoolGuardÁÄ ÄÄÄ�Ä‚Äó¬ÊÄÊ�Ê‚ÊputÁ¬ÏÄÏ�Ï‚ÏëÏìÕÄÕ�Õ‚ÕŬÚÄÚ�Ú‚Úñ¬ðßßßßßßßßßß ß ß ß ß ßßCOUNTERÁßTHREAD_ID_UNOWNEDÁßTHREAD_ID_INUSEÁßTHREAD_ID_DROPPEDÁßMAX_POOL_STACKSÁßÖÞô�ô‚ôöÒôstacksÁôownerÁô owner_valÁßû�û‚ßþ�þ‚ß���‚ß„�„‚„˜ „œß߉�‰‚‰êzŒ ‰get_slowÁ‰ put_valueÁ� ‰ guard_ownedÁ‰ guard_stackÁ‰guard_stack_transientÁß”�”‚”ñß­à˜Ä˜�˜‚˜ÊÞ˜�˜discardÁߟğ�Ÿ‚Ÿ�Ÿ value_mutÁŸ€áŸput_impÁߧħ�§‚§õ߬Ĭ�¬‚¬ñ•þ9±ù²²²²²²¸˜ ¹þ²»‚ »È½ »¹R¿ »Ž»is_fastÁ±bytesetÁÃÃÃÃÃÃɘ ÊþÊ ÃÍ‚ ÍÈÏ Ï Í¹RÍŽÍåè±ìÕÕÕÕÕÕÛ˜ ÜþÕÞ‚ ÞÈà Þ¹RÞŽÞåèÕå˜ æþæ Õé‚ éÈë é¹RéŽéåèÕð˜ ñþñ Õô‚ ôÈö ô¹RôŽôåè±memmemÁûûûûûû�˜ ‚þû„‚ „Ȇ „¹R„Ž„åè±teddyÁ‹‹‹‹‹‹‘˜ ’þ’ ‹•‚ •È— •¹R™™ •Žœ•åè±±±±±±±±±± ± ± ± ± ±±±±±±±±±µ˜ ¶þ¶ ¸ µ from_choiceÁµfrom_hir_prefixÁµfrom_hirs_prefixÁ¼„¼ µÈµ¹RµŽµmax_needle_lenÁµåè± PrefilterIÁÄ‚ ÄÈĹRÄŽÄåè±ÊŒÊ‚ ÊÈʹRÊŽÊåè±Ñ˜ ÒþÒ ±prefixesÁÕ„±suffixesÁׄ• primitivesÁÙÙÙÙÙÙÙÙᘠáêzÙäñÙæ€Dæõ&æZEROÁæSIZEÁæ˜ æ¢ æmustÁ挴æas_u64Áæas_u32Áæas_i32Áæone_moreÁæ from_ne_bytesÁó æfrom_ne_bytes_uncheckedÁõ æ to_ne_bytesÁ÷ Ùù�ù´ù÷Ùý�ýøÙ€�€´€÷Ù„�„øÙ‡”Ù‰ErrorÁ‰øÙ ŒßôŒøÙ �ßô�øÙ ’ßô’øÙ •õEÙ Ù˜ñÙšŸš¥ Ùindex_type_implsÁÙIteratorIndexExtÁžwith_pattern_idsÁžwith_state_idsÁÙ¡…•‚££££££££££­˜ ­from_input_forwardÁ¯ ­from_input_reverseÁ­ look_behindÁ­anchoredÁ­get_look_behindÁ­ get_anchoredÁ£¶˜ · ¶êz¶ƒµº ¶•µ¶¥µ£¾ñ¿£Á�Á¶Áñ³ÁŒ´•íÆÆÆÆÆÆÆÆÆÆ ÆparseÁÆ parse_manyÁÒŒÆ parse_withÁÆparse_many_withÁÕŒÆ×˜ ×case_insensitiveÁ× multi_lineÁ×dot_matches_new_lineÁ×crlfÁ×»e× swap_greedÁ×ignore_whitespaceÁ×unicodeÁׂ�× nest_limitÁ×octalÁ× get_unicodeÁ×get_case_insensitiveÁ×get_multi_lineÁ×get_dot_matches_new_lineÁ×get_crlfÁ×€h×get_swap_greedÁ×get_ignore_whitespaceÁך�×get_nest_limitÁ× get_octalÁ×®'× apply_astÁ× apply_hirÁÆò>•wireÁôôôôôôôôôô ô ô ô ô‚buffer_too_smallÁô„ñôô‡genericÁ‡Ôþ‡ invalid_usizeÁ‡version_mismatchÁ‡endian_mismatchÁ‡alignment_mismatchÁ‡label_mismatchÁ‡arithmetic_overflowÁ‡pattern_id_errorÁ‡state_id_errorÁôô“ñ”ôu32s_to_state_idsÁôu32s_to_state_ids_mutÁôu32s_to_pattern_idsÁôcheck_alignmentÁ™�ôskip_initial_paddingÁôalloc_aligned_bufferÁœ�ô read_labelÁž ô write_labelÁôwrite_label_lenÁôread_endianness_checkÁôwrite_endianness_checkÁ£�ôwrite_endianness_check_lenÁô read_versionÁô write_versionÁ§�ôwrite_version_lenÁôread_pattern_idÁª ª ôread_pattern_id_uncheckedÁôwrite_pattern_idÁ®�ôtry_read_state_idÁô read_state_idÁ± ± ôread_state_id_uncheckedÁôwrite_state_idÁµ�ôtry_read_u16_as_usizeÁ· ¸ ¸ ôtry_read_u32_as_usizeÁ» ¼ ¼ ô try_read_u16Áô try_read_u32Áô try_read_u128Áôread_u16Á ôread_u32ÁÄ ô read_u128ÁÆ ôcheck_slice_lenÁÈ�ôó ôœô„Ì ô padding_lenÁôEndianÁÏ write_u16ÁÏ write_u32ÁÏ write_u128ÁôLEÁôBEÁô¾ôÖ˜ˆÖ©ˆÖºˆôÚ˜ˆÚ©ˆÚºˆ•† ÞÞÞÞÞÞÞÞÞÞ Þ Þ Þ Þ ÞÞÞÞÞÞÞƒóóóóóóóóóó ó ó ó ó óóƒborrowÁó…ñó‡deadÁ‡©‡ is_from_wordÁ‡ is_half_crlfÁ‡ look_haveÁ‡ look_needÁ‡Ö1‡ç1‡match_pattern_idsÁ‡iter_nfa_state_idsÁ‘‚‡Ž‡½ ó•˜ • into_matchesÁ•׊•capacityÁóšñóœå¢œset_is_from_wordÁœset_is_half_crlfÁœÈ‹œ set_look_haveÁ¡impl FnMut(LookSet) -> LookSetÁœadd_match_pattern_idÁœ½ œrepr_vecÁó¦ñó¨to_stateÁ¨׊¨Ù‹¨Ó�¬è�¨ set_look_needÁ®è�¨add_nfa_state_idÁ¨as_bytesÁ¨½ ¨²ŽóReprÁ´ ´Ä´óó¸Ä¸©¸has_pattern_idsÁ¸ ‹¸´‹¸È‹¸Ù‹¸Ö1¸ç1¸ú‹Â ¸iter_match_pattern_idsÁÄ‚¸“ŒÆ‚¸pattern_offset_endÁ¸encoded_pattern_lenÁó ÊÄÊñÌ óReprVecÁÎ ÎÄÎóó ÒÄÒ set_is_matchÁÒset_has_pattern_idsÁÒš�Ò²�ÒÈ‹ÒÙ‹ÒÓ�Úè�Òˆ�Üè�ÒŽŽÒclose_match_pattern_idsÁÒ¦�Ò½ ó write_vari32Áó read_vari32Áó write_varu32Áó read_varu32Áó©ˆæÞ¥ è è è è Þæ«Þadd_nfa_statesÁî î Þset_lookbehind_from_startÁñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ ñ •Ø$ÿÿÿÿskip_splits_fwdÁƒ�ƒ‚ÿskip_splits_revÁ†�†‚ÿ skip_splitsÁ‰�‰‚•intÁŒU8Á�Œ´Œ�Œ´ŒU16Á‘Œ´‘low_u8Á‘high_u8ÁŒ•Œ´• —•®—ŒU32Á™Œ´™ —™low_u16Á™high_u16ÁŒžŒ´ž —žú—ž‰˜ŒU64Á£Œ´£ —£ú—£low_u32Á£high_u32ÁŒ©Œ´© —©ú—©è˜©÷˜ŒI32Á¯Œ´¯to_bitsÁ¯ from_bitsÁŒ³Œ´³Í™³Ü™ŒUsizeÁ·ñ³·as_u16Á·çò·ÙòŒ¼ñ³¼£š¼çò¼ÙòŒºÁŒ´ŒÃ�ÃŒ´•ìÆÆðÈìÈmemchr2ÁÈmemchr3ÁÈmemrchrÁÈmemrchr2ÁÈmemrchr3Á•å ÏÏÏÏÏÏÏÏ׸ט Ù„×spanÁÛ�×rangeÁÝŽ×ã÷×earliestÁ×set_spanÁá�ׂ¸ãŽã× set_startÁ×set_endÁ× set_anchoredÁ× set_earliestÁ×haystackÁׂג×get_spanÁ× get_rangeÁ׊ø× get_earliestÁ×is_doneÁ×is_char_boundaryÁÏó¸óñõÏ÷¸÷„÷”ÏûÙœûå$û¶û̸ûÑ Ï�ñσ´ƒ÷φøÏˆ´ˆ÷Ï‹”Ï �”Ï �•Ï ‘•Ï “˜ “Äò“îN“Ñ Ï ˜˜ ™�˜Äò›�˜îN˜‚˜’˜Ùœ˜Åœ˜å$˜¶Ï¤˜ ¤׊¤̸¤‚'¤ try_insertÁ¤å$¤is_fullÁ¤¶¤ïŒ¤�ÏϰñϲIJŸ²¥ ²›cÏ·Ä· next_backÁϺ•HºîNϽcontinue_past_first_matchÁÏ¿˜ ¿¦¿¼:¿ñM¿haystack_too_longÁ¿ˆBÏÏÇñ• sparse_setÁÉÉÉÉÉΘ ÎresizeÁÎ׊Α*ÎŽÉÔ˜ Ôê¤ÔïŒÔ¶Ôå$Ô‚'Ô̸Ô׊Ô�ÔŽÉßñÉáÄáŸá¥ • unicode_dataÁ•‚�æ¾´ç mkwordsetÁè è çWORDÁë ædecodeÁæ decode_lastÁæ¶æ is_boundaryÁæis_leading_or_invalid_byteÁ ConfigÁò�ò¡ò¿òÒ ÷Ž ùñ û> BuilderÁýÉý± €Ž ‚ñ InternalBuilderÁ„Ą҄uncompiled_nfa_idsÁ„ nfa_to_dfa_idÁ„stackÁ„seenÁ„matchedÁ„É„ß'„classesÁ �Ä�ñ DFAÁ’É’ß'’tableÁ’startsÁ’ min_match_idÁ’ש’à’ó’ pateps_offsetÁ’explicit_slot_startÁ �Ž SparseTransitionIterÁŸÄŸÛËŸcurÁ £Ä£ñ CacheÁ¦É!¦ÔÁ ©Ž «ñ  TransitionÁ­ ­ó   !±Ž " #´Ý $ %·• PatternEpsilonsÁ¹ ¹ó & '½Ž ( EpsilonsÁÀ Àó ) *ÄŽ + SlotsÁÇ Çó , -ËŽ .  SlotsIterÁΩ& /Ðñ  BuildErrorÁÒ¦ 0ÔŽ 1Öñ BuildErrorKindÁØNFAÁÙ ÙóØWordÁÜ ÜóØ TooManyStatesÁßlimitÁØTooManyPatternsÁ᪯ØUnsupportedLookÁã¢ÔØExceededSizeLimitÁåª¯Ø NotOnePassÁçmsgÁ 2éŽ 3ëñÔRemapperÁíƒ íidxmapÁÔðñÔ IndexMapperÁòóÔôñûù©öÉöß'öóö start_mapÁöשöquitsetÁöç:û þŽû €ñûâ«‚transÁ‚¡ª‚œ¡‚ states_to_idÁ‚sparsesÁ‚Ÿ©‚scratch_state_builderÁ‚ state_saverÁ‚memory_usage_stateÁ‚ì2‚bytes_searchedÁ‚progressÁû �Žû‘ñûSearchProgressÁ“‚“atÁû–Žû˜ñû�ÑšÂ3šÌ3šÒšóAûŸÂ3ŸÌ3ŸñûLazyRefÁ£Â3£Ì3£Ò£óAû¨Â3¨Ì3¨ñû StateSaverÁ¬­­ ¬ToSaveÁ¯ˆC¯ƒ¬SavedÁ² ²óûµŽû·ñûç¹�¹preÁ¹¡¹¿¹Ÿ:¹ä±¹È:¹ç:¹ý:¹ž;¹¿;ûÅŽûÇñûÉ>û“¨ËÉ˱ûÎŽûÐñû� ÒmatÁÒˆCÒ™´Ònext_match_indexÁÒrev_eoiÁûØŽûÚñûÜÝûûß•Ã�®á¦Ã ãŽÃ åñÃήçä®è èóçInsufficientCacheCapacityÁëminimumÁëgivenÁçInsufficientStateIDCapacityÁîerrÁç UnsupportedÁð ðóà óŽÃ õñÃ¥ ÷â«ø¬º÷QuitÁúbyteÁ÷UnsupportedAnchoredÁümodeÁà þŽÃ€ñà CacheErrorÁ‚ ‚óÃ…ŽÃ‡ñß LazyStateIDÁ‰ ‰óßß�Žßß�ñß’>ß ”Ýß –Æ—ÿß ß š•ß œ¤ ßž–ßLazyStateIDErrorÁ õEߢŽß¤ñߦÝßß©•üRegexÁ«­H«¼Hü®ñü FindMatchesÁ°æG°Ì3°¸°reÁ°óA°ÛËü ·æG·Ì3·¸·ñü⫼­H¼¼Hü ¿ñü ÁŽü“¨ÃÒü ÅŽü Çñö�®É¦öËŽöÍñöήÏSyntaxÁо¾Ð¬ºÏä®Ó ÓóöÖŽöØñö RetryErrorÁÚ QuadraticÁÛ ÛóÚFailÁÞ ÞóöáñöRetryQuadraticErrorÁã ãóöæñöRetryFailErrorÁèÑ öêñÛ”¾ìimpÁìÊÞÛïñÛRegexIÁñstratÁñinfoÁÛôñÛ RegexInfoÁö öóÛùŽÛûñÛ RegexInfoIÁýÉýµ^ýÂ^Û�ŽÛƒñÛ¾¾…æG…¸…é¾…óA…ÛËÛ‹æG‹¸‹ñÛCapturesMatchesÁ�æG�¸�é¾�óA�ɾ�ÛËÛ–æG–¸–ñÛSplitÁšæGš¸šåËš¯ÛŸæGŸ¸ŸñÛSplitNÁ£æG£¸£splitsÁ£ª¯Û¨æG¨¸¨ñÛ⫬ capmatchesÁ¬ˆ¦¬ÿe¬ë¬ª+¬ revhybridÁÛ ³ñÛ!µŽÛç·�·óc·autopreÁ·Ѷ·£d·¹d·Ïd·éd·ª+·Ò·†e·œe·ë·ÿe·¿·»e·ÒeÛ"ÉŽÛ#ËñÛ$Í>Û“¨ÏÉÏ™OϤOÛ%ÓŽÛ&ÕñÓInnerPrefilterÁ×¹R×Ѷ×literalsÁÓÛñ‚PreÁÝŒÝѶÝÖ]‚ áŒáŽ‚ äŒäñ‚CoreÁç†ÃçѶçß'çnfarevÁ爦çÿeçëçª+çÒ‚ ññ‚ReverseAnchoredÁóû‚õñ‚ ReverseSuffixÁ÷û÷Ѷ‚úñ‚ ReverseInnerÁüûüpreinnerÁüˆËüª+üÒ‚‚ ñ£ PikeVMÁ„ „ ó£ ‡ ñ£  PikeVMEngineÁ‰ ‰ ó£ Œ ñ£  PikeVMCacheÁŽ Ž ó£ ‘ Ž£ “ ñ£ BoundedBacktrackerÁ• • ó£ ˜ ñ£ BoundedBacktrackerEngineÁš š ó£ � ñ£ BoundedBacktrackerCacheÁŸ Ÿ ó£ ¢ Ž£ ¤ ñ£ OnePassÁ¦ ¦ ó£ © ñ£  OnePassEngineÁ« « ó£ ® ñ£  OnePassCacheÁ° ° ó£ ³ Ž£ µ ñ£ HybridÁ· · ó£ º ñ£  HybridEngineÁ¼ ¼ ó£  ¿ ñ£  HybridCacheÁÁ Á ó£ !Ä Ž£ "Æ ñ£ ù©È È ó£ #Ë ñ£  DFAEngineÁÍ Í ó£ $Ð ñ£  ReverseHybridÁÒ Ò ó£ %Õ ñ£ ReverseHybridEngineÁ× × ó£ &Ú ñ£ ReverseHybridCacheÁÜ Ü ó£ 'ß Ž£ (á ñ£  ReverseDFAÁã ã ó£ )æ ñ£ ReverseDFAEngineÁè è ó£ *ë ñ² çí Ѷí ˆƒ²  𠎲  ò ñ²  ô >² “¨ö Éö ±²  ù ޲  û ñ² �Îý Éý ß'² €!޲ ‚!ñ² TryFindMatchesÁ„!æG„!Ì3„!¸„!龄!óA„!ɾ„!Û˲ Œ!æGŒ!Ì3Œ!¸Œ!ñ² TryCapturesMatchesÁ‘!æG‘!Ì3‘!¸‘!龑!óA‘!ɾ‘!Û˲ ™!æG™!Ì3™!¸™!ñ² ⫞!Ÿ©ž!visitedÁ² ¡!޲ £!ñ² FrameÁ¥!StepÁ¦!sidÁ¦!™´¥!RestoreCaptureÁ©!ùÀ©!Ñ ² ¬!޲ ®!ñ² VisitedÁ°!bitsetÁ°!�² ³!޲ µ!ñ¯ StateÁ·!EmptyÁ¸!¥ ·! ByteRangeÁº!ž²·!SparseÁ¼! transitionsÁ·!LookÁ¾!¢Ô¾!¥ ·! CaptureStartÁÁ!õ$Á! group_indexÁÁ!¥ ·! CaptureEndÁÅ!õ$Å!ÊÚÅ!¥ ·!ùÉ! alternatesÁ·! UnionReverseÁË!˜Û·!»ÁÍ! ·!MatchÁÏ!õ$¯ Ñ!ޝ Ó!ñ¯ Õ!ݯ ¯ Ø!•¯ “¨Ú!õ$Ú!œ¡Ú!òÚ!áÚ! memory_statesÁÚ!‚�Ú!¼HÚ!¼�Ú!Ò¯ ä!ޝ æ!ñ¯  è!>é çê!‚�ê!¼Hê!¹dê!ž�ê!£dê!¼�é ñ!Žé  ó!ñé  õ!>é  WhichCapturesÁ÷!AllÁø! ÷!ImplicitÁú! ÷!­ü! é  é  ÿ!Žé  é ‚"ñé CompilerÁ„"parserÁ„"É„"Ö„" utf8_stateÁ„" trie_stateÁ„" utf8_suffixÁé ‹"Žé �"ñé  ThompsonRefÁ�"‚�"’é é “"Žé é –"ñé  Utf8CompilerÁ˜"Ę"Ö˜"ƒ˜"´é �"Ä�"ñé  Utf8StateÁ "compiledÁ " uncompiledÁé £"Žé ¥"ñé Utf8NodeÁ§"ž²§"¯é ª"Žé ¬"ñé Utf8LastTransitionÁ®"‚®"’é ±"Žé ³"ñó �®µ"¦ó ·"Žó ¹"ñó ή»"»À¼" ¼"ó»"CapturesÁ¿" ¿"ó»"ü®Â" Â"ó»"·¯Å"ü¹Å"ª¯»"•¯È"ü¹È"ª¯»"÷¯Ë"ª¯»"InvalidCaptureIndexÁÍ"÷»"UnsupportedCapturesÁÏ" ó Ñ"Žó Ó"ñ‰  LiteralTrieÁÕ"œ¡Õ"¦Þ‰ Ø"މ ‡ØÚ"ÄÚ"ò›Ú"þÙÚ"CÚ"° ‰ à"Äà"ñ‰ ´Ùã"þÙã"ò›‰  æ"މ  è">‰ StateChunksIterÁê"Äê"þÙê"ò›ê"activeÁ‰  ï"Äï"ñ‰ —¬ò"—»ò"¥ ‰  ‰  ö"މ ³ Utf8BoundedMapÁù"™ù"ïŒù"ƒ ³ ý"޳ ÿ"ñ³ Utf8BoundedEntryÁ�#™�#keyÁ�#޳ …#޳ ‡#ñ³ ‰#>³  Utf8SuffixMapÁ‹#™‹##ƒ ³ �#޳ ‘#ñ³  Utf8SuffixKeyÁ“#”“#‚“#’³  —#޳  ™#ñ³  ›#>³  �#ݳ  ³  #•³ Utf8SuffixEntryÁ¢#™¢#�è¢#޳ ¦#޳ ¨#ñ³ ª#>Π䮬# ¬#óÎ  ¯#ŽÎ InnerÁ±#œ¡±#À ±#Ö ±#ò±#Ö]±#ö ±#¿±#²¡±#Å¡±#‚�±#¼H±#¼�±#—¢±#«¢±# memory_extraÁÎ  Á#>Î ´ÙÃ#ÖÙÄ#ž²Ã#ðÙÆ# Æ#óÃ#DenseÁÉ# É#óÃ#‘ÚÌ#¢ÔÌ#¥ Ã#ùÏ#˜ÛÃ# BinaryUnionÁÑ#alt1ÁÑ#alt2ÁÃ#`Ô#¥ Ô#õ$Ô#ÊÚÔ#ùÀÃ#»ÁÙ# Ã#ÕÛÛ#õ$Î  Ý#ŽÎ ß#ÝÎ Î â#•Î SparseTransitionsÁä#þÙÎ æ#ŽÎ è#ñÎ ê#ÝÎ Î í#•Î DenseTransitionsÁï#þÙÎ ñ#ŽÎ ó#ñÎ õ#ÝÎ Î ø#•Î —¬ú#‚ú#’ú#¥ Î Î ÿ#ŽÎ Î ‚$ÝÎ „$Æ…$ÿÎ  Î !ˆ$•Î  PatternIterÁŠ$ÄŠ$ÛËŠ$_markerÁÎ "Ž$ÄŽ$ñÅç‘$�‘$ѶÅ ”$ŽÅ –$ñÅ ˜$>Å“¨š$Éš$±Å�$ŽÅŸ$ñÅýÌ¡$É¡$ß'Ť$ŽÅ¦$ñž¾¨$æG¨$Ì3¨$¸¨$龨$óA¨$ɾ¨$ÛËŰ$æG°$Ì3°$¸°$ñÅëĵ$æGµ$Ì3µ$¸µ$é¾µ$óAµ$ɾµ$ÛËŽ$æG½$Ì3½$¸½$ñÅâ«Â$Ÿ©Â$currÁÂ$¥ ÅÆ$ŽÅÈ$ñÅ ActiveStatesÁÊ$ã�Ê$ slot_tableÁÅÍ$ŽÅÏ$ñÅ SlotTableÁÑ$”ªÑ$slots_per_stateÁÑ$slots_for_capturesÁÅÕ$ŽÅ×$ñÅ FollowEpsilonÁÙ$ExploreÁÚ$ Ú$óÙ$´ØÝ$ùÀÝ$Ñ Åà$ŽÅâ$ñÊ RangeTrieÁä$œ¡ä$freeÁä$ iter_stackÁä$ÿ¸ä$ dupe_stackÁä$ insert_stackÁÊë$ŽÊ´Ùí$þÙÊï$ŽÊ—¬ñ$Ùœñ$next_idÁÊ ô$ŽÊNextDupeÁö$old_idÁö$new_idÁÊ ù$ŽÊ û$ñÊNextIterÁý$Š#ý$tidxÁÊ €%ŽÊ ‚%ñÊ NextInsertÁ„%Š#„%³±†% „%¶Ê‰%ŽÊ‹%ñÊÒÅ�% partitionsÁŽ% �%¶Ê‘%ŽÊ“%ñÊ•%Ý–% ÊÊ™%•Ê SplitRangeÁ›%OldÁœ% œ%ó›%NewÁŸ% Ÿ%ó›%BothÁ¢% ¢%óÊʦ%ŽÊÊ©%ñÊ«%ÝÊÊ®%•–UnitÁ°% °%ó––´%Ž––·%Ý––º%•–¼%¤ –¾%––UnitKindÁÀ%ë–Á% Á%óÀ%EOIÁÄ% Ä%ó––È%Ž––Ë%Ý––Î%•–Ð%¤ –Ò%–– ByteClassesÁÔ% Ô%óÖ% –– Ù%ŽÚ% –!– ByteClassIterÁÝ%ÄÝ%שÝ%Ÿ–"á%Äá%ñ–ByteClassRepresentativesÁä%Ää%שä%cur_byteÁä%end_byteÁä% last_classÁ–#ê%Äê%ñ–ByteClassElementsÁí%Äí%שí%classÁí%—»–$ò%Äò%ñ–ByteClassElementRangesÁõ%Äõ%¶¶õ%Ùœ–%ù%Äù%ñ– ByteClassSetÁü% ü%ó–&ÿ%Ž–'�&ñ–ByteSetÁƒ&¼–(–)†&Ž–*–+‰&ñ–,‹&>–-�&Ý–.–/�&•–BitSetÁ’& ’&ó”& –0–1—&Ž˜& –2–3›&>–4�&Ýž& –5–6¡&•– ByteSetIterÁ£&Ä£&ã�£&˜–7§&ħ&ñ–ByteSetRangeIterÁª&Ī&ã�ª&˜–8®&Ä®&ñôœã±&Ö]±&¾¾±&©&ôµ&ŽôCapturesPatternIterÁ·&Ä·&ɾ·&ƒ ô»&Ä»&Žô¾&ľ&ñô GroupInfoÁÁ& Á&óôÄ&ŽôÆ&ñôÈ&>ôGroupInfoInnerÁÊ& slot_rangesÁÊ& name_to_indexÁÊ& index_to_nameÁÊ&‚ìôÏ&ñôÑ&>ôGroupInfoErrorÁÓ&¦ôÕ&Žô×&ñôGroupInfoErrorKindÁÙ&·¯Ú&¬ºÙ& TooManyGroupsÁÜ&îNÜ&í¹Ù& MissingGroupsÁß&îNÙ&FirstMustBeUnnamedÁá&îNÙ& DuplicateÁã&îNã&‚ ôæ&Žôè&ñôGroupInfoPatternNamesÁê&Äê&ÛËôí&Äí&Žôð&Äð&ñôGroupInfoAllNamesÁó&Äó&Ö]ó&pidsÁó& current_pidÁó&ƒ ôù&Äù&ñˆ DebugByteÁü& ü&󈈀'Žˆ” CaptureRefÁƒ'ă'capÁƒ'’”‡'Ä”‰'ĉ'Ž”Œ'Ä”Ž'ÄŽ'ñ”‘'Ä‘'Ý””'Ä”–'Ä–'•”RefÁ™'Ä™'ª›' ›'ó™'NumberÁž' ž'ó” ¡'Ä” £'Ä£'Ž” ¦'Ä” ¨'Ĩ'ñ” «'Ä«'Ý”®'Ä”°'İ'•«SearcherÁ³'¸³'–`³'last_match_endÁ«·'¸·'Ž«º'¸º'ñ«HalfMatchesIterÁ½' ½'¸½'‚½'ó«Â'¸Â'‚Â'ñ« MatchesIterÁÆ' Æ'¸Æ'‚Æ'ó«Ë'¸Ë'‚Ë'ñ« CapturesIterÁÏ' Ï'¸Ï'‚Ï'ó«Ô'¸Ô'‚Ô'ñØ‘ÚØ'StartÁÙ' Ù' Ø'EndÁÜ' Ü' Ø'StartLFÁß' ß' Ø'EndLFÁâ' â' Ø' StartCRLFÁå' å' Ø'EndCRLFÁè' è' Ø' WordAsciiÁë' ë' Ø'WordAsciiNegateÁî' î' Ø' WordUnicodeÁñ' ñ' Ø'WordUnicodeNegateÁô' ô' Ø'WordStartAsciiÁ÷' ÷' Ø' WordEndAsciiÁú' ú' Ø'WordStartUnicodeÁý' ý' Ø'WordEndUnicodeÁ€( €( Ø'WordStartHalfAsciiÁƒ( ƒ( Ø'WordEndHalfAsciiÁ†( †( Ø'WordStartHalfUnicodeÁ‰( ‰( Ø'WordEndHalfUnicodeÁŒ( Œ( Ø Ø �(ŽØ Ø “(ñØ •(ÝØØ˜(•ØLookSetÁš(¼ØØ�(ŽØØ (>Ø¢(ÝØØ¥(•Ø LookSetIterÁ§(ã�Ø©(ŽØ«(ñØ LookMatcherÁ­(linetermÁد(ŽØ±(ñØUnicodeWordBoundaryErrorÁ³( ³(óض(ŽØ¸(ñß THREAD_IDÁº(__rust_std_internal_init_fnÁº( ¼( ½(__RUST_STD_INTERNAL_VALÁ¼( ¿(Ηß CacheLineÁÁ( Á(�Á(óß Å(�Å(ñ² AhoCorasickÁÈ(acÁ²Ê(޲Ì(ñÃÎ�Î( Î(óÐ( ÃÒ(ŽÃÔ(ñÕMemchrÁÖ( Ö(óÕÙ(ŽÕÛ(ñÕMemchr2ÁÝ( Ý(óÝ(ôÕá(ŽÕ ã(ñÕMemchr3Áå( å(óå(ôå(õÕ ê(ŽÕ ì(ñûMemmemÁî(åËûð(Žûò(ñ‹TeddyÁô(searcherÁô( anchored_acÁô( minimum_lenÁ‹ø(Ž‹ú(ñ± PrefilterÁü(Ѷü(åèü(Öï±€)ޱ‚)ñ±ChoiceÁ„)¢™…) …)ó„)×™ˆ) ˆ)ó„)•š‹) ‹)ó„)ÛšŽ) Ž)ó„)Œ›‘) ‘)ó„)Î�”) ”)ó„)¶˜—) —)ó±š)ޱœ)ñÙ NonMaxUsizeÁž) ž)óÙÙ¢)ŽÙÙ¥)ÝÙ§)ƨ)ÿÙÙ«)•Ù­)¤ Ù¯)–Ù SmallIndexÁ±) ±)óÙÙµ)ŽÙÙ¸)ñÙº)>Ù¼)ÝÙ ¾)Æ¿)ÿÙ!Ù"Â)•Ù#Ä)¤ Ù$Æ)–ÙSmallIndexErrorÁÈ)õEÙ%Ê)ŽÙ&Ì)ñÙ'Î)ÝÙ(Ù)Ñ)•ÙSmallIndexIterÁÓ)rngÁÙ*Õ)ŽÙ+×)ñÙ PatternIDÁÙ) Ù)óÙ,Ù-Ý)ŽÙ.Ù/à)>Ù0â)ÝÙ1ä)Æå)ÿÙ2Ù3è)•Ù4ê)¤ Ù5ì)–ÙStateIDÁî) î)óÙ6Ù7ò)ŽÙ8Ù9õ)>Ù:÷)ÝÙ;ù)Æú)ÿÙ<Ù=ý)•Ù>ÿ)¤ Ù?�*–Ù@ƒ*€Dƒ*õ&ƒ*œòƒ*¨òƒ*˜ ƒ*¢ ƒ*Äòƒ*Œ´ƒ*Ùòƒ*çòƒ*õòƒ*ƒóƒ*“ó�* ƒ*­ó’* ƒ*Ñó”* ƒ*�ÙA—*ñÙB™*�™*´™*÷ÙC�*��*øÙD *� *´ *÷ÙE¤*�¤*øÙF§*”ÙG©*ßô©*øÙH¬*ßô¬*øÙI¯*ßô¯*øÙJ²*ßô²*øÙKµ*õEÙLÙM¸*ñÙNº*˜ ÙO¼*Ÿ¼*¥ ÙP¿*…¿*˜ ÙQÂ*…Â*ŸÂ*¥ ÙPatternIDErrorÁÆ* Æ*óÙRÉ*ŽÙSË*ñÙTÍ*ÝÙUÙVÐ*•Ù PatternIDIterÁÒ* Ò*óÙWÕ*ŽÙX×*ñÙWithPatternIDIterÁÙ*…Ù*ÛËÙ*idsÁÙYÝ*…Ý*ŽÙZà*…à*ñÙ[ã*€Dã*õ&ã*œòã*¨òã*˜ ã*¢ ã*Äòã*Œ´ã*Ùòã*çòã*õòã*ƒóã*“óð* ã*­óò* ã*Ñóô* ã*�Ù\÷*ñÙ]ù*�ù*´ù*÷Ù^ý*�ý*øÙ_€+�€+´€+÷Ù`„+�„+øÙa‡+”Ùb‰+ßô‰+øÙcŒ+ßôŒ+øÙd�+ßô�+øÙe’+ßô’+øÙf•+õEÙgÙh˜+ñÙiš+˜ Ùjœ+Ÿœ+¥ ÙkŸ+…Ÿ+˜ Ùl¢+…¢+Ÿ¢+¥ Ù StateIDErrorÁ¦+ ¦+óÙm©+ŽÙn«+ñÙo­+ÝÙpÙq°+•Ù StateIDIterÁ²+ ²+óÙrµ+ŽÙs·+ñÙWithStateIDIterÁ¹+…¹+Û˹+ì¨Ùt½+…½+ŽÙuÀ+…À+ñ£çÃ+Ð÷Ã+ã÷£Æ+Ž£È+ñ£ StartByteMapÁÊ+ƒ Ë+ £Í+Ž£ž�Ï+ NonWordByteÁÐ+ Ð+ Ï+WordByteÁÓ+ Ó+ Ï+TextÁÖ+ Ö+ Ï+LineLFÁÙ+ Ù+ Ï+LineCRÁÜ+ Ü+ Ï+CustomLineTerminatorÁß+ ß+ ££ã+Ž£ £ æ+ñ£ è+Ý£ £ ë+•Æçí+°úí+Èúí+Úúí+öúí+»eí+Šûí+œûí+µûí+‚�í+Íûí+ßûÆÆú+ŽÆÆý+ñôAlignAsÁÿ+þÿ+�ÿ+_alignÁ‚, ÿ+öÆô…,þ…,�…,ñôSerializeErrorÁ‰,whatÁô ‹,ñôDeserializeErrorÁ�, �,óô �,ñôDeserializeErrorKindÁ’,GenericÁ“,«°’,BufferTooSmallÁ•,dz’, InvalidUsizeÁ—,dz’,VersionMismatchÁ™,§™,foundÁ’,EndianMismatchÁœ,§œ,¡µ’,AlignmentMismatchÁŸ,©Ÿ,Ÿ’, LabelMismatchÁ¢,§’,ArithmeticOverflowÁ¤,dz’,¦¡¦,¬º¦,dz’,µ¢©,¬º©,dzô ¬,ñ¡ ó´Ù¯, ¯,óó ²,Žó ´,Ýó ¶,Æ·,ÿóóº,•ó¼,¤ ó¾,–óStateBuilderEmptyÁÀ, À,óóÃ,ŽóÅ,ñóStateBuilderMatchesÁÇ, Ç,óóÊ,ŽóStateBuilderNFAÁÌ,½ Ì,prev_nfa_state_idÁóÏ,ŽÏ—Ñ,¸Ñ,ý�Ñ,ÅœÑ,ã÷Ñ,÷œÏ×,¸×,ŽÏSpanÁÚ,‚Ú,’ÏÏÞ,ŽÏÏá,ÝÏã,Æä,ÿÏÏç,•Ï HalfMatchÁé,îNé,Ñ Ï Ï!í,ŽÏ"Ï#ð,ñÏ$ò,ÝÏ%ô,Æõ,ÿÏ&Ï'ø,•ÏÕÛú,îNú,ÅœÏ(Ï)þ,ŽÏ*Ï+�-ñÏ,ƒ-ÝÏ-…-Ɔ-ÿÏ.Ï/‰-•Ï PatternSetÁ‹-¶‹-whichÁÏ0Ž-ŽÏ1�-ñÏ2’-ÝÏ3Ï4•-•ÏPatternSetInsertErrorÁ—-õE—-ïŒÏ5š-ŽÏ6œ-ñÏPatternSetIterÁž-Äž-ÛËÏ7¡-Ä¡-ŽÏ8¤-Ĥ-ñÏAnchoredÁ§-NoÁ¨- §-YesÁª- §-PatternÁ¬- ¬-óÏ9Ï:°-ŽÏ;Ï<³-ñÏ=µ-ÝÏ>Ï?¸-•Ï MatchKindÁº-¡Þ»- Ï@ÏA¾-ŽÏBÏCÁ->ÏDÃ-ñÏEÅ-ÝÏFÏGÈ-•º- LeftmostFirstÁÊ- Ï MatchErrorÁÌ- Ì-óÏHÏ-ŽÏIÑ-ñÏJÓ-ÝÏKÏLÖ-•ÏMatchErrorKindÁØ-‹»Ù-—»Ù-Ñ Ø-GaveUpÁÜ-Ñ Ø-HaystackTooLongÁÞ-¶Ø-£»à-¾»ÏMâ-ŽÏNä-ñÏOæ-ÝÏPÏQé-•É SparseSetsÁë-set1Áë-set2ÁÉî-ŽÉð-ñÉ SparseSetÁò-¶ò-à ò-° Éö-ŽÉ SparseSetIterÁø- ø-Äø-óÉü-Äü-ñø8ú8ú8ú8788898:8;8�8ƒ8ƒ8ƒ8>8>8?8?8A8B8C8D8‘8‘8‘8I8J8J8L8M8N8P8ž8R8S8Z8[8\8\8]8^8_8`8a8b8c8d8g8g8j8j8m8m8m8p8p8p8p8p8q8q8q8q8q8r8r8r8r8r8t8t8t8t8t8u8u8u8u8u8u8w8x8y8z8{8|8}8~88€8�8„8„8„8…8…8…8¥8¥8¥8‰8ª8¬8¬8¬8‹8Œ8Œ8�8Ž8�8²8µ8¸8¸8˜8™8š8›8�8�8�8¾8­8­8­8Å8¹8¹8¹8Ì8À8Â8Â8Â8Ñ8Ñ8Ñ8Å8Õ8×8×8×8ê8ì8ì8ì8Ï8Ò8Ò8Ò8Ø8Ù8Ú8Û8ñ8ñ8ñ8Þ8á8á8ã8õ8õ8õ8ç8è8ï8ð8ñ8ò8ÿ8�8�8�8©8ª8°8±8±8²8³8´8µ8¶8·8¸8º8º8º8º8½8½8½8½8À8À8À8À8À8Â8Â8Â8Â8Â8Ä8Ä8Ä8Ä8Ä8Æ8Æ8Ç8Ç8È8È8É8É8Ê8Ê8Ê8Ë8Ë8Ë8Ë8Í8Í8Í8Í8Ï8Ï8Ð8Ð8�8’8’8’8Ò8Ó8Ó8Ô8Õ8Ö8×8Ù8Ú8—8™8™8™8Þ8¢8¢8¢8æ8è8é8ë8í8ï8ð8ñ8ò8ô8ø8ù8ú8û8ü8ý8þ8«8«8«8ƒ8„8…8†8‡8ˆ8‰8Š8Š8‹8‹8Œ8¶8¸8¸8¸8‘8’8Æ8È8È8È8 8¡8¢8£8¤8¥8§8¨8©8ª8«8¬8¬8­8­8­8®8®8¯8Ï8Ñ8Ñ8Ñ8³8³8´8´8¶8·8¸8¹8Ù8Û8Û8Û8Ý8à8à8¼8½8½8½8½8½8½8¿8À8À8ä8æ8æ8æ8ô8ö8ö8ö8Î8Ð8Ð8Ð8ÿ8�8�8�8Ö8Ø8Ø8Ø8†8ˆ8ˆ8ˆ8Þ8Þ8Þ8Ž8‘8‘8‘8•8—8—8›8›8�8�8Ÿ8Ÿ8ê8ë8ì8í8î8ï8ð8ñ8ò8ó8ô8õ8ö8£8¥8¥8¥8§8ª8ª8ø8û8û8û8¯8¯8¯8�8Ž8‘8’8’8”8”8—8—8 8 8 8 8¡8¡8¡8£8¤8¥8»8»8»8«8À8À8À8Â8®8¯8¯8°8±8²8³8´8µ8¶8Æ8È8È8È8¹8¹8º8º8¼8½8¾8¿8Ñ8Ñ8Ñ8Ñ8Ò8Ò8Ò8Ò8Ò8Ö8Ö8Ö8Ö8×8×8×8×8Û8Û8Û8Û8Û8Ü8Ü8Ü8Ü8Ü8Ü8Þ8Þ8Þ8Þ8Þ8à8à8à8à8á8á8á8á8â8â8â8â8â8â8å8å8å8å8å8å8è8è8è8è8Ì8Î8Î8Î8×8Ù8Ù8Ù8ÿ8€8�8†8ˆ8ˆ8ˆ8â8â8â8‹8‹8‹8ç8ç8ç8’8’8’8ë8ë8ë8™8™8™8§8§8§8§8ª8ª8ª8ª8ª8ª8µ8µ8µ8¿8¿8Á8Ä8Ä8Ç8Ç8É8Ê8Ë8Ë8Í8Î8Î8Ï8Ï8Ñ8Ñ8Õ8×8Ù8ð8ð8ð8õ8õ8õ8Ž8�8”8—8š8š8®8®8®8¯8¯8¯8°8°8°8°8±8±8±8±8²8²8²8²8´8´8´8´8µ8µ8µ8µ8¶8¶8¶8¶8¶8·8·8·8·8·8¸8¸8¸8¸8¸8º8»8¼8½8¾8À8Á8Â8Ã8Å8ú8ü8ü8ü8‚8„8„8„8È8È8É8Ê8Ë8Ì8Í8Ï8Ï8Ï8Ð8Ò8Ô8Õ8Õ8Õ8Ž8Ž8Ž8Ù8à8™8™8™8ê8ñ8¢8¢8¢8�8«8«8«8Ž8�8´8´8´8¶8”8•8•8–8Ê8Ì8Ì8Ì8ª8«8¬8­8®8¯8°8±8²8³8´8µ8¶8½8¾8¿8À8Á8Â8Ô8Ö8Ö8Ö8Æ8Æ8Ç8Ç8Ì8Ì8Í8Í8Ñ8Ò8à8à8Ü8Ü8Ü8ã8ã8ä8å8ç8ò8ò8ò8ó8ó8ô8ô8õ8õ8ý8ý8ý8ý8ÿ8ÿ8ÿ8ÿ8ÿ8ÿ8´8µ8¶8·8·8¸8¹8º8º8º8º8»8»8»8»8¼8¼8¼8¼8½8½8½8½8½8¾8¾8¾8¾8¾8¿8¿8¿8ã8æ8æ8æ8Å8Å8Æ8Æ8Æ8Ê8Ë8Ì8Í8Í8Î8Ï8Ð8Ð8Ð8Ð8Ó8Ó8Ó8Ó8Õ8Õ8Õ8Õ8Ö8Ö8Ö8Ö8Ö8×8×8×8×8×8ò8ò8ò8Ù8Ù8Ú8Ú8Ú8Ú8Û8Û8Û8Û8Ü8Ü8Ü8Ü8Ý8Ý8Ý8Ý8Ý8Þ8Þ8Þ8Þ8ß8á8â8ã8ä8ä8å8ç8ê8ê8ê8ê8ë8ë8ë8ë8ì8ì8ì8ì8í8í8í8í8í8î8î8î8î8î8ö8ö8ö8ñ8ñ8ñ8ñ8ó8ô8õ8ö8ö8÷8ø8ù8ù8ù8ù8ú8ú8ú8ú8û8û8û8û8ü8ü8ü8ü8ü8ý8ý8ý8ý8ý8û8û8û8ÿ8ÿ8� 8� 8� 8� 8‚ 8‚ 8‚ 8‚ 8ƒ 8ƒ 8ƒ 8ƒ 8… 8† 8‡ 8ˆ 8ˆ 8‰ 8Š 8‹ 8‹ 8‹ 8‹ 8Œ 8Œ 8Œ 8Œ 8� 8� 8� 8� 8Ž 8Ž 8Ž 8Ž 8Ž 8� 8� 8� 8� 8� 8ƒ 8ƒ 8ƒ 8‘ 8‘ 8“ 8“ 8“ 8“ 8” 8” 8” 8” 8• 8• 8• 8• 8— 8˜ 8™ 8š 8š 8› 8œ 8� 8� 8� 8� 8ž 8ž 8ž 8ž 8Ÿ 8Ÿ 8Ÿ 8Ÿ 8  8  8  8  8  8¡ 8¡ 8¡ 8¡ 8¡ 8¢ 8ˆ 8ˆ 8ˆ 8¼ 8¼ 8½ 8¾ 8� 8� 8� 8À 8À 8Á 8Á 8Á 8Á 8 8 8 8 8 8à 8à 8à 8à 8à 8’ 8” 8” 8” 8Æ 8Æ 8Ç 8É 8É 8™ 8™ 8™ 8Ì 8Ì 8Í 8Î 8Î 8Î 8ž 8ž 8ž 8Ð 8Ð 8Ñ 8Ñ 8Ñ 8Ñ 8Ò 8Ò 8Ò 8Ò 8Ò 8Ó 8£ 8¥ 8¥ 8¥ 8Ö 8Ö 8× 8Ù 8Ù 8ª 8ª 8ª 8Ü 8Ü 8Ý 8Þ 8Þ 8Þ 8ß 8¯ 8¯ 8¯ 8â 8â 8ã 8ã 8ã 8ã 8ã 8ä 8å 8´ 8¶ 8¶ 8¶ 8è 8ê 8ê 8ë 8» 8» 8» 8ï 8ï 8ï 8ð 8ñ 8ñ 8ñ 8ò 8À 8À 8À 8ô 8ô 8ô 8õ 8õ 8õ 8õ 8÷ 8÷ 8÷ 8÷ 8ù 8ù 8ù 8ù 8ú 8ú 8ú 8ú 8ü 8ü 8ü 8ü 8ý 8ý 8ý 8ý 8ý 8Å 8Ç 8Ç 8Ç 8� 8ƒ 8ƒ 8„ 8Ì 8Ì 8Ì 8ˆ 8ˆ 8ˆ 8‰ 8‰ 8‰ 8Š 8‹ 8Ñ 8Ñ 8Ñ 8Ž 8Ž 8Ž 8� 8� 8� 8� 8� 8� 8‘ 8‘ 8‘ 8’ 8’ 8’ 8“ 8“ 8“ 8” 8” 8” 8” 8• 8Ö 8Ö 8Ö 8˜ 8˜ 8™ 8š 8š 8š 8Û 8Û 8Û 8œ 8œ 8� 8� 8� 8� 8à 8â 8â 8â 8  8¢ 8¢ 8£ 8ç 8ç 8ç 8§ 8§ 8¨ 8¨ 8¨ 8© 8ª 8ì 8ì 8ì 8­ 8­ 8® 8® 8® 8¯ 8Í 8Í 8Í 8ñ 8ó 8ó 8ó 8Ò 8Ó 8Õ 8ú 8ü 8ü 8ü 8Ù 8Ù 8Ú 8Ú 8Ü 8Ý 8Þ 8ß 8�!8ƒ!8ƒ!8ƒ!8á 8â 8é 8ê 8ë 8ë 8ì 8í 8î 8ï 8ñ 8ñ 8õ 8õ 8ø 8ø 8ø 8† 8† 8† 8† 8† 8‡ 8‡ 8‡ 8‡ 8‡ 8Œ 8Œ 8Œ 8Œ 8Œ 8� 8� 8� 8� 8� 8� 8� 8� 8� 8� 8‘ 8‘ 8‘ 8‘ 8‘ 8�!8�!8�!8˜ 8�!8�!8�!8Ÿ 8¢!8¤!8¤!8¤!8¢ 8£ 8£ 8¤ 8¥ 8¥ 8¥ 8¥ 8­!8¯!8¯!8¯!8´!8¶!8¶!8¶!8¨ 8© 8ª 8ª 8« 8« 8« 8« 8­ 8Ò!8Ô!8Ô!8Ô!8Ö!8Ù!8Ù!8Ç 8È 8å!8ç!8ç!8ç!8Ë 8Ì 8Í 8Ï 8Ð 8Ñ 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Ü 8Þ 8ß 8à 8á 8â 8ã 8ä 8å 8æ 8ç 8è 8ò!8ô!8ô!8ô!8– 8— 8˜ 8™ 8š 8› 8œ 8� 8ž 8€"8ƒ"8ƒ"8ƒ"8£ 8¤ 8Œ"8Ž"8Ž"8Ž"8§ 8§ 8¨ 8¨ 8ª 8ª 8« 8« 8­ 8® 8° 8° 8´ 8´ 8¹ 8» 8» 8¾ 8À 8À 8À 8Á 8Á 8 8 8à 8à 8Å 8Å 8Æ 8Æ 8È 8È 8É 8É 8Ë 8Ë 8Ì 8Ì 8Í 8Í 8Ï 8Ð 8Ñ 8Ò 8Ó 8Ô 8Õ 8Ö 8× 8Ø 8Ù 8Ú 8Û 8Û 8Ü 8Ý 8Þ 8ß 8”"8—"8—"8—"8Ÿ"8Ÿ"8Ÿ"8¤"8¦"8¦"8¦"8«"8­"8­"8­"8²"8´"8´"8´"8â 8æ 8ç 8ç 8ê 8ë 8ì 8ì 8í 8î 8ï 8ð 8ò 8¸"8º"8º"8º"8Ò"8Ô"8Ô"8Ô"8û 8ü 8† 8ˆ 8ˆ 8ˆ 8Ù"8š 8š 8› 8ž 8ž 8  8  8  8â"8â"8â"8ç"8¥ 8¦ 8§ 8¨ 8© 8¬ 8¬ 8¬ 8ñ"8ñ"8ñ"8° 8÷"8² 8² 8² 8þ"8€#8€#8€#8†#8ˆ#8ˆ#8ˆ#8 8à 8à 8Ä 8Ä 8Å 8�#8’#8’#8’#8˜#8š#8š#8š#8ž#8¡#8¡#8§#8©#8©#8©#8È 8É 8É 8Ì 8Ì 8Í 8°#8ô 8õ 8û 8ü 8ý 8þ 8ÿ 8€8�8‚8ƒ8„8…8†8‡8ˆ8‰8Š8‹8Œ8�8�8�8�8“8”8•8•8–8—8˜8™8™8œ8œ8ž8ž8ž8Þ#8à#8ã#8ã#8 8¡8¢8¢8¤8¤8¤8ç#8é#8é#8é#8ë#8î#8î#8¨8¨8ª8¬8ò#8ô#8ô#8ô#8ö#8ù#8ù#8®8®8°8²8³8€$8ƒ$8…$8…$8‰$8‰$8¹8¹8»8½8¿8¿8¿8�$8�$8�$8Ä8•$8—$8—$8—$8ç8è8é8ž$8 $8 $8 $8í8í8î8î8ð8ñ8ò8ó8¥$8§$8§$8§$8õ8ö8ý8þ8ÿ8ÿ8€8�8‚8„8„8‡8‡8Š8Š8Š8˜8˜8˜8˜8˜8™8™8™8™8™8œ8œ8œ8œ8œ8Ÿ8Ÿ8Ÿ8Ÿ8Ÿ8¡8¡8¡8¡8¡8¢8¢8¢8¢8¢8£8£8£8£8£8£8£8¤8¤8¤8¤8¤8¤8¤8¥8¥8¥8¥8¥8¥8¦8¦8¦8¦8¦8¦8§8§8§8§8§8§8¨8¨8¨8´$8´$8´$8®8Á$8Á$8Á$8µ8Ç$8É$8É$8É$8¸8¹8¹8º8¼8Î$8Ð$8Ð$8Ð$8¾8¿8¿8À8Á8Ö$8Ø$8Ø$8Ø$8Ä8Ä8Æ8Ç8È8É8á$8ã$8ã$8ã$8ì$8ð$8õ$8Û8Ü8Ü8ß8ß8ß8á8â8ã8ä8å8æ8ç8é8ê8ê8î8ú$8ü$8ü$8ü$8�%8ƒ%8ƒ%8ƒ%8Š%8Œ%8Œ%8Œ%8ð8ò8ò8ò8ó8ô8’%8”%8”%8”%8–%8š%8š%8§%8ª%8ª%8ª%8¬%8¯%8¯%8þ8€8€8€8‚8‚8‚8…8…8…8µ%8¸%8»%8»%8½%8½%8¿%8¿%8É%8Ì%8Ï%8Ï%8Ñ%8Ñ%8Ó%8Ó%8¨8¨8¨8Ú%8­8®8®8¯8°8±8²8³8´8µ8¶8·8¸8»8¼8À8À8À8ã%8ã%8ã%8Ä8ì%8ì%8ì%8È8ô%8ô%8ô%8Ì8û%8û%8û%8Ð8€&8‚&8‚&8‚&8Õ8Ö8Ö8×8‡&8Š&8Š&8Š&8Ž&8‘&8‘&8˜&8ž&8¢&8¢&8Û8Ü8Ý8Þ8à8á8â8ã8å8å8è8ê8ê8ê8©&8©&8©&8î8°&8°&8°&8ò8¶&8‰8Š8‹8Œ8�8�8Ž8�8‘8’8’8’8“8“8“8“8–8–8–8—8—8—8—8š8 8§8¨8©8ª8¬8¬8¬8³8³8³8»8»8»8½&8À&8À&8À&8¿8À8Å&8Ç&8Ç&8Ç&8Î8Î8Ð8Ñ8Ó8Ô8Ö8×8Ø8Ù8Ú8Û8Ü8Ý8Ð&8Ð&8Ð&8á8â8å8è8é8ê8Ö&8Ø&8Ø&8Ø&8ç&8é&8é&8é&8ñ8ó8õ8õ8õ8ï&8ò&8ò&8ò&8ü8þ8û&8û&8û&8‡8�'8‹8‹8‹8“8“8“8™8™8™8™8�8�8�8�8‹'8�'8�'8�'8“'8˜'8˜'8¥'8ª'8ª'8ª'8­'8²'8²'8¦8§8¹'8¼'8¼'8¼'8·8·8·8¹8¹8¹8»8»8»8½8½8½8¿8¿8Á8Á8Ã8Ã8Ã8Å8Å8Å8Ç8Ç8Ç8Ô8Ô8Ø8Ü8Ü8Ü8Å'8Å'8Å'8â8â8æ8ò8ò8ö8ú8ú8ú8Î'8Î'8Î'8€8€8„8�8�8�8“8˜8˜8˜8×'8×'8×'8™8™8™8�8¬8±8µ8µ8µ8Î8Ï8Ó8Ó8Ó8×8‘(8”(8”(8”(8–(8™(8™(8ž(8£(8¦(8¦(8è8é8ê8ë8ì8ò8ô8ö8ø8ú8û8ü8ÿ8ÿ8ÿ8ª(8¬(8¬(8¬(8‚8°(8²(8²(8²(8…8†8‡8‡8ˆ8ˆ8‰8‰8Š8Š8‹8‹8�8�8Ž8Ž8�8�8�8�8‘8‘8’8’8“8“8”8”8•8•8–8–8—8—8˜8˜8™8™8š8š8›8›8œ8œ8�8�8ž8ž8·(8¹(8¹(8¹(8¥8¥8¥8©8ª8¿8Ã8Ã8Ã8Î8Ô8Ù8Þ8Þ8Þ8Ç(8Ç(8Ç(8Œ8Ž8�8‘8’8“8—8—8—8£8¤8¥8¦8«8°8°8°8Ë(8Í(8Í(8Í(8¹8¼8½8½8¿8¿8Á8Â8Ó(8Õ(8Õ(8Õ(8Ê8Î8Ï8Ï8Ò8Ò8Ó8Ô8Ú(8Ü(8Ü(8Ü(8Ü8ß8à8à8â8â8ã8ä8â(8ä(8ä(8ä(8æ8ê8ë8ë8í8í8î8ï8ë(8í(8í(8í(8ñ8õ8ö8ö8ø8ø8ù8ú8ñ(8ó(8ó(8ó(8‚8…8†8†8ˆ8ˆ8‰8Š8ù(8û(8û(8û(8’8–8—8—8™8™8œ8ž8�)8ƒ)8ƒ)8ƒ)8¶8»8¼8¿8¿8À8À8Á8Â8Ã8Å8Æ8Æ8Ç8Ç8È8É8Ì8Í8Í8Î8Î8Ï8Ð8›)8�)8�)8�)8Ò8Õ8×8£)8¦)8¨)8¨)8¬)8¬)8®)8®)8°)8°)8å8å8å8¶)8¹)8¹)8¹)8½)8¿)8¿)8Ã)8Ã)8Å)8Å)8Ç)8Ç)8î8ï8ð8ñ8ò8÷8ü8ÿ8ƒ8†8Ë)8Í)8Í)8Í)8Ï)8Ò)8Ò)8–8™8™8™8Ö)8Ø)8Ø)8Ø)8œ8Þ)8ã)8å)8å)8é)8é)8ë)8ë)8í)8í)8ó)8ø)8ú)8ú)8þ)8þ)8€*8€*8‚*8‚*8‹*8Œ*8�*8Ž*8�*8”*8˜*8˜*8˜*8œ*8Ÿ*8£*8¦*8Ê*8Ì*8Ì*8Ì*8Î*8Ñ*8Ñ*8¶*8¹*8¹*8¹*8Ö*8Ø*8Ø*8Ø*8¾*8ß*8â*8â*8â*8Å*8ë*8ì*8í*8î*8ï*8ô*8ø*8ø*8ø*8ü*8ÿ*8ƒ+8†+8ª+8¬+8¬+8¬+8®+8±+8±+8–+8™+8™+8™+8¶+8¸+8¸+8¸+8ž+8¿+8Â+8Â+8Â+8¥+8Ç+8É+8É+8É+8¯8¯8±8±8´8µ8Î+8·8¹8º8¼8¼8½8¿8¿8¿8ä+8ç+8ç+8ç+8é+8ì+8ì+8Ä8Å8Ñ8Ò8Ô8Ô8Õ8Õ8û+8þ+8þ+8þ+8ä8å8æ8ç8è8é8ê8ë8ì8í8î8ï8ï8ð8ð8ñ8ñ8ˆ,8ˆ,8ˆ,8Œ,8Œ,8Œ,8…8…8…8‘,8‘,8‘,8­,8­,8­,8”8”8”8–8—8˜8™8›8ž8 8 8¡8¢8£8¦8§8ª8­8®8°8±8´8µ8·8»8¿8À8Á8Â8Ä8Æ8È8Ð8Ñ8Ò8×8Ø8Ù8Û8Ü8Ý8³,8µ,8·,8·,8»,8»,8½,8½,8¿,8¿,8„8†8†8†8‰8Š8‹8Œ8�8Ž8�8�8‘8“8”8Ä,8Æ,8Æ,8Æ,8˜8™8Ë,8›8›8›8ž8Ÿ8 8¡8£8¤8¥8Ð,8§8§8§8©8«8¬8®8°8±8²8³8º8»8¼8½8¾8¿8À8Á8Â8Ä8Æ8È8É8Ì8Ì8Ì8Ô8Õ8Ö8×8Ø8Ù8Ú8Ü8Þ8ß8à8à8á8â8ã8ä8å8æ8è8è8è8è8í8í8í8î8î8î8ñ8ñ8ñ8ƒ8ƒ8ƒ8ƒ8†8†8†8†8‰8‰8‰8‰8É8Ê8Ë8Ì8Í8Î8Ù,8á8ã8æ8ç8è8é8ê8ë8ì8í8î8ï8ð8ñ8ò8õ8õ8õ8ß,8â,8ä,8ä,8è,8è,8ü8ý8þ8ÿ8€8‚8‚8‚8…8‡8Š8�8�8’8’8î,8ñ,8ñ,8ñ,8ó,8õ,8õ,8ù,8ù,8–8—8ÿ,8‚-8‚-8‚-8„-8†-8†-8Š-8Š-8�8ž8Ÿ8 8¡8¢8£8�-8‘-8‘-8‘-8“-8–-8–-8¦8§8¨8©8ª8«8¬8­8®8›-8�-8�-8�-8±8±8±8£-8¦-8¦-8¦-8µ8¶8¹8±-8´-8´-8´-8¶-8¹-8¹-8»8¼8¿-8Ä-8Ä-8Ä-8Æ-8É-8É-8¾8Ð-8Ò-8Ò-8Ò-8Ô-8×-8×-8Á8ã-8å-8å-8å-8ç-8ê-8ê-8È8È8È8ï-8ñ-8ñ-8ñ-8Ð8Ñ8Ò8Ó8÷-8Ö8×8Ø8Ù8Ú8Û8Ü8Ý8Þ8à8à8à8þ-8þ-8þ-8ä8í8î8ð8´ 8׳ĞÏ�‘™£¯·Á…òòçó� ô¡ õ¿ öÒ C9?”}ܵ¸ŸgÑæöÑæ…ýý“¨þÉ ÿ± g§IÔ�¯Ÿg½çŸg„„ɨ †Ò ‡ð¨ ˆŠ© ‰Ÿ© Ь© ‹¸© ŒÉ �ß' Žש ÓààƒŸ»Å°Ä…’’ù© “É ”ß' •”ª –¡ª —¯ª ˜ש ™à šó ›ܪ œñª qjáºj>%Ÿg¡éŸgŸŸ—«¡ÛË ¢Ä« +¾›>mó ÌÄÄQÊê…¦¦â«§É! ¨ÔÁ °qhlçc?sŸg�눭­®—¬¯ó  róÔ  Iº…éëù éëÌéë�Çéë÷±éëéëŸgé눹¹ºå¬»ó  –Èí8{c&Ö…êìù êìŸgêìˆÀÀÁœ­Âó  à^–:t½�…Äíù ÄíŸgÄíˆÇÇÈÌ­Éó  $zNšË{Œ'…žîù žîŸgžîŸgÎÎù­Ï©& ¡¼·"޾ÌÄQøî…ÒÒ�®Ó¦ b÷­±Ñs(ÒŸg¸ï…ØÙÚä®Ûó ÜÝü®Þó ß•¯àª¯ ᷯ⪯ ãׯä¢Ô å÷¯æª¯ ç™°è«° GÆ ‹ŸéŠÜŸgøï�¸ï¤g¸ïŸgííΰîƒ Ôïæ°ÔŽ O3²r/Ÿgòò�±óóÔ Âá4׬³ïסé…ööù©÷Éûøß'ûùóûúʱûûשûüä±ûýç:ûPrlÁÃègŸgïò…‚‚â« ƒž²û„¡ªû…œ¡û†½²û‡ѲûˆŸ©û‰é²ûІ³û‹™³ûŒì2û�»³ûŽѳû´¼C9.ߟgûó…““û³”‚û•™´û{dƒRTËDŸgËõŸgšš�Ñ�ÒûžóAû× Ó¯�ëêÂ3Ì3Ÿg££ƒµ¦Òû§óAû²õ/ଆɯÂ3Ì3…¬­®­¯îµ°ˆCû±ƒû²³Œ¶´óû~´¸•�“ÝWŸgµ÷…¹¹ç º�û»Ѷû¼¡û½¿û¾Ÿ:û¿ä±ûÀÈ:ûÁç:ûÂý:ûÞ;ûÄ¿;ûýªÜ²_•ùŸg¯øö¯ø…ËË“¨ÌÉûͱû9ï�nuèC Ÿgõù…ÒÒ� Ó†¸ÔˆCÕ™´Ö¢¸×º¸HsH¹SžJŸgÂúÌÂú�ÇÂú÷±ÂúÂú…áá�®â¦ÃÎið±dÓ0ŸgØû…çèéä®êóÃë̹ìí¹Ãíü¹ÃךּÃðñ·ºòóÃZíÊ”»¶‹FŸg™ü�Øû¤gØû…÷øâ«ù¬ºú‹»û—»ü£»ý¾»ÿa�MÙoé-ŸgÒý�Òý¤gÒý…‚‚ƒä»„óà ڪ¥âù ;ŸgÕþ�Õþ¤gÕþˆ‰‰Š�¼‹óß 49߯ií…°ÿù °ÿŸg°ÿö°ÿ̰ÿûh°ÿ�ǰÿ÷±°ÿ°ÿ¯²°ÿ°ÿí°ÿ…  »½¡õEßndMÚ…Ÿgã€Ìã€�Çã€÷±ã€ã€�〤g〟g««”¾¬­Hü­¼HüõÈÂùdoŸg°°¾¾´é¾üµóAü¶ÛËüK}ŒgÒÊbæGÌ3¸ÄQ£‚Ÿg¼¼â«½­Hü¾¼HüØ�oýQœÁ…�ƒ…ÃÓ¨ÄÒüªA8ŒŸg݃ö݃…ÉÉ�®Ê¦öÊ—]&­�Ÿg©„…ÏлÀѾ¾öÒ¬ºöÓÔä®ÕóöÁ}=R'W�öŸgê„�©„¤g©„ŸgÚÛÜ�ÁÝóÞß»Áàó]Óšl ¶I��ì…¤gì…¬ì…Ì-Ì-Í-ÛÀÎ-óÏ ÁdSjj©ÓŸgããäáÁåóö 拎¦6%8�•‡¤g•‡¬ì…•‡Ÿgèè–ÂéÑ ö”?‰Ï†n›j�ô‡¤gô‡¬ì…ô‡¬ô‡Û†Ÿgì씾íÊÂÛîÊÞÛ‹(¥&1CŸgññëÂòùÂÛó†ÃÛQ™ó=eI,…Þˆ…öö÷ŸÃøóÛ ?ÿ¾œÊcÙŸgñ‰…ýý×ÃþÉÛÿµ^Û€Â^ÛÝH}çç¹äŸg¶ŠŸg……¾¾ˆé¾Û‰óAÛŠÛËÛ@ZN·¼�¢mæG¸ÄQ�‹¼T�‹Ÿg��ëÄ’é¾Û“óAÛ”ɾÛ•ÛËÛac ›‹ýqæG¸ÄQ�Œ¼T�ŒŸgššÒÅ�åËÛž¯Û b…a®æG¸ÄQ€�¼T€�Ÿg££�Ʀ»ÆÛ§ª¯Û® »ää-çæG¸ÄQå�¼Tå�Ÿg¬¬â«­øÆ®ˆ¦¯ÿe°ë±ª+²«ÇöÏ‚5×�è…ËŽ…··ç¸�Û¹ócÛºïÇÛ»ѶÛ¼£dÛ½¹dÛ¾ÏdÛ¿édÛÀª+ÛÁÒÛ†eÛÜeÛÄëÛÅÿeÛÆ¿ÛÇ»eÛÈÒeÛñhåÑ%ŠÕŸgÅ�öÅ�…ÏÏ“¨ÐÉÛÑ™OÛÒ¤OÛ5$|Áir°ŸgÓ‘Ÿg××ÐÉØ¹RÙѶÚ÷ÉŒUíë8°­®…ÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ŒŸgù’³ù’ŸgççâÊ è†Ã‚éѶ‚êß'‚ëˆË‚숦‚íÿe‚îë‚ïª+‚ðÒ‚§¶°szÒlճؓŸgóóÌËôû‚ÿŒëò¸—þ³ý”Ÿg÷÷øËøû‚ùѶ‚ë­H‚L=-³³¾•Ÿgüü«Ìýû‚þÇÌ‚ÿˆË‚€ ª+‚� Ò‚ºPRý®ð³Œ–Ÿg„ „ … ý̆ ó£  V>N ièàŸg‰ ‰ Š ¥Í‹ ó£  Ã!`Á­¶Â…Ž Ž � ÓÍ� ó£  Î~‚Lî“mŸgó—Ÿg• • – �Η ó£  FV9÷åi>Ÿgš š › ÁΜ ó£  êäW!â”D…Ÿ Ÿ   ûΡ ó£  W´Mï‚­Ÿg¬™Ÿg¦ ¦ § ÁϨ ó£  D,%L�qŸg« « ¬ êÏ­ ó£  ³ÖXöW´B…° ° ± ™Ð² ó£  ¤©‚À­…xòŸg嚟g· · ¸ Ôй ó£  çJÛ˜£ŠŸg¼ ¼ ½ üо ó£  SŒ¿çðÜ�…Á Á  ªÑà ó£  5ÆFÃüóߟgžœŸgÈ È É ù©Ê ó£  •t}bÓLxøŸgÍ Í Î ‡ÒÏ ó£  Z5îÓõŸzºŸgÒ Ò Ó ²ÒÔ ó£  #š7õíìÞŸg× × Ø áÒÙ ó£  yÔ …¸­ù ¸­Ÿg¸­Ÿg˜"˜"½àš"Öé ›"ƒé œ"´é Q¤iC…›Ä… " "†á¡"—áé ¢"§áé çkêFýr&\Ÿgí®…§"§"Óá¨"ž²é ©"¯é ¢J–c!q [Ÿg¼¯…®"®"Žâ¯"‚é °"’é ¿þ§ä°Á‹íŸgа…µ"µ"�®¶"¦ó ÛRƒÜ&·ÂaŸg×°…»"¼"½"»À¾"óó ¿"À"œãÁ"óó Â"Ã"ü®Ä"óó Å"·¯Æ"ü¹ó Ç"ª¯ó È"•¯É"ü¹ó Ê"ª¯ó Ë"÷¯Ì"ª¯ó Í"—äÎ"÷ó Ï"Ð"ºä…­ Ë–Û’;Ÿg˜±�×°¤g×°…Õ"Õ"ôäÖ"œ¡‰ ×"¦Þ‰ Ò#:͸ ÙŸg¿³ŸgÚ"Ú"‡ØÜ"ò›‰ Ý"þÙ‰ Þ"C‰ ß"° ‰ é�Ÿ‘hŒÑ Ä…ã"ã"´Ùä"þÙ‰ å"ò›‰ ùÚH•´Pvaöï´Ÿgï´Ÿgê"ê"¡æì"þÙ‰ í"ò›‰ î"Òæ‰  4b;ÍýB2ÄÄQɵˆò"ò"—¬ó"—»‰ ô"¥ ‰ _ÀÖ3j&`K…«¶ù «¶Ÿg«¶…ù"ù"¦çú"™³ û" ü"ƒ ³ )�ÓÊsÇáŸg�·…�#�#ïç‚#™³ ƒ#�è³ „#޳ bjªäø€wNŸgé·öé·…‹#‹#ÈèŒ#™³ �# Ž#ƒ ³ ̾hZŸgθ…“#“#�é”#”•#‚–#’¿5ìNMÊ\Ÿg¨¹ö¨¹Ì¨¹�Ǩ¹÷±¨¹¨¹…¢#¢#‚ê£#™³ ¤#�è³ ¥#޳ x¯WøBwŸgªºöªº…¬#¬#­#ä®®#óÎ  Ô;úRéüŽŸg�»ö±#±#ûê²#œ¡Î ³#À Î ´#Ö Î µ#òÎ ¶#Ö]Î ·#ö Î ¸#¿Î ¹#²¡Î º#šΠ»#‚�Î ¼#¼HÎ ½#¼�Î ¾#—¢Î ¿#«¢Î À#‚ìÎ ¥&¼p_�˘ŸgÔ»…Ã# Ä#ÖÙÅ#ž²Æ#Ç#ðÙÈ#óÉ#Ê#ÓìË#óÌ#‘ÚÍ#¢ÔÎ#¥ Ï#ùÐ#˜ÛÑ#˜íÒ#«íÓ#·íÔ#`Õ#¥ Ö#õ$×#ÊÚØ#ùÀÙ#Ú#»ÁÛ#ÕÛÜ#õ$^! Ù ŸÌȽ�ÇȽ÷±ȽȽŸgȽ…ä#ä#·îå#þÙº ÑB›ÿ¢Ÿg‘ÀÌ‘À�Ç‘À÷±‘À‘À…ï#ï#’ïð#þÙ:wÑÈú¥°†Ÿg÷ÀÌ÷À�Ç÷À÷±÷À÷Àˆú#ú#—¬û#‚ü#’ý#¥ {”I{õõ¼…ÝÁù ÝÁÌÝÁûhÝÁ�ÇÝÁ÷±ÝÁÝÁŸgÝÁŸgŠ$Š$ØðŒ$ÛËÎ �$üðÎ ÿsÁ­ËNœXÄÄQõÂ…‘$‘$ç’$�Å“$ѶŬOÿ,ŠÇyŸgÊÃöÊÃ…š$š$“¨›$ÉÅœ$±ÅB­´M‰ÚŸg£Ä…¡$¡$ýÌ¢$ÉÅ£$ß'ÅÃ~à+[„íwŸgðÄŸg¨$¨$¾¾¬$é¾Å­$óAÅ®$ɾů$ÛËÅ6·¡I yæGÌ3¸ÄQ½ÅŸgµ$µ$ëĹ$é¾Åº$óAÅ»$ɾż$ÛËÅÆçìs};"™æGÌ3¸ÄQ·Æ…Â$Â$â«Ã$Ÿ©ÅÄ$ªôÅÅ$¥ ÅG˜xa®ƒªŸg±Ç…Ê$Ê$ØôË$ã�ÅÌ$õôÅ–€'{rÊÌŸgŒÈ…Ñ$Ñ$¡õÒ$”ªÅÓ$»õÅÔ$ÒõÅI¥ ’olb¶ŸgÛÈ…Ù$Ú$Û$›öÜ$óÅÝ$´ØÞ$ùÀÅß$Ñ Åȹ°SH^jŸg·É…ä$ä$ëöå$œ¡Êæ$…÷Êç$‘÷Êè$ÿ¸Êé$¬÷Êê$¾÷Ê+G÷^¡…í$í$´Ùî$þÙÊW çß¿L…ñ$ñ$—¬ò$ÙœÊó$�øÊšX Njºñª…ö$ö$¬ø÷$¼øÊø$ÊøÊ¿áÈjžrUSŸg•Ì…ý$ý$òøþ$Š#Êÿ$ŠùÊ;2Án7ãtâŸgäÌ…„%„%°ù…%Š#ʆ%³±Êˆ%¶ÊJÏg¼ò!ÁŸg²Í…�%�%ÒÅŽ%ƒúÊ�%¶Êì)ý»›gèŸgŒÎÌŒÎ�ÇŒÎ÷±ŒÎŒÎˆ›%œ%�%òúž%óÊŸ% %Šû¡%óÊ¢%£%¢û¤%óÊ(¶ü0Ê—Ä…�Ïù �ÏŸg�ÏÌ�Ï�Ç�Ï÷±�Ï�ÏŸg¢ÊŸgšËŸgÑˈ°%°%±%þû²%ó– ZF¦°»�…ÞÐù ÞÐÌÞÐ�ÇÞÐ÷±ÞÐÞЯ²ÞÐÞÐíÞЈÀ%Á%Â%ë–Ã%ó–Ä%Å%�ýÆ%ó–`÷8>Žsðç…ðÑù ðÑÌðÑ�ÇðÑ÷±ðÑðѯ²ðÑðÑíðÑŸgÞЈÔ%Ô%Õ%õýÖ%ó– ‚âkPWpu…ªÓù ªÓöªÓŸgªÓŸgÝ%Ý%¶þß%ש–à%Ÿ–!´ã ÅÒTÄÄQ�ÔŸgä%ä%ùþæ%ש–ç%ªÿ–è%ºÿ–é%Êÿ–”º¥�F mÄÄQäÔŸgí%í%ñÿï%ש–ð%›€–ñ%—»–.´` &-xÄÄQÓÕŸgõ%õ%Æ€÷%¶¶–ø%Ùœ–ï{“ò yªÄÄQµÖ…ü%ü%ý%“�þ%ó– Y[}ýE?ÇOŸgŠ×öŠ×ˆƒ&ƒ&Î�„&¼–³o¹Y"<Ð…Ú×ù ÚןgÚ×öÚ×ÌÚ×�ÇÚ×÷±Ú×Ú׈’&’&“&´‚”&ó– ŒèT&ï¬ö÷…ãØù ãØöãØÌãØ�ÇãØ÷±ãØãØŸgãØŸg£&£& ƒ¥&ã�–¦&˜–™B¡½¢Ùy%ÄÄQðÙŸgª&ª&წ&ã�–­&˜–¹uÒöÙÄÄQÄÚ…±&±&œã²&Ö]ô³&¾¾ô´&©&ô£Ùº¸EüŸg˜ÛŸg­­ž¾¯¾¾ô°ɾôK—� ~+ëÄŸg´´µê¾·óô¸ôô I �î/÷hÄ…·&·&Ö„¹&ɾôº&ƒ ôCkŠË@Õœ2ÄŸgˆÝÄQˆÝŽQˆÝ¼TˆÝ…Á&Á&Â&´…Ã&óô +É@Ž@ÛwSŸgýÝöýÝŸgÊ&Ê&ø…Ë&ކôÌ&¡†ôÍ&¶†ôÎ&‚ìôdÓ4Jš[MºöÍÞ…Ó&Ó&í†Ô&¦ô<8/Æ^“–OŸg¶ß…Ù&Ú&·¯Û&¬ºôÜ&чÝ&îNôÞ&í¹ôß&÷‡à&îNôá&”ˆâ&îNôã&¶ˆä&îNôå&‚ ô¿&®VÇ�]Ÿg÷ß�¶ß¤g¶ß…ê&ê&ñˆì&ÛËô#Ã/6$ÛÄŸgÌáÄQÌáŽQÌá¼TÌáŸgó&ó&ɉõ&Ö]ôö&ò‰ô÷&þ‰ôø&ƒ ôªõ*ßÿçÅÄÄQµâˆü&ü&ý&®Šþ&ó ¶©zßr†A…¢ãù ¢ãŸg¢ãŸg��Ž®Å�ó ׫*YOn! Ĉƒ'ƒ'㊅'ýŠ”†'’”Mj'Õ÷É«AÄ…·äù ·äŸg·äÌ·ä�Ç·ä÷±·ä·äˆ™'›'œ'ª�'ó”ž'Ÿ'³Œ 'ó”˜qûî_†`íÄ…Èåù ÈåŸgÈåÌÈå�ÇÈå÷±ÈåÈå¬Èå Ĭ™'›'œ'ª�'ó”ž'Ÿ'³Œ 'ó”˜qûî_†`í…³'³'É�µ'–`«¶'é�«RU6m©ü\>¸ŸgÛçÄQÉɱËÌÛË«ÍåË«4¡ŽnyP°G¸‚Ÿg¯èŸg½'½'¾'©ŽÁ'ó« Ûì�CÆÒ2®¸òèÄQŠéÄQçç¶ÍêÛË«ëåË«F<Ħt¾¦ ѦÒ¦üð¥bRþï¼�¦²Ý<û¥¨çýçËîNPÃŒéñŒÁ½ç”½çšt ­d ­ÃŒü ­#T¯­ ?µ“JDº­¤¯­ È­É­ü̬}Sþï¼þ¬§òD묨çǽçϨ QÃŒîùŽÇ½ç•½ç›lÉÎ\ÉÎ 2ÜÎXü¥Î7Ñæ4¸ÎØ�WtÓ×dÓ× =ç×Yü­×:½ç<Á×¼‘WD©Ü�»¬©ÜT²Ü „0d²Üì©Ü,¿Ü †ýÝH<¿Üü›Ü,l›Ü †I"ÍÜZüçÛf˜ÛDˆÜ‘ý,þÛýÝ� ýÝÅ�ùä'Lµ’êà’Å�“œ„®ßT®ß ‹$¹ß$Äß[ü€ßD�ë,žß‘ý,”ß 1¸”wŒ»ë,Áë Œ,»ë$Çë\ÁëÓë\ü„ëO°ë‘ý,—ë �ë,žëy!óA R¼•£dÆìÑæØì]ü˜ì@ŠÜ<´ì‘ý,ªì 1LÇí�»Öí^üŸí7�ù$¸í‘ý,®í 1t®ï<³ï ^$®ïL³ïä®ï\½ï ü Fl½ïÐï_ü�ïO,žï‘ý,”ï�ùŽ8¼˜«é˜„T’ò³…„’ò�ò éCéë�þ8,�òt¦ò<«ò b$¦òL«òü’ò"ºò`üçñS,‚ò‘ý,øñ¨¦ŠÇ„"F�šÔš§ŒºÿÑÿaüŒÿE,ªÿ‘ý, ÿ 0d‘‹£‹büèŠ;,�‹‘ý,÷Š 0t±�<¶�š$±�L¶�œ¬� ¬�Å�cü„�A,œ�‘ý,’�…7š¢Tᓳ…„á“ì“�š.,쓼ô“¬ô“ Ùéë üá“*\š”•öŒš”¦” éCÇ�þ8,¦”¤®””®” ÙÇ  üš”( üá“aÈ”dü’“¶ ,°“‘ý,¦“à5¦ŠU~ݦýü¹In�š�¯Ÿ_þŸ± ë dÆ­$Ì­ «…Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa,Æ­4Ì­ÜÆ­DÓ­ à§$Ü­ tÓ­,÷­¤÷­dý­ ï,tý­+ ‰#ñ|] )#Â}] !#«}] ù#ñ|`],©® l¼® §-ü©®!d¯® è B 7 ܯ®4û®<ƒ¯ g¯¢ řǙș­É™Ê™àË™óG*¤�R{9 ¯€u  •¦üÞ®-„ã® q$Þ®,ô®Äº üã®(üÞ®64Œ¯ Ó_řǙș­É™Ê™àË™óG*¤�R{9 ›†Û†¨ DŒ¯w üÞ®@<•¯ êW›† £ L•¯¤¯gü¹¬ëü¶­î"$§­‘ý,ꬔ–,ù¬¯¢,”­µ¢Lº­µ¢ÊlØ¥ µ¢ d�®Y µ¢‹Ø¥„ ܧmܧvÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwܧÛ†ø©·ú¦±’¦ºóA–` –`d©¢áµ£\€¤É¥W•§’Ö§XÛ¨Úˆ¯ •¦HXgË’¦u”¦F…0d¹Å$¿Å©¢,¹Å4¿Å,ÛŤÛÅdáÅ€¤(táÅ'‰$ñ|])$Â}] !$«}] ù$ñ|`],�Æ l Æ §-ü�Æ!d“ÆÉ¥ > 3 Ü“ÆtÅÆ<ÊÆ¼˜$ÅÆLÊÆäÅÆ\ÔÆé˜C  lÔÆüÅÆ!   åÆ'  $†Ç Å™¯€$ŒÇ Å™¯€d…Ç •¦4ÖÇTÞÇú¦ü¹Ç0„¾Ç•§$¹Ç,ÏÇZP ü¾Ç+ü¹Ç94êÇÖ§X DêÇøÜ ¹Ç:  �%ܧG %*6ü¹Ç:m›† “È D�È% /ÓÝ òÇ �%řǙș­É™Ê™àË™óG*¤�R{9 ‹¢Å™Ç™È™­É™Ê™àË™óG*¤�R{9 Ïï2Ø´¬-Œ Œ�È4–È øW¯€9D–ȼ�ÈŸÈ ãI,ŸÈ ÂÈ " D¼È #"% #/"J !"Œ¼È 4ÅÈÚµ!q DÅȼ¼È ÎÈж @,ÎÈœýÈ % Ú,üíÈ$ TíÈ ™ÅžøÈ%C$/üèÈ* Å™‹¢$ê-t²É<·É¼˜$²É'L·ÉܲÉTÁɵ’'C&dÁÉÌçÉ ŒíÉ Û&,çÉ(œíÉ$ŸÊ * Å™¯€ù%„ ! ±%„  šD•¦*;(L¥Ê)04àÊ /TèÊ 1)  ê"…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ•¦�þ1h0.qüÃÊ0 „ÈÊ•§$ÃÊ,ÙÊ/¯0¥..üÈÊ+üÃÊ9 4ôÊÖ§.Y-.DôÊøÞ ÃÊ:  ·²-B, . % 2,1 2!"üÃÊ: 3,m›†+3,“Ë8)™Ë;+t™ËD�Ë ‹*;*:$.T�Ë´ß üʉ´�Ø´#.Ú ´Ì )-”™Ë9: ªË¤˜Ë ‘ýçº8Í9I7%.,Ì“Ë67ü“Ë"4­ËÚµ6*5&.D­Ëü“Ë(¶Ëж5C4'.,¶Ë,ÏË@)ÕËD+tÕËDÙËÁ½D(C(.TÙË”ÕËBC æË´ÕËAB êËÄÔË;@¦A??)."ìÏË>?üÏË&4íËÚµ>*=*.DíËüÏË,öËж=C<+.,öËœšÌF Ú,4<üŠÌ$TŠÌ™¸+•ÌF=E,.*ü…Ì* Å™‹¢EV )-µÌr )/ü§ÄŽjü©ÅŒ_ üõƨüŸÇþÎÕÜlü�Èœü²Èk ü¦É�ü×ÉÞ üŠÊ« ü¹Êü H OV Ôü‡Ë®üÅËpG�´l‘Å‘ý,ÔÄ”–,ãį¢,þĵ¢L­ÅF Ø¥Ù ø©ó dñÅ0 –ª_ Ø¥X Ç ö �ù+ •¦LùÆ•¦Ä •¦´ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´›†C ܧv Àª¿ ø©ú ú¦ô  êÅ £ ›†5 ,…ȯ€ô•¦ ? ( ¶È ¯€N•¦±×À‹¢Åž(ã“,ªÉ�ùÂLÛÉ çºLŽÊ •¦_›†½Ê •Æ0ܧdÀª®ø©>ú¦8 çºD¯›†/ ,‹Ë¯€*•¦E •¦‚ çº=¼- ›†JÉ˯€[•¦v»É¦ÇÉAÝ 9ãÉS‹¢0ÅžUèóAë–`î–`ñ©&�¾¾£ÇÆ § < Ø´ŽC ‚ ’ó ginfoÁÆ & slots_lenÁÈ (©&É )¾¾Â+Æ :² Ø´ŽÄ3‚™4’U<Ã#©¢Ï€¤›É¥Þ¼˜¶é˜‘•§Á Ö§ˆ ·²e ‰´l ÚµÐ Š¶§ Úµ жë ™¸¯ ¼˜X µ’3 ʹ ”ºÑ Ẕ •§# Ö§é·²ÅÁ½D‰´Óçºù;ÊÚµŽжjÁ½(;½Úµ‹жg™¸)çº8çº? dôÜ$úÜ©¢,ôÜ4úÜ,–ݤ–ÝdœÝ€¤(tœÝ' ‰&ñ|] )&Â}] !&«}] ù&ñ|`],ÈÝ lÛÝ §-üÈÝ!dÎÝÉ¥ > 3 ÜÎÝ4”ÞüýÝ$T‚Þ p$ýÝ,�Þ:$œÞü‚ÞüýÝ-4¢Þ Ó_Û†e  D¢Þ±ÞmüÒÛßüäÜÍÙÜ‘ý,ƒÜ”–,’ܯ¢,­Ü ˜Û$¿Üµ¢LèÜeØ¥øø©d¬ÝO–ª~Ø¥wçÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÛ†…ø©ŸãóAå–`çɾç–`éM©¢€¤éÉ¥,¥ÑõéѸ „‡ˆLŒˆ ª$‡ˆ\Œˆüã‡5„臕§$ã‡,ù‡,€ˆ^üè‡0øà ã‡6  �%Àª`%*6Iüã‡6 mܧ¬£ˆ\¨ˆ ¨$£ˆ ´ˆ „¨ˆá ˜ˆ [ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïÛ†v �%ÃÓÅ× Œ44ˆ ÀœÛ†õΈ püº†”üÙ‡uðöüR ÃÓ´¸‡‘ý,Õ†”–,䆸©,ÿ†æÒ$š‡ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Å×ܧ8Àª„ú¦»²Å×»ܧ»óA½–`¿ɾ¾¾݇ Æ  Žv S®ÕK•§$ŸÖè‹×ƒªØö%t�¤<†¤¼˜$�¤L†¤Ô�¤L�¤ †E\�¤+tŸ¤<¤¤¼˜$Ÿ¤L¤¤ü�¤6 ÄŸ¤<®¤ ‡fL®¤LŤ  üä¤.¤é¤ r$ä¤,þ¤,…¥,Œ¥"üé¤)tì¥<ñ¥¼˜$ì¥  Lñ¥Üì¥Tû¥µ’ C  dû¥üì¥/Œˆ¦ʹ A  œˆ¦,¨¦\¨¦”¨¦    üЦ.¤Õ¦¤Þ$Ц,ê¦,ñ¦,ø¦"üÕ¦)t•§<š§¼˜$•§Lš§ä•§\¤§é˜Cl¤§ü•§! µ§'$×§ Å™¯€$ݧ Å™¯€dÖ§ •¦\¢¨ú¦üú§4¤ÿ§¤Þ$ú§,”¨,›¨Süÿ§/øâ ú§5 ŸÖZ$0küú§5mܧ4è©,ñ©"\ñ©!"hä ï© àý!|î© ‘ýêÅàýàýÆâý’ür 1¡z÷™ pYã ®¨[Å×-# �%ÀªÅ×9"QüÑ©-|ש øx•¦,Ñ©´ç©üש'<“ª ÀœܧÛ†tŒª"$Ī$ Å™¯€ù'„ !±'„ ”º$5 ʪ#*\Š« (# áº(#'#,üâª4 ¤çª¤Þ$âª,üª,ƒ«'c&#üçª/øæ âª5  ŸÖ&[%# % )%1 )üâª5 +%mܧ4Ĭ .#,ͬ 1\ͬ 01hè ˬ / àý0|ʬ  ‘ýçºâä.l/C- #-ç –« *%[Å×ø "Ðå*.# ð¬#"ü­¬- |³¬‚æ,­¬-´Ã¬,!#ü³¬'<ä¬ ÀœܧÛ†+i#"ñ¬„#$ü¯¢ qüñ£€ üâ¥�üŧàüð§µcjq=ü®ªÃüت™ I P W ÷ 2ÀªüÁ£%‘ý,Т”–,ߢø©,ú¢ú¦,•£Lõ£`�ù•�ù6Çæ¥ã“E�ùzåü ü¦Bq�ù¦êÅTɧ•¦1•¦!òÙ•Àªáú¦ “ǨÅ×±ܧyèí) êÅ‚âä]tèí�çºT²ª•¦UòÙ�Àªêú¦&‚É/åÅ×î ܧ� ®èí:ÇÉ�âäk‚è훽óAÀ–`é&Æ utf8emptyÁÔminÁ¹ enoughÁ{gotÁô§Æ ŽÑƒð #•ðܪ +Æ è *Ž� +*¼˜é ÏÜÄ ¼˜� ØÝI ¤Þ ¼˜Å µ’  ʹ~ ³w•¦S ¤Þ& ¼˜çé˜Â¤ÞŸÖűòHÐåÓ×ä(‚戔º áºå¤Þ¹ŸÖ|±òÐåŠçºwÏéï‚æs續纓$묄ë¬Lð¬ `*\ð¬˜‚è¬ ¶ý 謘…è¬  ‘P… P%*ø…߬�G V[ ÆQ…  mv{ ‡ k! 㬠à$œ­tœ­<¡­š) L¡­\„¯&•öŒ„¯�¯þŸ&.%,�¯œ—­   $Ä­œÄ­dÉ­ a* tÉ­°†Á­ ¶ý Á­°‰Á­ ÐôJ $ø‰¸­­ APU¡õa jo{  ¼­àTõ­³…T€® dÿ­ ‘ý³…G7,üõ­!DŒ® ™´õ­TŒ®T¨®³…T³® d²® ª#³…G6+Ì®!LÌ®" & ‡#¾ Ç!@"6 ?ü¨®.d¿® 𴍮 h¼¿® Š�¯$ ¶ý �¯% ��¯ Ðô$J#$'#ø�ø®[@)'OT¡õ)`(in*(z* ü®+(൯-\¹¯1•öį ‘ý•ö15+ ů0/ دt¹¯/0œµ¯. /“ªû-Ÿ.(,1\¤¯3•ö¯¯ ª#•ö35+ °¯2.ü¤¯$2,‚Ù¯Ëü”¬ÅP � ÁÈüŠ­å+2üê­{þ4Ô¬ ¡éL¨¬°û³¬… b… ŸÐ‘ýë… …ØÚŽ … šj4Ž­ï‘ý … … V‡‘ý¢… <ØÚEÔ�N$ÒÇ$î­ é맦ŠṴ̀ éëA ³…wiÇ °û:¶û4… �… Í�¦ý¯… ³ØÚ¼Ô�Å›JǾ²ƒC¶ûÐÇéÍŠ8¦ýX Ç© •öÍ Ûƒ Þ�CŸ­ Ñ © �²˜2¥ c�‘'Ÿ+Ëôó Ðô²¡õ¹šóþŸ»©÷vÐô ¡õ'Ñù`ˆú4Üúãªû«åûlÐô ¡õ’þP°û!ªû¶ÿÁ°û6(S´Ä ²ÝøSâÄ< ²ÝƒŠƒŠ EnumerateÁ…Š�Ð<†ŠŠÐ< 0{?i—�p�pIterÁ pí óo¡p end_or_lenÁóo¢püðóoÛê2ÝЫéëÉîÝøS¤Å! ²Ý řǙș­É™Ê™àË™óG*¤�R{9 éëv  ‚ î݇�¤é›¡�•ÁÆÀS¹Ä¥Û ­àè ŸŸ—«¡ÛË ¢Ä« +¾›>mó Ì-·á6²Ý?²Ý0îÝ9 ¼‡E²ÝtîÝ}  –‰Œó‹•‘œŸªÓ‹îÝ ñ‹îÝФéÉøTõÖ(çº †çº08ÀT…Ù(T–Ó ¦T›Óª0�ë< �ëG纮Çɶ€óŠˆoyõŒâó‹«çºTšÓ(U�Ó ²ÝøUõÖ( ²Ýçº+îÝÀU…Ù ²Ý )  5 îÝœ¡¤é®³ ¥nsÏU¢Ó¬é ­àõñ�ý·á²Ý²ÝÿîÝÇɲÝÝîÝå óŠðóŠøUœcnÇÉîÝdŒ‘îÝ2¤é�(WƒóWˆó²&+éë8ä‚@ISY’óµY�ó ä‚&0Z²ó&Z�ó¸HZ”óä‚ä‚ov5î BL21ÁôŽôŽô@Ì“ô‘2 4@1‘büòó;’ˆôŸ2‰‘”‘_ÁôÎôÌÓô‘@/  ÎôC‘_.n‘ü²ô;“Èô¯.®‘¹‘Ä‘_Áü•õ Ì–õ‘ ²õ9 4‘1iü�õ$�õ@' (@N ³õüòôC”Šõ ñ•ñ•£A‘ ‘_Áÿÿÿÿÿ0x000003FF_FFFFFFFFÁ(cè�cí�¾&+êì8 êìCLV22ÁüòŽ%òŽ@ü÷Ž Ÿ4 5@2ŸdüÔŽD ìŽñ•Ÿ0ˆŸ“Ÿ_Áÿÿ?0x00000000_003FFFFFÁÿÿ? PatternEpsilons::PATTERN_ID_NONEÁüÿÿ0xFFFFFC00_00000000Áÿÿÿÿÿ0x000003FF_FFFFFFFFÁ(mׯmܯÅ&+Äí8 ÄíCLVüÿÿÿ0x000003FF_FFFFFC00Á 10Áÿ0x00000000_000003FFÁ(wóËwøËÌ&+žî8 žîCLV 32Á(…ÙÛ  ²Ý`…øÛ ²Ýžî+7îÝch Ùgy~jo�…ÞÛÑ«­à· øî·áʲÝÒ²ÝÁîÝÉ ù Ôù Üþœ �£îÝ ¥¢+ †�äøï †øï08(†òã Ò†÷ãÕ/¸ï; ¸ïFøï‹ øï–bl‘¤³(‡ùã  ²Ý ‡�ä ²Ýøï+7îÝch¥¢uzfkŒ‡þã×§­à³ê¤»·áòÝ˲ݺîÝ ý¤Íý¤Õ÷œ‹§îÝ¥¢$ (ˆŽå/ˆˆ¥ç™°²Ýa ؈’å `ˆ„ç ÷¯ ® ØM PˆÞæ ׯôí % †ôí 7  ?Pˆºæ ·¯ : Ø Ú Pˆ–敯ƒ Ø# Àˆçåü®Ïó % †Ïó7 ?øˆ»å ä®×°!& †×°8 @, ØÌ L ØÊ<Ïóó s Ø  ˆ“åꩯ¶½ÄËÒÙøïçý¤ðø ×°×°& ÏóvÏó Ô܃®.6 ôí†ôí�óŠàè ²ÝB²ÝK‹__self_0Áºó­ ó­bó­¸ ó­  ó­^ ó­¹ø †²ÝÓó‹ŒÒ©K †÷¯Ñ©«Žî«Q (‰•å/ˆ‰¥ç ™°²ÝT!\ ²Ý2":²ÝF$ R#$îÝ› ¥¢­!²"�#† Ä`‰„ç÷¯æî²Ý19²ÝEQîÝ-3¥¢AG„‰ ZP‰Þæׯôí~‡²Ý4< ²ÝHTîÝÇÍ¥¢Ûᇌ ôP‰ºæ·¯ !²Ý3;²ÝGSîÝ`f¥¢tz†‹ �P‰–æ •¯° ¹" ²Ý3;²ÝG SîÝùÿ¥¢  †‹ &À‰çåü®ÏóJ S#²Ý4 @  îÝ… çg— � w «ø‰»å ä®×°ÐÙ$²Ý5AîÝ ¬·t -‰šåìIOV]dkry%­à‡ý¤�·á™¡Ù­ù²Ý²îÝ  Ù­î­¤²ÝÙîݶ î­Âƒ®d²Ý²ÝvîÝ ƒ®‹ƒ®-²Ý0²Ý?îÝH·ºQ§®ô²Ý]²ÝîÝ §®óŠ»²Ý�²ÝÍîÝÖŒ‘ßÍ®{²Ýº²Ý�îÝ– Í®¢ âœðó­Nó­àó­† ó­,ó­Óó­wó­ Vñ»îÝ.¥¢kŒ‘îݬ¥¢|”»îÝ&¥¢�·ºîÝ�¥¢ž·ºîÝ¥¢¯‡ºîÝ�¬·Àà¹îݬ·Ñ(˜¬ %²Ýˆ˜ô  &²Ý•ö*îݘ˜Å! '²Ý ®ò*  6 îÝœ¡¤é®³ ¥otϘ±ñé ­àõ ëñ·á ²Ý²ÝîÝ ¦ý²ÝãîÝë  ®òùÁÀ^œlw¦ýîÝm¿ÀîÝ<¤é–(™¤= ( ²Ýp™Ž? )²Ý)5îÝ`e¥¢rwdi‰™©=õ£­à¯ÁÀ··á¿²ÝDzݷîÝ¿Œ‘ÇóŠÏðœýŒ‘îÝý¥¢¬¾MT¾M �°û$ÉMÏM-ÝMòüúLc¯M†�LƒM°ûŽMƒ D×Óœá |á § ó / 2§0_üÇ .¦,Ù š0š§¥§_Á3Á pšž%¯ø †¯ø/7�š²%�»‡…)2pšÊ%¸šÞ% Å� †Å� /8 šû% ªÓ¹‡ ) 2€š•& Ú× †Ú× / 8¨š«&(šú$ ö  šÿ$šþ$]ÿlïòx ïòƒ¯øó ¯øÿ�»Ì�ùÕ¦óНÅ�– Å�¢ªÓn³þwÚ×I Ú×U óŠ) çÆ�‡…Zó‹*üǹ‡ÙðÈ©ó‹s�»¯ø&(›�% � ²Ýp›ž%¯øîÝ�›²% �»  îÝp›Ê%   îݸ›Þ%Å� îÝ ›û%ªÓîÝ€›•&Ú×îݨ›«&!îÝG îÝ   jw�ú‰’*²ÝŸ¼ú³¹ÓúÇÍÓÙ⛆%�ý ­à©Ê!·á*®Ì3�ú< îÝVÛÐ_îÝ<½ÊEîÝ'�ù0îÝóŠîÝþõÊîÝé³þòîÝÔœËÝîÝ¿Œ‘ÈóŠÑ²Ýï¼úøœƒ ‘*3½ÊîÝ�ùîÝøóŠîÝÛõÊîÝ¿³þîÝ¢œËîÝ…Œ‘îÝhÓú„=F²ÝS:C)²ÝP8A+ ²ÝN5 >²ÝK 2 ;,²ÝH  / 8-²ÝE  h ²ÝJ²Ý  ”£�´®ÌÁ°Ìʲ݀²Ý‰²Ýk²Ýt²ÝW²Ý`²ÝB²ÝK²Ý-²Ý6²Ý²Ý!>tØ3dØ3 ¯üØ3#Tç3 ´µ“IDò3¤ç3 €4�4ü„3}ªÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwïòØû¼¶3§òD£3 õùõù¨ "§óÖ?¡×õùëõùñtµ°<º° µ$µ°Lº°Ôµ°LİÏÜE\İ)tÓ°<ذÕÙ$Ó°Lذüµ°6 ÄÓ°<â°ØÝdLâ°ü„±$„„± Ñ$•±,›±,¢± 5ø°„±%  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 ö Û† ñ ½Â  Î  PUü„±% mÄÜ & üþ°+ ±¨±  [Å×M# �%õÛÅ× 9qâ± àö Lê±$ʱ Å™ö DDZ ÀœÄÜÛ†|À±�² àö ¤²ç¹\ç¹4ê¹ —*Dê¹ã àö D�² Å™ö dþ± ÀœÄÜÛ†Wüô¹€ » Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 ö Û†Uÿ©Ê ûóüʰ´Å¹ ƒö »¬á¹ã,ܹã¹þ}Oûºº ü�¯ë ü¥°Ö üõ°† GNU£üݱ-t˜²õÛüõ¯%©Ê,¯¯¾ã,¾¯ø©,Ù¯L©°Í�ù�ù¥ö ù°ÄÜÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Å×ÄÜaõÛ¦BÅ×KÄÜ›$¸±ÄÜæö ) ö 5"ÄÜKö Îœ„ç¶êã' 0óA3–`6ßï<hmÁ&Æ þ ŽQýæÐýæÝýæj ÕÙ�ÏÜhÕÙ5ØÝï´ÛÍïÛ˜·ÞŸ àuàã¾$¥º ©Ê,«º ¾ãü”º$„”º´Û D 4,²º-ø²”º% ïÛK$0Cü”º%mÄÜüʺκ þWö «ã¼ö «ãUÿʺ0\ýê´ÒºÜκ³¸º[Å×á" �%—âÅ×8üǺ# ÀœæâÛ†ôº »ªüŠºj•›¡! —âû¹ êãèø©,õ¹ëå›õÛØèÅ×ðÄÜræâ_©Ê/¾ã8–`R$°¯©ÊóAX¾ã•ðŽºÆ aŽç›´ÛyïÛLïêíãëZ _ref__selfÁ _ref__cacheÁܺ\ܺ4ߺ à(DߺŒ×º 躼/«ãÖºýêGö Óºy„ç’ýæw à¡t…ï<ŠïÕÙ$…ïLŠïÔ…ïL”ïÏÜC\”ï)t£ï<¨ïÕÙ$£ïL¨ïü…ï6 Ä£ï<²ïØÝdL²ïüÔï$„Ôï Ö$åï,ëï,òï 5ø´Ôï% ïÛ S $  0  #`üÔï% mÄÜ & üÎï+ µøï  [Åׯ"·Þ .Ȳð àö Lºð$šð Å™ö D—ð ÀœÄÜÛ†|�ðíð àö ôð­ñ\­ñ4°ñ à(D°ñá àö DÑð Å™ö dÎð ÀœÄÜÛ†ãaüºñ€ ¾¬á¹ãü‹ñ°´‹ñ †ö ¾¬á¹ã,¢ñ©ñëkMÁò½ üàíáüõîÌüÅïü&-4‚ü­ð-tèðõÛüÅî%©Ê,ÿí¾ã,Žîø©,©îLùî�ùC�ùæö ÉïÄÜýëåQõÛ–ÐÅ×ÙÄÜ)$ˆðÄÜ€ö Ã„ç̹ÄÜäö e3„çMž÷À ÜóAÞ–`àßïåýæÍÆ ƒ ŽÖýæaýænýæû¹ ÕÙtÏÜOÕÙØÝÖ¥ò´ïÛ·Þ† à”÷b$ëñ ©Ê,ññ ¾ãüÚñ$„Úñ¥ò D 4,øñ-ø¶Úñ% ïÛK$0CüÚñ%mÄÜü�ò”ò þWö «ã¿†ë�ò~eÕý´˜òÜ”ò·þñ[Å××"ãë.ðü�ò# ÀœæâÛ†ºò ¾(üÐñjŠ�–  —âÁñ ž÷fø©,»ñëå†õÛÃÝÅ×åÄÜ]æâJ©Ê­¾ã¶–`R$€î©ÊóAé¾ã•ðÔñÆ VŽÒ¥òdïÛ7ÇýØãëEÜíéí¢ò\¢ò4¥ò à(D¥òŒ�ò ®ò¿«ãœòÕý)ö ™òy„ç’ýæY à¡t‘—<–—ÕÙ$‘—L–—Ô‘—L —ÏÜC\ —)t¯—<´—ÕÙ$¯—L´—ü‘—6 į—<¾—ØÝdL¾—üÑ—7äÑ— Û$î—,ô—,û—,‚˜ =ø¸Ñ—8  �%ÃÓ a %*  6  ai,™˜Œ™˜LŸ˜ ¼+  \Ÿ˜¹ˆ˜  [Åש"ªØ .Âd ¼“˜ Lá˜4Á˜ ÀœÛ†;j Ƙüï™n Áµá ÂúÃÓUÿ¹ãü�™ßü�™" ½ÁÕ‡ ¹ã,Á™,Ø™|E4î˜ ÀœÛ†öj ó˜ýšÀüÉ•´ü�—ü‘˜ŸüÑ—8ÃÓ´à–©Ê,ô•¾ã,ƒ–ø©,ž– Âú,¹–L…—x�ù­�ùPÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Å×ïÃÓ<tÅ×}Äܯ ÂúÍ$¹˜H™ˆ ÿôóAö–`øƒ÷ßïüÆ ö Ž\¬l• ÕÙÈÏÜ£ÕÙpØÝ*Õ„ ˜… Ëû… oªØÙ“ˆ h$±š©Ê,·š¾ãü”š7䔚Õ„ D4,¾š,Åš5ÝšÁ-ÃÓý™ ™ˆ Hø©,ð™ó‰ ,÷™©Êg¾ãp–`*ƒ,$õ•©ÊóA‰¾ã¹Õ„ åÜíéít�Ã<’ÃÕÙ$�ÃL’ÃÔ�ÃLœÃÏÜC\œÃ)t«Ã<°ÃÕÙ$«ÃL°Ãü�Ã6 Ä«Ã<ºÃØÝdLºÃüÍÃ7äÍà Þ$êÃ,ðÃ,÷Ã,þà =øºÍÃ8 ˜…  [ $  0  �o,•ÄŒ•ÄL›Äû… )  \›Ä»„Ä  [Åס"ªØ .ºb ¼�Ä LÝÄ4½Ä ÀœÛ†ep ÂÄüëÅn ÃÕ‡ ¹ãü‰Åßü‰Å" ½ÃÕ‡ ¹ã,½Å,ÔÅbE4êÄ ÀœÛ†q ïÄùÆÂüÅÁ´üýÂüw~…üÍÃ8ÃÓ´Ü©Ê,ðÁ¾ã,ÿÁø©,šÂó‰ ,µÂL�ÃS�ùˆ�ù+£Š zÃÓÇÅ×ÄÜ@Ÿ‹ [$µÄØ©” �žóA –`¢ƒ¤ßï©Æ † Žfr? ÕÙPÏÜ+ÕÙøØÝ²‡‘ �˜… Sû… ýªØa£” $­Æ©Ê,³Æ¾ãü�Æ7ä�Ƈ‘ D4,ºÆ,ÁÆ5ÙÆÃ½ÃÓùÅ ©” Øø©,ìÅó‰ ,óÅ©Ê÷¾ã–`*ƒ,$ñÁ©ÊóA3¾ãI‡‘ åÜíéí̈à¼ˆà »Tûà üÍà9ÔÒà À$Íà,íà,ôà DüÒà4ø½Íà: ˜… \$ 0 C,•á Œ•áL›áû…  (\›á¾†á [Åן"ªØ .¸ü¿àq <µà  ºààö  Ùá\Ùá<Ûá –* LÛáôÇáTÎá ©4ÇáL ¼Îá4Ýâ„Ýâ<äâ «+ Läâ+ ¤ñâd÷â ð,ñâ t÷â04¿ã ÀœÛ†mvËã ÄüÂÞ‰üøßÓü±á…ÖÝäüÍà:ü¿á÷ÃÓ´×ß©Ê,ðÞ¾ã,ÿÞø©,šß ¡£4µßÂúLüßÄܣР×ÃÓ%ó‰ @oÅ×xŸ‹ ¹>ö 3ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw–¤7›†k„ç…  ¡£+äóA–`patsetÁƒÆ l Ž�\x£+Ý äš ˜˜› l˜… .û… ÚªØ<è� 7“ž Öž ×’Ÿ ¢ d�úªÓ¼�úœú ±0, úTœúüƒú$\ƒú ®T)<¾ú ܾúŒÆú ê * œÆúü¾ú# \õú …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàŰÿ�þD€û ‘ý†¦  t4�û .œõú –û „–ûTšû ò*dšû+Ìâû”âû ž,õû$<¼û Àœ°ÿÕþ Áü ´…üL…ü ã$�ü,•ü 16ü…ü6„œü æc<­ü$¶ü üœü“ÆüÖøëü÷ùÊü±ú�üëúÖü×ûjÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw°ÿÕþüÍù©Ê,ñø¾ã,€ù°ÿ<›ù,¹ù,ûùP³þp4µúù °ÿ°ÿïú·« ‡ †¦ éF·« `ÞÐ$Ûû šš�Ñ�ÒûžóAû× Ó¯�ëê €¬ ðóAòcurrentÁû–`þ›€Ñ ó Øà Ê»òפ ~Œ¥ RÉ¥ ئ �¯§ Bë§  Ĩ ¼‰© ~dӼî§û§פ .,ÿ§Tû§üâ§$\â§Œ¥ J!<�¨ ä�¨”¥¨ ë * ¤¥¨ü�¨$ \˨ †¦ DÖ¨ئ  +4ר $œË¨ ä¨Çü—¦ÍüÖ§Žü�¨T °ÿ\“§©Ê,»¦ ûó,ʦ°ÿ<á¦,ÿ¦,Ú§p³þ�4”¨#·« =·« â׫ vóAuë« x–`{›€Ñ oð ñœ¸§ ¸[Éž‡T]פ Œ¥ 𑯠Àئ tdþêӼþËÄפ .,�ÄT‹ÄüòÃ$\òÃŒ¥ J!<­Ä ä­Ä”µÄ‘¯  ( ¤µÄü­Ä$ \ÜÄ †¦ üÜÄ!  Þ"†¦  2 #*lèÄ Ùw°ÿ ^4öÄ ¬èÄüÛÄ" ƒÅÈü–ÂíüæÃ�ü Äc°ÿ\£Ã©Ê,ËÂÙ° ,Ú°ÿ<ñÂ,�Ã,êâ³þÂ4¤ÄU·« o·«   °ÿ#׫ C�óAƒë« †–`‰›€�Ñ }û˜² œÈ㲠ɢ‡T]פ VŒ¥ ,‘¯ ü²´ ²Û´ ¹ d¼âªÓ”¼âÉâ ³0,Éâì¼âDÏâ ¢DTÏâ<ðâ ÜðâŒøâÉ¥  (œøâüðâ!\¥ã †¦ D°ãئ  +4±ã $œ¥ã Æã „ÆãTÊ㯧 ( dÊã) d’äªÓ”’äŸä�¸ .,Ÿä<ìã Àœ°ÿÕþ êä ´®äL®äĨ $¸ä,¾ä +0ü®ä6„Å䉩 W<Öä$ßä üÅä‡Éü áÊü²â¸üãâ‡ü›ãÏü‡äc€ª üˆâ©Ê,¿á¾ã,Îá°ÿ<éá¶âÞС³þÁ4çâW·« q°ÿŸã·« #׫ Cé·« ÞÐ$‹ä³þÎþ« j€¬ s¬óA®ë« ±æ³µÑ ¤ Ø” ÊrG�¸ €»¸ \É¥ )ئ ߯§ œ�¸ TĨ ‰© Í,·ó̤ód¤ó ‚$±ó8.¬ÖódÝó µ4ÖótÝóćô|Žô ´4‡ôŒŽô, ô�ô ‡$Ôô àdóô Ú×¼óôD€õ â 0 T€õ\¶ô Ï+ I  dŽõÚ×ÜŽõD›õ Ý0 $¤õ  t›õ3  ´Ëõ„Ëõ Ó $Üõ $ÜÇõ Àœ°ÿÒýFˆt†öÅ�Ćö•ö ¹0 $™ö L•ö$Ïö,òöüÏö)œÔö ƒ>Dèö<üÔö$ø¿Ïö*  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw°ÿÒý®x}‰üÏö*m°ÿ D‡÷¬‡÷T�÷¯§ (d�÷Àøö[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïÒýhv �%ûÄ óÆ ŒŒÃ´Ò÷LÒ÷Ĩ $Ü÷,â÷+d²÷ Àœ°ÿÒýìŠ[,…øüÒ÷9Œé÷ è—Dû÷<üé÷"‘øÊ üˆò‰ü™óøüÇóÊüõóœüÏôÝüÀöÑ·¾Å*ûÄ üïò©Ê,¤ò¾ã,³ò ö�4Îò££ƒµ¦Òû§óAû²õ/ଆɯ$�óÙ° ðØ¥DËó†‘,ùóřǙș­É™Ê™àË™óG*¤�R{9 Þ$®ôšqœË‘œË2ÒýàõÊ•°ÿDÄöÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^óÆ °ÿTûÄ › ãÊ Ç†‘Á‚óÆ ‹°ÿò·« Üþ« €¬  †‘ª ãóAæÉæ›®ã÷§‚¨—»î start_idÁ-Æ 9Ž£Ø à¿ ç”À ¹ÂÀ ’ÈÁ ·Â «û næÃ  ¸Ä ÀõÄ ‰¯§ ¿ØÇ —Ĩ ù”É ‡üûÿ(üûÿ! ¯,�€&<Å€ü­€ \²€ Ê$­€,¾€;ܲ€üÖ€÷ ÌÒýÛ†Uÿø©ü­€¡<΀ Ç_°ÿÒýÛ†Ì£Ñ ±Ñ ¡lü΀€Ô„ËüÚþúüîÿæÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw°ÿÛ†üÄÿ©Ê,þþ¾ã,�ÿø©,¨ÿö�4òÿûÄ sÕÊ �áÑ KHóAJ–`LÉNòªÐ åÐ ÏÏÑ m â€LÜ€'$óƒ £»Ø¥ü�„&ü�„  Å $°„ &$Ó�‹»,ü� ø©üü�",—‚ ë 2<—‚,¤� ø©l¤�,ª�íÕ  -<ª�ü��"œ�� ÃC "üü�F\´‚ 駯 À‚t´‚üß‚&  .$²Ýüü�Š4Ø‚ ÷Wz =üØ‚.ô˜ƒ„˜ƒ Â$©ƒ4¯ƒ ,̹̈́üÀ�„üï�Õüуr Û†Û€áÑ ñÒý×€Äô€~ø4ó�ØÚGã²ÝØ¥mø©Lø©U¬ºg–`Kø©—»cÑ o¾»Ã ¢“Õ ºíÕ fíÕ +ØÖ  �× çÞ× ’’Ø c _ref__inputÁü¾Œ(ü¾Œ! ±,àŒ&<ˆ�üðŒ \õŒåÐ $ðŒ,��9ÜõŒü™�ö 룄 ±Ñ üðŒ <‘� Ç_°ÿÒýÛ†Î£Ñ ±Ñ “`ü‘�ÿ–�Íü�‹ùü±Œå¸Ò ü‡Œ©Ê,Á‹¾ã,Ћø©,ë‹ö�4µŒûÄ ÕÊ ,¼Ü ìGóAI–`KÉMž“Û ¢åÐ mªÜ ¥�LŸ�'$µ�£»Ø¥üÑ�&üÑ� “Õ $ò�$$”Ž‹»,½Žø©\½ŽÃŽ ì1,ÃŽ,ç� ø©\ç�í�ñß  -,í�üÓ� œÓ�ØÖ A ôÚŽ„ÚŽ’Ø $ëŽ4ñŽ*��ÎÀü�Ž…ü°ŽVü“�r Û†ž�¼Ü ÷Òýš�Ä·�ç_4´ŽØ¥¸ø©7ø©@¬ºL–`•ø©—»°Ñ U¾»�“Õ ñß ³ñß yØÖ W’Ø 7ïÙ ȨlȨD˨ ö*T˨+Ìà¨dà¨à¿ $í¨,ó¨ +°¤À¨ £² ܘ/²Ýç˜'^ üà¨.„ú¨ „Š‹©¤ú¨üà¨:L�© ŽR\�© ©Ïüõ§« ,°¨©Ê,†¨Ù° ,�¨°ÿœ¨X·« rú ½™ËÇÍ ?ãÊ HUóAWˆCY”Ú㠼࿠‡£² \ƒå )»å ø”Ï´\Ô´ ²$Ï´lÔ´¼Ï´ å´&|ü´ †*›†ˆ¶ÌŸµdŸµà¿ $¬µ,²µ +0 üŸµ;„Ƶƒå V×µ¤ÆµüŸµclèµ �L\öµÔèµ±ÐüÕ°³ ›†Lϱ©Ê,ó°Ù° ,‚±°ÿ™±\²±U‰¶æ ËÇÍ ãÊ UóAWˆCY match_indexÁg­Œ†*›†¿ç à¿ ~ƒå G¹é ¸¦¶Â†¦  ††¦ 08À¦¼Ç†¦ óë *3�¦åÉ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàŽ™�þX] †Øì ox°¦èÏ ää’ébaseÁÏd�žä`f½™°ÿåBåB RandomStateÁæBk0ÁëçBk1ÁëžQ �Ñ*á3�þœ¡ †Õí  ³¼˜¦ìÐ �ª †�ª 0 9°¦÷Ñ •ö¿† *  3ø¦»Ô(Þš †Þš1 :¸¦û×µ÷ †µ÷0 9ȦÍÚ�¦¿Ü ¨¦íß ø¦þâ  Å™Ç™È™­É™Ê™àË™óG*¤�R{9 Ëõ_d †óñ v  (¦ã¼ ‚   ¦è¼¦ç¼  % 5 EUeuÏ�ÞûóêÙ° ò†¦ �׫ –†¦ b׫ kØì < Øì HÕí Ô Õí à�ª( �ª4•öÿ¦ýÞšÙ Þšåµ÷¯ µ÷»…óŠŽsóŠ|aóŠjóñ P óñ \âíóë ‹óë U§í $èî ®¦ï ô¿†½�ð ŒÛð Tó‹ó‹ó‹åÈò ɵ÷Þš •ö�ªÕí Øì %†¦ ,†¦ 3(§ê¼ ’ ²Ý ¸§¶Â†¦ îÝÀ§¼Ç †¦   îÝ�§åÉ Øì   îݰ§èÏÕí  îݘ§ìÐ�ªîݰ§÷Ñ•öîÝø§»Ô(Þšîݸ§û×µ÷îÝȧÍÚîÝ�§¿Ü îݨ§íß îÝø§þâ  óñ $îÝ îÝ    JW�úi r²Ý!¼ú“™Óú§ ­!³¹Â§ï¼’Þäë"­àùÙ° ·á ƒø �ú îÝ 7�þ @îÝ׫ %îÝ׫ îÝð†õ ùîÝÚ›õ ãîÝİõ ÍîÝ®¦ý·îݘ×õ ¡îÝ�ìõ ŠîÝkóŠtîÝVóŠ_îÝAóŠJîÝ, ´ö 8´ö A²Ý-¼ú6@œNƒ \‘hq ׫ îÝR׫ îÝ4†õ îÝ›õ îÝø°õ îÝÚ¦ýîݼ×õ îÝžìõ îÝóŠîÝaóŠîÝDóŠîÝ'€€ îÝ Óúô«´0²ÝÁ§°1²Ý½£¬2 ²Ý¹Ÿ ¨3²Ýµ › ¤ ²Ý±  —  4²Ý­  ’›5 ²Ý¨Ž—6²Ý¤‹”7 ²Ý¡ˆ‘8²Ýž…Ž9²Ý›Œ ²Ý m:²Ý  ÇÖ’çƒø ô…ø ý²Ý±²Ýº²Ý›²Ý¤²Ý…²Ý޲Ýo²Ýx²ÝY²Ýb²ÝC²ÝL²Ý,²Ý5²Ý²Ý²Ý²Ý ²Ýì²Ýõ²ÝײÝàËl¥þ óñ ¤¥þ$³þ «XËõ54³þ-<›þ  þàËõ ßþ<ßþáþ Þ*,áþôÈþ  ü”þ]ü�ÿ  “üŠÿ& Å™Ëõ üúþ6 óñ  ·ÿüøü¿Ôüºþ7 ¡ý¾ãLŒý—ýóñ p óñ ”KËõ@ Ëõ:óñ ÄËõç`™´d¦‰¸ì‡ éäˆ xl‰ƒ óñ ´‰ƒ4—ƒ ñWËõ5D—ƒü§ƒ! ;²Ýü‰ƒ@4 ƒ ÷W Ëõh@ü ƒ)LÓƒãƒÕüÀ‚£üõ‚nꂾãLÕ‚à‚ÎŒ ù‚řǙș­É™Ê™àË™óG*¤�R{9 ÎŒ 0ÑŠ Q²Ý�™´…¦‡É€Œ yÈŒ 9l÷… óñ ¤÷…$…†ì‡ /4…†ü“†! <²Ýü÷…>4Œ† ÷WËõ_=üŒ†)L¿† é†<é†ë†äˆ (,ë†ôÒ†  ÷†Öüª…Íüß…˜ Ô…¾ãL¿…Ê…Ëõ,ã…óñ 6ÑŠ W²Ý!·öŠ ÐK™´O¦Q”ì‡ Žæ� Täˆ Ä£‘  ´£‘ Ù°ÿ'üŒ‘0Û,›‘(_Á”ß‘  „ß‘ Ù½™'üÅ‘-Ü,ב(_Á`°â™H°ô™(°·™ “°¼™—2Ëõ>öŠ F“óŠ›óЇmwó‹Çó‹ª(±¾™ =²Ý`±â™ >²Ý*îÝH±ô™ ?²Ý *  6 îÝ�¢¤é¯´ ¥otÐ±Ù™ë ­à÷öŠ ÿ·á²Ý²ÝîÝ óвÝàîÝ茑ðóŠøUœcnóŠîÝcŒ‘îÝ2¤é�(²�¢ @²Ý`²£¢ ²Ý©Ê+îÝ ²µ¢ A²Ý ¾ã+  7 îÝŸ¤¤é±¶¢§puÒ²†¢¢í ­àù €¬ ·á ²Ý²ÝîÝ ©Ê²ÝèîÝð  ¾ãþÌ› eœs~®› îÝsÊ› îÝA¤é�(Ò¸í B²Ý`ÒÝí ²Ý©Ê+îÝ€Òïí A²Ý Ù° +  7 îÝŸ¤¤é±¶¢§puÒÒ½í«í ­àùÇÍ ·á ²Ý²ÝîÝ ®› ²ÝâîÝê  Ù° øïž _œmx®› îÝmíž îÝ;¤é—,èò„èòDîò Å*TîòD”ótŽó'Ÿô ô¾›†D½ô©Ê¬½ôTÆô ´0 dÆôdåóTåó Ã\»óÔåó þóü½ô3ÜÓô ¢   ìÓô,  äõ täõDèõÁ½( Tèõü’õ*ü’õ  ÔD³õ  &üŽõ/ Àœ°ÿÒý @¸Döõ©Ê´öõ\ÿõ¿ç . lÿõüäõ(  t­ö<²ö ‡$­öL²ö”ªö Àœ°ÿÒýÿ¸dåöTåö¢¡ ”àö áödŠ÷TŠ÷¢¡ ™÷ t™÷D�÷Á½(T�÷ü‰÷üàöHüàöj ×÷Œï÷Ù° †¦ ,�ø<€øئ L*!Äï÷äì÷ Àœ°ÿÒýŽø ƒüÊñÄüÖò¸ü‚óŒü�ôË ûÄ ü¬òÇÍ ,êñØ¥Dùñ†‘,•ò\Úò †‘§,†ód«óþ›†d³½ÊBÒýPˆãÉ¢°ÿ¾ºRyåDãÉ6°ÿc·« ’׫ Ó´©Êú©ÊÙ°  ã÷‚ start_indexÁ+÷!¾¾u « îŸ à÷  ^¢¡ :þ¡ æÁ½¡ô¢ ¿ç ­¤ Ò¢¡ |¢¡ >Á½ئ wľ•  ´¾•Ó’ !ü§•0�,¶•(_Á”ú•  „ú•½“ !üà•-Ž,ò•(_Á (×ä™'XײŸŒ¶°ÿ % †°ÿ7?x×€�îµ°ÿ`ב�îµ½™>C·® OWÎ ¬á[` †½™rz ¬×è™6 ¬$×é™¶kqx µ÷†ìõ �—·« .¶æ °ÿ@½™+·« –°ÿŸ×ó­t__self_1Ájó­Ù·® í·® °Ô¯ ™(Øë™'XزŸ Œ¶°ÿLTC²Ý2 >îÝ„¬·‘–m£xØ€�îµ°ÿ`Ø‘�îµ½™äìD²ÝPXE²Ýd îÝW _F²Ýk w  îÝPV¤édjÈ Í ´ ¹‡�–G²Ý¥« Êg½ÃÌØð™¸èîõ­àìõ  ·á²Ý&·« ‡¶æ r²ÝA²Ý¢îÝ«²Ý–îÝŸ ¶æ «·« L²ÝƒîÝ^ ·« j¢œ°ó­ϰ ó­« â¥· îݬ·÷·« îÝYþ¶ îÝE¤éƵ èÙì²Þ׳Ø*2ðÙ�³Å™Ç™È™­É™Ê™àË™óG*¤�R{9 řǙș­É™Ê™àË™óG*¤�R{9 äü£¨ †ƒ¹ ºÂøÙ³³%ߨ²Ù+ 4ÐÙÞ³ ߨ²Ù * 3øÙþ³# ߨ²Ù +  4ÀÙ§´ řǙș­É™Ê™àË™óG*¤�R{9 Ú×^c †ô»  u  ~øÙÅ´%ߨ²Ù+ 4èÙð´ØÚ †ØÚ0 9øÙ“µ'ߨ²Ù+  4øÙÀµ0 “Ú¬Û+  4øÙöµ. “Ú¬Û+  4(Ù�¯ ¹   Ù¢¯Ù¡¯ \Æk¯øw½ÊÞ×ÔžÜ݃¹ ¯ ƒ¹ »ߨý³ÜߨÖ³Üßߨ°³Ü¹ô» ‰ ô» •ߨ³Ü$ØÚô ØÚߨ˳ÜÔ“Ú¤ÚÜ­“Ú}Ú܆Wb ³Øº�º вÙʲ٘²Ùgɼ 5²Ù¹À½ ‡²ÙP¬Û¬Û샹 s(Ú¤¯ È ²Ý èÚì²Þ×îÝðÚ�³ ƒ¹   îÝøÚ³³% ߨ  îÝÐÚÞ³ߨ îÝøÚþ³#ߨîÝÀÚ§´ô» îÝøÚÅ´%ߨîÝèÚð´ØÚîÝøÚ“µ'ߨîÝøÚÀµ0 “ÚîÝøÚöµ. “Ú$îÝ÷ îÝ    &3�úEN²Ý[¼úouÓúƒ‰�•žÚ©¯ÈºÀÇ ­àÕ½ÊÞ·áçã ð�úù îÝ ÌÈ îÝøžÜîÝâ¤À ëîÝ̳ÜÕîݵ³Ü¾îÝŸ³Ü¨î݈ïÀ ‘îÝr³Ü{îÝ[–Á dîÝE³ÜNîÝ.ÚÜ7îÝèâ ÚÜ)²Ýô¼úýœƒ #‘/8 žÜîݤÀ îÝû³ÜîÝݳÜîݾ³ÜîÝ ïÀ îÝ�³ÜîÝc–Á îÝD³ÜîÝ&ÚÜîÝèâîÝèÓú±hqH²Ý~dm²Ýz_h ²Ýu[ dI²Ýq V _,²Ýl  R [J²Ýh  MV-²ÝcIRK²Ý_DML²ÝZ?HM²ÝU% ²Ý  ²Ý  ]lÈ}ã Šå “²ÝG²ÝP²Ý1²Ý:²Ý²Ý#²Ý²Ý ²Ýí²Ýö²ÝײÝà²ÝÀ²Ýɲݪ²Ý³²Ý“²Ýœ²Ý|²Ý…OèÛì² éãðÛ�³  ÷ƒ¹ øÛ³³% Žä ÐÛÞ³ Žä øÛþ³# Žä ÀÛ§´  ÷ô»   øÛÅ´% Žä èÛð´  ÷ØÚ  øÛ“µ' Žä   øÛÀµ0 Ñä   øÛöµ. Ñä   8Û«¯ ¹    Û²¯Û±¯ \Êk ¯øwÞ×þƒ¹ çߨÊߨ±ߨ™ô» €ߨbØÚIߨ+“Ú“Úùà éãiÙÑ PŽä1ŽäŽäüäÒ áŽäÁ­Ó ¦Žä†ÑäkÑäPƒ¹ ðpá´¾ ¯øçÆ*2àáç¾ ·¬Ðæ*3(ጾ  Ëᑾ á�¾ AÏPõù\ôØd¯øÛ½Êã·¬´Ëç¼�—çÆÐæà¯ø‚(⓾  ²Ýpâ´¾  ²Ý¯ø+îÝàâç¾  ²Ý ·¬+  7 îÝŸ¤¤é±¶¢§puÒ☾ Ñí ­àùôØ·á ²Ý²ÝîÝ ½Ê²ÝâîÝê¾êòËçúXœfq½ÊîÝf¾êîÝ4¤é�“Æ  类  ·¬ü™Æ /,ÁÆ Ðæ / <ÁÆ (  ¼ÛÇ ¬ÛÇ  Ž ì—È  ÷!üÛÇ ZtˆÈ  ”  R5 üˆÈ -ü™Æ «LÀÇ  ­  ½ SüÀÇ „3ü™Æ ÍTÒÈ Ôë[DÝÈ ¤ÒÈ ü™Æ ó<ôÈ  Ç_�»×°Øû Éa|üÈ ˜ß  ÄôÈ øÜ™Æ ô  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�»Øû¿z‹ žü™Æ ôm�»#. �É  ÝŒÉ [ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïØûbv �%�ØÊá Œ ‡® «É  Ä—É tœÉ  ¶$—É E œœÉ  ´É  µÉ #+ *\ ü›Å šjz´5ü�Æ ¦¡¨¯�ؼíÅ ôØ,ÅÅ §òDÔÅ �»jÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Êá �»1Ùß ˆ¡óÅËç ·¬“æ Ç·¬ÐËçð±ªs±ª´¼«›¤Êá ­�»�»Æ¨ ß'rÆ ùŽR² Ðæq£Ý AÜÝ �Þ äÔë©†ß |Óß 5·¬[¯â C·¬i’ã ‘·¬w�»møå°û !ÄÜ †ÄÜ19øåŠÿ "řǙș­É™Ê™àË™óG*¤�R{9 °ÿ_d †ÿè v~ å×� øåé„ * ØÚÀ½  +3Àåʼn   (å¬ù  Ò å±ù Ù; ÂúGŸ‹ OÄÜ• ÄÜ¡ÿè l ÿè xýóŠØÚë–Á óÁ÷ýɰºÑè Ôé Ëó‹OÀ½ 3 †(æ³ù  N²Ýøæ°û !O²ÝÄÜ,îÝøæŠÿ "E²Ý ÿè , îÝ æ×�   ?²Ý *  îÝøæé„ * P²ÝØÚ,îÝÀæʼn  Q²Ý)5îÝSY ág kq^d-3 ü  ÌÑ™ž±æ¸ù ÛÍ­àÚŸ‹ ã·áì²Ýõ²ÝåîÝîÇë ÷²ÝÃîÝÌÜë ղݡîݪ󊳲Ý�îÝŠ–Á “²Ý_îÝh ÷ýt÷ý}’œ «Çë îÝ Üë îÝmóŠîÝ:–Á îÝ Óñ îÝÖ»ï èç¼ù Ýçºù  ".Ÿ‹ 6?I Àèʼn %6øè°û !ÄÜÄÜ,1 ù±ÄÜÄÜHMU\øèŠÿ " ÿè  ÿè ,1 ù±ÿè ÿè  H M U\  è×�  '  8 øèé„ *ØÚØÚ,1 ù±ØÚØÚHMUZboèÇù àHè¾ù Ÿ‹ Ÿ‹ "äÇë íÇë ö’Üë ›Üë ¤@HP–Á –Á ˜î ¥¯¸ô c£õ ÿÕö T,Ì– ŒÌ– LÒ– û… )\Ò– (¼Æ– k㌗ àö “— ¤¥— d«— €¤,¥—  t«— 4÷–  ÀœÛ†åãðã[  ü¥— "\º—  » ƒ lº— -  í— \í— 4ð—  à( Dð— üÖ— #„Ü—  ò,Ö—  N  ìÜ— 7  $”˜  Å™ö „ˆ˜ ÄÜüÒ— Q 4³˜  ÀœÛ†å'å㘠\㘠4æ˜  à( Dæ˜ ü̘ #„Ò˜ ÿû ,̘ JìÒ˜ 34Œš  ÀœÛ†Éå “š 4ú˜ ¤ú˜  * Š#‚ø©ó‰ G<E¨áú˜  ˜… b$0,¤™ Œ¤™ Lª™ û… )\ª™ ⎙ [Åט"ªØ.²d¼ž™ ì™ àö ü™™ güŘ Â 4Ó™  ÀœÛ†lçwç®”š Êüž’ ö}½ü¹– Ût‡— ,3:¬ú˜ tç™ ÃÓ´™“ ø©,Ì’ ó‰ ,ã’ ‰ÿ T…“ ö 4½– ÄÜ+Ÿ‹ F$è– ö õh Ø¥ÝØ¥æ ?„çYÄÜáAs„ç�£Š †ÃÓÛ ‰ÿ ÷�ÿ ð1Å×:ÄÜkŸ‹ †$Ä™ ö –`ƒå  ýæýæêÆ ®Žy{éýæqâû… {€¤ˆû £ à]ÿû : à~ÿû [‰ÿ ùƒÿ à˜… ›û… OªØ©‰ÿ ‰ÿ #Ä­­   ´­­ Ó’ !ü–­ 0Á,¥­ (_Á”å­   „å­ ½“ !üË­ -Â,Ý­ (_Á í ™ü †™ü/7(íõ áíúä-Øû9 ØûD™üˆ ™ü“`j݈ °(îü  ²Ý î  ²Ý™ü*6îÝaf¥¢sxejŠî�椭ఴ‰ ¸·áÀ²ÝȲݸîÝÀ lj Ëlj Óôœ Ò‹ îÝ¥¢! (ïÂ(`ï–  ·º²Ý Y ç ïÆ¨ïí  ‰ºã€$ †ã€ 6 >pï« ̹`ï» ̹8) ç»Èïïä®×°$î«08o ç� ç 7ïÇôÄÊÑØß ™üílj öþÙ­Õ×°ÝóŠYóŠFjV ã€Áã€ÊÍ®²Ý(aó­>ó­¿ϰ °ó­ ó­u ­ܯ‰Ç� Dó‹î«›ó‹ú(ðÉ(`ð– ·º²ÝLTR ²Ý1=îÝ„¬·‘–l£¨ðí ‰ºã€ÅÍS²Ý19T²ÝEQîÝ ¥¢ &„‰9pð« ̹`ð»  ̹w €U²ÝN VV²Ýb îÝW _W²Ýk wîÝåë¤éù ÿ Æ Ë ´¹Èðïä®×°?H$²Ý3?îÝtz¬·ˆŽrœðÎö·½ÄËÒ­ààlj é·áòúÙ­á²Ý îÝòà¹úóŠåóŠÒ²Ý6²ÝîÝ ²ÝöîÝÿŒ‘Ø� IJÝu²ÝÖîÝß Ø� ëÍ®m²Ý¥îÝñ»ˆÁœÏó­¼ó­¬ϰ � ó­]ó­ã ñ»îÝú¬·0�™ îÝ’¥¢AóŠîÝ Œ‘îÝú¤é\à¹îÝD¬·m(÷ƒ!&p÷ˆ&£»Ø¥$ †Ø¥6>@÷¬$‹»™ ÷÷‡!x÷æ"â«Õþ$ †Õþ6>þ ÷õÕþl# ÷‹÷ˆ!ÿW]dk Òýy Òý…� ÕþÞÕþæ ;Cäƒ �Ø¥˜Ïó­#ó­{ó­ËÒ› ß †¨àœ d(øŠ!&pøˆ&£»Ø¥JRX²Ý19Y²ÝEQîÝ‘–¥¢£¨€…º@ø¬$ ‹»Û ãZ²Ý0 8[²ÝD  P  îÝ"(¥¢6 < ƒ ˆOxøæ"â«Õþr{²Ý3;T²ÝGSîÝ»Á¥¢ÏÕ†‹èø�!� ­à%ú� .·á7?Žž ó²ÝP²ÝîÝ  Žž ¡ž ¸²Ý€²ÝÊîÝÓ ¡ž ßäƒ z²Ý°²ÝŒîÝ• äƒ ¡Øœæó­ ó­C ó­âî¤ îÝù¥¢-¾¤ îÝx¥¢>ޤ îÝó¥¢Oƒ•>†(ƒ�>ÕþŽž !+ †ƒµ>(„—> \ ²Ý„µ>!îÝLQ¬·^cPp„œ>ˆŠ­à–Žž ž·á¦²Ý®îÝž  «œ¨ ³Ôœá뚨 îÝଷþ(‡‚?‡‡?Ž&+°ÿ8·« @IS(‰�? ] ²Ý‰ß?!îÝLQ¬·^cPp‰”?‘Š­à–·« ž·á¦²Ý®îÝž  «‡« ³Ôœáë…« îÝଷþŠß?  ÷8Š–? ‰Š�?“-°ÿ9bGä« s‹¡?•‹Ÿ? ·« &0Œß? ühÿ3 Œ£?DŒ§?—&1·« 9 Ò­ D‡« „UƒblÉ­ ®�ß?&�²?›H�©?·« ·« ov5î BLPŽ´?  î°ÿ (- Å™�²‚²ƒ²LessÁ„²…²†²‡²ˆ²‰²GreaterÁв%ÑÓ¡yû޾?�ºÅ™Ç™È™­É™Ê™àË™óG*¤�R{9 İ  ·« ·« İ &0î >I–° T�ß?(- î>CK�Ã?Ÿ�À?İ ·« ·«  ‡« �‡« •9î FPš³ ¿31ÁÜËA´ÐAá@-  ËAAá\-láü¯A8â,ÃAª,ªáµáÀá_ÁÔŠB¤‹Bá ¢B5 2á0eü…B@#  …BI$ £BüìA9ã,ýA úŧ=á"á_ÁÔÈB¤ÉBá àB5 2á0eüÃB@#  ÃBI$ áBüªB9ä,»B úŧ=á"á_ÁÔ‡C¤ˆCá ŸC5 2á0eü‚C@#  ‚CI$  CüèB:å,úB úŧ=á"á_ÁÔÆC¤ÇCá ÞC5 2á0eüÁC@#  ÁCI$ ßCü§C:æ,¹C úŧ=á"á_ÁÜ„D¼„Dæ žD/ 2æ0_üæC:ç,üCúŘ.˜æ£æ_ÁLàJàJ èJ´ÔJ ‰ éJðJéüÏI¡°ÿ\ôIæI…„ˆC=ÌÃM”ÈM‘¯ $ÃM¤ÈMüÃM, „ßMçõMêü‰Ml,³M·« ,©Mw4Y瑯 Ÿ4¡P|¡P¶Pëü”O¢,ÅO·« ,»OX5y} ¯Pƒë�}·« {Ñ‹®ü±Q5̱Q$±Q $”¶Q‘¯ /¤¶Q ÉQW ÌÍQâ åQü‰Qh  Ô‰Q é˜' ðQ÷QìüÊP­°ÿ\óP·« ,éPãá·« á!E¦âüïR2ÌïR$ïR $”ôR‘¯ /¤ôR ‡SW ´‹Sã  SüÇRe  ÔÇR‹È –% «S²Síü‹R§°ÿ\±R·« ,§Ráß·« ß!E¤ãüªT2̪T$ªT $”¯T‘¯ /¤¯T ÂTW ´ÆTä ÛTü‚Te  Ô‚T‹È –% æTíTîüÆS§°ÿ\ìS·« ,âSáß·« ß!E¤äü¿V3Ì¿V$¿V $”ÄV‘¯ /¤ÄV ×VW ¼ÛVå ñVü—Vf  Ô—V‹È –% üVƒWïüÚU©°ÿ\�V·« ,÷Uáß·« ß!E¤åüÚX3ÌÚX$ÚX $”ßX‘¯ /¤ßX òXW ¼öXæ ŒYü²Xf  Ô²X‹È –% —YžYðüõW©°ÿ\œX·« ,’Xáß·« ß!E¤æ̰[”µ[‘¯ $°[¤µ[ü°[,„Ì[çâ[ñü€[b$¡[·« ,—[v3X瑯 ž¨™ŸÁ ÈÆ‘¯ Ä È[ÈÅç Û[ËñÉÆ·« Ä8·« ,Þÿ$ç̬^”±^‘¯ $¬^¤±^ü¬^5 ÌÈ^âü¬^9 ä^ë^òüû]p$�^·« ,“^s :‚⑯ ȬØÉÏñ øö‘¯ ôò Ä^ø õâ à^ûø ýòûø·« ög•·« ‰:ƒâ̯a”´a‘¯ $¯a¤´aü¯a2 ´Ëaãü¯a6 äaëaóü�aj$ a·« ,–as :‚㑯 ȬØÉÏñ øö‘¯ ôò Çaø õã àaûø ýóûø·« ög•·« ‰:ƒãÌãe”èe‘¯ $ãe¤èeüãe2 ´ÿeäüãe6 ˜fŸfôüµej$Ôe·« ,Êes :‚䑯 ȬØÉÏñ øö‘¯ ôò ûeø õä ”fûø ýôûø·« ög•·« ‰:ƒäÌ¢i”§i‘¯ $¢i¤§iü¢i3 ¼¾iåü¢i7 Øißiõüóhl$“i·« ,‰is :‚呯 ȬØÉÏñ øö‘¯ ôò ºiø õå Ôiûø ýõûø·« ög•·« ‰:ƒåÌ‚k”‡k‘¯ $‚k¤‡kü‚k3 ¼žkæü‚k7 ¸k¿köüÓjl$ój·« ,éjs :‚摯 ȬØÉÏñ øö‘¯ ôò škø õæ ´kûø ýöûø·« ög•·« ‰:ƒæp�ÿm(�¸m  �½m£-ã€9Ø� Ajƒ®rYc÷¯�(‘¿m ^²Ýp‘ÿm _ ²Ý)5îÝ`e¥¢rwdi‰‘Äm¥£­à¯Ø� ··á¿²ÝDzݷîÝ¿·ºǃ®Ïðœý·ºîÝý¥¢’Èm§’Æm Ø� &0p“ÿm&“ÓmªH“ÊmØ� Ø� ov5î BL(–’ `²Ý`–ö a²Ýïò*îÝ`–• b²Ý ïò*  6 îÝœ¡¤é®³ ¥otÏ–—¯é ­àõ á�·á ²Ý²ÝîÝ ©Ê²ÝãîÝë®› ó©ÊûWœep©ÊîÝf®› îÝ5¤é�„õ-tõ- �üõ-%T†. ºµ“ID‘.¤†. Ÿ. .ü�-�ŽÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwá�ØûÌÑ-§òD¸- ݃݃ ¨ "¨åï @“ð ݃ì݃ò üËWr   tËW<ÐW £$ËW LÐW”öWûó,‹X   d‹X$‘X©¢ 8  4‘XÜ‹XD˜Xµ£ <$¡X  t˜XäŠX  üËW\tçW ºã¿ 2 üçW@+4µX Ó_ÄÜÛ†S DµXYüËW‰<ËX êWö … LËXÚXüäUö ÙX ”6$ÒV³î ,•V �ƒ,¤V¯¢,¿VÇë ÄÜõÛ*©Êþ¾ãÞø©Uµ¢‘µ¢Á¯¢í­yóAy–`|çïò i©¢µ£ï»ô ³îô °®õ O¯¢dªi$°i©¢,ªi4°il©iü’i%T—i  $’i,¢i6ü—i ü’i.4¸i Ó_�´Û†XD¸iÆi—ü�h¶�´lúh³î ,½h©ö ,Ìh¯¢,çhÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�´Û†ø©µ¢M�óA�–`“Ë©¢…Çø Vÿø %déz$ïz©¢,éz4ïzüÕz!œÕz ´C#ü€{# °©{šü­yüüÌz]°°¾¾´é¾üµóAü¶ÛËüK}ŒgÒÊb¼ªz³î Dçy©ö ,ùy¯¢,—z³'³'É�µ'–`«¶'é�«RU6m©ü\>Ðzµ¢VlóAo–`rÛË< ©¢›Ûû z)”ĉûó”؉ûóüÉ( 4±‰¾ã4¹‰¾ãt…Š<ŠŠïò $…Š LŠŠü…Š,t”Š»ô  D4£Š,«Š 씊øù…Š- ïÛ Q $  0 ô&ü…Š- mÄÜüÿ‰3ú±Š [Åפ" �%æù Å×8(ÇëŠàö óŠ lÁ�,Ç�íÕ ,Á� <Ç�$ÓŠ Å™‹¢DЊ Àœ�´Û†|ÉŠ(Ò� dÒ�4Ö� à( DÖ�ìÁ� ˜Ž l˜Ž<œŽè� ( LœŽ·Ž d·Ž4»Ž à( D»ŽÅŽ dÅŽ4ÉŽ à(DÉŽÐû·Ž ¶ýüü�dTü� ™… ØF,ü÷�j Å™‹¢üô�n Àœ�´Û†®)(¼»‘\À‘ ¡$»‘,Ì‘ ”À‘6 Œ’$ lŒ’<�’è� $(#L�’l«’,±’íÕ ,«’&<±’º’( dº’4¾’ à(('D¾’Øþ«’% ¶ý&'üð‘eTð‘¿… #Æ%@"&üë‘k! Å™‹¢"üè‘o Àœ�´Û†!(+(Ôî›,�œ †µ¢,î›,<�œl›œ,¡œíÕ ,›œ.<¡œªœ0 dªœ4®œ à0(/D®œØ�›œ- ¶ý./üî›I$–œ Û… ,Ö-G+ü–œ!lΜ1 §-üî›nDÅœ ß+h17*¼ÅœüDꜵ£*L,óœ )|êœÜ��<¡� ¤$��5L¡�TÏ�6)ü��Kt¸� ½5W4Ç�684ü¸�"ø„��L ïÛ4Q3 $7307!"ü��L93mÄÜüð�2: c0²Ýü��”4é� ÷Wö 9S:>2#üé�:…Ú�83[Å×Ç "Ï� 8.(à–  A l–  <š è� A(@$Lš ,¥  D2t¥  4«  àD(C%D« µ  F dµ  4¹  àF(E&D¹ àˆ¥  B ¶ýCEü‹ 7 T‹ ¿… @ÒB@?'&ü† = > Å™‹¢?üƒ A Àœ�´Û†>Ê (  üŸˆ«ü¬‰žüõ‰Õ8?Fˆ„æŠüÞ›ìüƒ�Ççî õe ù™ý¬] ù™Ü¿]Gæù ü€‰!³î ,ºˆ©ö ,Ɉø©,䈾ãô ¾ãé ¾ã¾ã ¾ãT ¾ãG ö ù‰ëå¡ õÛä ©Ê 4 Å×= ÄÜ� $ÁŠ�´¿ö  Q ˆ„ç¢�´U‹¢�›†Q„çk… Ì3„çM „ç&V�´1‹¢e›†„ç5… ¢ Ù„çóµ¢L⛵¢4µ¢‰µ¢H… ½'ô„çØ¥‡ö ,‡�ëå¡õÛä©Ê*ø©Å×#ÄÜ•²Ý„ãÉA™þ] ãÉI™ˆ] ±š²š³š~´šµšNeÁ¶š·šÕÛ¨±vXç]!™à]�´€‹¢´›†v„ç�… ñX„çr1„çKÐóAÓ–`ÖfcacheÁÓ rcacheÁÑ ’Ë Æ æ Ž- ’¹  revsearchÁì)‚§ 2Æ Ÿ 8Ž 9left_valÁ�; right_valÁ‰<¦==]&ïò m »ô H ïÛ Ï�  íÕ ,  à² è� ^  à-  àü ¿… º º† D è� õ íÕ Ó  àŸ ¿… ] ´‰ ííÕ Â àŽëŠ L·‹ µ£Û£Œ ¨ጠrïÛ?‘Ž ÑÏ� Mè� |Ëžè� lèž ù±›†›†É™¬] –gñšè] Ê[›†›†ù™‹}] àtÚŸ àd쟣² É�‡T]è� È à— àf¿… $ ( ɱ d ²Ýh ú± e²Ý³î +îÝ  �² A²Ý ©ö + îݰ §²  ²Ý ±ý +  7  îÝÛà Ýgñöâç°µ ~ ƒ α»8­àE ¾ü Q·áZ²Ýc²ÝSîÝ\ ³î h²Ý5îÝ> ©ö J²ÝîÝ   ±ý /¡  8Óœáì㟠îÝá�  îݯŸ  îÝ}Ïž ä³³î l賩ö T÷³±ý ü ´# ¬³áæù Uÿ³î ©ö ü•´/<˜´ ¹¬ò¡ ‚¢ •´„ü˜´,Ê´«ü¤³¦üÒ³x�´lº³ ¾ü L¬³³î  ©ö  ±ý  ­¢ þ©ö 2>é¾_óAVÛËM—¥¢ ¨´³î ,¶´©ö ܨ´T«´Çø C3,½´Ä«´ô¬Êæù §´ ­¢ åø©,¡´³î ù©ö –`é¾\³î óA,ð³©ö @Çø É_ref__reÁéí(¡Í» ²Ý˜¡ó» a²Ýûó+îݘ¡Œ¼ b²Ý ûó+  7 îÝŸ¤¤é±¶¢§puÒ¡Ò»Àí ­àù �ƒ·á ²Ý²ÝîÝÙ° ²ÝåîÝíïž õÙ° ý[œitÙ° îÝiïž îÝ7¤é“˜¢ó»ûó †ûó08˜¢Œ¼ûóò© *3(¢Ô» ¼¢Ù»¢Ø»AÂP�ƒ\­¨ dûóáÙ° éûó´Ù° ¼�—ò© ò© àû󂈣‹ìõù †õù08(£ãë ãèëÆ/݃;çñ CõùˆôØ�\f ¬ ­(¤êë ²Ýˆ¤‹ì ²Ýõù+7îÝch¥¢uzfkŒ¤ïëȧ­à³çñ »·áòÝ˲ݺîÝ ôØÍôØÕ÷œ”¯ îÝ¥¢$<¶ñ" !DÀñõùìÀñTÉñ¡×.DÔñ¤Éñð‹Àñ  �%�ØM$)5.?ôÀñ mïò"!, ¬öñõùüöñ*,™ò ¬ /<™òŒÝñ[Êá æ" �%€ñ Êá 8 olÉò\Éò ®$öò Å™äüüÉò2Lìò –W:|ìòüÉòf¼‘ó ›L,©ó  ô‘ótÐó º-üÉò–TÅó •k6 ÔÅóüöñøL®ò ·‹T ü®òÀ¼…ô¬…ô£Ý  ü…ô%<�ô � <$¥ô  l�ôüöñµDüó ¹¯\üüó/2 üöñ×T¹ô¡× ZDÄô ¤¹ôø�öñØ å°  L !& 2üöñØ mïò !#.  ÎôŽÍô [Êá ­"Ʋ .ÇO<ðô" <ùô!   üÛô&|àô ¼$Ûôh Küàô!üØô* Àœá�Øû ‡õ! "ˆõ6!>KX"`BL}ü¼ðÌŸ ¯!ÀÐ"º Vü²ñÖÃÊÑPüèñ  l #€ñ ÌŽñçñ ,æð§òDõðïòhÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Êá ïòQ�Ø‹ôØ«¢Êá «ïò,ïò<ìñÒ¼ x�صôØÿ õù þ½ ¨þ½ !õù*ôØJ¯øÿ¯øX¯ø“¯øÙȹ Àù¦B±ªª±ªÕzÊá ƒïòÙá�ïòRïò9Âɇ¨ ‹­HöÆ ÈŽL ¼H# Æ  Že ¤¡×å° Ü ¬ CƲ ꄳ Ó³ �ô³ rÅ´ )ø´ ý£Ý Îϵ ³Œ¶ ~¡×Då° õùŸƲ %õù­¢¹ ïò¾õùÂïòÌïòÓ íœ ê„ †ê„/7(íñ Éíö Ì-©„9 ©„Dꄈ ê„“`jìÁ °(îø   ²Ý îœ  ²Ýê„*6îÝaf¥¢sxejŠîý Τ­à°Ã ¸·áÀ²ÝȲݸîÝÀ Ö ËÖ Óôœ áÄ îÝ¥¢!(ï¾ $Èï¤ ä®×°$î«08pïð »À›†Àï€ »ÀÓÔÕParseÁÖóר TranslateÁÙó-ð·¿‹ÇŽ“ †›†¥­—œ †ÐÆ ®¶@ Ïï f Ï#ïà ך § ꄵ֠¾ÆãÉg ÐÆ V›†|ÐÆ hÙ­Ë×°Ô ó­°ϰ  ó­;î«²Ç åØÇ Ï(ðÅ $Èð¤ ä®×°H P$²Ý1 =îÝ{€¬·� ’lŸpðð »À›†Àð€ »ÀÐÆ Þæf²ÝNVg²ÝbîÝV ^T²Ýj v  îÝJP¤é^dÆË ³ ¸�ðÊ Ùœ¢©­à·Ö À·áÉÑãÉ6†É "²Ýì²ÝQîÝZ²ÝFîÝO †É [Ù­ú²Ý.îÝ à¹JœXó­Ãϰ ³ó­V Šà¹îÝm¬·ŸãÉîݧΠîÝò¤éº(õÇ' $põ™( »Áô‡H Ph²Ý1 =  îÝ{€¬·� ’ lŸ˜õú' �Á•‡ÁÉi ²Ý1=îÝôù¬· nõÌ' â5;B ­àP ì…\·áem •‡Õ²Ý�îÝæ ÊÒ ñ ô‡u²Ý©î݇ ñÒ “ÈœÖó­Aó­Çû�Ó îÝÞ¬·æÒ îÝv¬·!(ö«.  j²ÝöÙ. !îÝLQ¬·^cPpö°. 犭à–ÊÒ ž·á¦²Ý®îÝžš¨ ¦œ¨ ®ÏœÜ暨 îÝÛ¬·ù(ùÄ8  k²Ýhùó8  l²Ý)5îÝ`e¥¢rwdi‰ùÉ8 룭à¯ñÒ ··á¿²ÝDzݷîÝ¿Œ‘ÇóŠÏðœýŒ‘îÝý¥¢(¡®O `²Ý€¡öO m²Ý„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�¢‰�þtîÝx¡ðU n²Ý ­­®ÖÞ±ó¬ rÚµím¤SËŽŸŸ BoxÁ£ó‹¤ô‹ljô²ßk#…#�#ËŽ–š•šýÆÿ �þÓ  ß îÝ�•¤é£©—�$Ê¡³Oðå ­àò Þˆþ·á²Ý²ÝîÝ  îØ ²ÝšîÝ£  óÙ ²÷Ü »bœp{×Ü îÝqõÜ îÝö¤éš(¢îV o²ÝÀ¢ßZ p²Ý„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�³�þzîÝx¢•_ q²Ý ñ‰*  6 îÝìñ¤éþñöpu ¢óVõ; ­àH ¢‰T·á]²Ýf²ÝWîÝ` ”Þ l²ÝêîÝò  ñ‰ñà  ¶œÄÏÓà îÝÅïà îÝD¤é‚t‡‚ ’!ü‡‚%T˜‚ ǵ“MD£‚¤˜‚ ±‚²‚ü¢���ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÞˆ©„Ìã�§òDÊ� Ó‘"Ó‘+¨ #«âá K’â #Ó‘ñÓ‘÷,ç d˧$ѧ©¢,˧4ѧÜ˧Dاµ£C$á§ tاDó§îØ ló§ Þ"îØ 1"'ñ‰4�¨ üó§#l�¨ Õd 0¬�¨1,¬¨  £ª LÕ¨ óÙ |Õ¨ߨ ¿ËŽªÚ  8 ,ߨ 㨠Dû¨îØ tû¨Úå +"”Þ üû¨+  Þ"”Þ Q  $T“©  ê"ÄÄÅ­àÉó¬ (! y?V¾�ËŽªÚ b k4Ÿ©ªDŠ© ¼ÚÞ  ú 5  䊩,ˆª  ¬ù©tù© ÎËŽªÚ H -4˜ª ú ¤ªüô¦°6 G”7ü¿§åüŨßü$°§§Ü ,œ§¯¢,£§µ¢Þµ¢Ïñà f£à o×Ü �ø©Hðè Lɨ÷Ü è4ò¨ ÚÞ RÓà ‘£à š×Ü º ËŽP ðè \ø©õ“ðè À\Ñ–`Ó–`³Â¤ Ç � w ©¢Åµ£ Úå Z¨æ ¡ç ¤Úå M³è êè üÜé ,¹ê 0ðè ðd™®$Ÿ®©¢,™®4Ÿ®l˜®ÔŒ®4‘® ®$Œ®2¬‘®¬®—ü¼­p�´lô­§Ü ,à­¯¢,ç­ø©‡µ¢¹'–`)Y©¢ã¸ï ®d†¶$Œ¶©¢,†¶4Œ¶l…¶üðµ)|õµ °$ðµ3$”¶üõµ$Ÿ¶šüù´¦åµ§Ü ,ªµ¯¢,¹µæÒ$˵ø©œµ¢Î2–`4ɾ7r©¢¯ñ Ò,°¼   L¸¼óÙ |¸¼¼¡ç .,¼,î¼  dî¼$ô¼©¢;4ô¼üÚ¼!œÚ¼Ûû C",�½ü…½# …®½ ­½ü³»û!1 �5ü¬¼‚üѼ] ……¾¾ˆé¾Û‰óAÛŠÛËÛ@ZN·¼�¢mœŽ¼§Ü D黯¢,û»ðè ï÷Ü Ï±ý Õ¼µ¢€¯¢­ðè A V–`XóAIÛËU/¡ç )©¢äÛû Áðè b¯¢i ,¢È   LªÈóÙ |ªÈ´È¡ç . ,´È´ÎÈ|ÓÈ º$ÎÈŒÓÈ,‹É  d‹É$‘É©¢;4‘Éü÷È!œ÷ÈÛû C",¾É $ÅÉ ü¢É- �  ÕÉ ÔÉ ü�Ǹ1A ¡5üžÈ·üÃÈ’üîÈg ��ëÄ’é¾Û“óAÛ”ɾÛ•ÛËÛac ›‹ýq¼üÇ§Ü D×ǯ¢,éÇðè X÷Ü 8˜Û$Çȱý òȵ¢Å¯¢òðè †˜Û€Ej–`lóAÆɾiÛËjg¡ç ²†ù �©¢EÛû "˜Û±ðè ¸¯¢¿¬‡öLŒö �¯¢$‡ö,–ö„Œöü÷õ0 š ¤ö­ö¥üˆõ¥ššÒÅ�åËÛž¯Û b…a®lßõ§Ü Dºõ¯¢,Ìõüõ í–`!ŽÆþ Œ¤‹,©‹ ¥¯¢$¤‹,¯‹d©‹ü“‹+ £Ä‹©üŒŠ¸££�Ʀ»ÆÛ§ª¯Û® »ää-çtúŠ§Ü D¿Š¯¢,ÑŠ,ãŠÂÿ æ)–`+ª¯/§ë€ ü㑃 Dæ‘îØ læ‘Úå +!ñ‰üæ‘!Œô‘ ÔOœô‘,D—’ îØ l—’Úå  + ! ñ‰ü—’"l¥’¨æ M,³’¤¥’2$×’ Å™‹¢úœLÿ’ óÙ |ÿ’ ‰“¡ç  A ,‰“D¥“îØ t¥“Úå + "”Þ ü¥“( ³è K T»“ êè # ,V4´“ ºÚÞ ¦R,Ç“  Ì´“,Þœ  ¬ÏœtÏœ¹ê < !4îœ ùœ ¨³ü ‘Ú ; K®5üï’‹ ü˜“â �´lË‘§Ü ,®‘ø©,µ‘ñà T£à ]×Ü }±ñà ï£à ø×Ü ðè Ló’÷Ü y�´4œ“ðì ïÓà .£à 7×Ü W—í ð£í ùrðè ŸMÈ–`ʈ Ç  W Úå 7úƒ  Úå ¾¨æ �¡ç Úå Ï³è  êè „؇ ®¹ê ðè Õüº§ƒ D½§îØ l½§Úå +!ñ‰ü½§!ŒË§úƒ MœË§*Dî§ îØ lî§Úå  + ! ñ‰üî§"lü§¨æ M,Ѝ¤ü§2$®¨ Å™ö §ªLÖ¨ óÙ |Ö¨ à¨¡ç  A ,à¨Dü¨îØ tü¨Úå + "”Þ üü¨- ³è K T—© êè # ,V\‹© »ÚÞ ¦R,£©  ô‹©,‹ª  ¬ü©tü©¹ê < !4›ª ¦ª ¨³ü; K¯5üƨáü器ÄÜŒž§§Ü ,�§ø©,ˆ§ñà R£à [×Ü {±ñà ï£à ø×Ü ðè Lʨ÷Ü yÄÜ4ó¨ðì ïÓà .£à 7×Ü W—í ð£í ùrðè ŸMÈ–`ʈ Ç  W Úå 5úƒ Úå ¾¨æ �¡ç Úå Ï³è  êè „Ž‘ ®¹ê ðè Õ$òÄ Å™›†´áÄ\æÄ‹×$áÄ:ŒæÄ„¤ÅL©Å®Õ$¤Å\©Åü‹Å*d�Å ±$‹Å,�ÅVü�Å%¬¿Å\ÄÅ‹×$¿ÅÐÅ„ÄÅÛŰü‘ÄÊü�ÅZ ÖÄ§Ü ,¨Äø©,¯ÄæÒ$ÂÄ%ܧIܧ…Åú¦°N–`PɾS¾¾E¤‹×Ž®Õdü– ?‹× üáÛƒ DäÛîØ läÛÚå +!ñ‰üäÛ!ŒòÛúƒ MœòÛ*D•Ü îØ l•ÜÚå  + !  ñ‰ü•Ü"l£Ü¨æ  M,±Ü¤£Ü2$ÕÜ Å™›†ÖÞLýÜ óÙ |ýÜ ‡Ý¡ç  A ,‡ÝD£ÝîØ t£ÝÚå + "”Þ ü£Ý5 ³è K T¿Ý êè # ,Vd²Ý ½ÚÞ ¦R,ËÝ,ÒÝ ü²Ý&,ºÞ  ¬«Þt«Þ¹ê < !4ÊÞ ÕÞ ±¼üÒÚ„; K±5üíÜéü–ÝÀܧŒÅÛ§Ü ,ïÚø©,þÚú¦,™Û(ñà f£à o×Ü �Åñà £à  ×Ü ,ðè LñÜ÷Ü �ܧ4šÝðì Óà B£à K×Ü k—í £í  }ðè ªXÓ–`Õ©&ו Ç Œo Úå Vúƒ (Úå ß¨æ ±¡ç <Úå ð³è Áêè ¥Žž Ϲê ðè íüžðE D¡ðîØ l¡ðÚå +!ñ‰ü¡ð"l¯ð¨æ M,½ð¤¯ð2 Lüð óÙ |üð †ñ¡ç  A,†ñ¬¢ñîØ ü¢ñ( Úå ,  #  ”Þ ü¢ñj ³è  L  Tòñêè # ,VÌØñ ¾ÚÞ  §R,þñ4…ò  üØñ4,îò ¬ßòtßò¹ê <  ! ‰ó Šó  ü¡ïé< L ²5üìðžü•ñõ“ð§Ü ,Ëïø©,Úïý  4õïoñà ­£à ¶×Ü Öðè Lðð÷Ü ]4™ñðì ÑÓà £à ×Ü :—í Ò£í ÛKðè x5°–`²˜¢ µÂ•Ç �¿{S Úå ‚¨æ T¡ç Úå ¹³è ‰êè mº¦ —¹ê ãðè Ä DšþîØ lšþÚå +!ñ‰üšþ!Œ¨þúƒ Mœ¨þ*DËþ îØ lËþÚå  + !  ñ‰üËþ"lÙþ¨æ  M,çþ¤Ùþ2$‹ÿ Å™‹¢Ìÿ D£ÿîØ t£ÿÚå +! ”Þ ü£ÿ# ³è  J  $4²ÿ؇  m,¹ÿ,Àÿ ¤²ÿ±´ü�ý¯�´lÿý§Ü ,¹ý—í ,Èýø©,ãýÜñà £à #×Ü Cyñà ·£à À×Ü àðì êÓà '£à 0×Ü P‰óA‹–`�ÉÚå ©úƒ {Úå 2¨æ Úå �³è _؇ f Då‰îØ lå‰Úå +!ñ‰üå‰!Œó‰úƒ Mœó‰*D–Š îØ l–ŠÚå  + !  ñ‰ü–Š"l¤Š¨æ  M,²Š¤¤Š2$ÖŠ Å™ö œ‹ DîŠîØ tîŠÚå +! ”Þ üîŠ( ³è  J  $\ýŠŽ‘  m,‰‹,�‹ Ìýбµü߈½Ä܌Ɖ§Ü ,€‰—í ,�‰ø©,ª‰Üñà £à #×Ü Cyñà ·£à À×Ü àðì êÓà '£à 0×Ü P‰óA‹–`�ÉÚå ©úƒ {Úå 2¨æ Úå �³è _Ž‘ f$º© Å™›†´©©\®©‹×$©©:Œ®©„ø©Lý©®Õ$ø©\ý©üÓ©6ŒØ© ·$Ó©,ê©,ñ©^üØ©1¬“ª\˜ª‹×$“ª¤ª „˜ª¯ª¶üš¨•üÉ©f ž©§Ü ,¿¨—í ,Ψø©,鍿Ò$„©8ܧ\ܧÍ©ú¦$»YóA[–`]ɾ`¾¾R¼‹×®®Õ„ý· _‹×! Dé»îØ lé»Úå +!ñ‰üé»!Œ÷»úƒ Mœ÷»*Dš¼ îØ lš¼Úå  + !  ñ‰üš¼"l¨¼¨æ  M,¶¼ ¤¨¼2 $Ú¼ Å™›†¨½ Dò¼îØ tò¼Úå +!”Þ üò¼0 ³è J  $d�½Žž  m,޽,•½,œ½ ü�½!º·ü·ºñܧŒÊ»§Ü ,Ùº—í ,èºø©,ƒ»ú¦,ž»ðñà .£à 7×Ü W�ñà Ë£à Ô×Ü ôðì þÓà ;£à D×Ü d”óA––`˜©&šáÚå Êúƒ œÚå S¨æ %Úå ®³è €Žž ‡DñÊîØ lñÊÚå +!ñ‰üñÊ"lÿʨæ M,�ˤÿÊ2D¼Ë îØ t¼ËÚå  + !  ”Þ ü¼Ë> ³è  J $ÌË˺¦  m,åË,ìË4óËüËË/€Ì¸üÑɯ ã椆 ,€Ê—í ,�Êø©,ªÊý  4ÅÊGñà …£à Ž×Ü ®ðì ÞÓà £à $×Ü DróAt–`v˜¢ y¿Úå ¨æ ÒÚå �³è Sº¦ ZDþ•îØ Ôþ•Úå +!ñ‰üþ•5\¦– ËOl¦–üþ•aäÁ– ­FôÁ–üþ•�í– þW¿Uÿe$ŠöÆ Üñ–üí– “—¾üÁ•ÒØÚlæ•§Ü ,Ü•ØÚÁ ¼¼½ PropertiesÁ¾óã ïÊšÓâà0ñà n£à w×Ü —s™Úå ž‘Æ p½Æ KêÆ &¬÷–tû– ”¨÷– Š—Œû–Œ—¿Fö–öÆ ]ò–¶ |œÉ ™DÒ¯îØ tÒ¯Úå +!”Þ ÜÒ¯³è I#TᯠµÚÞ rdá¯ó¯Àü¡¯Rã“T½¯§Ü ,³¯ðì ‡Óà Ä£à Ì×Ü ë,QÚå ñ³è Â¬Ë ÈDü±îØ lü±Úå +!ñ‰´ü±4в ÉNDв˜²ÁüαJ Å�<ê±§Ü ,à±ñà ›£à £×Ü Â$LÚå È«Í ™DËÄîØ tËÄÚå +!”Þ üËÄ ³è J$tÚÄ ¸ÚÞ s„ÚÄðÄÂüœÄT$¼Ä§Ü ,²Äðì †Óà ãà Ë×Ü ê,OÚå ð³è Á¼Ï ÇDèÌîØ tèÌÚå +!”Þ ìè̳è I#d÷Ì ¹ÚÞ rt÷Ì‹ÍÃüºÌQ,ØÌ§Ü ,ÎÌðì †Óà ãà Ë×Ü ê,PÚå ð³è ÁÙÑ Çx£èЄK„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�¶Š�þch †ŽÓ z‚(£½Ð ö£ÂÐú/ñ‰;ñà CŽÓ Ò ŽÓ Ý_ièÓ ú(¤ÄÐ r ²Ýx¤èÐŽÓ #îÝOT¬·afRs¤ÉÐüŽ­àšñà ¢·áª²Ý²îÝ¡ ÑÔ ¬ÑÔ ´Öœãí¾Ö îÝᬷp¥«ÑÅ� †Å�08Ø¥¿Ñ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅóÇ �þX] †Ü× oxà¥àÑóÇ  †óÇ 09(¥„Ñ ý¥‰Ñ¥ˆÑT‚c¶Šo ¶ŠzÅ�zäÍ ƒÜ× O Ü× [óÇ çñÇ ïºÄ¯× Æ«Ø �éØ Ü× ´Å�º (¦‹Ñ s ²Ýp¦«Ñ ²ÝÅ�+îÝئ¿Ñ t²Ý Ü× + îÝà¦àÑ  u ²Ý óÇ +  7  îÝÛàÏž íòÞ㬱 z ¦�Ñ„4­àA÷Ù J·áS²Ý\²ÝLîÝUäÍ ^²Ý+îÝ4�Ú =²Ý îÝ ñÇ ñÇ (ÜÑÜäÍ îÝÑ�Ú îÝŸ¡Þ îÝmÏž ¤îÞdôÞ€¤,îÞtôÞ*üîÞ"\ƒßˆû Plƒß*üîÞE ü”ßÄ™ß Ð$”ßԙ߹ßÏü¢Þ—$ßÞñà ,ÂÞø©,ÉÞËäƒ  Ø¥/–`1`€¤?ˆû °à ¹”®â\³â‘Æ $®âl³âü®â$|Áâ §FŒÁâ\Üâ Áü®â:DÓâ ÏZ5¬ÓâîâÐüÉá¥$úáñà ,ðáÞÞý”ß¼e Óú„,]ÐñÇ ÁÂÞ�ÄÅÆµ�ÇÈÉÊ�ÊËÌã�ÍÎÏú�ÐÑÒ•‘ÓÔÕ®‘ÖרɑÙÚÛê‘ÜÝÞ‡’ßà᪒âãäÊ’åæçè’èéꊓëìíª“îïðΓñòóð“ôõö–”÷}בjÊ=(¶Û‘Æ •¢â pââ 7”ñå\ö呯 $ñålöåüñå$|„æ ©FŒ„æLŸæ Áüñå8D–æââ X3œ–æ¯æÒüŽå¡$½åñà ,³åµã ¦ñÇ Úîã Œ$H‘Æ ÿÓç Ùââ Ÿ"lçó,íóíÕ ,çó<íóŒçó ÷ó&üüóÄ�ô°à $üóÔ�ô-$±ô ó›!\úô€õñß ,úô,€õ„ˆõDŽõ ê,ˆõ TŽõ´ˆõ üúô$ ì®õ´³õ Ò$®õ  ijõ.  $éõ ãœ!”‹÷\�÷‘Æ $‹÷  l�÷ü‹÷ \ž÷ ¤ F  lž÷*  ü…÷& h�4á÷ à„ŠøD�ø í,ŠøT�ø,É÷ Ò�!P´Šø›ø þw,›øüŠø$¿ø Ož!ì†üŒ‹ü Ï$†ü,�üÄ‹ü6 ì§ü´¬üŽì $§üĬü, ”æü\ëü‘Æ $æülëüüæü \ùü ¥Flùü*üàü&4Äýà„õýDûýŒî ,õýTûý,¨ý ³Ÿ!L´õý†þêî q,†þüõý $®þ . !,Ôþ ßþ! Õüíñò üøöç´Ü÷üÓüø´¿ý$›òñà ,þñø©,…òZŒ2pá� ÈšÉmØÚéñÇ $º÷®D Åž®Åž·ï¯ØÚOñÇ „$™ýй£õ Åž%ò–`ôminlenÁ4üö¨õ ^maxlenÁ4×üÉõ š�íÕ Æ°à lñß «ë î ³wÌŽì ž‘Æ Dœí Œî µêî ^Ûï ôŽì ´‘Æ ~Œñ YŒî úêî § (©ƒ‚ d ²Ýh©°‚ e²Ý§Ü +îÝȩ A²Ý ðè + îݰ©â‚  ²Ý ±ý +  7  îÝÛàÏž íòÞ㬱 z ©ˆ‚Ž4­àA üõ M·áV²Ý_²ÝOîÝX §Ü d²Ý1îÝ: ðè F²ÝîÝŸ  %¡  .Éœ×âäú îÝׂû îÝ¥Ÿ  îÝsÏž  <›„§Ü ¨„Ùüðƒ8§Ü L‡„´ú ,ýƒ 1<͆±ý |͆,Õ† µ2<Õ†â†Úü—†Kø©lµ†´ú D¨†¡  |9•ý ‚€ˆ§Ü l„ˆðè T“ˆ±ý ü¼ˆ( áò¡ §Ü £í ü±ˆ4<´ˆ ¹áò¡ ïþ ±ˆgü´ˆ1ëˆàüÀ‡«üî‡}�´lÖ‡ üõ Lȇ§Ü £í õ¹£ çšÿ Ù-é¾1óA(Ûˆ’ÿ îLj§Ü ,Öˆ£í êè (0äLj\ʈ ´eU,݈ÌʈüĈ  Àœ�´Û†äˆáÞæù È šÿ ùø©,½ˆ�´š—í Ù§Ü £í &–`/é¾€§Ü óA,Œˆ£í dêè 3Ö�Ÿ¥ éí‹§Ü LÆ‹ðè Ñ‹±ý ,ÁŒ4ÀŒêè &ü÷Œ- ã³áõÛUÿ§Ü —í üÐŒ_´ÓŒ ¿ãå„õ„ÐŒsüÓŒ\üÐŒp,¹� ËQÉɱËÌÛË«ÍåË«4¡ŽnyP°G …ª<¹� Å�Æ�üÿˆÇâü°‹–ü¯Œ— ,‘‰üõ $ˆ‰§Ü àðè Õ±ý Ê—í ­£í Èë…c …¦Ké¾.óA&ÛËóA,³ŒÉêè ˜…Åå…ðè ðè ‚�§Ü ,–�—í ü‚�!„…� µF6,��ô…�üÿŒ% ÀœÄÜÛ†¤�ã¸õÛþŒ  …Óø©,øŒÄÜ›§Ü ï—í ø–`'é¾�§Ü óAA—í 4ª‰óŸ¥ éí(ªá‘ v²Ýhª’’ e²Ý§Ü +îÝȪ¥’ A²Ý ðè + îÝpªÄ’  w²Ý ˜Û+  îݰªØ’  ²Ý±ý +7îÝÆß +1$îó ¼ Á Š�dªæ‘™€­à� éû ™·á¢²Ý«²Ý›îݤäú ­²Ýzî݃‚û Œ²ÝYîÝb ˜Ûn²Ý;îÝDŸ  M¡  V-œ;Fäú îÝ;‚û îÝ —�îÝן  îÝ¥Æßy<•”§Ü ¢”êüê“8§Ü L�”±Ž,÷“ 1<Ç–±ý |Ç–,Ï–•ý .<Ï–Ü–ëü‘–Kø©l¯–±ŽD¢–¡  x9•ý ~Ϙ§Ü lÓ˜ðè d☘ÛTð˜±ý ü­™m òò¡ §Ü £í æÒü¢™y<¥™ ¹òò¡  “¢™mü¥™v$¨š |¨šD­š ‰ +T­š+$Ëš dËš,К †˜Û / <К”Æš Å™˜Û ü¥š_$öš Å™˜Û'Š›ñüÁ—Éü¹˜Ñüš™ð řǙș­É™Ê™àË™óG*¤�R{9 ˜Û„×— éû LÉ—§Ü F£í :æÒ-¹£  �´ßÑ““—�®˜ÛY—�tdé¾­óA¤ɾ›ÛË’É“\¤”ð”ÂÙ§Ü ,Û™£í êè (0$é™ æÒüÙ+¤Æ™ ¶{k,â™ CüÆ™($ÿ™ æÒ „ÿ™L„š ‹=\„š¤ü™ Àœ�´Û†ššòÉ æù ´™ Ñ“äø©,®™ì—í @�´œ—�餆 £í !æÒ*æÒ3–`Qé¾£§Ü óA,Û˜£í ɾ$ê˜æÒ‡êè Ó ™Ž€š4Ÿ¥ éí _ref__capsÁ Ö›§Ü LÚ›ðè å›±ý ,Ùœ4Øœêè &ü��- ôå„õ„üèœ_´ëœ ¿ôå„õ„èœbüëœ\üèœp,Ñ� ËQÉɱËÌÛË«ÍåË«4¡ŽnyP°G÷�ª<Ñ� Ý�˜Û'üž›ÀÞ�Q˜Ûó5üÀ›žüÇœ— ,°›éû $§›§Ü ùðè î±ý ã—í Æ£í áž�÷�¿Ké¾GóA?ÛË8óA,Ëœêêè 3ï�>©ðè @˜ÛGðè N˜ÛUš�§Ü ,®�—í üš�!„��ª‰D4,µ�ô��ü—�% ÀœÄÜÛ†¼�ôÝõÛ–� ÷�øø©,��ÄÜ™§Ü —í –`'龦§Ü óAM—í Yª‰ñŸ¥ éí(«¿¡ x²ÝØ«æ¡ y²Ýüõ +îÝX«‡¢ z²Ý *  6 îÝž£¤é°µ¡¦otѫġ¢ì ­àø Âÿ ·á ²Ý²ÝîÝ´ú ²ÝäîÝ쌑ôóŠüZœhs´ú îÝhŒ‘îÝ6¤é’\פüõ œ×¤,㤠Ú4<ã¤ð¤ûü¡¤Oø©l¿¤¨¦D²¤´ú ~9ñ§„(¬¼® {²Ý¨¬ä® |²ÝÂÿ +îÝ`¬ÿ® ²Ý *  6 îÝž£¤é°µ¡¦otѬÁ®«ì ­àø Õ� ·á ²Ý²Ýîݨ¦²ÝäîÝ쌑ôóŠüZœhs¨¦îÝhŒ‘îÝ6¤é’\ѱÂÿ œÑ±,ݱ û4<ݱ걈ü›±Oø©l¹±ìªD¬±¨¦~9µ¬„(­üÇ ´ ²Ýø­¢È˜ÛîÝø­ÇÈ( ó—  îÝø­õÈ7 ¬™  îÝø­²É*åš îÝø­âÉ(žœîÝø­�Ê2Ëž$îÝ/ îÝ   O\�únw²Ý„¼ú˜žÓú¬²¸¾Ç­�È´ãéð­àþ ËŽ ·áË­�ú% îÝ?à±HîÝ$—�-îÝ  ó—îÝù ¬™îÝå åšñîÝÑ žœÝîݽ  ËžÌò²Õ²Ýؼúáëœùƒ ‘—�îÝýœ²îÝÞ±²îÝ¿ƲîÝ Û²îÝ�ð²îÝbÓúc "}²Ý/~ ²Ý*²Ý%  €²Ý!  � ²Ý  % ²Ý‚ ²Ý O^´o Ë­|Í­…²Ý8²ÝA²Ý!²Ý*²Ý ²Ý²Ýó²Ýü²ÝܲÝåç ø®¢È˜Ûð”+3ø®ÇÈ(ó— †ó—1 :ø®õÈ7¬™ †¬™1 :ø®²É* åš †åš 1 :ø®âÉ( žœ †žœ 1 :ø®�Ê2 Ëž †Ëž 1 :(®ƒÈ ¬  ®ˆÈ®‡È  % 5 E �¶œËލ·±°˜Û+—�4󗜲¬™Ø±²áåš«Ʋ´žœ~Û²‡ËžQò²Z%0 ð”®„¸}øE‚¹ Á¹Õ€º�žœ-åš4¬™;ó—B˜ÛI说çÞ׳Ø*2À¯×çߨ²Ù*2¨¯õçߨ²Ù*2ð¯�è ƒ¹ �º  *2ø¯´è% řǙș­É™Ê™àË™óG*¤�R{9 ¼«_d †˜¿ v ø¯ßè% “Ú¬Û + 4ø¯Šé)“Ú¬Û+4ø¯¹é$ØÚÀ½ +4 ¯ãéߨ²Ù* 3ˆ¯ýé ߨ²Ù* 3ø¯”ê% “Ú¬Û+ 4ø¯¿ê& “Ú¬Û+ 4¨¯ëê ߨ²Ù* 3¸¯†ë ߨ²Ù*3Я£ëߨ²Ù*3دÃë!ÈË  †ÈË !0 9à¯äë#ØÚÀ½ #*"3(¯åã ·   "¯êã¯éãnÊ}$Å�‰äÍ ‘ÞפžÜ­ߨ³ÜˆߨZ³Ücƒ¹ 5¤À >˜¿ ˜¿“Ú¡Úܪ“ÚzÚ܃ØÚS–Á \ߨ,³Ü5ߨ³Ü“ÚàÚÜé“Ú¹ÚÜÂߨ’³Ü›ߨl³ÜuߨF³ÜOÈË   ÈË ,ØÚ÷–Á ÒݳØó²Ùòٓ�º cí¿3¬Û¶¬Û„À½ R²Ù ²Ùï¬Û¾¬ÛŒ²ÙZ²Ù)²ÙøàÄÇÀ½ �ƒ¹ )(°ìã Ì ²Ýè°´çÞ×îÝÀ°×ç ߨ  îݨ°õç ߨ  îÝð°�胹  îÝø°´è%˜¿îÝø°ßè%“ÚîÝø°Šé)“ÚîÝø°¹é$ØÚîÝ °ãéߨî݈°ýé ߨîÝø°”ê% “ÚîÝø°¿ê& “Úîݨ°ëê  ߨ îݸ°†ë" ߨ!"îÝа£ë$ߨ#$îÝذÃë&ÈË %&îÝà°äë)ØÚ()#'(îÝç îÝ   !#%'(5�úG*P²Ý]+¼úqwÓú…*‹+‘— °ñã̼ÂÉ,­à×äÍ à·áéµÊò�úû îÝ ÒîÝúžÜîÝä³ÜíîÝγÜ×îݸ¤À ÁîÝ¢™Ç«îÝ‹ÚÜ”îÝtÚÜ}îÝ]–Á fîÝF³ÜOîÝ0³Ü9îÝÚÜ#îÝÚÜ îÝì³ÜõîÝÖ³ÜßîÝÀ³ÜÉîݪâȳîÝ” –Á  –Á ©²Ýe¼únxœ†ƒ ”‘ ©žÜîÝŠ³ÜîÝl³ÜîÝN¤À îÝ0™ÇîÝÚÜîÝóÚÜîÝÔ–Á îݵ³ÜîÝ–³ÜîÝxÚÜîÝZÚÜîÝ;³ÜîݳÜîÝþ³ÜîÝàâÈîÝÂêÔîݤÓú^"ƒ ²Ý,„²Ý)H²Ý%  …²Ý"  †²Ý    ‡²Ý  ÿˆ²Ýû€²Ýø²Ýôý‰²Ý ðùвÝìõ²Ýèñ~ ²Ýþäí ²Ýúà鋲Ý÷Ý!æŒ ²Ýô !µ ²Ý– ²Ý   ÿ Ì "µÊ, ·Ê5 ²Ýé²Ýò²ÝÓ²Ýܲݽ²ÝƲݧ²Ý°²Ý�²Ý™²Ýy²Ý‚²Ýb²Ýk²ÝK²ÝT²Ý5²Ý>²Ý²Ý(²Ý²Ý²Ýñ²Ýú²ÝÛ²Ýä²ÝŲÝβݯ²Ý¸²Ý™²Ý¢] è±´ç éãÀ±×ç Žä¨±õç Žäð±�è ÙÑ ø±´è%  ÷˜¿!ø±ßè% Ñäø±Šé) Ñäø±¹é$ ­Ó  ±ãé Žä  ˆ±ýé Žä  ø±”ê% Ñä  ø±¿ê& Ñä  ¨±ëê Žä  ¸±†ë Žäб£ë ŽäرÃë  ÷ÈË  à±äë ­Ó 8±óã ·     ±úã±ùãnÎ}Å�‰Þ×Îߨ·ߨ ƒ¹ ‰˜¿r“ÚS“Ú:ØÚ!ߨߨð“ÚØ“Ú¿ߨ¦ߨŽߨvÈË ^ØÚ@)éãqŽäXŽä?ÙÑ &šà ÑäìÑäÑ­Ó ¶Žä›Žä�ÑägÑäLŽä1ŽäŽäý�ãã­Ó ù R8Áp²�¢Å�¯× *2ð²£¢ÙÙ ParserBuilderÁÚœûÛÍûÜßûÝempty_min_rangeÁ¬£#E®‚‡ †Ü癢ø²Ç¢&ÉÉTranslatorBuilderÁÊ‚�ìË»eìÌflagsÁìx¡Œ£l·Asx †„銓(²ç¡ ϲ졲ë¡DÔSÓ‘_íã gÅ�åäÍ îÜçÀ ÜçÌ„é. „é:¬¶¯× 6ÕèíéfÅ�¦ (³î¡ ²Ýp³�¢ ²ÝÅ�+îÝð³£¢ �²Ý Üç, îÝø³Ç¢& Ž²Ý „é-  9  îÝÞãÏž ðõáæ¯´ | �³ó¡Ö7­àDíã M·áV²Ý_²ÝOîÝXäÍ a²Ý.îÝ7Žë@²Ý îÝ £ë!£ë*ÆœÔßäÍ îÝÔŽëîÝ¢”ïîÝoÏž ;„ç¼B A¹µ¾ ©µ¾  ŒC¿ ÀÁÁÙÂóÃÄFlagsÁÅóÆÇLiteralÁÈóÉÊDotÁËóÌÍ AssertionÁÎóÏÐ ClassUnicodeÁÑóÒÓ ClassPerlÁÔóÕÖClassBracketedÁ×óØÙ RepetitionÁÚóÛÜGroupÁ ÝóÞß AlternationÁ àóáâConcatÁ ãón“-XE,7Õ¿¹¶¾ ©¶¾  ŒC¶¶HirÁ·¦ã¸µ^ãm9Qf>5_V DѼ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÂð�þDÛ¼…C…CüˆC¾‚Ð=‰C¶Ð=ò¹Úàʼnô�þ|‘½$š½ ìwµ“D‘½ 34š½ü‘½"„¡½ Ÿ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫµ“ œ 3”¡½øø‘½"  ‘PÙ*Ù*¨Û*ÛËÙÜ*ì¨ÙFÝ™�''àëÕö Ö3ch øø�½‚…  ”™ ÆQÐ÷ « 3´¹ Å ðØ†½ à›† µ“›† ‹½ à°ùµùÌ̽Üçü̽2,÷½ @0 3<÷½|¯¿$¸¿›öD¯¿$34¸¿WT–¾4˜¾ ¥µ“ –¾ 2D˜¾ü̽U,�¾ G´S 2Œ�¾ü»¾ ʵ“²²ßô³¦ ´îN µÅœ œRŽLx¯'©„UÿãÉü̽�<³¾ Ç_Âðëû©„ʵ“æûµüêÀ2ü³¾(øù̽�  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÂð©„Æ2z‹ü̽�mÂðB#. ܾ:úÛ¾[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏï©„Yv �%„ã •ÿŒ2~®-3$ê¾ô¾B  tê¾$ï¾ ‘MÂð�þU J:Lï¾ ‚¿B }ü¯¿"„¿¿Ïö$¬#3”¿¿$Ö¿'\Ö¿ Þ"òô'+&3#*$Û¿ ìwÂð&U%34Û¿ü¯¿3Ò¿ ÞQÐ÷�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÂð#ÿ%É"3„Ò¿øû¯¿3  ‘P²Œ²ŒZipÁµŒ—ÍJ¶Œ˜ÍJ·Œ÷ÍJ¸Œ¶ÍJÉ by­]òÐ÷å‚"!3†‹(!øûŒ¿· ¨ *(· ¼ ÆQåƒ*Î)3×Ü +)è +’¿ ,)à°ù Âð°ù›† —¿ -)àÝ…°ùµù›¿ .)àÝ…â…̃À 5„éüƒÀ2 ,®À ‹5143<®À,åÁ@ Þ"Åõ@(?)31a 34TÑÀ 4ÓÀîú- ÑÀ6 1DÓÀüƒÀ^ LÇÀ –3·6L.ÝÀ2!1ÔÇÀüûÀ 8, 7 ˵“‘‘ßô’¦ã“îNã”ÅœãƒqÂKu E¦©„Uÿµü8üƒÀ˜ <óÀ Ç_‰ô̈©„˵“Ljµü2ô7Á1"1üóÀ(øüƒÀ™   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‰ô©„1Æ0#1z 90‹ 9$%üƒÀ™ ;0m‰ôA#./; œÁ 4'8ý›Á :0[•ÿ #úÿ:/&1!Q 4,3$ªÁ =´Á A  >/tªÁ $¯Á ‘M‰ô�þ=U>J<(8L¯Á ÂÁ A J üÌÁœÑÁ ͉ô$ÌÁ?j*3ÔÑÁ ðÁ+40} A…ðØ.¡BªðØ.b/4r0ñÁ´ 43'3¯4¿6 ö¼6ü”µÝ M /3^ A37u3†B39ÇZü̼¥  ü½ÁÝäë?  üù¿Ê ° · ¾ C„ã Ìæµíã ,¾µ§òD͵òôrÅõ(òôÅõðòôÎÅõÐ÷M Ð÷Ò ÕöÐ÷h řǙș­É™Ê™àË™óG*¤�R{9 °ù¶  Ð÷ T ›†ò µùÔ ÂðƽÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^•ÿÂðe ­ýà ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÂðëûÍ  ââParserÁ ãposÁä capture_indexÁåÍûæßûçinitial_ignore_whitespaceÁè çéœûêcommentsÁë stack_groupÁì stack_classÁí capture_namesÁîscratchÁ$ì�:GD{甄Žë¤²Ý0åüÕ ãÉÞ ) •ÿ2 Âðˆ d  òô¤ Âð� åƒ åƒŸ Ð÷: Õö×å‚  Âð  òô; åƒW řǙș­É™Ê™àË™óG*¤�R{9 Ý…¥  僱  ›†É µù¦ â…‹ ‰ôý¿ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^•ÿ‰ô�ŠnÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‰ô̈‚  ÑÑ TranslatorÁÒŸ©ìÓÁèìÔ‚�ìÕ»eì)03U–/ë† ôš� £ë¯ ²Ý1 ljÕ ãÉÞ (•ÿ1 ‰ô‡ À Åõ‰ôù  ‰ôÌ ÅõØ ¾Ê ª¨ ®astsÁ'hirsÁä�ì ¾¾¦ý™O,Æ Xޱ� (¾¾4 ,¦ -™Oü .¤Ot /Æ K :ޤ ;h,¼ð%ƒôe›öOÏö#Ê÷®Øøµ‰ú~›öYîú&¤ûøÓüQ§ýç”2úÿç”@î€WÏö€‚Ъ‚×Û‚‡߃ �…߆˜ ”‡t îú6 ü‡ µ‰_ ‰Š ôš@ úÿ ôšN óŒ Î�o Åõ< òôC ÅõJ òôQ ôš ç”èÅõf òôm òô¥‰ôØ ÂðäѾãÉÌÁ¾|Á¾ ‚<Ö¾)Ú¾Ê(©„À¾åü@ëû¼¾›†‘ãÉ\¬º¾¾�ãÉ…¸¡ª _ref__pidÁ‘ÁãÉÌ�Á|�Á ƒ<–Á)šÁË« ©„€Áljà ̈üÀ›†‘ãÉß ¬º¾¾TãÉœ£ªÛ¡$4Ôà( &)'1<%DO$W\ÝàÅ�œÝà( ,éà¯× A<éà\Àâ$Åâ ìw„$Àâ#4ÅâüÀâ#Ìâ ãQ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ�¦ ‰ôÏ�¦ �¦•§UÿÆðØœ§”Ðâ#¼ÌâüÀâ-<äâ ŽRÌŠÌŠMapÁÏŠ�Њœ“D^)c˜þOþƦœ§…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ•§�þY#Läâ4‘ã( ') ,™ã  Þ"¨ ( !1ì‚ã' t‚ã È ™ i!< žã& ',Ãã,Êãê©"+ܵãlµã ¿ZP'àþµã  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw”Þ ©„�  x} ‰ œäµã m”Þ %!, 4‹ä ”€äT€ä †”Þ /'ÿÐã [•ÿ5#úÿ/ P üå% äÃä  Ð�¦ËŽUÿ”Þ üºä& Dºä ¬Ð�¦ñ®ü®^9> $FQ ªÚ \‚å Å�ü‚å ŒŽå ¶1œŽå4£å $  üîä< œîä ¶ËŽªÚ rL1 ³å $ ,àå %  ! $çå &  "´×å ñ!"üÎå  DÎå é8¢‰ ;($ðå #üÁå5  ì#ü¾å9 ÀœÞˆ©„@%IU&^l#{(„ýå�&¦´#Ã(ÌHRíþ#üÔß©Ë Ü $@ Q%ct&t …' ©º("Í ÃüÐà­üªâÓü÷â†ü©ãÔAHOËüÛã¢üôãÀü ä” )„ã ̬àíã ,ˆà  �¦$—àÅ�[ äÍ  ¨$®âú§ŽƦÌñ‰$ûâÅ�@  •§ ¨$”Þ ,­ãÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^•ÿ”Þ zó«±ñà ûß·õì·þŽ•ÿ—”Þ óÙ $ßã”Þ ,øãÓà üªÚ 4¤ä ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk# ¯�þ„ ¯»äÍ <ªÚ ÞˆîØ E¢‰j”Þ ·ñ‰žóÙ <æ?F;T  ”œ Éj ”œ †ÃúùÂÚ Æ ìŽmÊÞ\ ùÂ^ öÒW Û¯× m Ц6 À¦ ô§[ ê©v ªªG ê©ÕÀ«ªí«ƒÛ­žúÿ‘ñ‰Bš¯õŹªÚ ÿ’°�â°E”Þ ”Þ ޲ª¨y¨€óÙ ‡¨ŽªÚ C”Þ œñ‰£Å�˜ Å�±dÖâ4Úâ Ï�¦‰ôÖâDÚâââÏn •§Õâ œ§‰ ®§Ñâ¤O © ƒ¾Ž,Ëä”Þ ¤Ëä³è +#dÑä ¶ÚÞ TtÑäßäЪˎÊä  ¯Åðì …Óà ¤ù‘”Þ ð³è ²Ó¿¸ù (¿®%! �²Ý°¿Ý%! �²Ý‰ô+îÝÈ¿ª&! H²Ý äü* îÝø¿�)!!  ‘²Ý …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅŸŸˆð öƼ¡exactÁ¼…œ@g9¼.�þ¨  ´  îÝW]Ïž kq^d.4 ÿ �¿³%!ܸ­àÅ ¬’Ñ·áÚ²Ýã²ÝÓîÝÜ•§å²Ý²îÝ» äüDzݕîÝž  ¢Â­ŸÅ¶Pœ^i•§îÝ^ÿÄîÝ,�ÅîÝûÏž ’0øÑ<µ“ †µ“/7¨øÝ<ýÝà’)2(ø®< ݵ“ø³<ø²<BãQù’] ù’hµ“ãµùëýÝ·ã“¿‘›ªÆà’㵓„(ùµ< ’²Ý0ùÑ< H²Ýµ“*îݨùÝ< “ ²Ý ýÝ+  7 îÝž£¤é°µ¡¦puÑùº<æë ­à÷ÜÇÿ·á²Ý²ÝîÝ µù²ÝàîÝè ã“óã“ûXœfqµùîÝføÊîÝ5¤é�Dózµ“|óz$üz ŵ“14üzx¨ózù¨„#( # Í®¨îz  §f²Ý T &Q §¤§¤ArgumentÁ©¤‚¡f‹0mÖ”49d ™ ¡”    ÐÕ ‹g   ùþð"=™þð" ã,ùÿ„#(,ùþÇ"qÑþÇ" › ëIëIåìI–æ4È ª¬KÄñùþâ"UZüÐz4 ¾Š{Êü¢zháè¾ÁÂBorrowedÁÃóÄÅOwnedÁÆóÀ9cgˆ¸†MŒ´zÜÇ,ªz‹Ï‹ÏЉ¥‰¥ ArgumentsÁ‹¥templateÁûcŒ¥Çûcg‡@#éó †Í®ÈÍ®á²Ýµù3ýÌúýÌÝÑÍ  ŒÒÍ®!ÖÇ8ÇD tøË’ÙÌ9ÿÍfÒÎT…Ï(„ö{ýÝŒ|ËüÉ{Cã“Tá{ÜÇ,×{ .Œê|Tï| µù’$ê|dï|Ìê|,ü|à’C<ü|üÜ|(lÜ|�“<ìš}Üš} Å  üÐ})üÐ}' Õ  ô�~ä�~ ç  ìÄ~ÜÄ~ €  üú~$üú~" Ÿ  ü¼|í ¬ ¯ ¨  " 2 Bü’|�Ì ËŽ,¬|ÜÇ,¢|˜ÛŠýݹã“ð󗀬™gåšLžœ3ËžS† ˜Ô;à’�“õ‘Õ×µÕ¼×ÕŸùÕ„�Öižœåš!¬™(ó—/˜Û6áÍüµ,ÞÜÇ,Ä—í 4Ë_cacheÁJD’€µ“”’€<›€ ɵ“4L›€ª€ÎüçC$ƒ€ÜÇ,ùµùz5¸Ú€DÚ€µ“¼Ú€d〠ȵ“4tã€÷€Ïü°€G,Ê€ÜÇ,À€µù}8ÚÛƒ|Œ‚<’‚ ñ,Œ‚L’‚0$±‚ Å™‹¢ðؤ̂dÒ‚€¤,Ì‚tÒ‚*üÌ‚"\ႈû Plá‚* Ì„ƒ µ“„¶ƒD¼ƒ«ë ,¶ƒ T¼ƒ„ȃD΃Œî ,ȃ T΃ü„ƒU4¯ƒ ǵ“ � { T ü¯ƒ*ü„ƒ�ëƒ þWÅž‹¢Ñµ“Åž‹¢Uÿ|ðØûßüïƒ$üëƒ)D¨„ µ“„ÄDÉ„«ë ,Ä TÉ„„Õ„DÛ„Œî ,Õ„ TÛ„ü¨„>$¾„ Ƶ“ �{T  ü¾„(ü¨„uô„ þWÅž‹¢Òµ“ˆà qð؇âüø„$üô„)£…Ðü¶�í�´lñ�ÜÇ,À�—í 4Ç�ø©,Û�5žäƒ ߨ¥èřǙș­É™Ê™àË™óG*¤�R{9 ÅžVµùÎÝô ÀÅž�­ãmµùåÝô ×Åž´ÏðØÒ–`Ô êÜ€¤¶ˆû …«ë <Œî ±ßòíß¾«ë KŒî &¾áùáÍüôƒTôƒ™¸|ÿƒ†*›†�„6“„Ñé‹¢óƒûßÅžðƒspÁ#w†*›†™¸ üý„Tý„™¸|ˆ…†*›†™…6œ…Ò”‹¢ü„‡â¬Åžù„¾åÍv†*›†™¸ŸÌ܆4ᆠºù’$܆,è†,á†ü܆Gö† þW‹¢ö Ôµ“‹¢ö Uÿ‚ðØýèüú†(üö†-©‡Óüâ…ÇÄÜŒÀ†ÜÇ,ú…—í ,‰†ø©,¤†�´õ*óA,–`.j¬è,ïèñ �‡\�‡<�‡ �*L�‡ š‡<š‡œ‡ Ÿ*,œ‡üþ†$tþ† ”J'¢‡Ôeö ý†ýè}‹¢ û†›†Ñ ‹¢í©Àì£/¿ûê µë×áë²̳ˆ4¸ˆ¬è$³ˆ,¿ˆ,ƈ¤¸ˆ:ü³ˆ#<͈ êW‹¢fL͈܈Õüè‡t$¤ˆÜÇ,ô‡—í ,û‡ø©,Žˆ �´Ç�´Ï5óA7–`9r¬èèíÅÌÉŠ4Ί¬è$ÉŠ,ÕŠ,ÜŠ¤ÎŠЩÉŠ  �%�´X$)5HÔÉŠ m‹¢ „�‹<‡‹ ×w•¦,�‹ �‹ T‡‹ÂªâŠ �%ܧØ´ðØØ´#ò�  TôŠ  $ùŠ  à •¦ ¹‹L¹‹,»‹ ž*<»‹ܨ‹„¨‹ âD  !ü ‹#  üíŠa „ë‹<ñ‹ëð,ë‹ ù‹ Tñ‹ATÞ‹ $ã‹à‘ò £Œ<£Œ¥Œµë( ,¥ŒÌ’Œ„’Œåò@üŠŒ!ü׋_ ÄŒ\ÄŒ<ÆŒûê(LÆŒŒ¿Œ Å™›†ÖŒ Öü›‰»üÁŠ•ov}üü’‹<üü‹:ܧŒ¥ŠÜÇ,´‰—í ,Éø©,Þ‰ú¦,ù‰‹¢ ÅŠÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´‹¢�´EJ‹¢ËřǙș­É™Ê™àË™óG*¤�R{9 ‘òòm‘òb•¦EÀì_„øå ‘ò••¦J{Àì•›†Àì* kóAn–`q©&t£wÆ `ðØØ´Žì ùÀ1 ùÀ== ¬è¥ôïpëð¶ñ~ºò@åòëðܵëWåò5ûêè̬Ž4±Ž¬è$¬Ž,¸Ž,¿Ž¤±Ž:ü¬Ž#<ÆŽèí`LÆŽ*ôÞŽ4åŽ ¨4ÞŽ|쎆*›†¼åŽ��×ü•�ø žŽÜÇ,»�—í ,Ê�ø©,å�ý  4€ŽÒÏî"�´+¯KóAM–`O˜¢ R˜Ï†*›†¬èƒèíB®ü(€š� òÅõx€´�ñ‰îݰ€É� ȹ   îÝ@€å� �»  îݘ€ó�řǙș­É™Ê™àË™óG*¤�R{9 �»\ îÝÀ€Œ�ÿ–îÝø€ª�'¸˜îÝЀ×�ñ™îÝÀ€÷�ª›îÝ�€•‘ãœ#îÝÖ îÝ    ÿ �ú'•²Ý5¼úIOÓú]ciox€Ÿ�ò”š¡­à¯ Ø“»·áÄÅõÍ�úÖåüßçüèîÝÕñà ÞîÝ¿ ȹ Ëîݬ�ùµîÝ– ßÿ¢îÝ> ÿ–JîÝ+ ¸˜7îÝ ñ™#îÝ ª›îÝñ  ãœÒ… ²Ý´¼ú½ÇœÕƒ ã‘ïø ñà îÝêÀ„îÝÌ�ùîÝ®ç„îÝ�ü„îÝ-‘…îݦ…îÝð»…îÝÒÐ…îÝ´Óú]%.H²Ý;!*²Ý7&–²Ý4Õ Þ}²Ýë Ñ Ú~ ²Ýç  Ì Õ²Ýâ  ÈÑ€²ÝßÅβÝÛ‹ ²Ý }q²Ý  ½ÌòÝÅõêÇõó²Ý¸²ÝÁ²Ý¢²Ý«²ÝŒ²Ý•²Ý1²Ý:²Ý²Ý$²Ý²Ý ²Ýî²Ý÷²ÝزÝá‹ Dõµãœœõµþµ ‰ 0,‚¶Tþµ1<ëµ  ðµà ��œç¶Té¶ �  ç¶,ô¶Œé¶Ìâ¶ Å™ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�´ô‡üäµ€ \œ· ª›´œ·¨· ñ  0,¬· T¨·1  <’·   —· à 䛌ž¸žœü‘¸&T“¸ õ  ‘¸:,±¸ ü“¸$üŒ¸, Å™�� ü‹·Ù $Ö¸ Å™��( ê¸üÇ´£Úü‰¶|ü³·�řǙș­É™Ê™àË™óG*¤�R{9 ��ü¬µ-ìƒ,æ´—í ,õ´ø©,�µÅ™Ç™È™­É™Ê™àË™óG*¤�R{9 ÍŒCÒ…cÍŒ ��öřǙș­É™Ê™àË™óG*¤�R{9 †�{»…›O†�D�� žœ<óA–`›Æ›™ Õ÷‹7çŒÎ°Ž ·��DÆØ�»¬ÆØTÏØµ’.dÏØáØâü™ØHã“T±Øìƒ,§Ø�ùx9µ’~ŒøÙTýÙ µØ“$øÙdýÙÌøÙ,ŠÚà’I<ŠÚüêÙ(lêÙ�“A \¨Úÿ–Ô¨Úd´Ú ½ 0 t´ÚtÛÚ¸˜ìÛÚdêÚ Í 0 têÚd�Û ñ™Ü�ÛdœÛ Ý  0  tœÛ\ÀÛ ª›ÔÀÛdÌÛ ð  0  tÌÛüóÛ$üóÛ"�Ö  üÊÙØ ¬   ¨Ü ¡Ü  # 3 Cü ÙˆãËŽ,ºÙìƒ,°Ù˜Û ýÝ>ã“yó—ëü„ ¬™¼‘…Üåš�¦…­žœ^»…~ËžDx­ ñ•èà’½�“›ˆ—fÉ—,Š˜ò˘¸�Ö“žœBåšI¬™Pó—W˜Û^dšÝó—d­Ýÿ–üšÝ ,§Ý Æ G6œ§Ý|Äݬ™|Úݸ˜üÄÝ&,ÔÝ Ö G6´ÔÝlôÝ åšlˆÞ ñ™üôÝ",‚Þ ê  G 6 ¤‚Þd Þ žœd³Þª›ü Þ ,­Þ ƒ  G6 œ­ÞÇÞäüçÜà�Ýìƒ,öÜ—í ,ý܇ ó—Àü„³H ¬™�‘…t  åšB¦…5ÊÓÿ»…ñ…óA‡·çœÃ�ßžnûžD¶ä㜜¶ä¿ä÷‹.,ÃäT¿ä/<¬ä ±äàÍŒœ®åT°åçŒ ®å,»åŒ°å2 ̨å ðØ$ôå €ô‡üÑæ lÖæ Û$Ñæ,äæ,ëæÜÖæ ×å ¯�´ Ýå \²ç ª›´²ç¾ç°Ž .,Âç T¾ç/ <¨ç  ­ç à†�Œºèžœü­è&T¯è·� ­è8,Íè ü¯è$9ü§è, $†é€ô‡üãé lè難$ãé,öé,ýéÜèé éè¯�´ ïèüÁê lÆê›£$Áê,Ôê,ÛêÜÆêòêêüÀâ²üÊäÑTÔåüðå“üÉçäTæèü‚é“�´lúâìƒ,Êâ—í ,Ñâø©,äâᑜ҅¼rÍŒg��T,Ôå�´±ô‡Ò’y»…™O†�D��Ó<,æè�´†ô‡æ »óA½–`¿›®H _errÁ± ›Ë®ô™©X†÷‹²çŒN›£Ü°Ž\·�⛣s›£ Dæí㜜æíïí÷‹.,óíTïí/<Üí áíàÍŒäÞîœàî �  Þî,ôîÔàî4 üØî" ðØ$­ï €ô‡ü�ð%””ð Ü$�ð,§ð,®ðü”ð  �ï ¯ÄÜ –ï \õ𠪛´õð�ñ°Ž .,…ñ T�ñ/ <ëð  ðð à†�Œ†òžœüðñ/œòñ ÷  ðñ:,™ò üòñ-;üêñ5 $Òò€ô‡ü´ó%”¹ó�­$´ó,Ìó,Óóü¹ó  µò¯ÄÜ »òü—ô%”œô�­$—ô,¯ô,¶ôüœô Ìôëü±ë› üúíäT�ïü©ï�üŒñ÷T²òüÎò�ÄÜŒ�ììƒ,Éë—í ,Øëø©,óëᑤ҅ÄzÍŒoÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÄÜô‡¯,�ïÄÜô‡kҒл…ð¦†�›è²rÓ“,²òÄÜÚô‡; óA–`›l®¢ ™©  ›"®H™©­Ù÷‹  ¬©�­4°Ž³¦¯9�­È�­^Dçõ㜜çõðõ÷‹.,ôõTðõ/<Ýõ âõàÍŒä‘÷œ“÷ ¬ ‘÷,§÷Ô“÷2 ü‹÷" ðØ$ê÷ €ô‡üÌø"|Ñø Þ$Ìø,áø,èøìÑø Ã÷ ¯ÄÜ É÷  \É÷<Ë÷®õ  (LË÷\¯ùª›´¯ù»ù°Ž.,¿ù T»ù/ <¥ù  ªù à†�ŒòúžœüÜú/œÞú¦¯ Üú8,…û üÞú-9üÖú5 $Èû€ô‡üªü"|¯üõ·$ªü,¿ü,Æüì¯ü ¡û¯ÄÜ §û\§û<©û®õ (L©ûüŠý"|�ýõ·$Šý,Ÿý,¦ýì�ý¼ýìü‹õ±üûõ�¤À÷üæ÷šüÆù°¤žûüÄûš$Çõìƒ,—õ—í ,žõø©,±õá‘ÙÒ…ù¯ÍŒ¤è²‘,À÷ÄÜíÇë Üô‡XÒ’Ÿ»…¿u†�jè²AÓb,žûÄܬÇë ›ô‡ ÍóAÏ–`Ñ›]®– ™©ü ›÷® ™©„“ ÷‹þ ¬šõ·'®õ ưŽ�¦¯õ·¦®õ Gõ·%,Â\Âü¥‚*Ī‚ ß$¥‚3üª‚%5d«‹ñ™4¼‹,Ä«‹¸‹ Þ L,< \¸‹Ì­ƒ4²ƒ ºØ“$­ƒ,¹ƒ,Àƒ ¤²ƒе­ƒ ôï X #  / ðØÔ­ƒ m‹¢ ìÕƒœÕƒ ¢  éƒ,ìƒ  ,¥¶ƃ¶ñðØØ´Ë Œ„\Œ„<Ž„ûê( LŽ„Œ‡„ Å™›†Ä€„£ü«‹"<Ä‹ êW «šÓ LÄ‹4 4ƒŒ-üã‹.œè‹ Ý$ã‹,ü‹-H,‹Œüè‹)ü³Œ%”¸Œ Ú$³Œ,ËŒ,ÒŒü¸Œ >ü­Œ+_à��,‡à��¯�´_üŠ�-œ��ýÅ$Š�,£�,ª�,±�ü��($¿�à��€ô‡ü Ž-œ¥ŽýÅ$ Ž,¹Ž,ÀŽ,ÇŽü¥Ž($¤� Å™›†\�� ôŒà��¯�´à‹¢ üŒÔ‘“,¤“´‰ ,‘“<¤“ ¾“"L¾“,À“ºò"(!<À“ É“$<ɓ˓µë$(#,Ë“�·¾“ ¶ý!#ü‘“@$¹“ëŠ Ô ?Ĺ“ ú“'\ú“<ü“ûê'(&Lü“ôè“% §-&ü‘“vDß“·‹ –%6üß“(4Ô *ü£”. œ¨”ýÅ$£”,¼”*9,Ë”)ü¨”)¬ê” + —²Ýü£”] 4ã” ÷W›†)y+=(ìã”ü‘”z Å™›†(‘• í üûý–ü¥ƒ~dkrØü¥Œì´çŒü¶�¦ü…“Œ.ܧŒ…ÿìƒ,”þ—í ,£þø©,¾þú¦,Ùþy’èí«‹¢ ©ƒ�÷µ�´‹¢„e›†ÿÀì° Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ¢Å³Âм¦…ø ø©ï£Ñå‹¢ ©Œï�–<ïŒ\쌌猋¢,ô‡Æµ¢,‰“µ¢Lµ¢… €çÀìÀÀìÚØ¥$›†TÀìn›†Œܧðø© ²ÝÁø©Ìø©Â éóAì–`ï©&ò£ÝÆ éðØØ´Ž\ £B£H™©æ–`# ç±òæ óÀÜ éÁl ™ÂC ôï ÍÃ�¶ñ ûê<œÅäýÅŠÂÆLýÅ—ýÅ3´‰ �ºò[µë*ëŠ èûê±·‹ xýÅ@èÍìDõ–㜜õ–þ–÷‹.,‚—Tþ–/<ë– ð–àÍŒü­˜.쯘 ”  ­˜,͘4Ô˜ ü¯˜,>  ü§˜4  ðØ”™  €ô‡üä–© \Žš ª›´Žššš°Ž .,žš Tšš/ <„š  ‰š à†�Œú›žœüÉ›€ìË› ý  É›;,�œ4´œ üË›~DüÛ† ª�€ô‡üý™� \‘Ÿÿ–Œ‘Ÿ�Ÿ ¾ 0 ,�ŸŒÈŸó—ü¬Ÿ=Ì®Ÿ à  ¬Ÿ:,ÛŸ4⟠ü®Ÿ;ïŸîüЕŸ ü‰—îüœ˜Û|�™ü¥šèü¸›Õ|¦�ü‰ŸfÙ–ìƒ,ö•—í ,…–ø©, –ý  4»–á‘cÒ…ƒ9ÍŒ.ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwô‡m4î˜ô‡Ò’ß»…ÿµ†�ªèÜ�Ó¢4Üœô‡7 ¹— �Ÿü„%âŸî &óA)–`,˜¢ 0›G™©$ ˜ ¬ºÝ ›Z™©$¼›¬ºÞ›§÷‹ùâÖ•°ŽòŽÙx²ÚÙôÚŸ(ÁüŸ ˜²ÝPÁ¡  ™²ÝØ“,8îÝej¥¢w|glŽÁ� ö©­àµ ý”À·áȲÝвݾîÝÆ ìƒÑìƒÙüœ òáîÝ¥¢) lб,Ö±´‰ ,б<Ö±lç± §-üб%DÞ±·‹ X3¼Þ±l�²Ø“ãœ4¢² Ì�²ž²÷‹B -\ž², <†²   ‹² àÍŒ4س 쳜ij ’  ³ 2 Üij„€´Ø“ª›4•´䀴‘´°ŽB- \‘´, <ö³  û³ à†�ŒËµžœ4Þµüµµ0œ·µ ú  µµI8 ü·µ.ùÒŽ"`ù»Ž"` �gùÎ¥.`šJ²Ý 9ùÑñ@`áÑñ` ´[^%öü�®³ñüıÿüª²¿ü�´Òè²üÿ®)Çá,¹®—í ,È®ø©,㮵¢,ȱµ¢#Ø¥á‘�Ò…Ñø©ÀÍŒtø©cÒ’ÿ»…3ø©"á†�ÖÓÅø©¸4�Ñ}ÂóAÄ–`Æ–`È› ›@V´‰  ·‹ Ò÷‹�ää°Ž¼Îæ6ŽçÌçÊL£¼Ø“´£¼T­¼ñ•.d­¼¿¼ôüö»Iã“T޼Çá,„¼ìƒx9ñ•~L¨½Ø“Ĩ½d²½ ¶Ø“4t²½ƽõüþ¼HËŽ,˜½Çá,޽ìƒ~9Ôì„L¸¾Ø“举\¾ ·Ø“4,ξ”¾Û¾öü…¾V­¾Çá,”¾—í ,›¾x샗&óA(Wúíª¤·Âd½Â€¤,·Ât½Â*ü·Â"\̈û PlÌÂ*LïÂØ“ôïÂ4ù™Â.,€Ã,‡Ã¤ùÂü§Ã/ä¬Ã ñ$§Ã,ÉÃ,ÐÃü¬Ã*> ü¡Ã5  ah ¯ÄÜ5  ±Å ¯ÄÜàö ÛÅ dÛÅ<ÞÅè� ( LÞÅ$—Å Å™‹¢$éà €ô‡LËÄ Ø“üËÄ%lÕÄ›£ /,ãÄ,êÄÜÕÄéÅ \éÅ4ìÅ à( DìÅ\öÅüÅñß ,öÅ ,üÅÀ¼éÅ ¶ýüÐÅ2TÐÅ¿… RA'üËÅ8 Å™‹¢ �Æ¡ÆùüâÁ¿üåÙü©Åh�´lœÂÇá,ìÁ—í ,óÁø©,†ÂBäƒ ƒØ¥Œìƒ$è²Ý$ŽÅLåÃô‡êìƒÙö |‹¢›†X„çr… S®„çÈ–¹óA»–`½™©k ýæø ( €¤]ˆû ,™Âãóð±è� ò›£~ à<ñß ¿… Õ¤ÝÇdãÇ€¤,ÝÇtãÇ*üÝÇ"\òLjû PlòÇ*L•ÈØ“ü•È#\ŸÈ »Ø“5,«È,²ÈÌŸÈüÒÈ/ä×Èóð$ÒÈ,ôÈ,ûÈü×È*< üÌÈ5  _f ¯ÄÜ5  áÊ ¯ÄÜàö ºÎ dºÎ<½Îè� ( L½Î$ÇÊ Å™ö $”É €ô‡LöÉ Ø“üöÉ*”€Ê�­ /,“Ê,šÊü€Ê \ÈÎÎÎñß ,ÈÎ ,ÎÎü«Î)t«ÎáëúI %ü¦Î/ Å™ö  âÎóÎúüàÆ“ü�ÉžüÙÊŠÄÜŒ¾ÇÇá,øÆ—í ,‡Çø©,¢Çïäƒ 0Ø¥9ìƒÑ貃$¾ÊL�Éô‡’ìƒ�ö $ö ›†„ç[ŸóA¡–`£™©ù ýæ† €¤ðˆû ¿Ýùvóð=è� €�­ ñß Øáë³ ¤€Ðd†Ð€¤,€Ðt†Ð*ü€Ð"\•Јû Pl•Ð*L¸ÐØ“ü¸Ð DÂÐ ¼Ø“5,ËÐ,ÒÐ ´ÂÐüòÐ/ä÷Ðóð$òÐ,”Ñ,›Ñü÷Ð*< üìÐ5  _f ¯ÄÜ5  $†Ó  ,äÒ  $´Ñ €ô‡L–Ò Ø“ü–Ò'| Òõ· /,°Ò,·Ò ì Ò›Óûü²Ïéü°Ñ› $îÏÇá,¾Ï—í ,ÅÏø©,ØÏäƒ `Ø¥iìƒè²³$ÛÒL°Ñô‡ìƒñróAt–`v™©< È€¤åˆû ´Œ‚kóð2õ·:¤ƒÕd‰Õ€¤,ƒÕt‰Õ*üƒÕ"\˜Õˆû Pl˜Õ*L»ÕØ“ü»Õ+dÅÕ ½Ø“5,ÒÕ,ÙÕ,àÕüÅÕ!ü€Ö/ä…Öóð$€Ö,¢Ö,©Ö ü…Ö*<  üúÕ5  _f  ¯ÄÜ5  —Ø ¯ÄÜàö LµØØ“,ØØ\ØØüµØ/Ä¿ØóÀN. ü¿Ø%$ý× Å™›†$ÂÖ  €ô‡L¤× Ø“ü¤×2œ®×ýÅ /,Â×,É×,Ð×ü®×(Å –Û\–Û4™Û à(D™ÛÞÙdÞÙ<áÙè� (LáÙìÙ\ìÙ4ïÙ à(DïÙ\ùÙÿÙñß ,ùÙ,ÿÙÀ¿ìÙ ¶ýüÓÙ2TÓÙ¿… Æ@&ì›Úœ›ÚÍà ¯Ú,²Ú* ÚÚ\ÚÚ<ÜÚûê(LÜÚŒÕÚ Å™›†ðØü¿Û",ÚÛ´‰ ,¿Û!<ÚÛ\ƒÜ‰Üñß ,ƒÜ#,‰Ü�ÂüÛ" ¶ý#ü¿ÛP$÷ÛëŠ !‘"? Ä÷ÛÀÜ&dÀÜ<ÃÜè� &(%LÃÜü®Ü$ §-%ü¿Û�D¥Ü·‹  ˜$8ü¥Ü)LàÜ'Ø“4…Ý(üàÜ3œêÜýÅ'>,þÜ(6,�ÝüêÜ)±ÝüüÚÓ× ü¾Ö¦ü�Ø’üËÙ®üŠÛ—ü³Ûî)ܧŒäÔÇá,óÓ—í ,‚Ôø©,�Ôú¦,¸Ô&äƒ gØ¥pìƒè²±$ô×L¾Öô‡”샃ö Rþìƒ= èí9‹¢ ÏÙ›†„ç)… –ñ„ç Ùh›†1ÀìK,ŽÛ„ç°µ¢,·Ûµ¢—µ¢… ËýØ¥U›†…„çŸìƒ'ø© oóAr–`u©&x™©Ñ ý抣‚Ζ`Å3€¤ˆû ¥óðc±ò’ýÅóÀ� à±è� € àOñß -¿… èÍÃÂûꉴ‰ ?ñß ëŠ Ôè� �·‹ cýÅL­áØ“ü­á9Ì·á ¾Ø“5,Ñá,Øá4ßáü·á/ìáýüðÝüùÞÇá,–Þ—í ,¥Þø©,ÀÞý  4ÛÞ샹5óA7–`9˜¢ <‚Ú˜ç(Þùá › ²ÝPޜ⠙²ÝØ“,îÝpÞ¬â H²Ý äü+  7 îÝ¡¦¤é³¸£¨puÔÞþáûï ­àû ¾•·á²Ý²ÝîÝ샲ÝåîÝí ÿÄøÿÄaœozìƒîÝnƒ�îÝ;¤é™„˜ˆDžˆŒî ,˜ˆTžˆ ƈ üшóDùˆäü„‡‰D�‰«ë ,‡‰T�‰$™‰ üùˆ%$‚‰ ¿lZ 5䂉4 üóˆ+ ðØ$Õ‰ àÅžôÜŠ,óŠ´‰ ,ÜŠ<óŠl•‹ §-üÜŠGDŒ‹·‹ X3 ¼Œ‹lº‹,À‹íÕ ,º‹ <À‹dÉ‹ ØÅº‹ ¶ýüÜŠz$µ‹ëŠ  ¦?  üµ‹!L®Œ L¹Œü†Œ=Ü‹Œ ƒ $†Œ,§ŒJ@ ü‹Œ8øÈ†Œ>  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÄÜì…² x}‰ ü†Œ>mÄÜDë‹ÉÃŒ[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïì…Dv �%û¢ϤŒhT–�D¤�´–�ð‹àö DíŒ Å™ö dêŒ ÀœÄÜì…ðØtí�" ìí�\ü� ä§"/ ˆŽ!tü�üí�&4‹Ž øW!` D‹Žüà�3 d­Ž# Ä¡Ž#$ÐŽ$ Å™ö DÍŽ ÀœÄÜì…$ÛŽ � üñ†êü‰ˆÒü²ˆ©üäˆà”ЉüÍŠ÷üÑŒ4«²¹ú %û¢üÙ‡%ºœ,“‡—í ,¢‡ø©,½‡ÅžD�ˆl¶ˆ­ã¾ÿÄÝô  Åžê$±‰ÅžŒµ¢DÑŠµ¢Dµ¢�Ø¥l… ó8ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^ϤÄÜ«û¢öø©ùϤÄÜE'ö 9ÄÜ(lš�§ØÚóÄÜ[ –óA™–`œÅœ  min_startÁ«litmatchÁDèˆ Åœ! revinputÁ  Æ óŽ9 ýæ)³ Œî w«ë œŸÜ´‰ g·‹ .íÕ ëŠ ®´¢gõ¢,´¥3£§ ç§Ð lÅ�Ø“ãœ4×�ÌÅ�Ó�÷‹O:\Ó�,<»�  À�àÍŒ4“’  ìý‘œÿ‘ ¬ ý‘=Üÿ‘„»’ Ø“ª›4Ð’  ä»’Ì’°Ž O: \Ì’,  <±’   ¶’ à†�ŒŒ”žœ4Ÿ”üö“0œø“¦¯ ö“TCüø“.ùÿŽ"`ùËŽ"`Žçùû¥.`œH²Ý5ùþñ@`áþñ`ÌçX#‚•üš�è‚ üß�ÅüØ’Øè²ü€�)ºœ,º�—í ,É�ø©,ä�á‘’Ò…Ó£ÑÂtÍŒi£ÑXÒ’Ü»…£Ñ ¾†�³Ó¢£Ñ• �ÑOø©3ø©¸ø©Zø©ÉÉóAË–`Í››6G÷‹� ¬°Ž¤¦¯ŽçàÌç« lŠ—Ø“ãœ4œ—ÌŠ—˜—÷‹O:\˜—,<€—  …— àÍŒ4¾™  ü ™0Ü¢™ “   ™@LÆ™ü¢™.„ñ™ Ø“ª›4†š  äñ™‚š°Ž O: \‚š, <ç™  ì™ à†�Œ¨œžœ4»œüŠœCÜŒœ ü  ŠœVELÜüŒœAù‹Ž"`ùÍŽ"`Žçù‡¥.`œH²Ý5ùŠñ@`áŠñ`ÌçX#©�üÁ•èƒ ü¤—¶üŽšÉû¢üÉ–%ºœ,é•—í ,ø•ø©,“–L®–ᑲ҅ó£Ñâ”ÍŒ‰£ÑxÒ’ð»…1£Ñ Ò†�ÇÓ¶£Ñ©�ÑYø©Sø©Øø©nø©ÝÓóAÕ–`×Þ¬Û›C ›X_÷‹¯ç¸2°ŽÆôº3ŽçøÌçÃL’ŸØ“´’ŸTœŸñ•.dœŸ®Ÿ† üåžIã“Týžºœ,óžìƒx9ñ•~L— Ø“Ä— d¡ Ôì.t¡ µ ‡ üíŸHËŽ,‡ ºœ,ýŸìƒx9Ôì~L§¡Ø“ä§¡\±¡úí.,½¡”±¡Ê¡ˆ üô Vœ¡ºœ,ƒ¡—í ,Š¡r샑&óA(Wúí¤¤�¤d•¤€¤,�¤t•¤*ü�¤"\¤¤ˆû Pl¤¤*LǤØ“ôǤ4Ѥ™Â.,ؤ,ߤ¤Ñ¤üÿ¤(¬„¥ � $ÿ¤,š¥,¡¥ü„¥#> üù¤. ðØj €ì…7  ’ ¯ÄÜ_  DϨ¯ÄÜàö üþ¨",™©´‰ ,þ¨ <™©$µ¨ Å™‹¢$€§ €ì…»Áô‡Lé§Ø“üé§%l󧛣/,�¨,ˆ¨Üó§L²¦ Ø“ô²¦4¼¦™Â .,æ,ʦ¤¼¦DÑ©”Ñ©<Ú©è� (LÚ©ü¿©% §-üþ¨gD¶©·‹ {8ü¶©/D€ªŒ€ª4‰ª à(D‰ª\“ª™ªñß ,“ª,™ªð΀ª ¶ýüþ¨¡$û©ëŠ Î@üû©$Lתü·ª*œ¼ª ‚ $·ª,Ъ;ü¼ª%;ü±ª0\¯ÄÜ,4ö®"¯ÄÜàö D«¯%”«¯<´¯è� %($L´¯ù™Ž"`ùÒŽ"`Žçù•¥.`�g²Ý!5$üª€ô‡Lª¬Ø“üª¬%l´¬›£/,¬,ɬÜ´¬ù˜ñ@`á˜ñ`Ìç!Á #Dׯ(Œ×¯4௠à(('Dà¯4ê¯*"|ê¯4ñ¯ à*()Dñ¯øÓׯ"& ¶ý')ü‡¯‰T‡¯¿… $£&C#(ü‚¯� Å™‹¢# �°°‹ üº£ˆ ü¶¥¨ü릱üǨëüï¨Ãüøªíü+�´lô£ºœ,Ä£—í ,Ë£ø©,Þ£îäƒ /Ø¥8ìƒÐû¢‰ܺ¥$¬¨ü¶¥ ìƒ ô‡‹ìƒnö µ¢D󨵢œµ¢Ø¥È›†ø„ç… 6‘„ç«yè²öø©$ý¬Løªô‡ÿìƒî¤�ÑRö º‹¢›†–„ç°… B©„çÂ„çœ �óA„–`‡™©$Ð¥ðØ•‡™©Ú hm_startÁcfwdinputÁ\™©èhm_endÁ“"q€¤% ˆû ô™Â«ŠÅy´‰ Ÿ›£™ÂÓè� ’·‹ X àñß ýëŠ ¸ÃËè� ̎窛£FÌç àá à°¿… m¤þ±d„²€¤,þ±t„²*üþ±"\“²ˆû Pl“²*L¶²Ø“ü¶²#\À²Ýù/,̲,Ó²ÌÀ²üó²(¬ø²ŠÅ$ó²,޳,•³üø²#< üí². ðØh €ì…7  � ¯ÄÜ_  Dý¶¯ÄÜàö üǼ",â¼´‰ ,Ǽ <â¼$ã¶ Å™ö $þ´ €ì…»Áô‡L’¶Ø“ü’¶*”œ¶�­/,¯¶,¶¶üœ¶ L«´ Ø“ü«´#\µ´Ýù /,Á´,È´̵´Dš½”š½<£½è� (L£½üˆ½% §-üǼgDÿ¼·‹ }8üÿ¼/DɽŒÉ½4Ò½ à(DÒ½\ܽâ½ñß ,ܽ,â½ðÖɽ ¶ýüǼ¡$ĽëŠ Î@üĽ$L ¾ü€¾*œ…¾ÃË$€¾,™¾9ü…¾%9üú½0Z¯ÄÜ,4ÄÂ"¯ÄÜàö dРřö " ÛÂù§Ž"`ùÚŽ"`Žçù£¥.`�g²Ý!5$ž€ô‡Ló¿Ø“üó¿*”ý¿�­/,�À,—Àüý¿ ù¦ñ@`á¦ñ`Ìç! #�ÃŒ ü�±Œüª³²üé´áüõ¶ˆ ü¸¼ÅüÁ¾òü¼Â #Ä܌߱ºœ,™±—í ,¨±ø©,ñóäƒ 4Ø¥=ìƒÕû¢�Ü®³$Ú¶üª³ ìƒô‡‘ìƒtö µ¢D¼¼µ¢ µ¢Ø¥Ì›†ü„ç… :•„ç¯}è²úø©$ËÀLÁ¾ô‡ìƒ¸�Ñgö À ;óA>–`A™©$ijðØ•‡™©š ŒÔ Ô™©©ÁÔ@"€¤Ñˆû  ÝùWŠÅ$´‰ L�­ÈÝùè� =·‹  àÊñß ¨ëŠ cÃË*Žç_�­ûÌçǤšÄd Ä€¤,šÄt Ä*üšÄ"\¯Äˆû Pl¯Ä*LÒÄØ“üÒÄ DÜÄŒ‚/,åÄ,ìÄ ´ÜÄüŒÅ(¬‘ÅŠÅ$ŒÅ,§Å,®Åü‘Å#< ü†Å. _f €ì…5  Ž ¯ÄÜ]  $ŸÉ  ,ýÈ  $›Ç €ì…»Áô‡L¯ÈØ“ü¯È'|¹Èõ·/,ÉÈ,ÐÈ ì¹ÈLÄÆ Ø“üÄÆ'|ÎÆõ· /,ÞÆ,åÆ ìÎÆ´É� üÌÃèüÃŶü†ÇÞ$ˆÄºœ,ØÃ—í ,ßÃø©,òÃ§äƒ èØ¥ñ색û¢AÜÇÅ$ôÈüÃÅ ìƒþô‡{ìƒ^†óAˆ–`Š™©$ÝÅðØ•‡™©Í þ€¤˜ˆû gŒ‚ŠÅëõ·¿õ·w¤œËd¢Ë€¤,œËt¢Ë*üœË"\±Ëˆû Pl±Ë*LÔËØ“üÔË+dÞË›ˆ/,ëË,òË,ùËüÞË!L—Ì Ø“,ºÌ \ºÌ  ü—Ì/Ä¡ÌóÀ N . ü¡Ì%0 ü¸Î(¬½ÎŠÅ$¸Î,ÓÎ,ÚÎü½Î#̤Í4©Í º¾•$¤Í,°Í,·Í¤©ÍÐÛ¤Í ôïX #/ ðØÔ¤Ím‹¢ ìÌÍœÌÍÍà àÍ,ãÍ *£Ü½Í¶ñðØØ´É ƒÎ \ƒÎ<…Îûê(L…ÎŒþÍ Å™›†Ä÷ͯü²Î. Ñ€ì…- ú¯ÄÜV DˆÓ¯ÄÜàö D–Ó DÿÔŒÿÔ4ˆÕ à(DˆÕ$îÒ Å™›†\çÒ$×Ѐ셻Áô‡L�ÒØ“ü�Ò2œ—ÒýÅ/,«Ò,²Ò,¹Òü—Ò(LûÏØ“üûÏ+d…Лˆ/,’Ð,™Ð, Ðü…Ð!Ô¦Õ ,¹Õ´‰ ,¦Õ"<¹Õ\ÚÕ àÕñß ,ÚÕ$,àÕ�ÝÓÕ # ¶ý$ü¦Õ@ $ÎÕëŠ "�#?!ÄÎÕD�Ö '”�Ö <˜Öè� '(&L˜ÖüýÕ% % §-&ü¦Õ} DôÕ·‹ !—%7 üôÕ/L­Ö (Ø“4ÒÖ ) ü­Ö3 œ·ÖýÅ(>,ËÖ)6,ÚÖü·Ö)æÖŽ üóÉó üœÍ~$ˆü£ÎÃüïÎÆüÂÐŒô€ÓüóÔóüšÕÌ *ܧŒýʺœ,ŒÊ—í ,›Êø©,¶Êú¦,ÑÊÞäƒ Ø¥(ìƒÀ9ìƒx[èít‹¢  Í�÷¦�´ñ‹¢uV›†òÀì ö D§Îû¢nÜóÎ$ÞÒüïÎ ìƒcô‡êìƒÍö Ž,÷Ô„çmµ¢,žÕ µ¢Óµ¢T… 9Ø¥‘›†Á„çÛìƒdø©X }óA€–`ƒ©&†£F Æ EðØØ´Ž¶ŒÔ+™©$‰ÏðØ•‡™©ýŒÔœ ‚ –`  ¶€¤+ ˆû ú›ˆ±±òRóÀHŠÅ�ò×ôïœÍÃ1¶ñªûêÒ àÐýÅM›ˆü´‰ Àñß ›ëŠ Vè� ·‹ åýŘL¹ØØ“ü¹Ø9ÌÃØÚ˜/,ÝØ,äØ4ëØüÃØ/øØ� ü¥×Ӯغœ,Ë×—í ,Ú×ø©,õ×ý  4�Øìƒ³5óA7–`9˜¢ <‚Ú˜á(µ…Ù ž ²ÝPµ§Ù ™²ÝØ“,îݘµ·Ù Ÿ²Ý äü, îÝXµÐÙ  –²Ý �»,  îÝøµáÙ €²Ý×�-îÝȵ†Ú ²Ý�Ÿ+7îÝY_»ï ms_e.4 ý  ËЗœ³µŠÙƒ Ï­àÜ Œ–è·áñ²Ýú²ÝéîÝòìƒû²ÝÇîÝÐÿÄٲݥîÝ®�ù·²ÝƒîÝŒ ×�˜²ÝcîÝl  �Ÿ{‰„�œ«¶ìƒîݪÿÄîÝw�ùîÝD¢‰îÝÀ‰îÝÝ»ï ó+„ƒ†D‰†Œî ,ƒ†T‰† ·†  Ú† üå†�l�‡äü„ ‡D¦‡«ë , ‡ T¦‡$²‡ ü�‡*$›‡œŸj X 3䛇2 ü‡‡0 )ðØ$î‡ àÅžt›ˆ l¬ˆô›ˆ  ÔøŠÄøŠ � ô‹Œ,¢Œ´‰ ,‹Œ <¢ŒüâŠ1 ÚðØ•‡üÞŠ6 Àœ�´ì…ðØ*lÄŒ §-ü‹ŒGD»Œ·‹ ¥3 ¼»ŒléŒ,ïŒíÕ ,éŒ <ïŒtøŒ èàéŒ ¶ýü‹Œ|$äŒëŠ ¦? üäŒ#L•‘|°‘üÌ�‚ÜÑ� • $Ì�,þ�KAüÑ�}øãÌ�ƒ õ¢[ %1üÌ�ƒmÄÜ t»� %äΑ[Ϥš " �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�´ì…Ϥ‹*DÀ�!àö üñ‘",Œ’´‰ ,ñ‘$<Œ’DÄ’'!”Ä’<Í’è� '(&LÍ’ü²’%% §-&üñ‘gD©’·‹ $•%7#ü©’/Dó’*!Œó’4ü’ à*()Dü’\†“Œ“ñß ,†“+,Œ“ðåó’( ¶ý)+üñ‘¡$î’ëŠ #Í(@"üî’$LÑ“ ."üª“1 Ô¯“ ” $ª“,Ê“.;-ü¯“,øèª“2   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwö ô‡-ÿ,ÊÏ /,Û /üª“2 1,mÛ— 21ü¤“8 2éÛ“ 0,[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïô‡—v �%À’³™0Œ*»4®• 71¯ö DŠ–;!”Š–<“–è� ;(:!L“–4÷“ 31€´œ”3tÙ”6 ìÙ”\蔣§6, ô”5tè”üÙ”&4÷”ç§5X4 D÷”üÌ”34ü´�ü%Dº–>!Œº–4Ö à>(="DÖ4Í–@7|Í–4Ô– à@(?#DÔ–øêº–"< ¶ý=?üâ••Tâ•¿… :œ<C9$(üÝ•›8 Å™‹¢9üÚ•Ÿ Àœ�´ì…8ðØ *TÁ—BDÏ—C´Á—ABCA&)t˜˜F 옘\§˜£§F, ³˜E't§˜ü˜˜&4¶˜ç§EXD(D¶˜ü‹˜3DdÞ˜G ô̘G² $�™H Å™‹¢Dþ˜ Àœ�´ì…HŒ™* “ ü愦üô…˜ü�†ïü†Êüø†ý”é‡üü‹ù üБàý M üâ‘Κ ¡ ¨ êüó“£ ü«•å IÀ’üÈ…!¡ˆ,‚…—í ,‘…ø©,¬…ÅžDø…œ¡†ŒÆ†­ã´ ÿÄ Ýô  Åžà $ʇÅž„ O y n ì…ö •‡L µ¢D€Œµ¢° µ¢F Ø¥Ø … _ ¤ ‚ »«Å û¢ ø©: 3 j Ϥs ÄÜ· ˜ ö ôµ¢D摵¢oµ¢õØ¥››†Ë„çå…  e„çMÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^³™Û—ÞŒ—$ø©>ѳ™Ú Û— \ó“  ”ØÚÝúö } �´¬‹¢â›†m„燅  ‡„ç¡`„çz‡µª'ØÚp��´àÒóAÕ–`ØÅœÜmin_match_startÁí min_pre_startÁüó¬Dü† Åœc –­ºÆ Ï Ž ŒÔO ! Ô_ "Æ w 0޾1ïm£3ÁÔ7‡Œî  «ë ‡œŸS×�›´‰ ·‹ ù íÕ Ñ ëŠ y å�2 õ¢ö º’ý ´‰ Ò è� � ·‹ c  à+ ñß  ëŠ Ä Ê–‹ †—U ˜š\ è� w£§ç§á àŒ à[¿… £§Hç§ l„›Ø“ãœ4–›Ì„›’›÷‹O:\’›,<úš  ÿšàÍŒ4Øœ  ü»œ$Ô½œ ‘  »œ@ü½œ"„€� Ø“ª›4•�  ä€�‘�°Ž O: \‘�,  <öœ   ûœ à†�Œ×žžœ4êžüºž7Ô¼ž ù  ºžVEü¼ž5ùÚŽ"`ùîŽ"`ŽçùÖ¥.` G²Ý5ùÙñ@`áÙñ`ÌçX#ÌŸüË™�” üž›Ëü��ÞŒ—ü¸š0¡ˆ,ò™—í ,�šø©,œšá‘˜Ò…Ù£ÑÈzÍŒo£Ñ^Ò’Þ»…£ÑÀ†�µÓ¤£Ñ— �ÑOø©9ø©¾ø©\ø©ËÉóAË–`Í››8G÷‹‡ã­ °Ž¦è¯ŽçàÌç« DÔ¡�Ÿ4ᡤԡݡ ¨ L<\Ý¡.<Ê¡  Ï¡ à ÊŸ4‚¤  üä£0Üæ£ ®  ä£@LФüæ£.\µ¤ ×�4Ť  ¼µ¤Á¤ š  L< \Á¤. <«¤  °¤ à ‘ž¤÷¦Ëž4�§üȦ…Üʦ �  ȦWFLµ§üʦƒùæŽ"`ùðŽ"`Žçùâ¥.` G²Ý5ùåñ@`áåñ`ÌçX#¨¨ü‹ �• ü页üͤŠû¢ü“¡%¡ˆ,³ —í , ø©,Ý Lø Å™Ç™È™­É™Ê™àË™óG*¤�R{9 šµþ‰:£Ñ.ÞšµÓ£Ñ¿Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ‘·�¢‰½£Ñ±a‘·V ËžE£Ñ8¡�Ñæø©çø©gø©ø©l`óAc–`fÞ¬k›Ù ›îðÇ´Gѵž¶^ß·ÆŽç‰ÌçTL�ªØ“´�ªT™ªñ•.d™ª«ª˜ üâ©Iã“Tú©¡ˆ,ð©ìƒx9ñ•~L¤«Ø“Ĥ«d®«Ôì.t®«\Ø«×�ÔØ«dä« ™ 0tä«|ƫ˞˞,ü«‡¬BËž ñ« †¬üêª�™ ü”«sËŽ,„«¡ˆ,úªËŽL˜«ìƒAËžõ¢‰1óA3{Ôìd²¿-˞ˎ­Lù¬Ø“äù¬\ƒ­úí.,�­”ƒ­|Ÿ­Ëždµ­×�üŸ­#,¯­ ¢ G6œ¯­É­š üƬƒî¬¡ˆ,Õ¬—í ,ܬÏìƒî‚×»·¢‰©=óA?oúíìÂà ¤ó°dù°€¤,ó°tù°*üó°"\ˆ±ˆû Plˆ±*L«±Ø“ô«±4µ±™Â.,¼±,ñ ¤µ±üã±"|è± “ $ã±,ø±,ÿ±ìè±= üݱ( `g €ì…5  D€µ¯�´D�µ ”µ $ݳ €ì…»Áô‡L½´ Ø“ü½´%lÇ´›£ /,Õ´,Ü´ ÜÇ´L�³ Ø“ô�³4™³™Â ., ³,§³ ¤™³¦µ� üž°ˆü”²§üȳ¨Äý´�´lذ¡ˆ,¨°—í ,¯°ø©,°äƒ ÀØ¥ÉìƒaÀ’ܘ²ü”² ìƒþô‡{ìƒ^�´Ã…óA‡–`‰™©$®²ðØ•‡™©Ö matornotÁ €¤„ˆû S™Â ýÅØ›£Ý™Â•¤â¶dè¶€¤,â¶tè¶*üâ¶"\÷¶ˆû Pl÷¶*Lš·Ø“üš·#\¤·Ýù/,°·,··̤·ü×·"|Ü·ýÅ$×·,ì·,ó·ìÜ·; üÑ·( ^e €ì…5  � ¯�´]   «»¯�´à‹¢ Æ»\Æ»<È»ûê( LÈ»$‘» Å™ö $Û¹ €ì…»Áô‡LÀºØ“üÀº*”ʺ�­/,ݺ,äºüʺ Lˆ¹ Ø“üˆ¹#\’¹Ýù /,ž¹,¥¹Ì’¹ Ó»<Ó»Õ»µë(,Õ»ü·»$t·»áëaG&ü²»* Å™ö  Û»í»ž ü嵈üˆ¸±üƹ²ü£»9Ä܌ö¡ˆ,ýµ—í ,Œ¶ø©,§¶‚äƒ ÃØ¥ÌìƒdÀ’ÜŒ¸$ˆ»üˆ¸ 샙ô‡ìƒû‹¢ªö 4›††Àì wÀ쑼óA¾–`À™©$¢¸ðØ•‡™©Ÿ £+L €¤¶ˆû …Ýù<ýÅ ûê%�­¥Ýù\µëáëø¤ú¼d€½€¤,ú¼t€½*üú¼"\�½ˆû Pl�½*L²½Ø“ü²½ D¼½Œ‚/,Ž,̽ ´¼½üì½"|ñ½ýÅ$ì½,�¾,ˆ¾ìñ½; üæ½( ^e €ì…5  � ¯�´]  $ÉÁ  ,§Á  $ô¿ €ì…»Áô‡LÙÀØ“üÙÀ'|ãÀõ·/,óÀ,úÀ ìãÀL�¿ Ø“ü�¿'|§¿õ· /,·¿,¾¿ ì§¿ÞÁŸ ü¬¼²ü�¾µüß¿¯$輡ˆ,¸¼—í ,¿¼ø©,Ò¼¦äƒ çØ¥ð새À’@Ü¡¾$žÁü�¾ ìƒþô‡{ìƒ^†óAˆ–`Š™©$·¾ðØ•‡™©Í þ€¤—ˆû fŒ‚ýÅêõ·¿õ·w¤ÆÃdÌÀ¤,ÆÃtÌÃ*üÆÃ"\ÛÈû PlÛÃ*LþÃØ“üþÃ+dˆÄ›ˆ/,•Ä,œÄ,£ÄüˆÄ!LÁÄ Ø“,äÄ \äÄ  üÁÄ/ÄËÄóÀ N . üËÄ%0 üÛÆ"|àÆýÅ$ÛÆ,ðÆ,÷ÆìàÆÌÎÅ4ÓÅ ºŒ–$ÎÅ,ÚÅ,áŤÓÅÐñÎÅ ôïX #/ ðØÔÎÅm‹¢ ìöÅœöÅÍÃ ŠÆ,�Æ *£òçŶñðØØ´É ­Æ \­Æ<¯Æûê(L¯ÆŒ¨Æ Å™›†Ä¡Æ®üÕÆ( Ѐì…- ù¯�´V  Þʯ�´à‹¢ åÊ Ô»Ì,ÎÌ´‰ ,»Ì <ÎÌ$ÄÊ Å™›†\½Ê$óȀ셻Áô‡LãÉØ“üãÉ2œíÉýÅ/,�Ê,ˆÊ,�ÊüíÉ(L—ÈØ“ü—È+d¡È›ˆ/,®È,µÈ,¼Èü¡È! èÌ#LèÌ,ê̺ò#("<êÌ óÌ%<óÌõ̵ë%($,õÌ�óèÌ! ¶ý"$ü»Ì@$ãÌëŠ  Ð!@ÄãÌ ¤Í(\¤Í<¦Íûê(('L¦Íô’Í& §-'ü»ÌvD‰Í·‹ —&6ü‰Í(L»Í )Ø“4àÍ *ü»Í3 œÅÍýÅ)>,ÙÍ*6,èÍüÅÍ)ôÍ  ü�Â× üÆÅ~")0”üÍÆ§üŒÇÅüÞÈÆ„ÖÊü¯ÌÅ+ܧŒ§Ã¡ˆ,¶Â—í ,ÅÂø©,àÂú¦,ûÂÞäƒ Ø¥(ìƒÀ9ìƒx[èít‹¢ ÊÅ�÷§�´ò‹¢vW›†óÀì ‹¢ ÑÆÀ’nÜ�Ç$´ÊüŒÇ ìƒpô‡÷ìƒÚ‹¢�µ¢,³Ìµ¢µµ¢v… éPÀìj)ÀìCØ¥Œ›†¼ÀìÖìƒ`ø©T „óA‡–`Š©&�£M Æ MðØØ´Ž¾£1™©$¦ÇðØ•‡™©£¢ –` ¤€¤$ ˆû 󛈪±òKóÀAýűàÑôï–ÍÃ+¶ñ¤ûêÌ´‰ ÙýÅS›ˆºò·µë†ëŠ Dûê ·‹ ÓýņLÇÏØ“üÇÏ9ÌÑÏÚ˜/,ëÏ,òÏ4ùÏüÑÏ/†Ð¡ ü³ÎӼϡˆ,ÙΗí ,èÎø©,ƒÏý  4žÏ샳5óA7–`9˜¢ <‚Ú˜á ªÕ\ªÕ<¬Õûê(L¬Õ'´ªÕD¶ÕÁ½LT¶ÕÔªÕ ÃÕtÙÕ æÕÌ�Ö<‡Öëð,�ÖT�Ö œ‡Ö2  TôÕ  $ùÕ  à‘ò ¾ÖL¾Ö,ÀÖºò( <ÀÖÜ­Ö„­Öåò @ ü¥Ö#  üíÕb¼èÖ<îÖëð,èÖDöÖŒîÖ2TÛÖ $àÖà‘ò £×<£×¥×µë( ,¥×̒ׄ’×åò@ üŠ×!üÔÖ^ ´×üÏÔå¢ ü™Õ›üÊÕêü›Ö4ü€×2’Õ‹¢ æÔú¦,ðÔT�ÕÆãÉ›† Àì'DÎÕ„øƒM‘òB•¦÷(ÀìB„øÌ–‘ò‹•¦@qÀì‹£·©&¹ slot_startÁÆslot_endÁ¬ùÀÞ ùÀdûê÷Á½Éëð_ºòéåòÇëð‰µëåòñ(üÆ  ¡²Ý`üç ¹—"îÝNS¬·`eQrüË ˆ Œ­à˜ü„ ·á¨²Ý°îÝŸ žÞªžÞ²ÔœáëÝüîÝ߬·þ<— ¹—¤ ¾ üãA žÞlÿ ü„,õ  .(ý±  ¢ ²ÝpýØ ðÄ"îÝNS¬·`eQrý¶ � Œ­à˜žÞ ·á¨²Ý°îÝŸ  ðÄ­Ìÿµ×œäîÊÿîÝ⬷4… ðÄ<° ðÄ”¦ ¬  É ,¦ 4d¬ ü…C ÌŒ  ŸqL,º 4Á üŒ< Î à üàî ú žÞ,‘ âŸ,  ø©,Á ý  4Ü Ìÿè ±ÇÉÌÿçDóAG–`J˜¢ N�Ó€ƒ�ˆ řǙș­É™Ê™àË™óG*¤�R{9 ±Ç]b †ÿ‚t|(€Û Ž €à ’ -ó—9œ²Aÿ‚Ê ÿ‚Õ]gÔƒò(�â  £ ²Ý¨�ˆ ÿ‚"îÝNS¬·`eQr�ç ” Œ­à˜œ² ·á¨²Ý°îÝŸ »„ª»„²Ôœá릆îÝ߬·þ(‚ö"  ¤²Ýø‚£# řǙș­É™Ê™àË™óG*¤�R{9 ò˜\hîÝ”™¬·¦«—¸‚û" ™ Ò­àÞ‘…æ·áî²ÝöîÝå  Ÿ‡ó÷ˆûœ+6õˆîÝ+¬·K(ƒ€1  ¥²ÝèƒÚ1 «¡"îÝNS¬·`eQrƒ…1 ž Œ­à˜ ò˜£·á«²Ý³îÝ¢  «¡°‹‹¸Úœçñ‰‹îÝ嬷À†ÎJ řǙș­É™Ê™àË™óG*¤�R{9 ì£]b †ì‹t|(†îI Ÿ †óI £ -¬™9±²Aì‹Ê ì‹Õ]gÁŒò(‡õI  ¦²ÝÀ‡ÎJ ì‹"îÝNS¬·`eQr‡úI ¥ Œ­à˜±² ·á¨²Ý°îÝŸ ¨�ª¨�²Ôœáë“�îÝ߬·þ(ˆøR  §²Ý¨ˆšS řǙș­É™Ê™àË™óG*¤�R{9 «š[gîÝ“˜¬·¥ª–·ˆýR ª Ñ­àݦ…å·áí²ÝõîÝä  ‹�òã‘úœ*5á‘îÝ*¬·J4±V ‹�|±V 4¸V  ðW«š1D¸V €ü±V   �%ÂÐG#(4G„±V m¢Å¤ÏV dÕV €¤,ÏV tÕV �ýÀV  �%ÂÐØ´ðØØ´" ¿\  üÏV" \äV ˆû  €läV ' „‚W <‰W  å 4‚W  L‰W ü‚W+ Ä“W  ‰ B  Ô“W )  $ËW  Å™¢ÅðØ dãW  Å™¢ÅõW  Þ üÔU¡ ü¤VÑ FMT¢ ÂдƒV ¦…,æU ø©,íU ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´¢ÅmÂТã‘Áò¢ÅBÅäƒ 8Ø¥A|�ù¯»–`¾engineÁ4¨V Æ [ðØØ´Ž¶EÚ’D†“€¤¾–”-ˆû b�•1»•(‰òX  ¨ ²Ý`‰¿Y ¡é"îÝNS¬·`eQr‰÷X ¯ Œ­à˜¢Å ·á¨²Ý°îÝŸ ‘ýª‘ý²Ôœáë‚›îÝ߬·þ4Éu ¡é„Éu <Ðu ¼˜+LÐu Êw å üïtÛ �ù$„u ¢Å,út ‘ýq7¼˜x°�ªx řǙș­É™Ê™àË™óG*¤�R{9 �ë]b †úœt|(�×w ° �Üw ´ -åš9ƲAúœÊ úœÕ]gÏ�ò(‘Þw  © ²Ý°‘ªx úœ"îÝNS¬·`eQr‘ãw ¶ Œ­à˜Æ² ·á¨²Ý°îÝŸ ¶žª¶ž²Ôœáë¡ îÝ߬·þ(’í€  ª²Ý ’Ž� řǙș­É™Ê™àË™óG*¤�R{9 ä›\hîÝ•š¬·§¬—¹’ò€ » Ô­àà»…è·áð²ÝøîÝæ  ›¡ôô¢üœ-8ò¢îÝ,¬·M4¹… ›¡|¹… 4À…  ðWä›4DÀ… €þ¹…   �%Ò’K$)5H„¹… m†�dÓ…  Å™†�å… “ÿÈ…  �%Ò’Ø´ðØØ´#ÃDñ üÜ„‰ ü¬…9 U[a°Ò’¬Œ… »…,î„ ø©4õ„ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´†�~Ò’¶ô¢Ö†�R”_inputÁœÓ—4°… Æ BðØØ´ŽŸî£1œ¤ ¯¥(“½†  « ²Ý “„‡ á�#îÝPU¬·bgRt“† À �­à›†�£·á«²Ý³îݡ㟠©³î ±Ôœáë㟠îÝÞ¬·þ<ó£ řǙș­É™Ê™àË™óG*¤�R{9 �ƒ„ó£ 4û£  ñW�ƒzDû£ Ìó£ 4„¤  øW©ö LD„¤ 4š¤ á�üš¤ T¡¤ Çø /,¬¤ ,³¤ Ä¡¤ üš¤5 <º¤  Ç_�´Û†ô‡ö Û†ô‡UÿzðØ߬d¤ ¬º¤ »¦ õ ü˜¢£ üç£r  ��ü†£% †�,º¢ Ó,É¢ ø©,ê¢ ©ö ,ë£ Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ©ö ¹ Ī"æù [³î {™óA›–`�óAŸïŸ«ΫòÇø µͬ‚DƤ $Ȥ  «Û†ô‡ Ƥ 4Ȥ Τ ö ‹ô‡Ť ߬£Û† ä › Ãܯ‹4ਠá�„ਠ<ç¨ ïò .Lç¨ <‘©  Ī„‘© 4™© Ÿ« / D™© Ì‘© 4¢© Ϋ @D¢© ü‘©( d«©  µCt«© ü‘©* ¾ãlÜ©   üÉ©( tÍ© »ô É© ?,ë© üÍ©$ üÉ©> <ò©  Ç_ÄÜÛ†ô‡ø è¬ qðØƳdú© ¬ò© ó« ÷ üú¦ù üÖ¨» üþ¨“ è²üñ§) †�,¥§ Ó,´§ ø©,Õ§ ©ÊÚ¨ ³î  ¾ãd‚© ““ v©ö ¨ÿ­ÚÍ®ûõÛ< ¾ãg¾ãpƒóA…–`‡›ÞŠfwdcacheÁ‰ùïò —Ÿ«_Ϋ=›²»ô Ä´³�Dþ© $€ª ܯ þ© 4€ª †ª ø ™ô‡ý© Ƴ±Û† û© › Ñܯ�4¦® á�„¦® <­® ïò .L­® <Ô®  Ī„Ô® 4Ü® Ÿ« / DÜ® ÌÔ® 4å® Ϋ @Då® üÔ®( dî® ›²Atî® üÔ®* ¾ãTÒ¯   üŒ¯f üŒ¯/  ýͯ B,Þ¯ 3Þ± ù ü²¬¬ üœ®à üÄ®¸  Œ—ü°­0 †�,ä¬ Ó,ó¬ ø©,”­ ©Ê ® ³î ¯¾ãLÈ® ““ ©ö Mÿ­Í® ©µ¾ã wóAy–`{Ò}óAtäïò 'Ÿ«ïΫÍ›²«ã¹V4ƒ´ á�„ƒ´ <Š´ £Œ .LŠ´ <´´  Ī„´´ 4¼´ Ÿ« / D¼´ Ì´´ 4Å´ Ϋ @DÅ´ ü´´( dδ ›²Atδ ü´´* ¾ãlÿ´   üì´( tð´ ጠì´ ?,޵ üð´$ üì´> <•µ  Ç_ÄÜÛ†ô‡û è¬ qðØ•¿d�µ ¬•µ –· ú ü�²ù üù³» ü¡´“ è²ü”³) †�,Ȳ Ó,ײ ø©,ø² ©Êý³ ³î ¾ãd¥´ ““ t©ö ¦ÿ­ØÍ®ùõÛ<©µd¾ãm€óA‚–`„¦Þ‡revcacheÁ†ö£Œ ’Ÿ«ZΫ8›²ጠÁƒ¿�D¡µ $£µ ܯ ¡µ 4£µ ©µ û –ô‡ µ •¿®Û† žµ › Îܯ�4Ù¹ á�„Ù¹ <๠£Œ .L๠<‡º  Ī„‡º 4�º Ÿ« / D�º ̇º 4˜º Ϋ @ D˜º ü‡º( d¡º ›² At¡º ü‡º* ¾ãT†»   ü¿ºr ü¿º0  §�» B,’» L™» ;�½ ü üÕ·È üϹì ü÷¹Ä û¢üî¸% †�,ˆ¸ Ó,—¸ ø©,¸¸ LÓ¸ ©ÊÓ¹ ³î Á¾ãLû¹ ““ -©ö _ÿ­‘Í®²©µ¾ã�óAƒ–`…Þ¬‰Ò‹óA‚ü£Œ GŸ«Ϋ훲˯Åv4³¿ á�„³¿ <º¿ ïò .Lº¿ <ä¿  Ī„ä¿ 4ì¿ Ÿ« / Dì¿ Ìä¿ 4õ¿ Ϋ @ Dõ¿ üä¿( dþ¿ ›² Atþ¿ üä¿* ¾ãl¾À   üœÀ? ì À  ÄœÀ A,ÍÀ 4ÔÀ ü À; üœÀf <íÀ  Ç_Û†ô‡þ è¬ zðØŠËdõÀ ¬íÀ î ý ü±½½ ü©¿ã üÑ¿» èÜÔÓ¾ †�,æ½ Ó,õ½ ø©,–¾ ý  4±¾ ©Ê­¿ ³î ¾ãdÕ¿ ““ ‡©ö ¹ÿ­ëÍ® ÃÓO©µw¾ã€‹óA�–`�˜¢ ’›Þ•ô´�ïò ­Ÿ«uΫS›²1´ÊÜùÊžDùÀ $ûÀ ܯ ùÀ 4ûÀ �Á þ ¨ô‡øÀ ŠËÀÛ† öÀ › àܯ�àšÈÃ Ī †Ī08(šû Á š€Ã Å /žœ;Û²CĪˆ Ī“_iÃϰ(›‚à  ¬ ²Ýà›Èà Ī#îÝPU¬·bgRt›‡Ã Ç �­à›Û²£·á«²Ý³îÝ¡ ¬Ð¬¬Ð´×œäîšÒîÝᬷ(œàË  *²ÝˆœþË Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ��\hîÝ”™¬·¦«—¸œåË Ì Ó­àßÒ…ç·áï²Ý÷îÝæ  ”ÓôíÔüœ,7ëÔîÝ,¬·L4´Ï ”Ó|´Ï 4»Ï  ðW��4D»Ï €€´Ï   �%á‘K$)5H„´Ï mÍŒdÎÏ  ř͌àÏ “�ÃÏ  �%á‘Ø´ðØØ´#ÃD‰ üÚΆ ü§Ï9 U[a°á‘”ŠÏ Ò…,ìÎ ø©4óÎ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ÍŒ~á‘¶íÔÖÍŒR”æ—Ó—4«Ï Æ =ðØØ´ŽšçÕ,•Ö¨× (�¨Ñ  ­ ²Ý�©Ò "îÝOT¬·afQs�­Ñ Ñ Ž­àšÍŒ¢·áª²Ý²îÝ š¨ ¨œ¨ °Óœàꚨ îÝݬ·ýù ­D`Á ­`£² ù Æ*`®(²Ý2� üÎòÎ ��ü›ó% ÍŒ,ðò ø©,ÿò p–`Q£² šù£­D`Á£­`£² ù£Æ*`®(²Ý2� üÛö� è²ü±÷) ÍŒ,†÷ ø©,•÷ p–`Q£² šù¦­D`Á¦­`£² ù¦Æ*`®(²Ý2‘ üªû› Œ—ü‡ü0 ÍŒ,Üû ø©,ëû p–`Q£² šù©­D`Á©­`£² ù©Æ*`®(²Ý2’ ü„€‘ è²üÚ€) ÍŒ,¯€ ø©,¾€ p–`Q£² šù¬­D`Á¬­`£² ù¬Æ*`®(²Ý2“ üÔ„Ö û¢üÌ…% ÍŒ,‡… ø©,–… L±… z'–`)Þ¬-i£² ²ù¯­D`Á¯­`£² ù¯Æ*`®(²Ý2” ü¾‰ö èÜÔ¿Š ÍŒ,ó‰ ø©,‚Š ý  4�Š z(–`*˜¢ -i£² ²(³à‘  ¯ ²Ýسˆ’ řǙș­É™Ê™àË™óG*¤�R{9 ‘ž\hîÝ•š¬·§¬—¹³å‘ Ö Ô­àࢉè·áð²ÝøîÝæ  ìäôÅæüœ-8ÃæîÝ,¬·M4¼– ìä|¼– 4Ö  ðW‘ž4DÖ €‚¼–   �%æºK$)5H„¼– m‘·dÖ–  Å™‘·è– “ƒË–  �%æºØ´ðØØ´#ÃDš üÁ•§ ü¯–9 U[a°æº䈖 ¢‰,Ü• ø©4ë• ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´‘·~æº¶ÅæÖ‘·R”æ—Ó—4³– Æ =ðØØ´Žš¿ç,íç€é (´õ–  °²Ý€´× ïò#îÝPU¬·bgRt´ú– Û �­à›‘·£·á«²Ý³îÝ¡®› ©©Ê±Ôœáë®› îÝÞ¬·þ<ƒ§ ïò<¨§ řǙș­É™Ê™àË™óG*¤�R{9 û󄨧 4°§  ñWûózD°§ ̨§ 4¹§  øW¾ãLD¹§ T–¨   üϧr üϧ0 ¯Å‘¨ @,¢¨ L©¨ 9­ª � üø¤µ üù¦Ò ü˜§³  û¢ü˜¦% ‘·,«¥ ×»,º¥ ø©,⥠Lý¥ ©Êý¦ ¾ãLœ§ řǙș­É™Ê™àË™óG*¤�R{9 ¾ã† ¥î冀?¾ãH®óA°–`²Þ¬¶Ò¸óA¸)€ï¯ïÙ¯Å”йŽ« ¥î †¥î08(¹ºª Ü ¹¿ª à /Ëž;ò²C¥îˆ ¥î“_i®ó°(ºÁª  ±²ÝкŽ« ¥î#îÝPU¬·bgRtºƪ â �­à›ò²£·á«²Ý³îÝ¡ —ô¬—ô´×œäî…öîÝᬷ(»ã³  ² ²ÝÀ»ˆ´ řǙș­É™Ê™àË™óG*¤�R{9 ÊŸ\hîÝ•š¬·§¬—¹»è³ ç Ô­àà‰è·áð²ÝøîÝæ  €÷ôÙøüœ-8×øîÝ,¬·M4¢· €÷|¢· 4©·  ðWÊŸ4D©· €„¢·   �%ì¹K$)5H„¢· mšµd¼·  Å™šµη “…±·  �%ì¹Ø´ðØØ´#ÃD¨ üÁ¶� ü•·9 U[a°ì¹Ìñ¶ ‰,Ó¶ ø©4Ú¶ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´šµ~ì¹¶ÙøÖšµR”æ—Ó—4™· Æ =ðØØ´ŽšÓù,�ú”û (¼–¹  ³²Ý¼¦º "îÝOT¬·afQs¼›¹ ì Ž­àššµ¢·áª²Ý²îÝ š¨ ¨œ¨ °Óœàꚨ îÝݬ·ýù¿­D`Á¿­`£² ù¿Æ*`®(²Ý2® ü‡ÐÍ û¢üÿÐ% šµ,ºÐ ø©,ÉÐ LäÐ z'–`)Þ¬-i£² ²ðÃê ƒ¹ �º )1øÃŽ ØÚÀ½ *3(ú í ÿ þ >ñ M„ Y „ dƒ¹ Ú¤À âØÚ´–Á ¼�—�º À½ àƒ¹ „(ÄÁ  ²ÝðÄê  H²Ýƒ¹ *îÝøÄŽ  ´²Ý ØÚ,  8 îÝž£¤é°µ¢§qvÑÄÆ ó ë ­à÷›ƒÿ·á²Ý²ÝîÝ ¤À ²ÝáîÝéêÔñ–Á ùUœcn¤À îÝdêÔîÝ3¤é�ðÅê  ÙÑ øÅŽ  ­Ó 8ÅÈ í ÅÏ ÅÎ >õ M„ Yƒ¹ ŸØÚˆpÙÑ ¸­Ó Ÿƒ¹ \L™; Ÿ;  #/@?  š; M p/z |“; “; $ 'K ¡; üü:' Ô ,‹; $,3úÅ£E_ÁpÆóP „  †„ /7àÆ¦Q ·¬Ðæ)2(ÆËP ö ÆÐP ÆÏP >ú MÞ Y Þ d„ ß›ƒç·¬³Ëç»�—Ú‹Ðæß„ „(ÇÒP  ²ÝpÇóP  ²Ý„ *îÝàǦQ  ²Ý ·¬*  6 îÝœ¡¤é®³ ¥otÏÇ×P ü é ­àõˆ�ý·á²Ý²ÝÿîÝ›ƒ²ÝÞîÝæ¾êîËçöRœ`k›ƒîÝa¾êîÝ0¤éŠ «X  l±X ·¬ü±X" T¿X Ôë,DÊX ¤¿X ø†±X#   �%¡óJ$)5Hü±X# m�» !, òX    ÄÞX tãX  Ü $ÞX  A œãX ‡ÓX [ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏï×°Gu �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw«¡×°À“Þ¾ ûX  üX ! ))ü¤WØ V f  Ú 4ü§XU w~… «”üöW& ˆ�,ÎW §òDÝW �»êÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“�»ë¡ó"ËçA-À“6�»È�»™c´¨ ¸ß'¥Æ €Ž `Ôë¦â‘‹“Ü¥”��»ÐpÈÒ† „ Ú‹*2@Èæ† �»‡…*3(ÈŸ† ý Ȥ† È£† A�!P«¡\‹‹d„ Û›ƒã�»´�ù¼�—Ú‹‡…à„ ‚(ɦ†  ¤²ÝpÉÒ†  ²Ý„ +îÝ@Éæ†  ²Ý �»+  7 îÝ ¥¤é²·¢§puÓÉ«† ƒ!î ­àú‹‹·á ²Ý²ÝîÝ ›ƒ²ÝâîÝêœþò�ùúYœgr›ƒîÝfœþîÝ4¤é‘슗 ÜŠ—  è !üŠ—2 T¨—  Ú µ“MD³— ¤¨—  Á— — ü˜–ª â «”üÙ–& §òDÀ– ˆ�ÍÞ Õ¨ TÊžôúžËÞ ˜Þ ždÔã „ æã í ü¦ã@ ›ƒ<Âã ‹‹,¸ã  1LÕä �»ää î ü­ä7 �ù$Æä ‹‹,¼ä  1Œ‹ù T�ù  í $‹ù d�ù ü‹ù( ¤�ù  Ó H´�ù ü‡ù,  ‡ù üÊù' DÊù  ® DÓù œÝù § 6ü�ú* t–ú  ˜¨4�ú œ¥ú § ü–ú# D€ü  �»Œ€ü 4‰ü  ƒ 0 D‰ü ¼€ü  üïû)  $  5 üïû; t™ü  –¨a ¨ü Œ™ü °ü ï üýö³ üøø¸ ü½ùó üûùµ  ,Ÿ÷ ‹‹,•÷ Düø  ›ƒ@4Áù lÿù (  Ƚ^�ù~6hïŒlblocksÁb real_capacityÁpã/§ ý§ ¯¢ìޢů£{ì£E¤õ ³wȽÙÁ¥‹dñ� $÷� ©¢,ñ� 4÷� Üñ� Dþ� µ£C$‡‘  tþ� 4³‘ <»‘   ñ ¯¢’¦  ú¦ü–‘- „›‘  ‡ $–‘ ,¬‘ lbü›‘( ü–‘F Ä‘  º_ܧÛ†ô ¯¢ܧUÿ„ðØЪœÈ‘ ÄÄ‘ â‘ ñ üÐ�’ üå�}  ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÛ†ÄÂ� ‹‹,…� ì£,”� ¯¢,¯� µ¢,é� µ¢Àªgø©²ú¦¬’¦µ]óA\–`^–``©¢jµ£Eþ©ÔÀª™À‘  •¦*:ñ V’¦X”¦GhΑ lΑ <Ò‘ Û¨(LÒ‘ Û‘ ô ýÍ‘ ЪܧÉ‘ «ªv¾¾<Û¨…1dÓ› $Ù› ©¢,Ó› 4Ù› tì› <ñ›  î $ì› Lñ› äì› \û› é˜Elû› üì›!  Œœ '$­œ  Å™¯€$³œ  Å™¯€d¬œ  •¦  4óœ  Tûœ ú¦üÖœ0 „Ûœ þ©$Öœ ,ìœ ZP üÛœ+ øŠÖœ1  ŸÖ W $ 0 ðØüÖœ1  mܧüМ7  ‹†�  [Åפ"Ï� .-½È� à›† ˆž  D‚ž % / $¬�  Å™‹¢D©�  Àœ�´Û†|¢� -�tü�   Ëž ீ<Ñž Óž ж Ñž ,Óž $¯ž  Å™‹¢D¬ž  Àœ�´Û†ðØ- ‹Ÿ  D…Ÿ % /J tÿž  Ο !ீ<ÔŸ ÖŸ ж! ÔŸ ,ÖŸ $²Ÿ Å™‹¢D¯Ÿ Àœ�´Û† ðØ -œ—  $ Ú,ü‡ $ T‡  ™¸’  $=#)ü‚ * " Å™‹¢#üÿŸ. Àœ�´Û†"üøŸ5 -tÍ  <Ò  ް$Í  &LÒ  ÜÍ  TÜ  µ’&C%dÜ  Ì‚¡ Œˆ¡ ʹ%,‚¡ 'œˆ¡ $º¡ ) Å™¯€ùÊ„ !±Ê„ ”º)7'LÀ¡ (,4�¢ -T‰¢ /(áº/#..,üä¡0 „é¡ þ©$ä¡ ,ú¡ -j.`,.üé¡+ øŒä¡1  ŸÖ,X+. %0+10üä¡1 2+mܧ32üÞ¡7 3 �”¢ 1+[Åך"Ï� 1.0.´΢ 52à›†Ö¢ *5,€£ 8(†£ ;*t†£ DŠ£ Á½;(:!.TŠ£ $¶¢ 4 Å™‹¢D³¢  Àœ�´Û†4|¬¢ ,”†£ 9: —£ ¤…£ ;8È9?7"."Ì€£ <7üú¢ <$# Ò£ >7ீ<Ø£ Ú£ ж> Ø£ 6%.,Ú£ $º£ = Å™‹¢D·£  Àœ�´Û†=ðØ,,„¤ A(Ф E*tФ Dޤ Á½E(D&.Tޤ ”Ф CD ›¤ ´Š¤ BC Ÿ¤ ĉ¤ ;A¦B?@'."설 F@üþ£# F)( Ú¤ H@ீ<ठ⤠жH ठ?*.,⤠$¤ G Å™‹¢D¿¤  Àœ�´Û†GðØ,œ”¥ K Ú,6?ü„¥$ T„¥ ™¸*�¥ K=J+.*üÿ¤* I Å™‹¢Jüü¤.  Àœ�´Û†I ¯¥ (-(-°¥ -(/ü­šƒ °,õ üÇ›é üœœœ üÆœò – � ¤ æ „Ã� üð�È ”Æž üõžÃ  ”ÉŸ  üÁ ï üò ¾  ü¥¡‹ üÔ¡Ü ãêñ3„É¢ üî¢Â ”Í£ üô£¼ ”Õ¤ Læù ü››! ‹‹,Þš £¬,íš ¯¢,ˆ› µ¢,Ë›  ? �ùv êÅL œ •¦ÿ •¦ï òÙW Àª  ø©Û ú¦Õ “ÇÞ ü Å× ܧI $š� �´d ›†ï ,ô� ç Ð $�ž �´é ¯€: ùž ¿ ¨ $ Ÿ �´ ¯€X �´Š‹¢ÁÅžæã“,Å  �ùbLö  çºL©¡ •¦›†Ø¡ òÙFÀª�ø©Ûú¦Õ‚ÉÞõÅ×þܧB$¤¢ �´m›†ç,ò¢ »ÉÇÉÚTÊãÉä$¨£ �´¾¯€ø£ »ÉÇÉž:f–ãɰ$°¤ �´¬¯€ý�´.‹¢fÅž‹¯óA²–`µ–`¸©&¡¾¾Êœ Æ o ޶ ¾¾M ‚b ©{ ’E ©| !ÛÊ  %ìÊ'©&(¾¾*Æ Ë1Ž 2¾¾¨5‚Å6©—>’Œ?©DHø©¢Lް'é˜þ©0ŸÖ÷Ï� þж; ж+ ™¸§ ް2 µ’ ʹë ”º­ áºt þ©H ŸÖ Ï�  Á½ ;�ж+Á½¢;7жÕ™¸Pçºèçºïçºöd¾± $ı ©¢,¾± 4ı l½± ü¦±+ T«±  † $¦± ,¶± ;$̱ ü«±& ×± ø üö¯á ÃÓ´…± ‹‹,«° £¬,º° ¯¢,Õ° æÒ$ç° ø©°µ¢â=óA?–`AɾD‹©¢'®Òó $⺠  tûº <€» ް$ûº  L€» Üûº TŠ» µ’D dŠ» üûº# ,—» à’B <—» üéº6 Œéº  ‡E #,Æ»    dÆ» $Ì» ©¢ ; 4Ì» ü²»! œ²» Ûû  C"$ÿ»  üÝ»,  „! �¼  ޼  ü¸¹× !1  û 5üÞº± ü©»f  „!„!ÜÕˆ!é¾² ‰!óA² Š!ɾ² ‹!Û˲ ¶ÞÒräñ±Ô¹º ‹‹Dö¹ £¬,ˆº ¯¢,¦º ˜Û{ýÝã“5�ùk±ý ­» µ¢±¯¢Þ˜Ûr5sóAu–`wɾõÛËciްêµ’Äà’¡ÙÕ}©¢8Ûû ˜Û±¯¢¸$ÛÉ   ´âÉ |çÉ  ê $âÉ ŒçÉ ,ŸÊ   dŸÊ $¥Ê ©¢;4¥Ê ü‹Ê! œ‹Ê Ûû C"$ÜÊ ü¶Ê0  ‘!ìÊ  ëÊ ü©Èà !1 € 5ü×É• ü‚Êj  ‘!‘!ÒÖ•!é¾² –!óA² —!ɾ² ˜!Û˲ êNJ&­�|4ô®É ‹‹DëÈ £¬,ýÈ ¯¢,›É ˜Ûþ±ý †Ê µ¢–¯¢Ã˜ÛWXóAZ–`\ɾ]ÛËcN¨ÛR©¢Ûû å˜Û�¯¢ˆ $üê  Å™›†´ëê \ðê ‹×$ëê :Œðê „¹ë L¾ë ®Õ$¹ë \¾ë ü•ë5 „šë þ©$•ë ,«ë ,²ë \üšë0 øŽ•ë6  ŸÖZ$ 0 Cü•ë6 mܧ¬Õë \Úë ‹×$Õë æë „Úë �Êë [Å×µ"ªØ . Î4ôë  ÀœÛ†ðØ€ì  † üÌé´ ü‹ëu “™ŸóÃÓ´Êê ‹‹,çé £¬,öé ø©,‘ê æÒ$¬ê  ܧDòÙ’ÀªÞú¦Å×ܧt`{óA}–`ɾ‚¾¾�ë  Æ | ŽÖ ‹×Ô®Õªþ©…ŸÖI‹×êªØW1tí† <ò† ް$í† Lò† Ôí† Lü† ÏÜC\ü† )t‹‡ <�‡ ް$‹‡ L�‡ üí†6  Ä‹‡ <š‡ ØÝdLš‡ L±‡   ü؇. ¤Ý‡  Œ $؇ ,ò‡ ,ù‡ ,€ˆ ü݇) ø�؇/  ïÛ _  $  0  ðØü؇/  mÄÜüŸˆ ¨ˆ  þWö ›†ˆ ‰ë›†UÿDŸˆ ðØý錬ˆ  ´¨ˆ ‘†ˆ   [Å×â"Ðå ..ûüœˆ#  ÀœܧÛ†ü•ˆ* .t™‰ <ž‰ ް$™‰ Lž‰ Ü™‰ T¨‰ µ’Cd¨‰ ü™‰/ Œµ‰ ʹAœµ‰ ,Õ‰ \Õ‰ ”Õ‰ ü…Š. ¤ŠŠ ¿è$…Š ,ŸŠ ,¦Š ,­Š üŠŠ) ø’…Š/  ïÛ]$0 ü…Š/ mÄÜüÌŠ ÕŠ  þWö ›†‰ †êDÌŠ ðتîŒÙŠ ´ÕŠ “³Š [Å×Ï "Ðå..èüÉŠ#  ÀœܧÛ†üŠ* .tƒ‹ <ˆ‹ ް$ƒ‹ Lˆ‹ 䃋 \’‹ é˜Cl’‹ üƒ‹!  £‹ '#$Å‹  Å™¯€$Ë‹ ! Å™¯€dÄ‹  •¦ !\�Œ % $%ú¦üè‹4 ¤í‹ ¿è$è‹ ,‚Œ ,‰Œ $S#üí‹/ ø”è‹5  ïÛ#Z"$ &"0 & üè‹5 ("mÄÜ4Ö� +,ß� .\ß� -.h–Ý� , àý-|Ü� ×ä+a,8* !•œŒ '"[Å×ë"Ðå'..ü¿�- |Å� ‚æ,¿� *´Õ� )!üÅ�' Ô„Ž ˆŽ  þWö ›†Š †ê(„Ž ðØãôŒŒŽ /"´ˆŽ ô�Ž  ÀœܧÛ†/üú�% .$ÉŽ 1 Å™¯€ùË„ !±Ë„ ”º17ÏŽ 0$,\�� 50áº5#4%/,üçŽ4 ¤ìŽ ¿è$çŽ ,�� ,ˆ� 4c3&/üìŽ/ ø˜çŽ5  ïÛ3[2'/ %6216() üçŽ5 82mÄÜ4É� ;0,Ò� >\Ò� =>hšÐ� < àý=|Ï� Ïé;a<8:+/"™›� 72[Å×í"Ðå7.*/ Œ‘ 0.ü²�- |¸� ‚æ,²� :´È� 9,/ü¸�' Ôì� ð�  þWö ›†‹ †ê8ì� ðØ€úŒô� ?-/´ð� ôé�  ÀœܧÛ†?À0.�‘ Û00ü›…ò ‡ ü݆° üɇ� x† ü�‰þ üö‰� …Œ “  ü³‹÷ üÞ‹Ì  F MT èü³ŽÚ üÝŽ° ïöý’@Àªü­†% ‹‹,¼… £¬,Ë… ø©,æ… ú¦,�† LᆠM �ù‚ �ù% ¸ ëåW õÛ¨ £ Å׬ ÄÜ. ܧ “‰ ã“9 �ùn Ùðèí ëåˆõÛ×çÅ×ðÄÜjܧWJy�ù®êÅT·‹ •¦9•¦)ëå�õÛéú¦“ÇòÅ×û ÄÜ‘ Îèí;øî‘âälƒèíœܧÍçºT·Ž •¦_ëå¥õÛòú¦.‚É7øÅ×ÄܘÁèíBÇɘâäsŠèí£ܧ¿3óA6–`9©&<ßïBmaybe_hmÁD͇ Æ Ë  ŽP ôïî€Dú‰ Æ Ú ŽW ƒðÐ •ðâ‹ (Æ �'Ž6(ƒðl0•ðᎠ8Æ H7Žâ83%ް�ÏÜkް8ØÝò ¿è° ïÛo ïé Ðå} ްS µ’. ʹ ±òÛ ¿è® ïÛo œî Ðå} ްf é˜A ¿è€ ïÛD ±òÑÐåR ×䱂æTÕô%”º�áºe¿è9ïÛü±òˆÐå çºÏéo‚æþòùÎçºçº%±ˆ d±ˆ <´ˆ è� (L´ˆ ½ˆ ˆ î ›†°ˆ ýéö ­ˆ „çxýæ/è� ‡ÞŠ dÞŠ <አè� (LáŠ êŠ ‰ l ›†ÝŠ ªî„ ö ÚŠ „çxýæ­ è� ‡‘Ž d‘Ž <”Ž è� (L”Ž �Ž Š Ö ›†�Ž ãôî ö �Ž „çxýæ è� ‡ù� dù� <ü� è� (Lü� …‘ ‹ Ü›†ø� €úôö õ� „çxýæè� ‡(Ì¼à  µ²ÝÐÌðà  e²Ý‹‹+îÝ Ì�á  A²Ý £¬+ îÝpÌªá  w²Ý ˜Û+  îÝ°Ì¾á  ²Ý±ý +7îÝÆß ,2$îó ¼ Á Š�eÌÁà �!�­àŽ ŽØš·á£²Ý¬²Ý›îݤ‰‹­²Ýzî݃ £¬�²Ý\îÝe—�n²Ý;îÝDŸ  M¡  V.œ<G‰‹îÝ;´ŽîÝ —�îÝן  îÝ¥Æßzðã ‹‹lôã £¬dƒä ˜ÛT‘ä ±ý üÊäd  ™ ò¡ ‹‹£¬æÒü»ät \¾ä  ½™ ò¡ Þ�»ä ~ü¾äq ü»ä‰ L¹å  ÷_‹¢Û†q\¹å Êå ˜ üÒâø üÛãï  Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‹¢Û†üèâ! ŽØLÚâ ‹‹ý £¬ôæÒç¹£ Úæù Š�‘Ö£¬!Né¾NóAEɾ<ÛË3N‡‘îÖ‘§àä ‹‹,îä £¬$üä æÒüàä! Tãä ®Ò Y I,õä Aôãä ø®àä"  ˜… S$0C$“å æÒ „“å L˜å €š;\˜å ¯�å [Åײ"Ï� .ˤ�å Àœ�´Û†®å  ™ Ï…‹üàä"  æù Ñä  �‘ø©,Ëä £Š YÃÓžÕÅ×Ý�´ —�9‹‹M£¬VæÒ_æÒh–`d龨‹‹óA,üã £¬ɾ$‹ä æÒÆ iŽäðØÚ®Ò`˜… +€šÄÏ� 9Ÿ¥ éí¶›(Í–ê  ¶²ÝÐÍÎê  e²Ý‹‹+îÝ Íîê  A²Ý £¬+ îÝpÍˆë  w²Ý ˜Û+  îÝ°Íœë  ²Ý±ý +7îÝÆß ,2$îó ¼ Á Š�eÍ›ê �!�­àŽ ãÝš·á£²Ý¬²Ý›îݤ‰‹­²Ýzî݃´ŽŒ²ÝYîÝb—�k²Ý8îÝAŸ  J¡  S+œ9D‰‹îÝ8´ŽîÝ—�îÝÔŸ  îÝ¢Æßw Üí ‹‹làí £¬dïí ˜ÛTýí ±ý üËîp    ò¡ Þ�ü¯î� \¿î  ½  ò¡ Þ�¯î  w ü¿î} ü¯î¦ LÊï Ö‘ h\Êï ø°¯î§   �%£’I&+ 7 Jü¯î§  mè’  Öï Œ±Õï  �%řǙș­É™Ê™àË™óG*¤�R{9 ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw˜ÛÛ†Ø´ðØØ´» T$ãï |ãï Dèï ¤”) Tèï )  $‰ð d‰ð ,Žð ð”) <Žð „†ð  Àœ˜ÛÛ†´�ð  Å™º£üàïc  $µð  Å™º£' Éð Ÿ ü·ì’ üÃí† ü§î¢ íôûBõ¢üÍì$ ãÝL¿ì ‹‹ÇÞ“»æÒ®¹£ ¡è’ŽÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´è’9£’mæù Åô  Ëè’—�º£¡˜ÛÑ—�죬�óé¾½óA´ɾ«Û袮 RðØØ´Ž¦ ¢ì …Ö‘=å¡è’¦ï¢'¤”Âð”åî ‹‹,óî £¬$�ï æÒüåî! Tèî ®Ò Y I,úî Aôèî ø²åî"  ˜… S$0C$œï æÒ „œï L¡ï €š;\¡ï ³†ï [Åײ"Ï� .ˤ™ï Àœ�´Û†»ï    �…‹üåî"  æù Òî  ô ¸ø©,Ìî £Š YÃÓžÕÅ×Ý�´ —�9‹‹ÿ£¬æÒæÒ–`d龊‹‹óA,èí £¬ɾ$÷í æÒÆ iŽäðØŒ®Ò`˜… +€šÄÏ� 9Ÿ¥ éí¶›ˆÎ‚ø …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ»¤�þX] †ö¯ow€Îáú °¥ †°¥09(Ήö ž!ÎŽö Î�ö A¢!Pì£\ ì£gö¯) ö¯5°¥ °¥Í˜¢Űf‚±ñö¯�(Ï�ö  ²ÝˆÏ‚ø   ²Ýö¯+îÝ€Ïáú  ·²Ý °¥,  8 îÝ ¥¤é²·£¨qvÓÏ•ö ¤!î ­àúý±·á ²Ý²ÝîÝ ‘²²ÝãîÝë ¥²ö¥²þ\œju‘²îÝj¥µîÝ8¤é”(Ñ‚— %€Ñ�œ ´Ø×�ØÑ¡œ ´Ø•¦>C †×�U ]`Ñ„˜ ”ØÇHÑ’˜ ”Ø=Bü†NV=ö ¥!ц— ÔÙ †•¦ë óB ¥!  Mч— ­!z€‡ »¤• »¤¡©ÍŠ$óŠÇ6  ×�¬»É—×�¾•¦©ýó­~ϰ mó­úϰ é<õ¶ü†Àó‹©©¸(Ò‰— %€Ò�œ ´Ø×�ØÒ¡œ ´Ø•¦hp¸²ÝQY¹²Ýf îÝYal²Ým yîÝÖÛ¤éèíÆË²· `Ò„˜ ”ØÇHÒ’˜ ”ØJSº²ÝRZ»²ÝgîÝZ b?²Ýn z  îݺÀ¤éÎÔËÐ · ¼ñÒŽ— ¯! ­à(›¹1·á:BÍŠ<óŠ'²Ý]²ÝWîÝ`²ÝKîÝTŒ‘]Ò¹g»ÉR²Ý¥²Ý‚îÝ‹²ÝvîÝ »É‹ßœíó­íϰ Üó­ê ϰ Ù ,Ò¹îÝ·ÀîÝú¤éKÍŠîÝFŒ‘îÝ2¤éf�ÓƦ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ�þW\ †îÁnvhÓú§ (Ó®ž °!Ó³ž ´!2°¥>¥²FîÁì îÁ÷ƒóŠ‹q{¼Â#ó‹¯îÁÓ²ž (Ôµž  ¼²Ý�ÔƦ  ½²ÝîÁ,îÝhÔú§  ¾²Ý +  7 îÝ¡¦¤é³¸£¨puÔÔºž ¶!ï ­àû¥²·á ²Ý²ÝîÝ ËòÝâîÝꌑòóŠúZœhsËÃîÝgŒ‘îÝ4¤é’ìæ¨  Üæ¨  Ù,üâ¨!  ⨠' (N ‚© üȨ< § ,Ú¨ ÂúÅ™7_Á(Öœ   4¨Ö²2 ÕÛ ›† $²Ç 08x ·!‹ÀÖ , ªÛ•ö$¿†08ÀÖ½$ ù•ö#¿†/7¨Öú åÚ›†¸Öô! åÚ×�hÖÖ" åÚÇY^²Ç jr¨Ö± ®Ú›†¸Ö« ®Ú×�hÖ� ®ÚÇY^²Ç  jrPÖ¹ ‘ÚôíhÖÅ ‘ÚÇ<AÒ© M UàÖµ ðÙ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÝÁ�þ^c †‹Îu}ˆÖÍ ÖÙÝÁ$ †ÝÁ6 >hÖ« ÁÙÇ$ü†0 8V ·!Ö  y ·!#˜ ·!B¢¨ü† µ ¾Û ·!  ˆ_eõ¶r{flü†y‚E ·!õCIõ¶V_JPü†]f² ·!bØ ·!‚ø ·!¢ ·! ÂÖ¡ Ò! MSZahov}„‹þ¥™ þ¥¥­ÍŠ�Ǧ ÝÁõÝÁþ ‹ÎŒ‹Î•§®øÍŠäôí Çöãɓҹ͊k›†®×�šÇ†ãÉ@Ò¹,ÍŠ›†[×�GÇ3¦ý²•ö»¦ý•ö ãÉk›†t¹ó­¯ó­ÿó­Žó­õ ϰ å ó­† ϰ v__self_2Ámó­+ϰ ¾Ö ó­Žó­Øó­= �²Ç Q¿†¿†Ê²Ç •²Ç %Ò©µÚÎb�Ïçü†«ü†´õ¶2ü†õ¶·ü†¡ (×£   4¨×²2 <ÕÛ ›†X =`¿²Ý2 >:À ²ÝG @<S ?@îÝ¡ ¦ ¥¢³=¸>‚?‡ ÊÏ;×h²ÝåêƵ ÷;ü À× , 6ªÛ•ö'70Á ²Ý48< ²ÝI:6U9:îÝrx¥¢†7Œ8ˆ9� ŸÀ×½$ 1ù•öÁ2ÊòÝ33; ²ÝH51T45îÝ ¥¢ 2&3‡4Œ 9 ¨×ú &åÚ›†¸×ô! 'åÚ×�h×Ö" (åÚÇ–)ŸÄ ²Ýn*vÀ ²Ýƒ+&îÝw,Å ²ÝŒ-'îÝ€.ˆÆ²Ý•0(¡/0îÝ-3Ïž A)G*+,ý-.ë/ð q ¨×± ®Ú›†¸×« ®Ú×�h×� ®ÚÇÎ×Ç ²ÝnvÀ ²Ýƒ îÝw!Å ²ÝŒ"îÝ€#ˆÆ²Ý•%¡$%îÝekÏž y !ý"#ë$ð ©P×¹ ‘Úôíh×Å ‘ÚÇéòȲÝQY ²ÝeîÝYaƲÝnzîÝY_¤émsÊÏ·¼ �à×µ ðًγ¼É²Ý4<Ê ²ÝIUîÝþ¥¢ˆ� +ˆ×Í ÖÙÝÁN WË ²Ý4 <:²ÝH  T  îݘž¥¢¬ ² ‡ Œ Åh׫ ÁÙÇèñ̲Ý4<ƲÝIUîÝ39¥¢GMˆ� `ר Ô! {�ˆ�–�¤«²¹A­àǼÔзáÙáÍŠ²Ýó²Ý1îÝ: ÍŠFâÔé²Ý#²ÝûîÝ âÔ÷Ô´²ÝS²ÝÆîÝÏ ÷ÔÛ§®ËÍŠ·²ÝŒ²ÝæîÝï²ÝÛîÝä›éíãÉKÒ¹7ÍŠ#²ÝݲÝoîÝx²ÝdîÝm²ÝYîÝb›ékãÉæÒ¹ÒÍŠ¾²Ý@ ²Ý îݲÝÿîݲÝôîÝý›é¦ýã²Ý‘ ²ÝõîÝþ ¦ý ¦ý®²ÝÁ ²ÝÀîÝɹìÒ²Ýå ãɳ ²Ý÷ ²ÝÅ îÝÎ ãÉÚ  œ- ó­qó­ ó­Àó­´ϰ ¤ó­ϰ ö¾Öæó­e&ϰ U'¾ÖE(ó­& 1ó­Î 6ó­ª <î ŸíîÝÁ ¥¢ Ƶ  ¹ìîÝ ¥¢ ¹ìîÝ€ ¥¢, ãÉîÝ÷Ò¹îÝä›éîÝÑÏž Q ãÉîÝäÒ¹îÝÑ›éîݾϞ v §®îÝÑ›éîݾ¤é‘ ûéîÝ¥¢¢ ËéîÝ{¥¢³ ›éîÝò¥¢Ä ج Ö! ت  !'-3?¼ÔGPZ%HÙ® +: JN¼Ô[Nh    $‰‘ž#¦®»#ÃO¼ÔÔOáðP¼ÔPQ¼Ô1 Q? OR¼Ôa Ro S¼Ô‘ SŸ ¯T¼ÔÁ TÏ ßU¼Ôñ Uÿ V¼Ô!V/?W¼ÔQW_  ¨Ù²2 X¼ÔJXÕÛ ›†.Y¼Ô?KYÕÛ ›†X LJd MKr w ù±ãÉãÉLŽM“#›ÀÙ , Z¼ÔFZªÛ•ö.[¼Ô?G[ªÛ•öX HFd IGr w ù±¦ý¦ýHŽI“#›ÀÙ½$ \¼ÔB\ù•ö-]¼Ô>C]ù•öV DBb ECp uêøD�E†#ލÙú ^¼Ô4^åÚ›†¸Ùô! _¼Ô5_åÚ×�hÙÖ" `¼Ô6`åÚÇŠa¼Ô›7aåÚ›††b¼Ô—8båÚ×�‚c¼Ô“9cåÚÇ;4<7$*Ê÷;7<=:F¨Ù± d¼Ô&d®Ú›†¸Ù« e¼Ô'e®Ú×�hÙ� f¼Ô(f®ÚÇŠg¼Ô›)g®Ú›††h¼Ô—*h®Ú×�‚i¼Ô“+i®ÚÇ-&.)$*Ê÷-7.=,F PÙ¹ j¼Ôj‘ÚôíhÙÅ k¼Ôk‘ÚÇ\l¼Ôml‘ÚôíXm¼Ôi m‘Úǰ"¼#ÊÏ ù±§®§®"æ#ë!óàÙµ n¼ÔnðÙ‹Î.o¼Ô?oðÙ‹ÎXdrw ù±÷Ô÷ÔŽ“#›ˆÙÍ p¼ÔpÖÙÝÁ.q¼Ô?qÖÙÝÁXdrw ù±âÔâÔŽ“#›hÙ« r¼ÔrÁÙÇ.s¼Ô?sÁÙÇXdrw ù±ÍŠÍŠŽ“#›Ú!¼$É% ØÞí„$ë%ñ#ú #œ,~0'‹1*š  ù±Ò¹Ò¹0¸1¾/ÇÏ/±2(¾3+ÍÓí„2à3æ#ïõþ #¿:"¡>5®?8½ÃÁ†>Ð?Ö= ßç="!É@6ÖA9åëí„@øAþ# $#Ù· Ú Ù! ê ð ÷ þ     ! ( / 6 tB ¼ÔK ¼ÔT \ d k ¼Ô¼Ôy � ‰ ‘ ™ ¡ © ± ¹ Á É ÍŠÀÍŠÉ›éÒ›éÛâÔ„âÔ�Ëé–ËéŸ÷ÔH÷ÔQûéZûéc§®dÍŠ?§®vÍŠQ†”»�”»˜›és›é|ãÉÿÒ¹ÚÍŠµãÉÒ¹õÍŠÐ3Ÿí<ŸíE Ò¹*¾�3›é›éãÉÈ Ò¹£ ÍŠ~ ãÉã Ò¹¾ ÍŠ™ ü Ÿí Ÿí ç ¾�ð ¾�ù ›éÔ ›éÝ ¦ýÕ ¦ýÞ ¹ìç ¹ìð ¦ý™ ¦ý¢ ¹ì« ¹ì´ ãÉ] ãÉf Ÿío Ÿíx ¼Ôð¼Ôù¼Ô¼Ô ¼Ô¼Ô¼Ô&¼Ô/¼Ô8¼ÔA¼ÔJ¼ÔS¼Ô\¼Ôe¼Ôn¼Ôw¼Ô€¼Ô‰¼Ô’¼Ô›¼Ô¤¼Ô­¼Ô¶¼Ô¿¼ÔȼÔѼÔÚ¼Ôã¼Ôì¼Ôõ¼Ôþ¼Ô¼Ô¼Ô¼Ô"¼Ô+¼Ô4¼Ô= Gî U __self_discrÁo __arg1_discrÁ‡ó­‚__arg1_0Á–ó­Cý‘Pó­ýý‘ ó­ ϰ î ý‘) __arg1_1Á  ó­– &ϰ u '¾ÖT (ý‘½ )ì’œ *__arg1_2Á‚ +ó­7 4ϰ  5¾Öõ 6ý‘^ 7ì’= 8Á“ 9ó­ Bý‘% Có­Ò Fý‘ß Gó­Œ Jý‘™ KÊ÷­êøêø{Ê÷ï Ê÷ª ��e ­‚t ̓Û í„B í„S Á†¦ í„ Á†í„Ù èÚ´u ܧ †ܧ/7�Ú‡x …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅþ¥�þW\ †°—nvØÚêz •ö¿†) 2øÚÆ~$ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅřǙș­É™Ê™àË™óG*¤�R{9 „K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú��þ�þ�þ$* †ã˜ =G Ú‹�  PÚÌ‚  hÚšƒ ÈÚäƒ ‚ó †‚ó09ÈÚÃ… ØÚÀ½ *3(Úºs Ú!   Ú¿s Ú¾s  $ så!‚�©Ž �©™ܧ¹«ªÂ°—� °—›•ö)¦ý2㘠ã˜ËóŠÔ¸÷ýÁ¦÷ý¯‚ó– ‚ó¢ØÚm–Á vHS „—vÿ—A¿†Í€›�ó‹WÈì ;Èì  §œÀ½ Îã˜^•öe°—l(ÛÁs  ç!ÅõèÛ´u ܧîÝ�Û‡x  °—  îÝØÛêz  •ö  îÝøÛÆ~$ 㘠îÝ Û‹� îÝPÛÌ‚ îÝhÛšƒ îÝÈÛäƒ ‚óîÝÈÛÃ… ØÚ#î݇ îÝ    °½�úÏØ²Ýå¼úùÿÓú (ÛÆs ç!CIP­à^Œžg·ápÅõy�ú‚åü‹çü”îÝ‚«ª‹îÝm²žvîÝX¦ýaîÝCÙžLîÝ-óŠ6îÝ÷ý!îÝ÷ý îÝðŸŸùîÝÚêÔã–Á ì²ÝH¼úQ[œiƒ w‘ƒŒ «ªîݲžîÝb¦ýîÝEÙžîÝ(óŠîÝ ÷ýîÝí÷ýîÝÑŸŸîݵêÔîÝ—Óúñ»Ä1²ÝѸÁÍ ²Ý϶¿Î²Ýͳ ¼Ï ²ÝÊ ± ºÐ²ÝÈ  ° ¹b²ÝÆ  ®·Ñ ²ÝÅ«´ ²ÝÁ" ²Ý À ²Ý  Udç!uÅõ‚Çõ‹²ÝR²Ý[²Ý=²ÝF²Ý(²Ý1²Ý²Ý²Ýý²Ý²Ýé²Ýò²ÝÕ²Ý޲ݿ²ÝÈ#èÜ´u   ÷ܧ�܇x   ÷°—ØÜêz   ÷•ö øÜÆ~$   ÷㘠  Ü‹�   ÷ PÜÌ‚   ÷ hÜšƒ  ¯® ÈÜäƒ   ÷‚ó  ÈÜÃ…  ­Ó   8ÜÈs Ú!  ÜÏs ÜÎs   $ sé!‚ �©Žܧß°—Õö§ã˜ŠkL.‚óØÚøà ñ¬3–­»­÷â­Ø‰®¸¯®™¯®{õ®a­Ó Aã˜ê•öð°—ö�ñ� ߨ²Ù)1¨ñ¥ ߨ²Ù)1øñÀ% “Ú¬Û*2 ñë ߨ²Ù )1øñ…% ˜¿í¿ * 2øñ°! řǙș­É™Ê™àË™óG*¤�R{9 ‚ó^c †�´ u }(ñÝ ê!  ñâ ò!<±ªH ±ªSߨí³ÜöߨɳÜÒ“Ú¥ÚÜ®ߨ€³Ü‰˜¿\™Çe�´7 �´CËÕ²Ùq²ÙB¬Û²Ùãí¿´ä´„(òä  ô!Ë­�ò� ߨîݨò¥  ߨ  îÝøòÀ%  “Ú  îÝ òë ߨ îÝøò…% ˜¿îÝøò°! �´#îÝ îÝ   4A�úS\²Ýi¼ú}ƒÓú‘—�£¬òé ô!ÇÍÔ­àâʵë·áôË­ý�úÞ±à±îݳÜîÝñ³ÜúîÝÜÚÜåîÝÆ³ÜÏîݱ™ÇºîÝ› ¸¶§¸¶°²Ý™¼ú¢¬œºƒ È‘ÔݳÜîÝгÜîݳÚÜîÝ–³ÜîÝx™ÇîÝ[Œ¼îÝ=Óú$ î÷b²Ýëô†²ÝèñÒ²Ýÿæ ï…²Ýý ã ìÑ ²Ýú  è ²ÝÛÐ²Ý !ô!2 Ë­?Í­H²Ý²Ý²Ýú²Ý²Ýä²Ýí²ÝÏ²ÝØ²Ý¹²Ýª�ó�  Žä¨ó¥  ŽäøóÀ%  Ñä óë  Žäøó…%  šàøó°!   ÷�´8óë ê!óò ö!<±ªHߨߨû“Úäߨ̘¿µ�´�€ŽäKŽä3ÑäŽäšàêñÁÐ(ô‚¡ ô‡¡ €"(¼«4 ¼«?HR(ö�¡ '.6G²Ýö“¡ QYÓ²Ý$pxÔ²ÝC‘–Ƶ £¨°ö”¡ ƒ"Ë­à×õÃß·áç²Ýïöÿœ Ƶ " ¨ø¼Û ññææò™Oðó¤Oð]ö�œgè(PU †߯gopøûÛ ±ª †±ª08ÈøŒÝ ð0ð0Íò0ìŠñ.ó0�ñ.žFår­ä�©TY †�Èksðø‚ß ð0ð0Íò0ìŠñ.ó0�ñ.žFår­äí®TY †ˆÉ k tðøñß ð0ð0Íò0ìŠñ.ó0�ñ.žFår­ä¢ÊTY †�Ê k tøø“á# ð0ð0Íò0ìŠñ.ó0�ñ.žFår­äθUZ †ûÊ l u(ø¸Ú „"  ø½Ú ø¼Ú   % mŒ"|·¬ˆËç�߯- ߯9±ªÎʵ×�È£ �ȯˆÉ@ ˆÉL�ÊÜ �ÊèûÊx ûÊ„ ¦Ç¿ãÇRÛÈÓÉ«ÌÊ9ÆËÇ�ʈÉ#�È*(ù¿Ú  Ž"Ë­¨ù¼Û ߯îÝpùûÛ  ±ª  îÝÈùŒÝ  �È  îÝðù‚ß ˆÉ îÝðùñß �ÊîÝøù“á# ûÊ$îÝ îÝ   9F�úXaÕ²Ýo¼úƒ‰Óú—�£©²ùÄÚ Ž"ÎÔÛ­àéËçò·áûË­�ú Þ±à±îÝ þÌîÝöʵÿîÝà¥ÍéîÝʺÍÓîÝ´ÏͽîÝž äͪäͳ²Ý ¼ú©³œÁƒ Ï‘ÛäþÌîÝÖʵîݸ¥ÍîÝšºÍîÝ|ÏÍîÝ^ÖÓîÝ@Óú+ óü²Ý ïøÖ²Ýìõ× ²Ýé òØ ²Ý æ ïÙ ²Ýý  ï ²ÝáÚ²Ý (Ž"9 Ë­FÍ­O²Ý²Ý²Ýþ²Ý²Ýè²Ýñ²ÝÒ²Ý۲ݼ²Ýű¹ú¾ ©ú¾ ƒô@Ó™÷   ‘P§òD™÷ (-øÓ�÷† JY^ ÆQÕöpy~ŠðØ ”÷  àµù$°÷  \Ë÷ ߯üË÷( ,ì÷  ø1<ì÷ ,¸ù ”‡"+[T�ø 4‘ø îú �ø  D‘ø üË÷O ,‰ø  † ±L Œ‰ø üË÷€ <°ø  Ç_‰ôÐÆ ×° ý _”¸ø ‰Ü  ܰø øÔË÷�   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‰ô×° ¿  z ‹ üË÷�  m‰ôü°÷« $µ÷ óŒ < üµ÷¦ ÕËø  [À“# �%¡óÀ“9- Ûø üŸù œ¤ù  « ‰ô$Ÿù jÔ¤ù  Ãù Äù Š=üýõÇ ¨ üñöÓ ÆÍ&-4Š¡ó¼Ïö Ëç,§ö §òD¶ö ÅõDõö Õö^ÕögřǙș­É™Ê™àË™óG*¤�R{9 µùµ ÕöÁ޵ù,#¨œ#ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“‰ô?ÊÜ–ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‰ôÐÆ $ úúñ“û™Oðü¤Oð «×YáÄþÞãþÌ'²Ý¯À“(‰ô€½œÊœù¨ ý”œ�`¦Æ Æ �Žê°ƒô¾ÄØŸ˜Ù¦­ÚÆ”‡¢îújÄÛD÷ÛÄÜÒóŒ ÆÞàÞã²Þ㹜ß�ÅõjÅõqÞãÕÅõœ ’ <¥’  ° �¦$ ’ ,­’ t¥’ ¹’ « ü¥‘” ¡ó¼þ‘ Ëç,Ù‘ �·,è‘ exprsÁOâæ¥W\ý¡ ôý¡ „‹¢ …* \Ó¢ üµ¢* ìµ¢  € +"ü±¢/ Àœ�»×°ðØM\÷¢ ±ªÌ÷¢ \ƒ£  — 0lƒ£ + \ £ ±ªü £ ”¬£  ›  1 ¤¬£ *  ü £) 4Á£  ¤  R DÁ£ ,  üë£" üë£  „  üç£' Àœ�»×° ðØMd£¤ �ÈÌ£¤ T°¤  Š1�©4 d°¤ -ü£¤!   ê"ý1ý1RefMutÁ€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòür�©¦ Usz,½¤  Ë Ì U<½¤  Ĥ dΤ �ÈÌΤ TÛ¤ ùë.dÛ¤ 'üΤ:  ³ìKT\ñ¤ ±ª´ñ¤ Dý¤  – 0TTý¤ fDè¤  ß ²GTüè¤  ˆ¥ d’¥ �ÈÌ’¥ TŸ¥ ùë.dŸ¥ 'ü’¥@  ³ìKS\¸¥ ±ª̸¥ \Ä¥ Ìé .SlÄ¥ d\¬¥  á °ESü¬¥&  Ò¥ dÜ¥ %�ÈüÜ¥& Tö¥ ùë%/$dö¥ (#$üÜ¥d  ³ì#L"R\¡¦ '±ªô¡¦ „­¦  œ '0&R”­¦ f„�¦  ã "³&G!Rü�¦0  À¦ $dʦ -�Èüʦ& Tä¦ ùë-/,dä¦ (+,üʦd  ³ì+L*Q\�§ /±ªü�§ ”™§  ˜ /1. Q¤™§ gtþ¦  å *´.H)!Qüþ¦0 øÖʦe   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw×°)("Qy~0(Š0$%#ðØ ¯§ ,'×®§ 1([À“Õ"ÆÞ1.&QïN,Mdü© $‚ª Ц,ü© 4(4‚ª *34ü�ª’ 5 ² �¦¬§UÿËçüü©¤ ‰ª  ÅRƦ² �¦æ÷ð÷3š5h2)ü‰ª— \º¬ 8±ªüº¬# ¬Æ¬  � 817*¼Æ¬ ,7,+dᬠ62ü¹¬4 - 6!-D’­ :6:3.t©­ <®­  Ð $©­ </L®­ xØ©­   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸­×°<�;0w|=;ˆ=12#|©­ ?;m¸­ 9?ü�­‰ :Ù·­ >;[À“ê "ÆÞ>.MŒð­ D žÜç­ Dç­  µD/C4!äæ­ BCüÖ­7 TÛ­  à $Ö­ B3,„®   ‹® A5PüÛ­2 øÚÖ­8  ²úAo@6P %E@1E78#üÖ­8 G@m¸­9G —® C:Û�® F@[À“— "ÆÞF.9P±NCMd® $È® Ц,® K;4È® üÓ®Ó L ³ �¦¬§¸úUÿð÷ü®å Ï®  ãQƦ¸ú³ �¦Ûÿð÷K‘LlJ<ü쨯 ü²®ö T·®  ¾ ÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþƦ‘€$²® JºI=ü·®ñ øÜ²®÷  ²úI•H> %MH1M?@#ü²®÷ OHm¸­¬¾± R9ÇtÕ± SOÇü³±1 ,¸±  Ò $³± RLS=QAü¸±, ݨ± NH[À“Ü"ÆÞN.Mõøè³±2  ¡õQŒPB$TP0TCD#Ìù± \�Èüù±3 T ² ùë\/[Ed ² éä± UP[À“�"ÆÞU.M¶cZ[üù±o   Þ"¹ìZŒYFO$tÀ² ]OǼв ^9ÇS,º²  Ì YÚ]E^6XGOüº². øêù±p  â‘XžWHO %_W1_IJ#üù±p aWm�»Va é² [LNëè² `W[À“˜"ÆÞ`.KO²O[Mų bV<³  Àœ�»×°bϳ M  γ VV¶[VCV ,VÀ $VÄ VÅ VÈ Vü¦¡© ° q x  üʦe ü驿 üª¬¥ ü÷¬Ø  S ËÒ Ùü£®¬ ¿ÆÍQ%,ü³±2 üï±à ý Kc¡ó¼Ø¡ Ëç,Á¡ �·,È¡ ´Ë×°…ž)ʵI°õÃñ¼«úʵ×°—ü �© ¹ìP¹ìY¥Íy.¦Œ7²Œv¹ì¥ÍŸʵ?x¦Œ�²ŒÀ¹ìÉ¥Íéiʵ‰à ¦ŒÌ ²Œ ¹ì¥Í5‚ó¶ ʵÖ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“É §õh ¦Œq ²Œ± ¹ìº ¥ÍÚ ØÚ[ ʵ{ X À“a dí©  Ʀ) Ʀ2 ˜ø D®¬ ƒ ʵ£ ¸­Œû¬ ) ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“¸­3 ¸új w À“€ ¸­½ ��± ¸ú •§, ‰ô[ žŸ AnyCharÁ¡¢AnyByteÁ£¤ AnyCharExceptÁ¥ó¦§AnyCharExceptLFÁ¨©AnyCharExceptCRLFÁª« AnyByteExceptÁ¬ó­®AnyByteExceptLFÁ¯°AnyByteExceptCRLFÁ±üøj6Úú[† o À“x ¸­¹ �� ¸úœ Ú€ö ƦX ‘€7 ƒÀ“Œ¸­ †Ža§õßÇ Ç À“ �»ó± é–Q¡óáŒžê ¹ìg¹ìp¥Í�ÇèÇÝ À“)�»k�»ðÜæÆ Ÿ1Ž%ðØ all_anchoredÁb2ã÷H6unanchored_prefixÁJ9Æ Y >Ž™ ?Æ  FŽZ G—áD§® OÆ  NŽ“ OÆ e UŽ>ðØß'nVÆ E`ŽŠa?Å…*E ³w�¦ûô—ÄâèºÌéVžê ÖêÛ”ë¥ùëE³ì¬í¹ì{ùë[³ì,ïîù˜ï:¹ì¬ù댳ì]Ìé*ˆñk¹ìßù뿳ì�Òò\ûò�¹ìùëï³ì¿ÆôŒïôÍ¡õ>¹ì�ÆÞL¹ì«ЦUŽøöïø›…ú ²úäÆÞëÒüÓŠý£²úR‰ôï ÆÞ`‰ôý Ц§ ƒ€U Ô€ ²ú• ׂ ÆÞ£ ¡õ® ùë] ÆÞ¼ ’…ú ä… â‘� ¹ì ÆÞ� ¹ì, �»� ¹ì: ‰ô{¹ì„¹ì'¹ì!¹ì¹ì T«ª 4­ª ƒ¾ «ª D­ª ¼«ª T¶ª  ¥Ed¶ª \Óª  Ëç ±ªÌÓª \ߪ Ìé@lߪ )¼ÿª |…« Óç ,ÿª Œ…« t «  Áüÿª0 D—« ââ X3Ä—« ¼Õ« |Û« ¢â ,Õ« ŒÛ« „ö«  ÁüÕ«2 Dí« ââ  X 3Ôí« Ÿ¬ ² ÂüŸª€  �ª  ˜øæ®§ Žª ñÇ ,£ª •§ëtʵ¦µã Lîã +µã ïîã ÍËç@›\$¡ Ëçµ^rtƒ¾e£œ@ÌéõÓç Âââ ‰¢â aââ (Üí$í® !Ëç¤í® lò®  Ó !0|ò® ¨Þí®   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw›†×°šw|ˆðØ¬í® m›†$š¯ "Ëç$¨¯  Å™²ÝT®¯ 4°¯ ƒ¾ ®¯ D°¯ ß�¯ [À“4# �%¸úÀ“9Xüš¯ ,Ÿ¯  À "½ ¥¯  À ª ÔŸ¯ øàš¯  ²ú `$ 0  üš¯ m¸­$ݯ #Ëç„ݯ L⯠ Þ #0 \⯠ṯ  [À“¸"‡¤ .шâݯ   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇ×°Õ w|ˆ ŒÝ¯ mÇ$ü¯ $Ëç<‡° Çüü¯# ,�° ׂ$C3t�° ô�° ãí¯ [À“/ #‡¤/Iøäü¯$  ¡õ‹$ 0 $¶° %ËçLʰ Çô¶° t»°  Ô %D4Ì»° 埰 [À“·"‡¤.Ðøæ¶°  ס‚$ 0 ü¶° m›†Lû°  Çüæ°5  �" üã°9  Àœ¸­×°¦± çÔ° [À“Õ"‡¤.îH³ ³üå®Á §®µ/ü�¯– ¡¨¯ üȯÞ y€ ‡¼ ÃÊ üü¯$ ü®°x  ð öü y&¸úÖ®  ‘€…®§ Ô® ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“›†äÝ¡ÞÀ“盆c��g¸ú¹Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ²Ý••§ƒ4À“=¸­ ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^À“ÇcÞ¦ÒbÀ“kÇ톎>§õ»ÇÚ¾À“Ç ×®“Ý¡Ç&õÀ“þ ›†~ ¸­YÇvËç‰Ëç’Ëç›Ëç¤Ëç­›*c ËçÆ »Ž:oneÁ”¯ Æ · Ž match_state_idÁt̯ Æ œ Ž!Æ ÛŽðØÆ Žˆ�­¡± ס� ƒ¾§‡¤› ¹¤B²ú󥕇¤ئ=ׂg‡¤K¡õ–ªœ‡¤ס?‡¤FÜíJ,ÓÒ G GáÒ LáÒ $äÒ  ÆQ‰Œ/=4äÒ .|ÛÒ ðØ4¨Ó à¸ú8õ³Ó  ²ú4³Ó ="lˆÓ 4�Ó  Ñ $ˆÓ >=D�Ó Vb<³Ó  m¸­âÓ  LâÓ $åÓ ’¶ ) =4åÓ ö¹Ó  [À“ã"‡¤ .?=ýd  |ÜÓ   4¥Ô  à¸ú8÷°Ô  ²ú4°Ô  ="L‰Ô  Àœ¸­×° „‚Ô 7T` <°Ô m¸­„ÙÔ LÞÔ  Ù $ÙÔ =\ÞÔ ø¶Ô [À“Ö "‡¤.@=ðˆùÙÔ  ئ�=$0ŒÙÔ mÇ„þÔ LƒÕ  Õ $þÔ =\ƒÕ úéÔ [À“¦"‡¤.A=ÀˆûþÔ  ئ�=$ 0 ŒþÔ mÇ\«Õ  Çô™Õ ,žÕ ׂ$™Õ ,¤Õ ==ÌžÕ üŽÕ [À“Å"‡¤.B=ßøý™Õ  ¡õ�= % 1 LÍÕ $ ÇÔÂÕ ,ÇÕ ׂ$ÂÕ $5ØÕ #=¬ÇÕ þ·Õ ![À“­"‡¤!.C=ÇØÿÂÕ  ¡õ#Œ"=$%"0%dùÕ )ÇüçÕ ,ìÕ ׂ$çÕ ,òÕ )>(=ÔìÕ €ÜÕ &"[À“­"‡¤&.D=Çø�çÕ  ¡õ(Ž'= %*'1* !TœÖ .ÇÜ‘Ö ,–Ö ׂ$‘Ö .5¨Ö -"=´–Ö ‚†Ö +'[À“­ "‡¤+.E=Çàƒ‘Ö  ¡õ-Œ,#=$/,0/$%ÅÖ G 2…ÅÖ   ‘P‰Œ2@1&=%„¬Ö 0,[À“¬$"‡¤0.F=Æf31ø…·Öœ ''ƒ'53’'—’¶5£4(9¬±'64½'6*)4»Ö '74à¸ú8†åÖ ( ²ú74åÖ 8+9"…Ò× 35=<(98H(9,-<åÖ (;8m¸­tŒ× )>;ÇüúÖ! ),ÿÖ ׂ$úÖ ,…× >>=.9äÿÖ ‡ëÖ (:8[À“Þ+"‡¤:.G9øøˆúÖ" ) ¡õ=Ž</9 %)?<1)?01dµ× )C;Çìª× ),¯× ׂ$ª× C5Ã× B29į× ‰›× )@<[À“­/"‡¤@.H9ÇðŠª× ) ¡õBŒA39$)DA0)D'4‹Ç× )EA[À“^3"‡¤E.I9xüß×! F �"üÜ×%  Àœ¸­×°F †Ø 8l37=G8;‡Ø š3=ü´ÑÓ Z8i:yG:<„ 7¸ 7… 7™7Ý77?7| 7¹$7u+6�/6¾36¾ 6ÈüÏÒ¸ ¼£Ó Š ‘ ˜ ò üÏÓ¸ ¼ Ô ‰ �  — æ  üÍÔº éð÷F üôÔ“  * 18 ¦x†ü™Õ ÉÐ×ÜÂÕ  'üçÕ !kr#yä‘Ö %?F'üÖÖ} ( ('*.(�,n)u.|)üúÖ" 0)2)ôª× 4H¸úüÚÑ Ëç,ÅÑ ‰Œ4ÌÑ Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ¸ú¸  ‰ŒÖ $ùÒ ¸ú~ ��k ­ À“¶ ¸­ ñÐð ¿Ñ $úÓ ¸úˆ ��u Ä À“Í ¸­ ×°¡ Þ¦ ) À“2 ǃ ×° Þ¦z o À“x Çè †ŽL §õË Çê Ö À“ß †Žª §õ) ÇH 4 À“= †Ž §õˆ ǧ ’À“›†Žf§õåÇ ñÀ“ú‰Œ-‰ŒZ‰Œ?ñÐH¿ÑQå¸ú”'���ÈÀ“Ñ(¸­B(†Ž¥§õ%ÇD/À“8)†Ž§õ‚Ç¡ÜÀ“å)¸­²{!ÀÛËÄfirstÁz Ç òÆ  Ž{ secondÁ4ÓÓ Ç ìÆ # Žw C,ÑÔ Æ � ŽÕ ’øÔ Æ Á Ž4 Æ  !ŽŠðØÆ \ &ŽŠðØÆ ­ +Ž‹!ðØÆ ÿ #0Ž‹%ðØ�H '3Ç † (7—áDÚÖ );Æ Ä*:Ž8 ,;Æ .@Ž—0ðØÆ ®2EŽ—4ðØ(’¶ó²ú…°·c’¶õ‡¤š²úcѺÞ‡¤qئ�˜¼,‡¤�ئÏׂf‡¤Ý¡õþ ׂ­ ‡¤ ¡õE ׂõ ‡¤S ¡õŒ ׂ; ‡¤š ¡õÓ ·Äu ‡¤á ’¶ƒ ²ú  ‰Œ~ ׂ& ‡¤µ ¡õ½ ׂl ‡¤Ë ¡õ ‡¤ ‰Œ¶ ‰Œ½ ‰Œe‰Œl(…Ž” …“” ”"(-¸­: ¸­ENX(‡›”  Û ²ÝȇÇ”  >²ÝÇ+îݸ‡æ”  Ü²Ý Ç,  8 îÝ¡¦¤é³¸£¨qvÔ‡ ” —"ï ­àûÐÜ·á ²Ý²ÝîÝ ÍŠ²ÝãîÝë›éóÍŠûZœhsÍŠîÝg›éîÝ5¤é’ (ˆ¶ž  Ý ²ÝÀˆÜž  ֲݦŒ,îÝÀˆúž  F²Ý  í®. îÝxˆ˜Ÿ  Þ²Ý Ç,  8  îÝáæÏž óøãè°µ { €ˆ»ž Ÿ":­àG ˜"˜"½àš"Öé ›"ƒé œ"´é Q¤iC…›˜·á¡²Ýª²Ý™îÝ¢ ¦Œ®²Ýzî݃ •á�²ÝYîÝb›ékÍŠtœ"-ØãîÝ!öãîÝî›éîݹϞ VÀ‰ÛŸ �· †�·08ȉùŸ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹Úàż¯�þX] †Éåox(‰µŸ  "‰ºŸ ‰¹Ÿ A¤"Pí®\ í®g�·) �·5Éå Éå š¤œåh˜æ2�·�(мŸ  ß ²ÝÀŠÛŸ  à²Ý�·,îÝÈŠùŸ  á ²Ý Éå,  8 îÝ¢§¤é´¹¤©qvÕŠÁŸ ¦"ð ­àü“ç·á ²Ý²Ýîݧç²ÝãîÝë ¼çö¼çþ^œlw§çîÝkÀêîÝ8¤é–°‹Å  ‹ÎÚÎ*2ø‹á  řǙș­É™Ê™àË™óG*¤�R{9 а_d †çëv(‹   §"‹¥  ‹¤  A«"P¼¯\ ¼¯g‹Î*÷Ô3çë çë—¡ÚÎf¼ì6‹Î�(Œ§   â²Ý°ŒÅ   :²Ý‹Î+îÝøŒá  z²Ý çë,  8 îÝ¡¦¤é³¸£¨qvÔŒ¬  ­"ï ­àû·í·á ²Ý²ÝîÝ ÷Ô²ÝãîÝë ÝíöÝíþ]œkv÷ÔîÝjàðîÝ8¤é•H�¾¡ 8�Í¡ (��¡ ®"�”¡ ²"2а> аI–¡ž ž‚¡ž ŠpzŒŸ ÊŒŸ ­(Ž–¡  ã²ÝH޾¡  >²Ý*îÝ8ŽÍ¡  Ü²Ý +  7 îÝŸ¤¤é±¶¡¦puÒŽ›¡ ´"í ­àùÄò·á ²Ý²ÝîÝ ¡ž ²ÝâîÝ꾤 ò¡ž úXœfq¡ž îÝe¾¤ îÝ4¤é� ›†"˜± †˜±/7(›Û" µ"›à"¸"-×°9Ù­A˜±… ˜±�]gÕö­(œâ"  ²Ý œ†" ²Ý˜±*6îÝaf¥¢sxejŠœç"º"¤­à°Ù­¸·áÀ²ÝȲݸîÝÀ ¼÷˼÷Óôœ ÇùîÝ¥¢!(�÷" 07 »"J P�ë"—ä{ »"�û" `�Ã"÷¯Æ »"K `�Â" •¯`�‡"•¯8 )6 »"¿ `�›" ·¯`�â" ·¯8 ) ª »"  3 ð�¿"ü®Ïó$©«0 8À�Ú "œã¶ß$ †¶ß6 >˜�� "»ÀÐÆ $ØÇ 0 8Š »" ª »"0 Ê »"ðØÏóX �ü"Ò" ")07˜±E¼÷NV†É ÐÆ  ¶ßj¶ßsî­¹ÏóÂóŠ@óŠ-Q=óŠÖóŠÃçÓóŠ?G‡« ›£ ÿó­Áó­ó­[ó­Ý ϰ Î ó­k ϰ \ó­Ìó­$ †=ó‹ùó‹¹ó‹L©«ÞËþ¨ØÇ ló‹Ló‹Ç (žþ" 07*?ä²ÝNSƵ `*e mPžë"%—äŽ&–å²Ý1'9æ²ÝF)%R()îÝ×Ü¥¢é&î'�(† `žÃ" ÷¯"!+²Ý2":²ÝF$ R#$îÝkq¥¢!…"…#Š ˜`žÂ"•¯`ž‡"•¯Öß" ²ÝNVW²ÝbîÝW_²ÝkwîÝDJ¤éX^ÆË´¹ {`ž›"·¯`žâ"·¯¹Â!²ÝNVW²ÝbîÝW_²ÝkwîÝ'-¤é;AÆË´¹ ^ðž¿" ü®Ïó� Š#²Ý3 ?îݶ¼¬·Ê Ðr ÞÀžÚ "œã¶ß  ç²Ý4 @  îÝ7=¬·K Q s _˜ž� "»ÀÐÆ ‚‹f²Ý3?îÝ·½¬·ËÑr ßžƒ"Ô"ú#*+­à8¼÷A·áJR†É ö²ÝcîݧΠ…�š²Ý‡îݬ …�¸î­A²Ý®îÝS‡º\óŠHóŠ5²ÝÛ²ÝcîÝl²ÝYîÝbŒ‘kóŠsóŠ`²Ý#²ÝŽîÝ—²Ý„îÝ�Œ‘–óŠS²Ýb²ÝeîÝnŒ‘w‡« ²Ý�²Ý&îÝ/…« 8²Ý³ ½œËó­uó­ó­� ó­€ϰ qó­}ϰ nó­/ ó­Ð%KƵ V…« îÝgŒ‘îÝk¥¢xóŠîÝ䌑îÝÒ¤é“óŠîÝŒ‘îÝ ¤é®‡ºîÝT¬·¿€�îÝ嬷ЧΠîÝu¬·á�¯›$ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅï´�þW\ †ê“nvH¯¡% (¯ñ! Õ"¯ö! Ù"0¿³< ¿³Gê“ë ê“ö�÷ý‰q{¹”!Èì ­ê“¯õ! (ºýj  è²ÝغÔk  é²Ýê"ê"¡æì"þÙ‰ í"ò›‰ î"Òæ‰  4b;ÍýB2sîÝøºÐm.  Ê ²Ý �p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ«¶w îݘºøp  ê²Ý •ö+  îÝøºÔr!  ë²Ý‹Î,8îݬ²Æß ÀƳ¹;A ¿ Ä �’ûº‚k â"­à# Ú"Ú"‡ØÜ"ò›‰ Ý"þÙ‰ Þ"C‰ ß"° ‰ é�Ÿ‘hŒÑ �·áŠ²Ý“²ÝƒîÝŒ Õ–˜²ÝîÝ& Ú—2²Ý³îݼ¦ýŲݒîÝ›ûé¤÷Ô­œ&1¿›îÝ&Ý›îݬ¦ýîÝ.ûéîÝüÆßdà½Öƒ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ«¶�þX] †˜�owؽøƒ …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ�þ[` †”žr{(½²ƒ ã"½·ƒ ½¶ƒ Aç"Pï´\ ï´g˜�k ˜�w”ž ”žš¤ç�ªæž5˜��à¾Öƒ   ÷˜�ؾøƒ   ÷”ž 8¾¹ƒ ã"¾Àƒ ¾¿ƒ Aé"Pï´\˜�¯”ž‘sÙ Èÿ ¨˜�] (Ǭš  ì²ÝèÇÕš  Ê ²Ý  «¶0îÝøÇøš- é²Ý �p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÏžx îÝøÇ«› í²Ý řǙș­É™Ê™àË™óG*¤�R{9 ë¢r  ~  îÝu{Ïž ‰�{�FL É ÎºÇ±š ñ"Ö­àã¿›ì·áõ²Ýþ²ÝíîÝö 뢲ÝÊîÝÓ ­£ß²Ý_îÝh  ¶¤wü¦€nœ|‡¾¦îÝ{ܦîÝDú¦îÝÅÏž °(Èÿž È„Ÿ ÷"(-3«¶@ «¶KT^³ 1099511628211Á%#"„äœòË14695981039346656037Á`Ì£##xÌí##ÐÌ€%#…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅé·�þW\ †ï©nv(Ìû# ù"Ì€ #þ"3�·?§çG  þóŠï©í ï©ø†� †^ó‹C¾ª( (Í‚ # î²Ý`Í£## ï²Ý*îÝxÍí## ð²Ý * îÝÐÍ€%#  &²Ý ï©*  6  îÝØÝÏž êïÛય y ~͇ #€#0­à=§çF·áO²ÝX²ÝHîÝQ««Z²Ý(îÝ1óŠ:²ÝîÝ ΫΫ&¿œÍØ««îÝÍóŠîÝœ¶¯îÝkÏž `ÎÆ'# Î¨(#‹ÎÚÎ)1`Τ)#Çü†)2(ÎÂ%# �#ÎÇ%#ÎÆ%#A†#Pé·\ é·gý««‹Îì÷ÔôÇÆÍŠÎ ªï«CÚÎ(ü†ù‹Î› (ÏÉ%# ñ²Ý`ÏÆ'# ï²Ý*îݠϨ(# ò²Ý ‹Î+ îÝ`Ϥ)#  ó²Ý Ç+  7  îÝÚßÏž ìñÝ⬱ z ÏÎ%#ˆ#2­à?�²H·áQ²ÝZ²ÝJîÝS««\²Ý*îÝ3÷Ô<²Ý îÝ›éÍŠ$¾œÌ׫«îÝÌ÷ÔîÝ››éîÝiÏž `ÐÆ'#  ÷ Ð¨(#  ÷‹Î`Ф)#  ÷Ç8ÐÐ%# �#Ð×%#ÐÖ%#AŠ#Pé·\ЋδǗzœ·ñÀ·Óå·´‹Îi`ÖÖB#xÖ C#ÈÖ³D#…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàŪº�þW\ †ò¹nv(ÖÇ@# ‹#ÖÌ@#�#3θ? θJ««ÿóŠò¹î ò¹ù‡‘ï«Zó‹?Áº$ (×Î@# ô ²Ý`×ÖB# ï²Ý*îÝx× C# ð²Ý * îÝÈ׳D#  &²Ý ò¹*  6  îÝØÝÏž êïÛય y ~×Ó@#’#0­à=ž»F·áO²ÝX²ÝHîÝQ««Z²Ý(îÝ1óŠ:²ÝîÝ Ò»Ò»&¿œÍØ««îÝÍóŠîÝœµ¿îÝkÏž ˆØ­F#Çü†)1hØÄF#XØ×F#(ØçE# “#ØìE#˜#3¨¹? ¨¹JÇÌÍŠÔ¥¡ž ­’¡ž š�‹ü†ŒŸ àŒŸ Ä (ÙîE# õ ²ÝˆÙ­F# ö²ÝÇ+îÝhÙÄF# >²Ý ) îÝXÙ×F#  Ü²Ý *  6  îÝØÝÏž êïÛà©® y ~ÙóE#š#0­à=ÚÁF·áO²ÝX²ÝHîÝQÍŠZ²Ý'îÝ0¡ž 9²Ýîݾ¤ ¡ž #¼œÊÕÍŠîÝÊ¡ž îݘ¾¤ îÝhÏž þˆÚ­F# å·hÚÄF#  ÷XÚ×F# ýÆ8ÚõE# “#ÚüE#œ#3¨¹?ǧ�r\å·ÆýÆ­ýÆ�Û€F#ž#ÛþE# ÚÁ#,6hÜÄF#&7XÜ×F#&7ˆÜ­F# Ç Ç*/ ù±ÇÇ F KSX`mÜ‹F#¡#HÜ‚F# ÚÁÚÁ:BJ ÍŠÞÍŠæeî r|ÇÊ`Ý�I#�ÝæI#¨¹ †¨¹/7`ݽJ#Çü†)1(ÝŠG# ¢#Ý�G#§#3ªº? ªºJå««í¨¹ÓÚÁÛǧ͊¯‚Œï«*óÌü†Ú (Þ‘G# ÷²Ý`Þ�I# ï²Ý*îÝ�ÞæI# ò²Ý ¨¹+ îÝ`Þ½J#  ó²Ý Ç+  7  îÝÚßÏž ìñÝ⬱ z Þ–G#©#2­à?†ÎH·áQ²ÝZ²ÝJîÝS««\²Ý*îÝ3ÚÁ<²Ý îÝ›éÍŠ$¾œÌ׫«îÝÌÚÁîÝ››éîÝiÏž `ß�I# œ·�ßæI#  ÷¨¹`ß½J# å·8ߘG# ¢#ߟG#«#3ªº?§¨¹�Çs]œ·È­Ó¯å·�³ 1099511628211Á%#"„äœòË14695981039346656037ÁPå¥D„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�Ô»�þbg †¸Õy�(å›> ¬#å >°#-�»9�ùA¸ÕÏ ¸ÕÚ]g’Ö÷|ÔQlÔQ ú üÔQ$TäQÔëCDïQ¤äQ ýQþQü€Q~õ ¡ó¼²Q§òDŸQË纷¬Â¨ O¸×áÔ뺷¬‘·¬—4ì†¸Õ¤ì† Þ"¸Õ1"'•öÔì†�‡þŸR,�‡Œ‡ü ü¿†M,܆�ù,Ò†¦ý› Ô»¦ùÖÅ'KÌÙËþŸ–4Â�¸Õ¬Â�ÌÙ+!ÇÝ�ý ü��MÇ<°��ù,¦�ÞÚmùÖŒAÌÙ’4à–¸Õ¼à–ÌÙ+!Çý–þ ü¬–QÇ<Ζ�ù,Ä–ÞÚmùÖŒAÌÙ’4¾¥¸Õ¤¾¥ÌÙ+!•öü¾¥(  Þ"•öP#×¥ t×¥DÛ¥Á½ (TÛ¥bÓ¥ ÕwÇ´KœÓ¥ü¾¥14ç¥ ÃXǶDç¥õ¥ÿ üõ¤€ řǙș­É™Ê™àË™óG*¤�R{9 Ç|¤¥�ù,Š¥›†‘¥Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ÍŠ–  Ç£¦ýáÞÚêùÖ �ãɧž¾¾¡ÌÙ1ÝÞÁ½Ñ¾ßöß‚4´·¸Õœ´·ÌÙ+¤³·ªÓÍ·�üþ¶O³þdœ·�ù,’·ÞÚpùÖ�AÌÙ•lò¿4÷¿¤$ò¿D÷¿$ÿ¿ ‘ýЧÇK€À/‰À‚ü¼¿M Ƚ4à¿�ù,É¿Çпˆ§¨ˆC!T¤Òåä¬4¢Ç¸Õl¢ÇÌÙ+t¡Ç…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅȽ�þV[ Þ"ØæmuµÇƒüöÆ?ˆ§DŽÇ�ù,„Ç Øæ·ÞÚàùÖÿ'LÌÙ§çë4øÒ¸ÕœøÒÌÙ+#TÿÒ “PdÿÒ¤÷Ò‘Ó„üÆÒKã“TâÒ�ù,ØÒøÊVã“§ÞÚ¯ùÖÎ,QÌÙÔ„éÚ4Øá¸Õ”ØáÌÙ+!ðá…ü¬áD$Éá�ù,¿áÞÚiùÖˆ?ÌÙŽ4Öþ¸Õ„ÖþÌÙ+!ìþ†ü¬þ@$Çþ�ù,½þÞÚiùÖˆ?ÌÙŽ4¿‘¸Õ\¿‘ÌÙ+! Б‡ü—‘9$°‘�ù,¦‘ÞÚiùÖˆ?ÌÙŽ4ºœ¸ÕtºœÌÙ+! Μˆü�œ?$«œ�ù,¡œÞÚiùÖˆ?ÌÙŽ¬÷®tü® ý $÷®„ü®,¼�¯„•¯ þ $�¯”•¯,ü÷®0 ÇʉT"­¯‰ü¾®o$è®�ù,ޮ͊ÓÇÛÍŠ©Ã‡±,O‹ðÅðÕÇÊ¡4¼¼¸Õœ¼¼ÌÙ+¤»¼ ‚óÕ¼Šü†¼OŸŸd¤¼�ù,š¼ÞÚpùÖ�AÌÙ•4ŒÌ¸ÕœŒÌÌÙ+! ¯ñ¥Ì‹üÜËI¯ñ<úË�ù,ðËÞÚmùÖŒAÌÙ’4ÊÚ¸ÕÔÊÚÌÙ+! ¯ñêÚŒü“ÚW¯ñ<¸Ú�ù,®ÚÞÚmùÖŒAÌÙ’ ”ïð„ïð ÙÔ» 4±ñ ¸Õl±ñÌÙ + ! Øæœ±ñ¿ñ éCȽ�þV,¿ñ”Çñ„Çñ ÙȽ  ü±ñ( üïðj4èñ¸Õ¤èñÌÙ+!•öÔèñýñþŸL ,ýñ¤…ò”…ò± üèñ1  üïðª 4¨ò¸ÕŒ¨òÌÙ+!ýÝü¨ò dºò ÝO tºòüïðÙ4×ò¸Õœ×òÌÙ+ !üïðûðò�ü ðÐ,¾ð�ù,´ðª;ýá €÷ç¾ÞÚÇùÖçp™é¦ý'ÞÚ0ùÖPãYã“—ÞÚ ùÖÀ'ÞÚ0ùÖPÎó Ìö¢ÌÙm½÷?ð÷ÌÙ¸þŸŠ± hÌÙÃúäÌÙ–�èµú  ÷Øæ¸èþú å·ÈèÎû å·Øè¸þ »­¨èôÿ  ÷ýÝ àèá…  ÷Š× È詊  ÷ªÓ ˆè�‹ ¯®xèÞ‹ ¯®  P蹎 ¯®  hèŒ� ¯®  ÈèÚ� õ®  ¨èÇ‘  ÷¯ñ   àèâ’ Ý�˜è´– ‰®8èÀ÷ ±#     èÇ÷èÆ÷%ˆÂ#—Ô»£ØæµÇ˜Ç€•öhýÝPŠ×2ªÓôÚÀ¦‚óޝñv¯ñX?(ºþ=å·å·»­êÃÿÐêÿ°‘€�¯®p¯®V¯®<¯®"õ®Ý�îÝ�Ή®´ýÝI•öPØæW(ý©ç  3¨ýÞ�ÕÛ›† %²Ç 19x Ã#‹hýÚ…`Ǩýª†`›†¸ýÀˆ`×�€ýÚ‹`×�rwü†ƒ‹hý‰ý˜íÇhýéþ˜íÇ>Cü†OWÐýü÷ ùŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ìá�þbg †ƒ‰ y�PýÓó ‘ÚôíhýÅô ‘ÚÇ>CÒ© O W€ýÉîÓì÷À % †÷À7 ?ˆýæíðÙ‘À % †‘À7 ?ˆý¨éÖÙÝÁ %�Ï1 9' Ã#ý­çK Ã#$j Ã#Chnü† { „­ Ã#  ‰Ï Ã#¨¯µü†ÂË Ã#î‡�²Ç š£�•õ¶¢«—�õ¶ª³  Ã#‚É Ã#¢ý®çÞ# ÿ !(/6ȽD¬åMUâÔuÝÁ~ ‘ÀΑÀ× ÷À'÷À0§®•ÍŠ€ôí§Ç’ ƒ‰Bƒ‰KÍŠ°ÍŠ›ÇÂÇ­ÍŠdãÉQÒ¹>Ò¹+Lj›†u×�b×�OãÉ›†Ró­xó­Éó­ó­ƒ ϰ r ó­# ó­Œϰ {ó­6ϰ '¾Ö__self_3Áó­Ê  ²Ç Þü†Œü†Ö‰®Ò©/öŠÚº‹��Ï`ü†-ü†²Ç ¯õ¶šõ¶…þ²çà# þ°ç "(.4@¬åHQ[#Hÿ´ç,; KI¬å\Ii   "ˆ��!¥­º!ÂJ¬åÓJàïK¬åKL¬å0 L> NM¬å` Mn ~N¬å� Nž ®O¬åÀ OÎ ÞP¬åð Pþ  Q¬å Q. ¨ÿÞ�R¬åERÕÛ›†/S¬å@FSÕÛ›†Y GEe HFs xÊ÷G„H‰!‘hÿÚ…T¬å2T`Ǩÿª†U¬å3U`›†¸ÿÀˆV¬å4V`×�€ÿÚ‹W¬å5W`×�´X¬åÅ6X`ǯY¬åÀ7Y`›†ªZ¬å»8Z`×�¥[¬å¶9[`×�T ;2a <6p ví„;ƒ<‰:’ hÿ‰ý\¬å)\˜íÇhÿéþ]¬å*]˜íÇ^^¬åo+^˜íÇY_¬åj,_˜íDz.)¾/+ÌÑí„.Ý/â-êÐÿü÷`¬å%`ùƒ‰.a¬å?&aùƒ‰W'%c(&qv ù±¥‘¥‘'�(’!š PÿÓób¬åb‘ÚôíhÿÅôc¬åc‘ÚÇ^d¬åod‘ÚôíYe¬åje‘ÚDz!¾"ÌÑ��!Ý"â ê€ÿÉîf¬åfÓì÷À/g¬å@gÓì÷ÀYesx ù±ì�ì��”!œˆÿæíh¬åhðÙ‘À/i¬å@iðÙ‘ÀYesx ù±×�×��”!œˆÿ¨éj¬åjÖÙÝÁ/k¬å@kÖÙÝÁYesx̓„‰!‘É ª#·$ÆÌí„#Ù$ß!èî÷!Í-®0*»1,ÊÐí„0Ý1ã!ìòû !Û : ¾ >3Ë ?7Ú àÊ÷>í?ó=ü = ç A4ô B8  Á†AB@%- @  C5 D9, 2Á†C?DE!NT ]k !ÿ½çß ã# ï õ ü      & - 4 l@ ¬åI ¬åR Z b i ¬å¬åw  ‡ � — Ÿ § ¯ · ¿ âÔ�âÔ¦Ëé¯Ëé¸×�b×�k ×�wÝ­€ì�*ì�3 ì�?„®H§®@ÍŠ§®RÍŠ,b”»k”»t›éN›éW¥‘.¥‘7 ¥‘Cú®LÍŠDÍŠÍŠVÍŠ0f›éo›éx›éR›é[ÍŠ+ ãÉ Ò¹ã Ò¹¿ ÍŠO ãÉ+ Ò¹ Ò¹ã q ›éz ›éƒ ] Ÿíf Ÿío I ¾�R ¾�[ ¾�7 ¾�@ ãÉf ãÉo Ÿíx Ÿí� ¬åÈ ¬åÑ ¬åÚ ¬åã ¬åì ¬åõ ¬åþ ¬å¬å¬å¬å"¬å+¬å4¬å=¬åF¬åO¬åX¬åa¬åj¬ås¬å|¬å…¬åެ嗬堬婬岬廬åĬåͬåÖ¬å߬åè¬åñ¬åúî À‘!Ø‘.ó­ý‘ó­Ëý‘Øó­†ý‘“ó­� ϰ m ý‘© ì’‡ ó­b %ý‘o &ó­k )ϰ I *ý‘… +ì’c ,ó­7 2ϰ  3¾Ö÷ 4Ø’× 5ý‘k 6ì’K 7Á“+ 8__arg1_3Á 9ó­< Eý‘I F� Ê÷]í„Î í„= ¹¡U ��½ ɤÕ ê¥; ̓¡í„ª í„? Ê÷à Á†º Á†” ,€š\ú™  4$Çœ ,°› Üœ üÏ™�$뙬å,ᙼ”š:øšùÁ"ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk# ÝÁ�þ^c †ʹu}(šüÀ ä#š�Áç#/‘À;×�CʹÍ ʹØ_ižºõ(›ƒÁ ø²Ýø›ùÁ"Ê ²Ýʹ-9îÝfk¥¢x}hm�›ˆÁé#ª­à¶×�¾·áƲÝβݼîÝÄ ‡»χ»×úœ˜½îÝ¥¢'œŒÁë#œŠÁ ×�'1ø�ùÁ"ʹʹ,1 ù±ʹʹHMU�—Áî#H�ŽÁ×�×�‡»—‡»Ÿ8î EOõ¾É„ÒÅÛÅ ÕwDÒÅßÅ<ÛÅÌìÅ ©¡ž ¶àUÿ×�üÒÅ4DãÅ ˜X¡ž Ç©âÀðÀšeüãÅ#ŒÆ¨üƒÅ‰¶à|¸Å×�,’ÅÝô D™ÅªÅřǙș­É™Ê™àË™óG*¤�R{9 ¡ž E›Áxý�{™´º¥Àˆ�Á( îÅ$ñÅ×�¤ñÅdöÅ ¬/ ƒÆ|öÅ…Æ©ÌK¶àðÅ›Áꡞ íÅœ×�$“Å×�˜Â+æÃ¯Üí „áÌʹ ÀÀUniqueÁ¿ µÃüðµ´]8"»Oÿ‰º®®«°¿ ”3¯f*²Û�‰º ‰ºŸ¼áÌ$òÌ ìwÝÁË4ò̸¶áÌ  ‘P�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÝÁ–otø¶ØÌÑ ¥ ÆQ†Ç·¿Ä Ð  ã ÜÌ àâÔ<ŠÍ tŠÍ    ¤ÈÍdÊÍ ½ ÈÍ$×Í ”ÊÍ6  4ûÍ ÇdöÍ Å™Ç�Ö $¤Î Å™Ç& 0¬ü–Ì÷ |ƒ¶à|¾Ì×�,ªÌ$±Ì†Ç3†Çk ‰º%†ÇQřǙș­É™Ê™àË™óG*¤�R{9 âÔŸ †Ç«1âÔÒ«Ç•ÇYʹÆ­ÆÎ×—»Û�ª2 1ÒÆ_€Ç7›È>¾ÉøžÆÛƒ‰Ö‰+3(žšÚ ï#žŸÚò#/÷À;ì�Cƒ‰ƒ¥‘‹\fÖ‰¨(Ÿ¡Ú ù²ÝøŸÆÛÊ ²Ýƒ‰-9îÝfk¥¢x}hm�Ÿ¦Úô#ª­à¶ì�¾·áƲÝβݼîÝÄú®Ì¥‘Ô÷œú®îÝ¥¢$ ªÚö# ¨Ú ì�'1ø¡ÆÛƒ‰ƒ‰,1 ù±ƒ‰ƒ‰HMU¡µÚù#H¡¬Úì�ì�¥‘—¥‘Ÿ8î EO±ÒÉ„¨ß±ß¥ÀD¨ßµß<±ßÌÂß ¯âÀì�ü¨ß4D¹ß ˜X¡ž ǯâÀšÔˆ[ü¹ß#âß®üÙÞ‰¶à|Žßì�,èÞÝô DïހߑÂîÅÔÄ1ý�4™´8s¥À/·Ôá Äß$Çßì�¤ÇßdÌß ²/ Ùß|ÌßÛ߯zK¶àÆßÅÔ˜¡ž Ãßœì�³$éÞì�˜ÂÙÈÖ¯ÜíŒÃæ\ÃæŒ¥ $Ïæ#ü²æ# ƒ‰  ÀÀÀÄ¿ µÃüðµ´]8"»Oÿìá®®«°¿ ”3¯f*²Û�ìá ìá› §¸ Ì ƒ‰Þ  ÃØ„ÙµÙ÷ $âælêæ  ²ÍЬâæÇÊ? 5!($†ç Å™Çüßæ]T¨ç Å™Ç*Âç²üååÝü§æ›¶à|�æì�,ùå$€æÇ$«æ7ôÍŠ'ÍŠ!ƒ‰Oƒ‰WµÙ_µÙgp—»t¥ vºræ*ÇŒ¥ ÂÇÊp˜¡æ*ǰ¿²ÍŠÝÇæîóæ*ÇÒíÍŠØílßí ¶���ÍŠ¤Øí ú±ÇÇ\R,ìí¶üËí!N×í ¶ ÍŠUÿC ”àTÌíÇýÍŠãÍŠÜÍŠ# Ø …üæ*Ç©ßà"æ*Ç1@¶#ÍŠ^Çgotæ*Ç$�î$ˆîÍŠd³î,¸î ¸$³î<¸îdÖî,Ûî½â$Öî<Ûîü�îx ú#‡ï·üÿíˆ<ÝÁŽî ·”àÝÁUÿ;”àl€îÇëÁÍŠ*—»;¥ 4�½â$½âú(¢Ëð¢Ðð€$(-3ÝÁ@âÔHQ[¤Úðƒ$¤Øð âÔ$-7h¥¹ñ ühÒ­ 2 ¥ÜðDX¥ùñËæ)@6ˆ¥ÀòÇ ühÇÒ­ 4†A¥àð…$©´âÔ¼�® Ä¡ž  Ê¡ž ÒÍŠŸõƒ ËæOËæ ÐçÙh¦¹ñ'8X¦ùñ'8ˆ¦Àò Ç Ç+0ÇÊ < AINVc¦ëð‰$H¦âð âÔâÔ4<D ÍŠÖÍŠÞfî s}ÇÊ(«¡ÿ ú ²Ýˆ«Êÿ ²ÝüŠ+îÝø«­‚*û²Ý „!„!…! PhantomDataÁo$z�é -œ¨ ^  j îÝÓØ¤éåêÕÚ£¨«¦ÿ�$" ­à/ Š$Š$ØðŒ$ÛËÎ �$üðÎ ÿsÁ­ËNœXv·á²Ýˆ²ÝwîÝ€ üŠŒ²ÝYîÝb  ²íqòïzÚœèóÒïîÝçðïîݵ¤éè¬�Þ׳Ø)1ð¬Àƒ¹ �º )1(¬í ‘$¬ò•$0ÊÃ< ÊÃGÞ×»žÜù •¤À �pz³Øð�º À(­ô ²Ýè­�  ²ÝÞ×*îÝð­À H²Ý ƒ¹ *  6 îÝœ¡¤é®³ ¥otÏ­ù—$é ­àõýñý·á²Ý²ÝÿîݞܲÝÞîÝæ ¤À ñ¤À ùUœcnžÜîÝd�õîÝ3¤é�è®� éãð®À ÙÑ 8®û ‘$®‚™$0ÊÃ<Þ×€ƒ¹ iSéã™ÙÑ €p¯¾HÊà †ÊÃ/7à¯ñH·¬Ðæ)2(¯–H š$¯›H¯šH>ž$M£ÄY £ÄdÊÃßýñç·¬³Ëç»�—¹÷ÐæßÊÄ(°�H ²Ýp°¾H ²ÝÊÃ*îÝà°ñH ²Ý ·¬*  6 îÝœ¡¤é®³ ¥otϰ¢H $é ­àõçøý·á²Ý²ÝÿîÝýñ²ÝÞîÝæ¾êîËçöRœ`kýñîÝa¾êîÝ0¤éŠ £O  l©O·¬ü©O"T·OÔë,DÂO¤·Oø¼©O# â‘D#/Bü©O# m�» !, êO   ÄÖOtÛO ð$ÖO A œÛO½ËO[À“î! �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwðÄ×°À“Šd óO  ôO! ))ü¨NÌV f  î4üŸOU#*1Á °ÿÔúNçø,ÒN§òDáN�»�é–?¡óvË畇À“��»"�»óc¨ gß'ùÆ ÚŽo Ôëúâ‘Óäþ6ªÿá�»~p±†vÊù÷)1@±šv�»‡…)2(±ßu ¡$±äu±ãu>¥$MðÄYÌÿaÊÃÖýñÞ�»°�ù¸Š”¹÷ ‡…ÜÊÃ�(²æu ¡²Ýp²†v ²ÝÊÃ*îÝ@²šv ²Ý �»*  6 îÝ�¢¤é¯´ ¥otвëu§$ê ­àöÌÿþ·á²Ý²ÝÿîÝýñ²ÝÞîÝæœþî�ùöSœalýñîÝaœþîÝ0¤é‹Œâ„|â„ ü!üâ„&Tô„ MDÿ„¤ô„ �…Ž…üüƒ’ö°ÿÔ½„§òD¤„çøÌ£ÄÔ¨ Sòˆó¢‰Ê£Ä—£Ä�dÅËÊÃ×Ë�ü—Ë@ýñ<³ËÌÿ,©Ë 1LÆÌ�»ÕÌ‚üžÌ7�ù$·ÌÌÿ,­Ì 1d§ß$­ß©¢,§ß4­ßܧßD´ßµ£C$½ß t´ß4åß<íß  „¯¢’¦   ú¦üÌß)dÑß ™$Ìß,Þßl büÑß$@üÌß3<ößÛ¨fLöß…à„üžÞçü›ßj $ŒßÌÿ,ÏÞ‡‚,ÞÞ¯¢,ùÞµ¢,Ÿßµ¢~«ªãܧëø©5ú¦/’¦8aóAc–`e–`g´©¢ìµ£Çû�VÛ¨òß •¦¬¼„’¦Ú”¦Gê3dáï$çï©¢,áï4çïtúï<ÿï ‚$úïLÿïäúï\‰ðé˜El‰ðüúï! šð'$»ð Å™¯€$Áð Å™¯€dºð •¦  4÷ð Tÿðú¦üÞð,dãðû�$Þð,ðð ZP üãð'øÀÞð- ·² W $ 0 ðØüÞð- m›† «ñ D¥ñ% / ÐÁŠñ‰´ðØØ´-öwHÂ¥ñ  �%•¦£ $)5 L¥ñm¯€|¥ñ¯ñж2,¯ñŠ Ã­ñ‰´ðØØ´-° Òñ DÌñ% /JHÄÌñ »–p#/LÌñm¯€|ÌñÖñж2,Öñ„ÅÔñ‰´ðØØ´-ªœ…ò ! Ú,üõñ$ Tõñ™¸€ò!= )üðñ* Å™‹¢ üéñ1 -tºò<¿òì‘$ºò#L¿òܺòTÉòµ’#C"dÉòÌïòŒõòʹ",ïò$œõò$§ó& Å™¯€ù³„ !±³„ ”º&7$L­ó%,4äó*Tìó,%áº,#+.,üËó,dÐóû�$Ëó,Ýó*j+`).üÐó'øÆËó- ·²)X(. %-(1-üËó-.(m›†'.,Žô3%”ô6't”ôD˜ôÁ½6(5.T˜ô²Ç÷ó‰´ðØØ´0.Ù””ô45 ¥ô¤“ô;3°4?2 ."ÌŽô12ÐÈŽô »–1(0!.$7007"#ÔŽô80m¯€üŽô ©ôж83/$.,©ô‡É§ô‰´ðØØ´1.®,Âô=%ÈôA'tÈôDÌôÁ½A(@%.TÌô”Èô?@ Ùô´Èô>? ÝôÄÇô;=¦>?<&."ìÂô;<ðÊÂô »–;(:'.$B:0B()ôÂôC:m¯€üÂô$áôжC39*.,áô‡!Ëßô‰´ðØØ´2.®œ…õE Ú,/9üõô$Tõô™¸'€õE=D+.*üðô* Å™‹¢D Ÿõ%-%- õ-%/üÓîÍ#,ñ,~!,‡$5üÕïËüªðûüÔðÑGNUåü™ñŒ©° · üÂñc¨¯¶ü®òòüßòÁü’óŽüÁóßNU\Øü‚ôžcjqÃü¸ôh  k"F�´l½ïÌÿ,€ï‡‚,�ﯢ,ªïµ¢,ÙïF u �ù¬ êÅL®ð•¦5 •¦% •Æ� ܧÖ ø© ú¦ “Ç ä ›†v ,�ñÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´¯€ •¦« Ñ º ¬ ¯€þ Æñò©* •¦� ³ œ Á¯€ ‹¢‘Åž¶ã“,²ò�ùSLãòçºL–ó•¦ò›†Åó•Æ7ܧ�ø©Ìú¦Æ‚ÉϬ›†*,†ôò©B•¦]»É�ÇÉ2Ä"ãÉ<ò¯€F¼ôò©•¦7»ÉgÇÉžÊúãÉÔ¯€(‹¢£ÅžÈÀóAÖ`Æ–`É©&²¾¾ØðÆ h ðØØ´Ž ‚“Æ Ï ðØØ´Ž, ’2 Æ Ô ðØØ´Ž1 ÛÊ"ìÊ $©& %¾¾'Æ …ðØØ´Ž .‚è/Æ ŸðØØ´Žþ8’¼9Æ M ðØØ´Ž¬"Cœ#©¢Ùì‘´é˜�û�½·²„‰´‹»–‡ ж- ‰´• »–o ж ‰´} ™¸¹ ì‘e µ’@ ʹ ”ºà ầ û�{ ·²A Á½À ‰´O ;R »– жˉ´. Á½b;÷»–Åжp‰´Ó™¸ çºÄçºËçºÒdÔý$Úý©¢,Ôý4ÚýlÓýüÀý'4Åý ˜$Àý,Ìý;$âýüÅý"íýŠü®ü¿µýÌÿ,ßü‡‚,îü¯¢,‰ýæÒ$›ýø©¯µ¢á=óA?–`AɾDŠ©¢&ѳò $ã„   tü„<�…ì‘$ü„ L�…Üü„T‹…µ’D d‹…üü„#,˜…à’B <˜…üê„6Œê„ÙÕC !,Ç…   dÇ…$Í…©¢ ; 4Í…ü³…!œ³…Ûû  C"$ý… üÞ…) ¨$ �† Œ† üÀƒÍ!1  �5üß„®üª…c ¨$¨$¾¾¬$é¾Å­$óAÅ®$ɾů$ÛËÅ6·¡I y¼½„ÌÿDúƒ‡‚,Œ„¯¢,ª„˜ÛyýÝã“3�ùi±ý ®…µ¢±¯¢Þ˜Ûr5sóAu–`wɾóÛËciì‘èµ’Âà’ŸÙÕ{©¢8Ûû ˜Û±¯¢¸$ê‘   ´ñ‘|ö‘ ý$ñ‘Œö‘,®’  d®’$´’©¢;4´’üš’!œš’Ûû C"$è’üÅ’- µ$ø’ ÷’ü¿�¹!1 ’5üæ‘’ü‘’g µ$µ$ëĹ$é¾Åº$óAÅ»$ɾż$ÛËÅÆçìs};"™ÜÀ‘ÌÿDý�‡‚,�‘¯¢,­‘˜Ûþ±ý •’µ¢–¯¢Ã˜ÛWXóAZ–`\ɾ]ÛËcNȼR©¢Ûû å˜Û�¯¢ˆ$×® Å™›†´Æ®\Ë®‹×$Æ®:ŒË®„�¯L•¯®Õ$�¯\•¯üð®1dõ®û�$ð®,‚¯,‰¯\üõ®,¬«¯\°¯‹×$«¯¼¯ „°¯ǯ˜üÅ­‚üæ®a »®Ìÿ,Ü­‡‚,ë­ø©,†®æÒ$¡®6ܧZܧê®ú¦"»YóA[–`]ɾ`¾¾R¼‹×¬®Õ‚û�]‹×!)tçÆ<ìÆì‘$çÆLìÆÔçÆLöÆÏÜC\öÆ)t…Ç<ŠÇì‘$…ÇLŠÇüçÆ6 Ä…Ç<”ÇØÝdL”ÇL«Ç  üÌÇ*„ÑÇ œ$ÌÇ,âÇ,éÇ,ðÇ üÑÇ%øÌÌÇ+  �%ÄÜ e  %*  6  ðØüÌÇ+ mö  ‘È d‘È<”Èè� ( L”ȲÍöǶñðØØ´&Ø”ŒÈ Å™›†Ì…È&tðÍ<õÍì‘$ðÍLõÍÜðÍTÿ͵’CdÿÍüðÍ/ŒŒÎʹAœŒÎ,¬Î\¬Î”¬ÎüÖÎ*„ÛΩÇ$ÖÎ,ìÎ,óÎ,úÎüÛÎ%øÎÖÎ+ ðÇ]$0 üÖÎ+mö  ›Ïd›Ï<žÏè� (LžÏ¡ π϶ñðØØ´&Ç”–Ï Å™›†Ì�Ï&t¿Ï<ÄÏì‘$¿Ï LÄÏä¿Ï\ÎÏé˜ ClÎÏü¿Ï! ßÏ'$�Ð" Å™¯€$‡Ð# Å™¯€d€Ð! •¦"#\ÈÐ &! %&ú¦ü¤Ð0 „©Ð©Ç$¤Ð,ºÐ,ÁÐ%S$ü©Ð+4‡Ò)!,�Ò,\�Ò+,hÐŽÒ* àý+|�Ò×ä)a*8(!üðÑ-|öÑ‚æ,ðÑ(´†Ò'üöÑ'Ô²Ò¶Ò þWö ›†š†ê$²ÒðØäÑŒºÒ&´¶Ò$öÒ. Å™¯€ù´„ !±´„ ”º.7üÒ- ,\¸Ó1-áº1#0!',ü”Ó0„™Ó©Ç$”Ó,ªÓ,±Ó0c/"'ü™Ó+4ëÔ4-,ôÔ7\ôÔ67hÒòÔ5 àý6|ñÔÏé4a583#'"üÔÔ-|ÚÔ‚æ,ÔÔ3´êÔ2$'üÚÔ'Ô‹Õ�Õ þWö ›†›†ê/‹ÕðئՌ“Õ%'´�Õ ªÕ-&«Õ-(ü­Åþ™üׯÔüÃÇf¤«²üæÍÅüÍÎf×Þ åQ üïÏèüšÐ½ üàÒËüŠÓ¡8ܧŒ»ÆÌÿ,ÊŇ‚,ÙÅø©,ôÅú¦,�ÆLÛÆ1 �ùf �ù œö ÇÇÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ö —ÄÜèñö _›†1„çKêÍã“¢�ù×BYèírö Ñ΢ØüÄÜKgö Õ›†§„çÁå�ùIêÅTóÏ•¦Ô•¦ÄÄܞРú¦©“DzáèíøîhâäCZèísçºTäÒ•¦—ÄÜŽÓú¦_‚Éh…èí·ÇÉ âäèÿèíFóAI–`L©&OßïUýæ7 Æ Ç ðØØ´Ž@ ôïÔýæ¬Æ  ðØØ´Ž| ƒð� !•ðq$ƒð--•ð&/Ü ì‘X ÏÜ3 ì‘ ØÝº ©Çx ðÇ7 è� µ ¶ñE ì‘D µ’ ʹý ±òÌ ©ÇŸ ðÇ` è� ï¶ñn ì‘~é˜Y©Ç˜±ò?×䂿÷ÖÑÈ”º`áº6©Ç ±ò°Ï鉂æg˜Õ7çºççºî¿Òd¿Ò<ÂÒè� (LÂÒËÒš›†¾ÒäÑ6ö »Ò„çxýæ_è� ‡˜Õd˜Õ<›Õè� (L›Õ¤Õ›ÿ›†—Õ¦Õö ”Õ„çxýæ@è� ‡üåî0¬êî ¢$åî,€ï,‡ï4Žïüêî+›ïŸüÍíÎÚîÌÿ,÷퇂,†îø©,¡îý  4¼î-óA/–`1˜¢ 4z²âÞ(ÉñÁ d ²Ýpɢ e²ÝÌÿ+îݠɶ A²Ý ‡‚+ îÝpÉР w²Ý ˜Û+  îݰÉä  ²Ý±ý +7îÝÆß +1$îó ¼ Á Š�dÉöÁ´$€­à� ®¹™·á¢²Ý«²Ý›îݤÊÿ­²Ýzî݃ ‡‚�²Ý\îÝe—�n²Ý;îÝDŸ  M¡  V-œ;FÊÿîÝ;ççîÝ —�îÝן  îÝ¥ÆßyèÄÌÿlìć‚dûĘÛT‰Å±ý üºÆ_ ¯ò¡ Ìÿ‡‚æÒü¯Æk<²Æ ¹¯ò¡ ‘ê¯Æ~ü²Æh Ç®üáÿüÖÄÊ�´l÷à ®¹LéÃÌÿ/ ‡‚&æÒ¹£  Âêÿ‡‚IDé¾vóAmɾdÛË[«ºêÐÆÌÿ,ÚÆ‡‚$èÆæÒìÐÆ4ÓÆѳXH,áÆ@ÔÓÆ$þÆ æÒ „þÆLƒÇ€š;\ƒÇ¤ûÆ Àœ�´Û†™Ç¯] æù ÁÆ Âêxø©,»Ææ�´‘—�½Ìÿ£‡‚¬æÒµæÒ¾–`Hé¾.ÌÿóA,ôć‚ɾ$ƒÅæÒѳx€š"Ÿ¥ éí¶›(Ê°Ë v²ÝpÊåË e²ÝÌÿ+îÝ ÊùË A²Ý ‡‚+ îÝpÊ“Ì  w²Ý ˜Û+  îÝ°Ê§Ì  ²Ý±ý +7îÝÆß +1$îó ¼ Á Š�dʵËÁ$€­à� ƒ¿™·á¢²Ý«²Ý›îݤÊÿ­²Ýzî݃ç猲ÝYîÝb—�k²Ý8îÝAŸ  J¡  S*œ8CÊÿîÝ8ççîÝ—�îÝÔŸ  îÝ¢Æßv¹ÎÌÿl½Î‡‚dÌΘÛTÚαý ü‹Ð_  ¶ò¡ ‘ê ü€Ðk<ƒÐ ¹¶ò¡ ‘ê€ÐvüƒÐh$øÐ |øÐDýФ” )TýÐ)$›Ñ d›Ñ, Ñð” ) < Ñ”–Ñ Å™˜Û üõÐ_$ÆÑ Å™˜Û'Úѵü«Í¯ü£Î· ‘–„ÁÍ ƒ¿L³ÍÌÿ÷ÃëëæÒÞ¹£ Ñ�´‰ÏöÍ;—�V˜Û—�‡‚:mé¾góA^ɾUÛËLÔÇö¤”·ð”t¡ÐÌÿ,«Ð‡‚$¹ÐæÒì¡Ð4¤ÐѳXH,²Ð@Ô¤Ð$ÏÐ æÒ „ÏÐLÔЀš;\ÔФÌÐ Àœ�´Û†êж\ æù ’Ð Ïöwø©,ŒÐæ�´‘—�½Ìÿ¢‡‚«æÒ´æÒ½–`Hé¾-ÌÿóA,Å·‚ɾ$ÔÎæÒѳx€š"Ÿ¥ éí¶›ÈË�Ø…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ·É�þX] †Éþow�Ë›ÙŒÈ †ŒÈ09�Ë¢ÚŒÈÕÿ*3(ËÊÖ Â$ËÏÖËÎÖTÇ$c±Ço ±ÇzÉþt Éþ€ŒÈ  ŒÈŒÈäÄ�ì½Ç˜ÿÃÕÿNÕÿŒÈ·Éþ½ (ÌÑÖ ²ÝÈÌ�Ø  ²ÝÉþ+îÝ�̛٠ü²Ý ŒÈ, îÝ�Ì¢Ú  Æ²Ý ŒÈ,  8  îÝÝâÏž ïôà害 { €ÌÖÖÉ$6­àC›�L·áU²Ý^²ÝNîÝW¯�`²Ý-îÝ6Ä�?²Ý îÝ Ä� Ä�)ÅœÓÞ¯�îÝÓÄ�îݡʅîÝnÏž pÎÄýݪ †ݪ08¨Î™ÿÛÈ †ÛÈ09(Îíû Ê$ÎòûÎñûAÎ$PŒÈ\Ä�dݪçâýïÛȺ ÛÈÅ�šÕ†’‡éݪ…(Ïôû ý ²ÝpÏÄý þ²Ýݪ,îݨϙÿ ÿ ²Ý ÛÈ,  8 îÝ¢§¤é´¹¤©qvÕÏùûÐ$ð ­àüÄ�·á ²Ý²ÝîÝâý²ÝãîÝë ­ˆö­ˆþ^œlwâýîÝk¯‹îÝ8¤é–øÐÌ”çºõŒ+3°ÐÔ•ÈЦ—(Ð�” Ñ$І”Ö$5ÛÈA­ˆIçºÏÇÉצ󊮒󊚀ŠõŒó‹áó‹ÄçºÐ…” (ш” € ²ÝøÑÌ”�²Ýçº-îݰÑÔ• ‚²Ý + îÝÈѦ—  ƒ²Ý +  7  îÝÞãÏž ðõà嬱 z Ñ�”Ø$7­àD­ˆM·áV²Ý_²ÝNîÝWÇÉ`²Ý+îÝ4óŠ=²Ý îÝŒ‘óŠ%ÜÑÜÇÉîÝÐóŠîÝœŒ‘îÝjÏž (ÕÜÇ%€Õ²É´Ø×�ØÕÄÉ´Ø•¦>Cõ¶OW8ÕÅÈ›öÇ %ü†19Æ Ù$ÕàÇ¡¦©¸²º  Ù$GÕáÇá$AGN ·É\ ·ÉhpÍŠñÇùÒ¹]»ÉH×�o•¦Z®ó­5ó­žϰ �àõ¶¿ü†j©¸¯(ÖãÇ%€Ö²É´Ø×�ØÖÄÉ ´Ø•¦h p¸²ÝQ Y¹²Ýf îÝY al²Ým yîÝÖÛ¤éè í Æ Ë ²· 8ÖÅÈ›öÇ-6„²Ý5AîÝci¬·w}t‹ÖèÇã$§­´­à²•Ë·áÔÜÍŠÖ²ÝíîÝç›éïÒ¹Ú»ÉŲݲÝõîÝþ²ÝéîÝò·ÀûOœ]ó­]ó­Mϰ < �Ò¹îÝq·ÀîÝ]¤é®›éîÝ©¬·¿lò6 æ*ÇüÛ6%×Ç<è6'Eæ*Ç StateID::ZEROÁ̸7  ´¸7 é* Ï77ü¢70ØÇ<®7'_Á �׊B…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅšË�þW\ †™žnv€×èC™žèž) 2ø×éD"ð0ð0Íò0ìŠñ.ó0�ñ.žFår­ä…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅäÌ�þ“˜ †ÌŸª ³ø×ÕE$ ð0ð0Íò0ìŠñ.ó0�ñ.žFår­ä…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅßß Utf8RangeÁà‚á’.èí­µN�þÌÑ †„¡ ã ìÈוG …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ•Ì�þW\ †ô¢ n wèלH …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàŲÍ�þW\ †ð£ n w(×¼@ ä$  ×Á@×À@  $ 4 D Šì$™¢Ê¥ ¢Ê°™ž  ™ž™ž¥—¦®ÌŸ€ ÌŸŒ„¡Ý „¡éô¢ ô¢ 𣚠ð£¦4? èž�èž)Ö ùÇ¢Hã^¿¤éô¢>„¡EÌŸL™žS™žZàØ�J…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÑË�þW\ †ˆ¨nv(ØèH í$ØíHð$-šË9 šËDˆ¨Ç ˆ¨Ò`jרï€ÙŸLú¡ †ú¡/7€ÙÞLÇü†)1(ÙçK ñ$ÙìKõ$0ÑË< ÑËGú¡Á ú¡Ìǘ͊ s}’ªùü†ÃxíïÎÇü†*2xíÃÏÇü†*2(í¢Î ö$í§Îú$2•Ì> •ÌIǿ͊Çǘ͊ r|ü†ôü†Ã(î©Î …²ÝxîïÎ †²ÝÇ,îÝxîÃÏ ‡²Ý Ç,  8 îÝ¢§¤é´¹¤©qvÕî®Îü$ð ­àüª­·á ²Ý²ÝîÝÍŠ²ÝãîÝë›éóÍŠû[œitÍŠîÝh›éîÝ5¤é“ˆïþÐÇü†*2Xï•Ñ(ïÙÐ ý$ïÞÐ�%2äÌ> äÌIǫ͊³ƒóŠ‹q{ü†ßó‹®(ðàÐ ˆ²ÝˆðþÐ ‰²ÝÇ,îÝXð•Ñ Š²Ý +  7 îÝ¡¦¤é³¸£¨puÔðåЃ%ï ­àûº²·á ²Ý²ÝîÝ ÍŠ²ÝâîÝꌑòóŠúZœhsÍŠîÝgŒ‘îÝ4¤é’4Áˆñ®ÔÇü†*2°ñ£Õú¡', †Š·>F8ñöÕ(ñ…Ó „%ñŠÓŠ%5²ÍA ²ÍLÇùÍŠŠ·Ó Š·Þš¡ž ¢ˆ’ü†A¨·ŒŸ Í (òŒÓ ‹ ²Ýˆò®Ô ‰²ÝÇ,îݰò£Õ Œ²Ý Š·, îÝ8òöÕ  �²Ý +  7  îÝÞãÏž ðõàå­² z ò‘ÓŒ%7­àDª¸M·áV²Ý_²ÝNîÝWÍŠ`²Ý,îÝ5θ>²Ý îݾ¤ ¡ž %ÜÑÜÍŠîÝÐθîÝ�¾¤ îÝjÏž 4Á3ÁØ÷ç‚�Ï', †æ½>FP÷ˆƒ(÷¶‚ �%÷»‚’%2ŒÎ> ŒÎI潿 æ½Ê†óŠŽt~„¾öó‹±(ø½‚ x²ÝØøç‚ Ž ²Ýæ½,îÝPøˆƒ �²Ý +  7 îÝ ¥¤é²·£¨puÓø‚”%î ­àúƒ¿·á ²Ý²ÝîÝ –¿²ÝâîÝꌑòóŠúYœgr–¿îÝgŒ‘îÝ4¤é‘ùÆ‚–%ùÄ‚ ƒ¿$-73ÁØúç‚æ½æ½+0 ù±æ½æ½GLT[Púˆƒ'8@HUúÑ‚š%HúÈ‚ƒ¿ƒ¿–¿ –¿²¹Oî \fœÄM(ûèƒû탧%(-�Ï: �ÏENX(ýõƒ'HýÏ„ ¢ûú¡L T�²Ý3 ?îÝ€…¬·’ —n¤Hýº„Šûú¡Ç Ï�²Ý3 ?  îÝû¬·  q"Hý¦„òúú¡FO‘²Ý5AîÝ|‚¬·�–t¤ýúƒª%ÀÆÍÔ­àâþÆë·áôüµ«Ý²Ý îÝî µ«ùµ«€²Ý2îÝ’ÁË›µ«²ÝVîÝ1ÁË:rœ€ó­gó­óó­{ ²ÁËîÝ’¬·ÇÁËîÝ(¬·ØÁËîݺ¬·éþþƒ¬%þüƒ þÆ'1 Hÿ€„,; KþÆ\ i |„‘ ›¢þƳÀ ÏþÆàíüþÆ   HÿÏ„þÆ¢ûú¡/þÆ@¢ûú¡Yesx ù±µ«µ«�” œHÿº„þÆŠûú¡/þÆ@Šûú¡YesxšÑ„‰ ‘Hÿ¦„þÆ òúú¡/ þÆ@  òúú¡Y  e sxšÑ „‰ ‘ÿ‰„¯%")0!<þÆEþÆNV^eþÆþÆs{ƒ‹“µ«:µ«CÁËLÁËUµ«ôµ«ýÁËÁ˵«¹µ«ÂÁËËÁËÔþÆþÆþÆþÆ#þÆ,þÆ5þÆ>þÆGþÆPþÆY cî qÀ‘€Ø‘�ó­8 ý‘E ó­èý‘õó­£ý‘°äšÑÄšÑ*šÑ›(� ž� £µ%&+ÞÐ8 ÞÐCLV’ ­¸%’ « ·Ø&0@“ ÜðÑðÑ*/ ù±ðÑðÑFKS“ ¸»%H“ ¯·Ø·Ø ðÑ–ÃÚž:î GQèÙÈP” º  îÞÐ (- Å™İ ” Ľ%[ʱ g·Øo·Øwİ ˆî •Ÿ—Û©@• ÜðÑðÑ*/ îðÑAFN• É¿%• Æİ ·Ø·Ø ÃÚ�ÃÚ˜9î FPñÜÂ(– ñ– öÉ%&+1ðÑ>ÃÚFOY˜ €Ì%˜ þ ÃÚ#,6 H™ ‚+: JÃÚ[ h y�Ž˜ŸÃÚ°½ÌÃÚÝê™ ¥"ÃÚ�ý-ÃÚ>�ýVbpu ù±««««Œ‘™™ ¤ ÃÚ ë–-ÃÚ> ë–V  b  pu ù±¡ž ¡ž  Œ ‘™™ ‹Ï%JPW^eqÃÚzÃÚƒ‹“šÃÚÃÚ¨°¸À¡ž 2¡ž ;¾¤ D¾¤ M««ô««ý «« ÇåÃÚÃÚÃÚ&ÃÚ/ÃÚ8ÃÚAÃÚJTî bÀ‘qØ‘~ó­ô ý‘ ó­¬ý‘¹»¿âÍÝã6Pš � ñÜ"' Å™İ š —Ñ%Uʱ aÃÚiÃÚqİ y‚î �™ñÜ£ › ™&49 îJOW\hw› › ‘ ¡ ÃÚ² ¿ ÒÙ ÃÚê ÷  ÃÚ & › ¥" ÃÚ�ý- ÃÚ>�ýX] îns {› ¤  ÃÚ ë–- ÃÚ>ë–X] î ns {› œÓ%KQX_fmİ {ÃÚ„ÃÚ�•�İ ¦ ±€îºÂëäËÓÛ㡞 6¡ž ?««È««ÑÃÚÃÚÃÚ"ÃÚ+ÃÚ4ÃÚ=ÃÚF Pî ^À‘mØ‘zó­Ñ ý‘Þó­ký‘x–ºÃ“éÎíëŸíì&256Á(¤ ¤F¤ ©FÚ%&+ªÓ8³þ@IS256ÁD–H —H¬ŠH Ô%¥HªüâGCªÓ\ôGs-256Á ¤çI”çI ª8²ŽJ  ÷# ŽJ ’Jÿ ;8³ŽJ  ‘PòýòýÁôý‚õý’öý exhaustedÁÝ ßÖ çP­sxø³…J;“¢§ ÆQãó¹ÁÆÒå ‰Jà<¤J Œ¤J¬J ° ( °J ³J L¬J<ÉJÖJ¬ü¨I®üÕI�÷ý ªÓ\¿IªÓ\ÙIãó¤ãóïãó¶ÈË ¿ ãóËMïÍ ªÓéש^�˜#®úò…›ókÝó0ûô7òõ)Œ«[\«[Œ¥ $·[ ̤[$ .ü¤[!­òÌ[°üïZ]™[µ÷LúZ$…[,�[ˬ*—»/›€4hŒ¥  ŒÉ\\É\Œ¥ $Õ\ ÌÂ\$ .I­òá\±ü–\Kµ\³þ,¡\$¨\¿ !—»&QŒ¥ ð4�^ðÑd—^( ù^ðÑ�ýtÿ^\ÿ^ ® ‹_( ¿^ðÑë–\Ñ^Ö^פ $Ñ^ Ú^4Ö^ÄÅ^\Å^Œ¥ Ež_²üÞ]Àü²^+üë^",‡^³þ,ñ]ÞÐ$ø]|²^̳'4Ê7˜þ˜V�ŒýIפ Œ¥ Ûœ¼adÁa ´$¼atÁaü¼a"\Ða�× @ ÜatÐaü¼a+4ßaç§SDßaü²a6L²a Ÿ? îa³ü¨`ÆÞÐ$½`³þ,³`‚ØÚÇø!Eïÿ�× òç§»þ€šÅe ÿ\¾e$ .I­òIJe\²eŒ¥ uä²e Íeü²e  ÑeØe´ü¼cœ,Úc³þ,Ðcz¤ /0SŒ¥ Øœ‡jdŒjïÿ$‡jtŒjü‡j'Œ›j ƨAœ›jü‡j8t¯j ɧC„¯j´Éj|Éj ¶,Ùj(üÉj4àj Ó_£ä£ä¤äTryFromIntErrorÁ¥äó ¬q£:{ aŽDàjîjµüÒiœüûis,ëi³þ,ái,ÿi8hÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸†GzerosÁˆ»ïÿñ¬…ÐÖ…­€†Š¯†bœÕmdÚmïÿ$ÕmtÚmÔÕmìmõm¶ü¨mM$Æm³þ,¼m{3ïÿ˜ü�o% Ý% £o¬o·üÏn]Ý%Ý%¶þß%ש–à%Ÿ–!´ã ÅÒTŒån³þ,Ûn h,ë�œë�\ñ� ›$Ž3lñ�3Ìå�ðØ Ÿƒ   Ñ‚$ExcludedÁ¡ž "$tׂ\ׂŒ¥  ã‚ $ ž‚%IncludedÁ¡ž "%t¤‚\¤‚Œ¥  °‚$ìׂ\æ‚£§ œ ò‚ tæ‚üׂ&4õ‚ç§ YDõ‚,ʃ ŒÊƒLЃ œ$‘Œ 1  \Ѓ1 ¼Äƒ $§… Å™ ë„& “Œ¡ž &tö„\ö„Œ¥  ‚…$ ûƒ' 팡ž 't˜„\˜„Œ¥  ¤„ $옄\§„£§B ³„t§„ü˜„&4¶„ç§YD¶„ü“„, Å™ Ì„¤ñ„ Å™ „…A¦ ì ]I¦ ö ] ¸‘ŒóŠ©¦ ë ] A¦ �!]óŠI¦ š!]óŠI¦ ½!]Q¦ Ê!]¹¦ ½!]ù¦ ö!!] ±šñ§ ÷$]ñ¿÷$]ƒœ ü††*’(²Ý 2ù¦ Ú$<] Å™�Ñ ù¦ š$}]ù¦ š$ ] Ê[!¦ »$]Q¦ Á$]Y¦ Í$]dKD‡‡!D�‡" $¿‡# Å™üņ‰ ä%!"# Ó‡Ô‡ü¯€¥“2¸ *üÖ�þü�‚%üÀ‚=üµƒŸüêƒcüÚ„+ù¦ �!©]ù¦ ë!¿](ä%ä%ùþæ%ש–ç%ªÿ–è%ºÿ–é%Êÿ–”º¥�F mä��³þ,Œ,ý€DÚ�œþžþŸþ팠þó¡þ¢þ“Œ£þó¤þ¥þ UnboundedÁn¦»�€'�¡ž  ‘Œ/œ�‚N°ØÚ�ØÚD¹ƒ�™¤’š¾œêƒ÷iØÚ³ækIóŠóŠíóŠ'óŠóŠóóŠæ³ßÕˆ— !¦ ï!]@řǙș­É™Ê™àË™óG*¤�R{9 �ѯ�ÑïOØÚIÈË C¡ž x¡ž �¡ž Ñ¡ž Ú Ùœªÿ ŸåŸKºÿŽ ŸkŸÊé˜ .ý˜ %¦+�Tî…ħ‹ŒA Œ¥ �Œ¥ <£§ç§ÞÄ�«Œ¥ Œ¥ Ç£§£ç§iƒœ !ϕБŒ+‘Œ2|„ħ+¸øóŠIÇXÓħü¾’3 í% î’÷’»ü÷‘€í%í%ñÿï%ש–ð%›€–ñ%—»–.´` &-x¬ž’³þ,‡’ÞÐ,Ž’›€“(¸ ÆŸ “ ²ÝÀ¸ ñŸ ²Ý³þ+îÝ@¸ �  ”²Ý +  7 îÝ ¥¤é²·¢§puÓ¸ ËŸã%î ­àú þŠ·á²Ý²Ýîݱþ²ÝåîÝ팑õóŠý\œju±þîÝiŒ‘îÝ7¤é”(¹ ᥠ•²ÝÀ¹ —¦ ²Ý³þ+îÝx¹ µ¦ –²Ý + îݸ¹ ʦ  —²Ý ØÚ,  îݰ¹ ç¦  ˜ ²ÝÈË ,8îÝ Æß .4 &ðõ ¾ à ‹�g¹ æ¥ì%ƒ­à� �˜œ·á¥²Ý®²Ý�îݦ±þ¯²Ý|î݅󊎲Ý[îÝd–Á m²Ý9îÝB âÈNâÈW0œ>I±þîÝ=óŠîÝ –Á îÝÙ¬©îݦÆß| (º œ³ ™²ÝÀº ˳ ²Ý³þ+îÝXº é³ š²Ý ÞÐ, îÝXº ú³  [²Ý *  6  îÝÜáÏž îóÞ㬱 y ~º ¡³ô%5­àB á N·áW²Ý`²ÝOîÝX±þa²Ý.îÝ7·Ø@²Ý îÝŒ‘óŠ'ÄœÒݱþîÝÑ·ØîÝŸŒ‘îÝlÏž (» œ¹ ›²Ýø» ̹œ²Ýá -îÝØ» ñ¹ �²Ý řǙș­É™Ê™àË™óG*¤�R{9 ÞÐÞÐv  ‚ îÝíò¤éÿðõ¼Á!» ¡¹û%= ­àJ õ%õ%Æ€÷%¶¶–ø%Ùœ–ï{“ò yª‘·áš²Ý£²Ý’îݛ嬤²ÝoîÝx  °¯‡‡²�òœ å¬îÝÿ…²îÝˤé*8¼ êËÚ×ðÈ*2(¼ ¼Ë ü%¼ ÁË€&/Š×; Š×FÚ×…œË�_iðȪ(½ ÃË ž ²Ý8½ êËÚ×#îÝPU¬·bgRt½ ÈË‚&�­à›Ü³£·á«²Ý³îÝ¡ œË¬œË´×œäîÚµîÝᬷ( ŸÙ ¤Ù‡&(-Ú×:œËBKU(Ä ¬Ù Ÿ²Ý`Ä ìÙ  ²ÝãØ,8îÝej¥¢w|glŽÄ ±ÙŠ&©­àµœË½·áŲÝͲݻîÝà  ãØÑï¸Ùüœ í¸îÝ¥¢)`Å ìÙ  ÷ãØ8Å ³Ù ƒ&Å ºÙŒ&/Ú×;ãØgJÒ¹xÆ ¾ÙŽ&Æ ¼Ù œË'1`Ç ìÙãØãØ+0 ù±ãØãØGLTÇ ÉÙ‘&HÇ Àٜ˜Ë︖︞8î EOÑ»È2Á(È –ÛÈ ›Û˜&(-ãØ:ï¸BKU2ÁHÊ ÊÛ  ÷,8Ê £Û ’&Ê ªÛœ&/ãØ;’¾tJŒ¾…Ë ®Ûž&Ë ¬Û ï¸'12ÁHÌ ÊÛ’¾’¾+0 ù±’¾’¾GLTÌ ¹Û¢&HÌ °Ûï¸ï¸ ’¾™‰Á¡;î HR¬ÀË2Á\ñèãØ’¾4€é â‰Á¬ñè¬ÀJ5!ŒéâüÁèK$âèœË,Øè‰Á”‰Á‚?¬Àƒª  �é „éðþ⸉Á’¾#+(Ñ �û ¡ ²Ý€Ñ ¿û þ²ÝœË,îÝ@Ñ Õû ¢²Ý +  7 îÝ¡¦¤é³¸£¨puÔÑ ”û©&ï ­àû £&£& ƒ¥&ã�–¦&˜–™B¡½¢Ùy%@·áI²ÝR²ÝAîÝJÚµS²ÝîÝ(Œ‘1óŠ:›œ©´ÚµîݨŒ‘îÝu¤éÓ(Ò ­þ £²Ý€Ò âþ þ²ÝœË,îÝ@Ò øþ ¢²Ý +  7 îÝ¡¦¤é³¸£¨puÔÒ ²þ°&ï ­àû ª&ª&წ&ã�–­&˜–¹uÒöÙ@·áI²ÝR²ÝAîÝJÚµS²ÝîÝ(Œ‘1óŠ:›œ©´ÚµîݨŒ‘îÝu¤éÓ¨Ó ¿-ýÝà’)1°Ó È.ܧ„—)2øÓ Œ>çºõŒ*3(Ó °+ ±&Ó µ+Ó ´+A¶&P˜Û\—�dýÝã“ܧí«ªõçºÆÇÉΟ©à’X„—)õŒùýÝšDùmܧ”ùm<‚nÛ¨+L‚n‘n‰üÐmA$êm—�,àm«ªn4Û¨uDÆyܧÔyŠü‘yCܧŒªy—�, y . tÊ�<Ï� Š$Ê�LÏ�xõÊ� ·²D#/ðØ|Ê�m›†ŒÛ�Là� Œ$Û� ê�dà�«öØ�‰´ðØØ´ Ñ�÷Û�  �%­ãŽ$) 5  ”Û� mÅžü¿�/T¿�™¸ : '�øì�‰´ðØØ´ µüº�5 Å™‹¢õ�  ‹ ü‡�n&-4 †Œ’æ �´l¢�—�,˜�‹¢î•Æ/ܧf�›†þÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^شŞ˭ãFHÅžŸ«Æ $ðØØ´Ž�Æ ˆðØØ´Žê DôÐJ·²#ˆÒĉ´1ùÒ`™¸‰´n1tØ–<Ý–ôÐ$Ø–LÝ–xùØ– ·²B#/ðØ|Ø–m›†Œê˜Tï˜ ‘$ê˜ dúæ– �%­ãØ´ðØØ´#0Äüê˜\ü˜ ×  lü˜üê˜$   �™' ¤ž™\¤™ ï§,ž™ °™ t¤™¨ûž™  �%ØÚb  $) 5 ¬ž™ m¤µ™\»™ÏÚ,µ™ Ç™ t»™£ü²™µÙðØØ´0ɨÿµ™ ”Û†#/¬µ™müµ™$\Ë™£§2 ×™tË™› €É™µÙðØØ´0Áøýµ™% ”Û…$0üµ™%mü�™> üç˜ÀþÙ™µÙðØØ´0¥Œù™Tþ™ˆÙ$ù™dþ™üù™#,‹š ÔF‘š,–šŒ‹šø�ù™$  �%řǙș­É™Ê™àË™óG*¤�R{9 Ïžžjo{üù™$mÏž X¿‚œšµÙðØØ´0åTϘ DÛ˜ T½š#çºÔ½š Þ"çº#1"")Èš Õw•¦"]TÌš!|Èšü½š#4Øš ÃX•¦!€ DØšø…½š$  �%řǙș­É™Ê™àË™óG*¤�R{9 •¦ ”jo${$ !ü½š$%m•¦øƒ½š% »–%3"Î†àšµÙðØØ´0ôQ&]&#$ü½š%'m¯€Töš-çºÄöšåâ-+,%„ᚵÙðØØ´0èP�›Žã,{D…›+&l�›üöš!4�›Éã+–*'D�›ø‰öš" úã*A)($.)0.)*üöš"/)m•¦ø‡öš# »–/3(+ƒ"Š—›µÙðØØ´0©Q0(]0,-üöš#1(m¯€\¶› ¼›ж',¶›3.,¼›¶&ˆ˜›µÙðØØ´0ÜLÈ› Ì›ж1È›4/,Ì›ü¨›+ 2 Ú,34ü£›1 řŞ2Ú›0 Œ)üŽ–ÌüΖŒ   f üʘ�¨¯¶ ü  q lszÄ4;B�ü±š©“š¡ï!�üìšn18!?�#½Ä%Ë'5­ãd·–—�,Ÿ–,¦–•Æß ܧ W ›†® øíÏž—$ V ã“Ä ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ ØÚ_ y ã ÁîšØÚ Áît ØÚí åM I”ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ÏžÇà`ã“•qÏž²ò©æÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´•¦è€ä#řǙș­É™Ê™àË™óG*¤�R{9 »ÉÑèíÚÇÉú†•¦Öû¯€]ò©0ýð–€äÉàñPèíYÇÉy:•¦Š»¯€Åž{µü÷¾¾Ò–Æ X ðØØ´Žº ˜ù ­ù Æ  ðØØ´Ž† Æ h ðØØ´ŽÜ Æ Ü ðØØ´Ž3 Æ ¨ ðØØ´Žô ‚,µš'Æ ðØØ´Ži%Æ ’ðØØ´Žÿ'’ðš 1Æ ¸!ðØØ´Ž#/Æ H%ðØØ´Ž©'1½"ôÐ{·²VˆÙ÷µÙdîÙ ÏÚE”ÛÏÚ­ µÙ”ÛK £§ø µÙY ”Û˜ µÙŸ ˆÙú †àÕ Áà  µÙ§ å⇠ŽãŽ Éã5 úã »–i µÙ åâØµÙ~ ŽãæÉãoúãL»–öµÙZжzµÙ ж/\�©$’© Ž$�©4’©¬�©<™© „R·&·&Ö„¹&ɾôº&ƒ ôCkŠË@Õœ2…L™©<È©tÈ©$Щ ÆQß?ß?FlattenÁá?ð†?#TzÛúé=šùd4ЩLÞ©  ¤²ÝüÈ© 4ש ÷WÅžš =Œ×©üÇ©"  ‘ýÅžD¿©[.4‡ª  ˆªŠü’ªp  ŸŠ²ÝUÿ “ú²Ý ü‡ª|Žª Ô+ŠŸŠ©ü¶ü²Ý ¨ Œ üŽªuä�«  ¯«šü‚¨­üû¨´ü¬©ƒü󩼲ݲ݊¼Ù¨—�,®¨²ÝD½¨“ú\ÿ¨šùٲ݊ŞȭãM¸üh²Ýýùýl÷©Š”ëü|¸ü…ƒý�†¸©‰ whole_matchÁ\°© group_matchesÁy  æø›”ùt�úŠû�¼û_ÜüÉ<­ª¸üt­ª$µª�ú.4µªÌê ¥²Ýü­ª04¼ªŠûY7ü¼ª!D쪲Ý$ôª¼û+õª$‚«Ÿøü¤ª^²Ý•ª ëü “ªÅž¨ª­ã²Ýè¸üL²ÝU¸©<ƒ©¸üý�`²Ý¾å[“�úiŠû/¼ûñ _ref__matchedÁ_ref__haystackÁ\ç¹$ì¹æø$ç¹4칬ç¹<ó¹”ùCLó¹<¢ºt¢º$ªº�ú)4ªºL¸º  ¤²Ýü¢º 4±ºŠûY 7Œ±ºü¡º"  ‘ýȚŞD™ºW04Ạ ⺊üìºp  ¥Š¬üÝô Uÿ¸üÝô  üáº|èº Ô+ХЮ†º†Ýô  ¤ ˆ üèºuäç»  ‰¼ üÓ¸¶üÕ¹´ü†ºƒüͺ¼Ýô Ýô Š̱¹—�,…¹Ýô D”¹“ú\Ù¹šùTÝô ˆÅžÀ­ã ¸ü%²Ýõú‡lѺìþ‹ì†s¸ü|~ý��¸©„¶þ\ŠºÏþ^ æøû”ùÖ�ú¤Šûj¿…B݆®<‡»¸üt‡»$�»�ú.4�»Ì�» ¥²Ýü‡»04–»ŠûY7ü–»!DÆ»Ýô $λ¿…+Ï»$Ü»¥Ùüþº^Ýô ïº ì†þ íºÅž‚»­ã²Ýè¸ü-Ýô 6¸©<ݹ¸üý�EÝô ¾å[t�úiŠû/¿…ñ·‚Ç‚ $ØÐ Å™›†|ÍÐܧTòÐ纬òÐáº,#DýÐ íw•¦UTýШ“òÐ  ‘PµpµpIterMutÁ¸pí óo¹p¦‡óoºpüðóo¥hECØ8G•¦¼uzø“æÐG– ¥ª ÆQÑŽ ¼ÄÉ Õ è$êÐ à‘ò$žÑ Å™¯€d–Ñ  ¬³Ñ§ü«ÐˆÒØ ÂÐæÒL¸ÐܧÑŽ‹ÑŽãú¦ì‚É ÑŽ¯„ø¸ ÑŽÄD‘ò敦Ôo�óùÀ ¹áºb�ŽiËŽ!ë�(tŸâܧ´â¨üßáU”âæÒLòáܧýá¾¾I\ãòçºåâ(0ôò©ü«òIèí´Âò—�,¸òÇÉo9åâŒ|‘öçºáº)1¦öªüÍõYú¦ÔìõæÒLÞõ‚Ép9áº��Ü €…—�øÜ ˜…7ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—ê&ê&ñˆì&ÛËô#Ã/6$Û‡Œ †Ø–ž¦(Ü È„ ·&Ü Í„½&4šù@ šùK—�" —�.Ø– Ø–~ˆ †—�gÕ—J(Ý Ï„ ¦²Ý�Ý €… w²Ý—�+îÝøÝ ˜…7§²Ý Ø–-  9 îÝ¢§¤é´¹¤©rwÕÝ Ô„À&ð ­àü³˜·á ²Ý²ÝîÝǘ²ÝäîÝì ܘ÷ܘÿ^œlwǘîÝkà›îÝ9¤é–˜Þ ’Æ„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�ÍÞ�þch †Ïœz‚(Þ åÅ Á&Þ êÅÅ&/ýÝ;ã“CÏœÒ ÏœÝ_i©�ú(ß ìÅ ¨ ²Ý˜ß ’ÆÏœ#îÝPU¬·bgRtß ñÅÇ&�­à›ã“£·á«²Ý³îÝ¡ ’ž¬’ž´×œäîÝᬷ˜à ’Æ  ÷Ïœ8à óÅ Á&à úÅÉ&/ýÝ;ÏœgJß xUt›íK J)I1<HDOGWbKj¹á ¾ ©á ¾  ŒC×�×�P+¹â ¾ ©â ¾  ŒCää’éèì Ïd�žä`fžš×��î �þAa¹ã ¾ ©ã ¾  ŒCž™@&ü¬ížJ  Ê& ¾îtóîK  ÔóîL‚ï ‘Pµ“ AN\‚ïüóî&LŽï òQ�Pµ“VN\ŽïøŸóî&  ‘PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Á¥•Nej øŸÔî„ ‡  –› ÆQù¥ ­ ?¶»  Ç  ðØlÙî àƒ4èîI  àÛ§ß§ìÃðtÃð ˆ*lÒð L%Ÿ×ù +NüÃðY<òð Ç_›†ú‰¶ß ímüúð!‚©  Lüòð*ø ÃðZ  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw›†¶ß¿Ly~Š üÃðZm›†4ÂñI ”ÂñLÉñ ‘Pß§AL\Éñ¡œñ[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏï¶ßƒv �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwýݶß׫ßQLûôÂñLÕñ òQ�Pß§CL\Õñ ßñH \ôñ ”ôñ $€ò ÆQƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Ç­nJ4€òm Äîñ  � àřǙș­É™Ê™àË™óG*¤�R{9 в¯{   ‰ô Jü™ó* ü™ó% ð¿ó>'ü¬ò# ô¬ò ïËò>&ü¨ò( Àœýݶßü¡ò/ 6ü•ó/ ÀœýݶßüŽó6 6T—ô !ü—ô |¢ô á!,²ô J¤¢ô\úõ H  #X¢úõ   ‘P¦®#@"J%* $"ø¢Ùõõ G &$V [ ®&g%=pu '%� '  \Þõ (%யTëõ G  )%ய²¯äó÷ |ó÷ ë(\ƒø,!H%¢Íù $*Jü˜ø] . /( - ˵“ß§÷¯Є¶ßUÿãÉóŠ./üó÷ƒ <�ø Ç_×�Є¶ß˵“ß§÷¯¥µ³µ,Û-¡+"Hü�øfø£ó÷„   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw×�¶ß+Î*#Hz 0*‹ 0$% üó÷„ 2*m×�T‰ù 5T³ù G  6)ü‰ù5 ””ù â÷¯5R§ù2,¬ù6W4&Hü”ù*¤öø 1*[׫M#¼¬1/RHhø¥‰ù6   �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¶ß4ô3'Hx} 73‰ 7() Ò GÛÁ ¦¾ù 83[׫×"¼¬8.SHñ ×ùH T I] Z Táù;ôáùŒìù å;+:,Nœìùø§áù ¢¹:C9-N %<91<./ ´Šú?…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅå¢�þüŠú&l¡ú ¤Cå¢�þ?x>0N|¡ú¨ÿù=9[׫è"¼¬=.TNĺúA…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ—£�þüºú(lÓú ¤C—£�þAx@1N|ÓúÄìúCã˜üìú(l…û ¤Cž™�þC9B2N|…ûT´ûJ F¤«ûD«û é8ÍÞFBE3N'ü¡ûD Á&Eüžû# ÀœýݶßD ÆûJ <( G5C8 GAO $EJ£ EJAHJðØ8¢ I9F² I» É  :NÄ;PÒJÚç<Çû $JW J5  N ÉîAPüÎëùg )5=J7L[H7D« 9?¬ )=½ G=G¡L²HLI?I?KP JPM2BCKBO8ž494Ú:Ç4ü—í°�¤ü¹ðŸ P W ^ Ý ü¬ñ¬¶  ½  üç÷ç ÿ    ¨! (/ ü‰ù6ÅÌÓüáùL¬üøë!µ“tâëÍÞöϼˆ•¾_ã˜ù¥ ù¥LÁ¥…µ“²ù¥.řǙș­É™Ê™àË™óG*¤�R{9 Û§| ù¥ˆµß§š›†½ðÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^׫›†;Ä©“ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw›†ú‰0•׫ž›†¦®|°ñÇ­éߧřǙș­É™Ê™àË™óG*¤�R{9 ®¯Ã ¦®á<ëò$™ò¶ß¤ ¶ßÛ   ÍÞ8 ¦®Ø ¦® ¦®ê ŠËó ØËü Ì z ²¯e ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^׫×�— ¹¶ý ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw×�Єð 鵺 ãÉà óŠÌ ï ׫ø ×�• ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^׫ ¨¹¨ ’Ìå ²¯Þ ƒ ׫Œ ØÎå ¨¹ ’Ì5 4 ׫= x  ϼÚ Æ •¾( � 㘳ýÝ"ÏœWÍÞ„á &pattern_groupsÁÙÖ]Ò�Î pattern_indexÁgroupsÁò¾¾\Æ 4ޏ groups_iterÁ§ �Ú $ÊÚU ( maybe_nameÁM )groupÁ,ë÷ 2Æ  1Ž´ 2Æ 2 8ŽðØÆ Ö =ŽðØ5ߢz‘£Où£îŠ¥_»¥6󥃧 ®¨×ù¥²ð¨¤¾©\£«~¼¬jÁ­n ®ŠË¼° é°ã„²OÙ²ÿ ®¾´)¦®×µ ³¶Jž¸f¼¬X¢¹ï ¼¬ö ໿ ¢¹š ¥½ ¼¬¨ ë¾Q µ¿ ŒÀ¾ ¦®fŠË°ù¥„ÍÞu ¦®‚ŠËÌù¥ •¾a ϼh ²¯¥¦®~ ߧò¯º¦®“ ß§ØÍÞÉ µ“Ð ÒøãÉ\×øóŠü²ø1ü²ø î_C(õøËT¶ß›øéµlЄ ™ø›†±—ãÉ�󊘾¾„ãÉÊÚHóŠÆ’×¾Û¡_ref__group_indexÁ0Á 4–‘ Ïœ¤–‘ Þ"Ïœ 1"'•¾ü–‘(  Þ"•¾V#¯‘ t¯‘D³‘Á½ ( T³‘b«‘ Õw—£º Kœ«‘ø©–‘)  �%řǙș­É™Ê™àË™óG*¤�R{9  —£ûmr ~ ‘ü–‘) m¸ÛŒÉ‘Ñ‘ �žš×��î �þ <É‘$Õ‘ LÑ‘üª¾‘ �%ØÚØ´ðØØ´# ,ÔÉ‘4Û‘ ÄX×�Ÿ DÛ‘üÉ‘0ä‘ þW×�Ï×�UÿkðØàÝ„è‘ ¬ä‘ÿ‘Îüº�Åüˆ‘wæìòaØÚlð�ã“,Ê�›†Ñ�²Ý$á�ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´¸Û„óÚ#  —£0 •¾w ÍÞƒ’ž£ ãÉ:Ó¸ÛEřǙș­É™Ê™àË™óG*¤�R{9 ×�÷řǙș­É™Ê™àË™óG*¤�R{9 Ò¹Åq¾¾u‚ xindicesÁ<Œ‘ Æ ÂðØØ´Ž?   ™Ù¼ÕÙˆÁ½V¶Ú–íÚ¡ÜZèÜ¡ÝèÓݾ ì‘dì‘Dî‘ î*Tî‘ø‘ÏÑë‘àÝè×� é‘Ò¹yŸ­ã‡4ü  Ïœ¤ü ™Ù +!ã˜üü (  Þ"ã˜P#•¡ t•¡D™¡Á½ ( T™¡b‘¡ Õwž™´ Kœ‘¡ø«ü )  �%řǙș­É™Ê™àË™óG*¤�R{9  ž™ûmr ~ ðØüü ) mìæô¯¡ Þ"ž™ l¯¡ %⬤¡ �%æ¯Ø´ðØØ´#d½¡ ÕwÙ™g\Á¡ „½¡ø­¯¡  �%řǙș­É™Ê™àË™óG*¤�R{9  Ù™ ns ü¯¡m½éü¯¡*DÏ¡ ’Xžš:Tϡܮ͡‚èðØØ´ß¡Ð ü” Ëüè wš¡¨ükqwÎæ¯dÑ ã“,£ ›†ª \º ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ìæ8§æ×  ž™äÙž"ˆà+’žKÎãÉè›ìæñÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´½é”øè8  Ù™Eѽé+O¾¾SÊÚXÁÀlì  Æ jðØØ´ŽË Æ ?ðØØ´Ž¤! ™Ùd‰å6Á½êåD¡æµÔç‚èøèò耟êۂ莼­­ Ïœü­­6 ™Ù ,"ã˜ü­­[ ‰åKù­ tù­Dý­Á½ ( Tý­\õ­êå¦ Bœõ­ü­­Šš® þWìæ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÙ™ÒìæìñUÿðØ»òÄž®ìš®Ó® Ñ Ù™+ „îLÓ®$Ö® ìwÙ™ [ 4Ö®ü­­°LÉ® ùWìñ5 T¤É®ü…­ã ê&î®Ñü²¬¼——Ìá¬ã“,Ǭ›†άìñ–řǙș­É™Ê™àË™óG*¤�R{9 ìñù§æ‰×ì’ٞшàÚ’žú‚ãÉœìñY„î Žó©Æ¾¾Éú™Ù;‰å Á½àêåâñšÇóºøó’  Ù™(ÑhŽóF�óOWt¨®Ôç<¨®&$°®Çó&4°®¶®Ò×ìñ§®»òïìæ<Ÿ®„áÔçªÇó°”Ù½\Þ½îÙ$Ù½lÞ½üɽ#|ɽ –*F"$‡¾ Å™›†$ ¾ řؖü…½ª ó&µ¾Óüʼëó&ó&ɉõ&Ö]ôö&ò‰ô÷&þ‰ôø&ƒ ôªõ*ßÿçŬå¼ã“,Û¼üŠ ?ܧõřǙș­É™Ê™àË™óG*¤�R{9 Ø–)sìîÙ³ÙùŽÜîÉ$óÉ Ö$îÉøÉ\ýÉ´óÉüîÉ;ŠÊ þWÏžÕ‚Ç ÏžUÿwðØÀýÔŽÊüŠÊ¯ÊÔü·ÇøÇà´‘Èã“,ÍÇ›†ÜÇ\ôÇØÚè)¾¾,ÊÚ0kôü!³ýêLžÊ ¦Ê”–Ê ¨ÊÕúÏž•ÊÀý,�Êt‚7 œ¼ÑLÁÑ Ø$¼ÑËÑtÁÑü­Ñ"$åÑ Å™Ã× „¬Ô »Ô&ÐÔ tÐÔDÔÔÁ½ (TÔÔ4ÞÖÏœ”ÞÖ™Ù+ ”ÐÔ áÔÄËÔ Å™ü©Ô” o  ϼ,ðÖ ‘ýϼ›† ¢ñÖ /,ÒÖ ×�,ˆ× „ˆ×DŽ×­ã( TŽ×Œœ× «×¼›× °×üˆ×*üƒ×0 Å™ ÖüØÐëüÍÖpØÚl’Ñã“,äЛ†ëÐ\ûЩåoÒ9ãÉS×�V 墖 ϼ%ˆà.’žNóiÒ¹ƒ/[«¾¾®ÊÚ²‚Û Á€§Á½ë™Ù´ƒ8­ãå4ºÞÏœ¤ºÞ™Ù+#\ÁÞ èPlÁÞÔÞ×ü�ÞG,ªÞã“, Þˆà‚’ž¡@™Ù§Çˆ­4‹ëÏœ¬‹ë™Ù+#L’ë éPœët’ë¦ëØüÐêV,ûêã“,áꛆèêˆà•’ž´'¾¾*Y™ÙÈ–ŠÎ|ÀùDÅù Ú$ÀùTÅùœÀù Òù!5 F FÙùÙü‘ùH,°ùã“,¦ùÈ¢=Ñ‹ë4†�Ïœ¼†�™Ù+#t�� êP„��Iü†�"Dž�­ãoTž�®�ÚüÜ€R,ö€ã“,ì€Ò¹¸×�ÀˆàÈ’žç,P™Ùíþ�ó­ã¢”ýŠ\‚‹îÙ$ýŠl‚‹´ýŠ ’‹™‹ÛüÊŠO,íŠã“,㊆7îÙ£|�–D†–Ñ‹$�–T†–Ä –Œ¥–ʹ$ –œ¥–ü�–8t‘–Á¥pIü‘–(¿–ÜüΕq,ñ•ã“,畾™>Ñ‹âʹ¼Á¥– ¬ÿ˜œÿ˜ ÙÍÞ 4£™ Ïœ”£™™Ù + ! ϼÄ£™¶™ éCå¢�þV,¶™ü¾™ì¾™ Ùå¢ !ü£™: üÿ˜^4ì™Ïœ¤ì™™Ù+!•¾Ôì™�š éC—£�þV ,�š¬‰šœ‰š Ù—£ üì™2  üÿ˜Ÿ 4­šÏœ¤­š™Ù+!ã˜Ô­šš éCž™�þV ,šäÊšÔÊš Ùž™  ü­š9üÿ˜ç4õšÏœœõš™Ù+ !üÿ˜‰Ž›Ýü«˜ã,ɘã“,¿˜ª|N3qÒІˆà’ž9ÂÚ:üßxˆà�’ž¡*B¢Ùžàˆàé’ž ’7ˆà@’ž`Þ �“™ÙЀ”¢´”v™ÙË•ìþ•À™Ùd–—6É— ™Ù®(ä ‚¤ ©²Ýøä ¯¤*ª ²Ýϼ-îÝøä ߤ"« ²Ý •¾- îÝøä ‡¥) ¬ ²Ý ã˜-  îÝ˜ä ¶¥  ­ ²Ý+7îÝ$Æß 28$*ò÷ ¾ à Š�kä ‡¤Ð&‡­à”ˆà�·á¦²Ý¯²ÝžîݧІ°²Ý{îÝ„üß�²ÝXîÝaÙžj²Ý5îÝ>Œ‘GóŠP.œ<GІîÝ;üßîÝÙžîÝÓŒ‘îÝŸÆßz øå ¯¤*  ÷ϼ øå ߤ"  ÷•¾!øå ‡¥) â­˜å ¶¥ ‰®8å ‰¤ Ê&å �¤å �¤%gÒ&vÍÞ‚ϼ•¾üã˜ÜÁ©î C•¡#â­‰®ç㘜•¾¢ϼ¨7±¸W V)V1„¼¸ϼ,̸ ª#ϼ›†6͸5/ä·¸×�ô¸ tô¸Dø¸­ã ) 5Tø¸”ô¸   …¹üä¸#|举´ > 5!ü�¹R 䊥µãÉÒ¹üä¸<ˆ¹ Ç_×�Є¶ßä ¦¥µ­¦ ©ˆ 5üˆ¹[ø¯ä¸€ ³¶ l5!&2Eü一m×�üݸ‡T‚ºTõ¹ °ã¹[׫¹" �%¨¹׫865Ý$ú¹V à ¦$·ºl·º4¼º ¥ ¦0 -D¼ºü¦º„¦º ®žš²ÝU -, ĺW ”Öº•¾,èº ‘ý•¾›†6éº 20$ýº,üº Þ"žš+ 2#üÖº,dîº «žš×��î �þ¼Öº4ûº2¤îºJ,¿» –« "2+ü »%Ì » ñº»T2+üœ»* Àœ¶ß ýÀ*-$ì»#Tì»–«#%"2$ñ» ¦€"L!2,ñ»”„¼&•¾,–¼ ª#•¾›†&6—¼%2/,®¼(Œ£¼T£¼ †žš(/'2'ü„¼84œ¼ ¯žš×��î �þ%¼„¼'`,¶¼$2üœ¼ ”ʼ+ã˜,ܼ ª#㘛†+6ݼ*2/$ì¼W -Tç¼, Å™žš-üʼ($â¼ ‘MÙ™�þ*¼Ê¼,H)2„â¼üò½(üò½& ÙÙ™02#üë½0/!0üç½4. ç½/ü½Y.üÑÀ"üÑÀ  Ù×�12#ü¼À71ÒWÛé 5”’Á4ã˜,¤Áú¯4,¥Á35%$¯Á5 Å™žšü’Á"$ªÁò°3¼’Á5;25TªÁü×Á(ü×Á&°±65üÂÁ=6ü ,¼Ã:„¼ÃDÂà ò:*9!5TÂÃ1ê à ]89$ÎÃ=œÎÃLÓÖŠ=)ÝÃ<"5tÓÃ9ê è ];<‰ê ß ]7 8;Aê € ]>7óŠIê Š ]?7óŠIê ¯ ] A>Qê ¼ ] B?Éê ® ] @AB @$#,´ÄI„´ÄDºÄ‡µI(H%5TºÄùê é !] C ±šáê Í] E Å™�Ñùê �]] ùê � ]Ï•C!ê ®]>Qê ´]?Yê À]EXD5C1ë à ]GH”ÆÄMã˜,ØÄ ‘ý㘛†M6ÙÄL&50ìÆÄÞÄ éCÙ™�þL¼ÆÄK'5,ÞÄ9ë è ]JK‰ë ß ]F GJAë € ]NFóŠIë Š ]OFóŠIë ¯ ] QNQë ¼ ] ROÉë ® ] PQR P)(4îÄ Àœ¶ßðØ ùÄ,ùë é !] S ±šáë Í] U Å™�Ñùë �]] ùë � ]Ï•S!ë ®]NQë ´]OYë À]UXT5C”W�«+5®XºX/,úÄå5üþ³üøV,0 à ¦,0-AW-1GV.4Yà ¦.sY€Y3.› +â ¹ü­¸Í  ' . … ü�ºñü›ºãü⻜ùê ÿ Œ]ùê Þ Ÿ] ùë ÿ Œ]ùë Þ Ÿ] Z¨¹Ô’µ’ÌL¬´›†¿´×�,״řǙș­É™Ê™àË™óG*¤�R{9  ¦Tò´ ×�s å¢+‘ÐLäÌÑ ¹¶. ÇÍ¥ Ó Ò¹â¦¡ ãɪ Ò¹³ ƒ ׫Œ ×�å ±  ¦` žš$Ÿº²Ý6   ¦S I ¸Û üß⠲ݎ  žš« ¶ßî ²Ý) œÂ2 滲ݟ œÂ¹ ¿àÚ  —£Y ¥Ðz žš& œÂ@ 1  ž™± ¹ÐÒ Ù™m žš˜ è 3 ¼ü—ÃJ¹ÐkÙ™2ì¡›óŠu§Ò¹ÁóŠ<tˆà�óŠ0óŠ#ðˆ— !ê â ] �þ›§¡›¦óŠTÒ¹óŠÚìæWÙžwóŠ×óŠÊ—ùˆ— !ë â ] .þ›T~‘ �•i¾¾mÑÑq»Ñ0’£Æ Sޝ‚ %‚ ȶl!é˜ ¥ >ý˜ œ ?¦e Cé˜ æ Ný˜ Ý O¦ÿ S€'´¤ê­ã•¾´NЦç³¶šÖ¨¡éˆ÷©]Ъ–«ÇÄ«¤–«RϬ'žšÜ –«Á ã­È £®k ì®- š¯ ú¯© ò°< °± ¯²Ž  ¦"ú¯ ò°Û °±¯ ‡µW –Š ‡µ< Ï•æú¸}´¹MÏ• ¦o ¦v ¦qžš„ ¦¹ãÉ,ǹÒ¹„ǹD͹­ã-T͹ü¢¹6ü¢¹’×yG&â¹ä϶ߓ¹â¦çЄ ‘¹›†Ë›ãÉ Ò¹¾¾9ãÉÑÑAÒ¹A­ãå’×ÂÛ¡ _ref__groupÁÀì ¤ß÷ß †÷ß08(ì õÞ Ó&ì úÞÖ&/¶ß;…�C÷߈ ÷ß“_i‰Í°(í üÞ ®²ÝÀí ¤ß ²Ý÷ß+7îÝdi¥¢v{fk�í �ߨ&¨­à´…�¼·áIJÝ̲ݺîÝ òÍÍòÍÕøœ�ÐîÝ¥¢%(î êà+�î Žî ¶ˆ›†`î Ê‹Ï>C²Ç  O W�î �ê ”ˆ›† %²Ç  1  9�î Èç ÷‡›† %²Ç  1  9�î òãч›†pî óäч=B²Ç NV˜î žâ·¯ú‰ % †ú‰7?© Ù&î îà ¥Ú Ù&4 ü Ù& S  Ù& r ìò †‹Ï d Ù&¾ î ïàç&œ¢©°·¾÷ßÌòÍÕÝ ú‰„ú‰�ãÉñóŠÜ›†íãÉR›†[ãÉ¢›†«ãÉ ‹Ïþ›†%‹Ïjó­ó­|ϰ kó­Ô ó­ ó­ˆ ϰ wÐ²Ç ©²Ç T²Ç ²Ç æáÓ’ó‹ÖšÕµ(ï ñà+�ï Žî¶ˆ›†`ï Ê‹Ïnv¯ ²ÝQY°²ÝfîÝY a±²Ýn"z!"îÝÝâ¤éïôÇÌ ³!¸�ï �ꔈ›†4=²²Ý5=°²ÝJVîÝ…¥¢“™‰Ž¬�ï Èç÷‡›†ÐÙ³ ²Ý5=°²ÝJVîÝ!¥¢/5‰ŽH�ï òã ч›†pï óä ч‰ ’´ ²ÝR Z°²Ýg  îÝZbV²Ýn zîÝùÿ¤é   Ë Ð·¼0˜ï žâ·¯ú‰T]!²Ý4<T²ÝHTîÝ�£¥¢±·‡ŒÊï öàé&æìóú#­àòÍ·á(0´Ö²ÝB²ÝîÝ ´Ö*ãÉóвÝ{²Ý6îÝ?²Ý*îÝ3Œ‘<ãÉÿ²Ýº²ÝîÝŸí#ãÉȲÝç²ÝÚîÝãŸíìãÉÙ™×IJݲÝôîÝý²ÝèîÝñ ™×ý Wœeó­>ó­3 ϰ " ó­éó­’ó­ƒϰ rË ãÉîݧ©ãîÝ“¤éêŸíîÝÞ¥¢ûŸíîÝS¥¢ ãÉîÝÈŒ‘îÝ´¤é'¼áîÝû¥¢8øú °‡+ìñ †ìñ19(ú ö† ê&ú û†ï&1——= ——HìñŽ ìñ™dnËå¶(û ý† µ²Ýøû °‡+²Ýìñ,8îÝej¥¢w|glŽû ‚‡ò&©­àµ¦æ½·áŲÝͲݻîÝà ¹æιæÖùœÉèîÝ¥¢&(ü ÍŽ ¶²ÝÈü üŽ “ ²Ýã“,îݘü ›� ·²Ý üŠ, îÝðü ´�  ¸ ²Ý ܧ,  îÝøü Ø�? §²Ýèû-9îÝ#Æß 17#)ò÷ ¿ Ä Œ‘jü ÒŽû&†­à“ æúŸ·á¨²Ý±²Ý îÝ©øÊ²²Ý~î݇Òï�²Ý\îÝe«ªn²Ý:îÝC  èûRµí[6œDOøÊîÝCÒïîÝ«ªîÝݳíîݪÆß‚(ý �$ý •$�'&+¢ã8 ¢ãCLV 10Á&ü…º\Œ´ŒD˜ §€(!T˜*\À ´ÀDÌ ¯€ ( !TÌü³$4³ É$º$ Q!05 ü­* ðØ † à\¬å¸ àý ,· ‘ýâäH?!*üžD¢ ¨5žŒ«  !Ü¢\Þçê Ìý ,é ‘ýÌýÌý¾Îý‚É>�ÌIFëTul !WüÏ\¶´¶D—ð% !TÂì¶Í¥À< Ñ !4Íü¶;4Ô ƒX¡ž œ¢ÆÈÆåÀUÿ,Û ðØßôtâ !ìÔq�  ¹²ÝŒ€ D„ —ò€ 5!l„ \® éº  Ìý º ,¹ ñòPG!!üŸ ðØ\¹!´¹!DÅ!—ð%!TÅ!ü¬!$d¬! ¦?!!& ü¦!* ¬"# ¹²ÝŒŸ"D£"—òŸ"#5"!l£"<ä!!àƒ'ƒ'㊅'ýŠ”†'’”Mj'Õ÷É«A\­#(\¹#*!hí¹#) Ìý*|¸#ñò(Q)6'!!\Ñ"%ëÝ"& Ìý Ý",Ü"ñò%P&G$!!üÂ"$ðØüž#)'\×#+!™'›'œ'ª�'ó”ž'Ÿ'³Œ 'ó”˜qûî_†`íŒÑ#+$ª$/!šûª²ÝlÖ$1œÖ$2 /% Š#ìô²Ý1=230!< ý#,!šû³Œ4ƒ$-tƒ$. ,( Š#åô ‹Ï-E.;$!D·30<Ì$3 Ñ$40à4€%6t€%7 4(¹ý647*5%!3\Ñ%9ÌÄ%DÈ%—òÄ%9,8!¬È% ß%" à%,"<#üÓ� ^Ú™(ü�|ü˜!§Äß!üñ# üŸ$�üê$7:þ²Ý|æåôT�ìôŒ±Çýë›Í²ÝæØÚlÝô Ÿ²Ý¸$æ/²Ýü²Ý1âä,²Ý‰²Ý¾úò¹Ã‘ Ýô 9²ÝRM²Ýo²Ýö²Ý<úò7řǙș­É™Ê™àË™óG*¤�R{9 ÝøÞÝô ²Ý'lß!Ýøw«²ÝͲÝ�²Ýãúò޲ݲÝbúòKetñ#² åô Ãýš²Ý>ØÚ ìô5Òü/tiJ¥„bÃý\²Ý5 replacementÁMappendÁW¡†\dstÁcŸ\  cap_refÁ<œ!!ù„Ç!Ÿ®,‚ (/Ÿ14QÎïˆ —ðF Âð# ãñ† —ò\ ñò —ð’ ¥Àr Óô< —òªñòHÎï´÷ £² É‘ ‡T]—ðÍ÷ñ—ò™ñòãñò‡Èüž¹ý7¹ý¯—ònìôGåôNìôUåô\ äLç$ì$𜤠4æßô¿ ¡ž ãj˜tã #ü”1œ\›1´›1D§1 ´w*T§1,\Ï1 ÌÂ14Â1Âð$É1$  4-2 ü¼1 ðØ Š2 à\¹2ðÅ2 àý ,Ä2 ‘ýÈšâäJA ,ü¢2(Œ¦2 ˆD�þ¢2 Œ¸2 ü¦2$\ë2ò÷2 Ìý ,ö2 ‘ýÈšúòJA ,üÜ2\Ã3”Ã3Ï3¥À% Ó3 4Ï3üÃ304Ö3 ƒX¡ž  ƒÇìôöôv,Ý3 ðØÞ�tä3 ìÖ3h t‚4$†4 ‘M�þ‚4$‹4$  T†4\­4ô¹4 Ìý ¹4,¸4ÂŒPG!üž4ðØ\¸5Ì«5d«5Í÷%#ü¥5t“6$—6ÊŽ“6$œ6$ T—6<Ø5àÝø\ž7#\ª7%høª7$ Ìý%|©7ÂŒ#Q$6"!\Â6 öÎ6! Ìý Î6,Í6ÂŒ P!G!ü³6ðØü�7)"\È7&šûŒÂ7&$›8*šûª²ÝlÇ8,œÇ8- *%Èü,1-'+0 î7'šû³Œ4ô7(tô7) '( Š#ä� …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ�þ(ƒ)y!‚é.+<½8. Â8/+à4ñ81tñ82 /(á”142*0"3\Ë94üµ9"Œ¹9à‹µ94-3ô¹9 Ù9Ú9,< üà/ú �Û�(ü…2…ü—5™ÄÓ5üâ7 ü�8�üÛ875�1Ýô |ò/ä�TŽ0ìôŒ¿0ï”ù0œÃÝô ÜØÚŠÝô £$ê1GØÝô Ýô IâäDÝô —Ýô ÌúòÇ#‘ÂiÝô ‚ÄÝô QÝô —úò’Ó‚Ýô 4lÓ5Ýø»ùÝô Ýô XúòSÝô �Ýô ×úòÀÚtâ7€ ä�në”h²ÝØÚÜÌ„ôÒüîö×››ïë”é©Ýô   „ι„Ó¡†ØÜ„ÝŸ÷ ù„<›5ù„èŸb'‚ Ð*Ÿ§/ÆÀ‰ò Âð® ª‹ à‹èÂŒŠ¥ÀAÒ� ÊŽ™ÂŒ$À‰´ö4£² É• ‡T]Í÷íÊŽ¯ÂŒ)ÂŒÍÈü1á”Öá”à‹Ïìô§ä�®ìôµä�¼ æ3Lé3$î3$ò3 u4è3Þ��¡ž å3j˜t´(— Í;— Ò;‹'&+1Ýø> ÝøIR\(™ Ú; º ²Ý`™ �< »²Ýšû+îÝP™ Ÿ< Ü²Ý *  6 îÝž£¤é°µ¡¦otÑ™ ß;�'ë ­à÷� ÿ·á²Ý²ÝîÝ  šû²ÝâîÝꌑòóŠúXœfqí¢îÝfŒ‘îÝ4¤é�š ã;“'š á; � #,6`› �<šûšû*/ ù±šûšûFKSZP› Ÿ<&7?GT› î;˜'H› å;� � þí¢í¢®µMî Zdð¤H(œ Ž=œ “=¥'&+1šû>í¢FOY(ž ›=$(ž à=³ŒG O¼²Ý1 =  îÝ{€¬·� ’ lŸ8ž Ë=ª²ÝÀȽ²Ý1=îÝôù¬· nž  =ª'5;B ­àPí¢Y·ábjͮϲÝ{îÝàñ»èóŠi²Ý�îÝ{Œ‘„¹œÇó­2ó­¸ìŒ‘îÝϬ·ñ»îÝg¬·Ÿ ¤=­'Ÿ ¢= í¢#,6 H  ¦=+: Jí¢[ h y�Ž˜Ÿí¢°½Ìí¢Ýê(  à=í¢³Œ-í¢>³ŒVbpu ù±óŠóŠŒ‘™8  Ë=í¢ ª²Ý-í¢> ª²ÝV  b  pu ù±Í®Í® Œ ‘™  ¯=²'JPW^eqí¢zí¢ƒ‹“ší¢í¢¨°¸ÀÍ®2Í®;ñ»Dñ»MóŠôóŠýŒ‘Œ‘í¢í¢í¢#í¢,í¢5í¢>í¢GQî _À‘nØ‘{ó­ñ ý‘þ ó­©ý‘¶¸ã¯Ê�±3€£ Õ9%µ¢´‰ )1è£ µ;%ØÚÀ½ )1(£ š8% ³'£ Ÿ8%¹'2±ý >¡  Fµ¢ºø©ÂØÚ”–Á œoy´‰ ïÀ½ ¿(¤ ¡8% ¾²Ý€¤ Õ9% ¿²Ýµ¢+îÝè¤ µ;% À²Ý ØÚ+  7 îÝŸ¤¤é±¶¢§puÒ¤ ¦8%¼'ì ­àø¡  ·á ²Ý²ÝîÝ ø©²ÝáîÝéêÔñ–Á ùWœepø©îÝeêÔîÝ3¤é� ì©Z%„®Z% »òè$©Z%4¿Z%Ä®Z%5ü£Z#%WñZ%€Û†ƒµ[% ùƒŽ"`  (ƒ´[% Û† §fÛ†4 = ØZ%¯ÄÜ£\%y ýÌ ‰ ‘Á [²  ÀÅ ‹g[ ò ÷ù§ ñ@`á§ ñ`Ìçù¨ Ž"`* ‘\%ü‚Y¡%·TÕZ%üíZ¥%u|ÄÜŒ²Y%¹£ L™Y%òè4¤Y%õÛ/,ÕZ%Û†ã¹�Ñ¥�»Ó�»ìŒÒåýÌÛ‡¼÷µÒ�» å˃£Ù¬ºdÇGÇS ñ¹î¢»[µ¼uÌçtÛ†J Ä¿y%\Äy% ½òè$¿y%4Ðy%œÄy%5ô¹y%V‚z%€Û†…Áz% ù…Ž"`  (…Àz%�»¢») 2 éy%¯�´¯{%n ýÌ ~ †Â V§  µº ‹gV ç ìõù« ñ@`á« ñ`Ìçù¬ Ž"`* �{%ü¥xŠ%¹Tæy%üþy %ip�´lÐx%¹£ L·x%òè4Âx%æù ",æy%ۆ׹�Ñ¥·¾Å�»ÞŒÒ×ýÌÍ“ÂéµÒò�»û}åË�£Ö¬ºVÇ9ÇE ‰Àߢ»MÁÂgÌçrÛ†H,ÿ~%( (4�%\”%µ¢œ�% 9 Š#òè±Ñ O1: †�% ïÛV# / ðؤ�% mÄÜ  Ô‡% ‡ % [Åמ!·Þ -¸ Ú% àö  à% þ%Tþ%4€€% à&D€€%$Â% Å™ö D¿% ÀœÄÜÛ† |¸%„ù% Å™œ�€%ØÚüù'%Õö Q0 ")  â€%4å€%( ü¹€3%ü¾€#% Åòè$¹€%\R ü¾€.%øˆ¹€4% ïÛY  %1 ü¹€4%mÄÜü³€:%‰ì€%[Åך"·Þ.´ ®�%àö ü¯€•%üöÙ%$’�% Å™ö D��% ÀœÄÜÛ†|ˆ�%TØ�% µ¢ í�%"Tí�%4ï�% à"(!Dï�%üØ� %Lã�% æ m!K¬ã�% �‚%%T�‚%4Ÿ‚% à%($DŸ‚%„˜‚%# Å™$ü‚‚&%ØÚ# º‚%'<µ‚%& Å™ö '\²‚% ÀœÄÜÛ†& ‚%((Â%ü§}œ%>M\l(7ú» hüû~È%àçî,dÕ%ÁÈÏ d©�%)õÛüö}%%¹£ LË}%òèTÞ}%ö ]ëåÚõÛ$ òèS±Ñ 9ø©V‡Å×�ÄÜÐ$°%ÄÜö y¢–Á èØÚñc„ç|–Á åëå*õÛuö ±òè«ÐÅ×ÙÄÜ$€�%ÄÜ€ö Âú–ªT5„çOØÚ²â„çüÄÜŒö ¤^ eåËj£ËÆ É Ž  £¦Æ ªŽñ £† ¥èÆÜïÛ¢·Þ© à¼Õö ¦Ë¸ïÛ}·Þ„ à,ðÎ  àÍòè.òè5òè< ,ü…%* *4І%\‘†%µ¢œŠ†% <èÆH(1 ŠІ%  �%æù T%* 6 ðØ¤Š†% m�´  Ô„†% ‹�†% [Åר"Ï�  . ׆% à‹¢ ݆% ö†%dö†%Dø†% ¢*Tø†%$¿†% Å™‹¢D¼†% Àœ�´Û† |µ†%r  ‹‡%<‹‡%�‡%µë( ,�‡%l†‡% Å™œ—‡%ØÚü†‡$% Õö S1 #*  ç‡%4ê‡%* üÇ.%ôȇ% Çòè$Ç%[Q üȇ)%øŒÇ/% ¥ØX %1üÇ/%m�´ü½‡5%�ñ‡%[Åך"Ï� .´ ³ˆ% à‹¢ü¹‡�% üó†á%$—ˆ% Å™‹¢D”ˆ% Àœ�´Û†|�ˆ%T݈%"µ¢ òˆ%$<òˆ%ôˆ%µë$(#,ôˆ%ì݈%Lèˆ%ðÎ"h#F!”èˆ% Ÿ‰%'<Ÿ‰%¡‰%µë'(&,¡‰%lš‰%% Å™&ü„‰#%ØÚ% ¹‰%)<´‰%( Å™‹¢)\±‰% Àœ�´Û†( Á‰%**‰%ü±„‘%?N]m*’÷½ iüø…Ê%3:A�dÒ†%ÀÇÎ d®ˆ%+æù üû„!%¹£ LЄ%òèTã„%‹¢·ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Å×�´‹æù ÌöÒú±Ñ Þø©ü,Å×5�´w$­†%�´±‹¢ëÀì–Á JØÚSƒÀì�–Á FÌ䋿ù Õ‹¢òè 1Å×:�´~$…ˆ%�´à‹¢#Z–ª´•Àì¯ØÚGÀìa�´ñ‹¢ à ÆåËÊ£„Æ  ŽÄ £[Æ  ŽR £ç  èÆ’¥ØaÏ� h§ÚnµëãÕö „ŒÝ¥ØåÏ� ìµë“ðÎpµë9òèšòè¡òè¨üÁ–'% Éòèî–%¿üü”ò%ÉɱËÌÛË«ÍåË«4¡ŽnyP°GòèÌÈ•%±ý $¦•%òè4´•%åËŠü³£#% çòèÜ£%Áü’¢Ê%çç¶ÍêÛË«ëåË«üêß"%5$ à% ²ÝD¦à% ±ý   îÝüèßG%,šà% ´dŸb P¬šà%DÃà%  y²ÝdÍà%  ÜòèÍ®  îÝüèßr%,½à%ª� š g Uì½à%üè߈%4èà% »dSDèà%öà%Üü™ßÝ%­àŒÌß%’ü, ß%·á §ß% ¨d¨d DebugStructÁ«dñ�d¬dÇ �d­d has_fieldsÁ�d»1âî¦9èÏÀƒ ’Àƒ ƒ %²ÝH²ÝõîÝç¡  ð²Ý™î݋ͮ”ØœÚ ©€ �¡  îÝAª�  Í®îÝÛª� ¯á‚ ‚\Îà% Å ²Ý ܃ͮ:²ÝNJ(¯ Òæ% ƲÝȯ üæ% ê#îÝPU¬·bgRt¯ ׿%Å'�­à› Àú¦·á®²Ý¶îݤ ’ü¯’ü·Úœçñ�ˆ îÝ䬷LŒê% ê±ý ŒŒê%,–ê%•ý 3<–ê%£ê%àüÖéM%ø©lôé%Þ‡ Dçé%¡  }9•ý ~ 4ˆì% êlˆì%$�ì% ÆQ ê54�ì%pŽˆì%  �%…þK$)5ðØtˆì%mÊþ¤‚ì%Œ�•ì% �%ÄÜØ´ðØØ´# ¼Çì% €Û†‘‹í%  ù‘Ž"`  (‘Ší% �»¢»* 3 ¨ì%¯ö <®ì% Å™ö ùí% Ž ýÌž¦Á‡¼·Åʵ¼×Ü   åù² ñ@`á² ñ`Ìç ù³ Ž"`  *š çí% üÐë©%æ ­´»„¥ì%üÃì¥%‚‰ÄÜŒæë% ÀúLØë%ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´Êþí…þ%©ÿFvÊþ¿,¥ì%ö ìÛ†k[�ÑH·¾Y�»sŒÒkýÌa‡¼}µÒ†�»�ôÆ ðØØ´ŽU£{¬ºþ Çß Çë»œŠ ÊŠ òÖ‹ ù¢»µ¼Ìç6Û†ŒÏö% Æ'òèæö%ïü—öO%Æ'Æ'Ç'úŽÊ'ó« µœYŒ[ˆ{ò蔲ö%îë$©ö% f<¶ù%±ý |¶ù%,¾ù%•ý .<¾ù%Ëù%ðü€ùK%ø©lžù% îëD‘ù%¡  {<•ý �<Åû%±ý „Ùû%òèüÅû%%\Íû% ½öÒN=ìÍû%üÅû1%Lëû%Ö‘O\ëû%üû%öüƒûy%£’ü™û!% îëL‹û%æù �¹£ ÓöÒÅ$Mä• ÊÖ‘™„›ý% DzÝüŒý %dŽý%©€  Œý%:ôŽý%0$Àý% ²ÝDÆý% ±ý   îÝüŒýC%,ºý%ª� ”\ J¬ºý%Dãý%  y²Ýdíý%  úòèÍ®  îÝüŒýn%,Ýý%ª� ” g UìÝý%üŒý„%4ˆþ%á‚ MDˆþ%–þ%úü½üÙ%­àŒðü%ë” ,Äü%·á Ëü%Àƒ £Àƒ 'Àƒ ¬ƒ µ²Ýز݊îÝ|¡  …²Ý4îÝ&Í®/yœ{¬©€ ¡  îÝÕª� ´Í®îÝuª� Iá‚ \îý% Å ²Ý§¶ú#ͮԲÝNä(´ ܃% È ²Ý¨´ ‚„%îë#îÝPU¬·bgRt´ áƒ%Î'�­à› ™“ ¦·á®²Ý¶îݤ ë” ¯ë” ·ÚœçñÀž îÝ䬷LЇ%îë±ý ŒŠ‡%,”‡%•ý 3<”‡%¡‡%þüÔ†M%ø©lò†%�ž Då†%¡  }9•ý ~ 4öˆ%îëlöˆ%$ýˆ% ÆQîë54ýˆ%p’öˆ% å¡E#/ðØtöˆ%mè’¤ðˆ%†“ƒ‰%‰´ðØØ´ ¬µ‰% €Û†•ô‰%  ù•Ž"`  (•ó‰% �»¢»* 3 –‰%¯‹¢<œ‰% Å™‹¢âŠ% Ž ýÌž¦Â“·ÅÊÁÂ×Ü   åù· ñ@`á· ñ`Ìç ù¸ Ž"`  *š Њ% üˆ %„ £ª±ø„“‰%ü±‰ %‚‰�´l؈% ™“ Lʈ%¸§Œ£’ÄÞ– åè’d,“‰%‹¢›Û† �Ñ÷·¾�»!ŒÒýÌ“Â+µÒ4�»=¢Æ ¥ðØØ´Žù£)¬º¬ Ç� Ç™iÛ  ¸å¡�‰´—¢»¯ÁÂÉÌçäÛ†±”ˆ”% Ï'òè ”%ŽüÏ“Q%Ï'Ï'Ð'Ç�Ó'ó« Z„ý¾äP�òèœê“%¿í$á“% f,Ž—% TÕ–%±ý dá–%˜Ûtï–%òèüÆ—d% ”òèò¡ öÒæÒüª—�%\º—% ½”òèò¡ Õª ª—% lüº—q%üª—š%L¹˜%Ö‘h\¹˜%ø–ª—›% å¡C % 1 ðØüª—›% mè’#. 4Õ˜% dϘ%  ¬—Ę%ï¢ðØØ´Ò Á™% ™% ›™% €Û†D¨™% Àœ˜ÛÛ†t£™% Å™º£ °™% $û˜%dû˜%,€™%ð”) <€™%„ø˜% Àœ˜ÛÛ†´ó˜% Å™º£  ˆ™% % &üú•È%V h€Û† ‚� “_ü¿–ƒ%ü�—¥%èïöaÔ—™%õ¢ü�–$% ¿íL‚–%¹£ ËæÒ¾öÒ±è’4¡—%¸§£’9æù ‘�« Êwè’ä,ê˜%º£š˜ÛË—�æÛ†eº£A˜ ­ÛË{ɾråËiÇ »Æ ðØØ´Ž‡ ¬ºçËùª oÖ‘'å¡ï¢ ð”�Û†ADà—% öÒ$ð—% æÒ¬à—%  D Š#òèø©æÒ _:B°˜à—% ˜… _#/B$‹˜% æÒ  „‹˜%L�˜%€š ;\�˜%™õ—%[Å×±"Ï� .ʤˆ˜% Àœ�´Û†ª˜% ”N…‹´à—% æù Í—% �« „ø©,Ç—%£Š WÃÓ©Ø´ ²ÝÅ×å�´—�AöÒÔæÒÝæÒæ–`dåË4÷–%öÒɾ$é–%æÒÆ UŽÐðØEδ X˜… €š°Ï� $ _ref__finderÁ¶›Œüš% ɲÝüíš!%dïš%©€  íš%:üïš%1$¢›%  ²ÝD¨›% ±ý   îÝüíšD%,œ›%ª� • \ J¬œ›%4Å›%  w²ÝTÍ›%˜Û îÝüíšk%,¿›%ª� ‰ \ JÌ¿›%Dì›% y²Ýdö›% ˜òèÍ® îÝüíš–%,æ›%ª� •hVìæ›%ü횬%4‘œ%á‚ ND‘œ%Ÿœ%˜üžš�%­àŒÑš% ¿í,¥š%·á ¬š%Àƒ §Àƒ +Àƒ ¥Àƒ +ƒ 4²ÝW²ÝîÝú¡  ²Ý²îݤ—�­²Ý\îÝNÍ®W�œŸÓ©€ ¹¡  îÝnª� M—�îݪ� íÍ®îÝ®ª� ‚á‚ T\÷›% Å ²Ýàï˜[Í® ²ÝN(¹ ‰¢% Ê ²Ý°¹ °¢%¿í#îÝPU¬·bgRt¹ Ž¢%×'�­à› ö¨ ¦·á®²Ý¶îݤ ɽ ¯É½ ·ÚœçñøÁ îÝ䬷 4À¤%¿ílÀ¤%$Ǥ% ÆQ¿í54Ǥ%pšÀ¤%  �%õ¢K$)5ðØtÀ¤%mº£¤º¤%Œ›ͤ% �%‘–Ø´ðØØ´# ¼ÿ¤% €Û†�Â¥%  ù�Ž"`  (�Á¥% �»¢»* 3 à¤%¯˜Û<æ¤% Å™˜Û°¦% Ž ýÌž¦Ë ZÇÕÚ ‹gZ    ù¼ ñ@`á¼ ñ`Ìç ù½ Ž"`  *Í ž¦% ü‰¤§%� àçî5„ݤ%üû¤¤%µ¼‘–„Ÿ¤% ö¨ L‘¤%ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´º£ õ¢X®± y©º£ò,ݤ%˜ÛÛ†ž[�ÑH·¾Œ�»¦ŒÒžýÌ”«Æ °µÒ¹�»ÂôÆ 4ðØØ´Žˆ£®¬º1 Ç Ç»î MœÃ %¨Ä ,¢»4ÙÆ NÌç6Û†¼Ð|Ð Êéìòè4à*ìË  éìòèî¨ü—W¶ìT¶òè4¨…íƒöÒ8òË ¢¬’˜Ä ËÉòË ½æ æÄ  éìòè çʨѶìÎòèÌ…íMòè6öÒé 4™…íd™  Îéìòè5, «¬üë@ éìŒ ¶ì$ö …íƒthisÁD�Ï �|¡L¡ ¬éìòè$«*¶±ü�5¿Ï ”ÌÏ ,Š .žÐ z4»…íl»Â  g…í1 Æ4ÂεüüR­à\¥ÌÏ ,ƒ·á ŠÙÏ ‡œ M¸Ñ ›¬�.œ�. Ùéìü�.%t�. ­aéìC&4¸.üä-� ¾éìòèðØ„!„!…!Àìo$z�é -ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#éì�þû. ú.ü¥-ÖÊ…íTË-òè4½-ÿ`ÿ`V�a¬â`½68ŸœRt éìRÄÕ �òè9öÒWŠàÒ ªˆÓ ‹òè´œÉÐ Ø×àÒ ïÏ ×ÕˆÓ õ ¥.Øß\×. „!‚Ô û ¾éìòè ð.š™˜Ê¨…í–òè•—Õ ·ÄÕ æòèžÛÓ »öÒÄø\ú1$ÿ1 Ïéìòè$ú14ÿ10Tí1$ò1à¿Ï $Ÿ2á: lÊ2òè|Ê2 ‡#òè2ðØ(0tƒ3Dƒ3 ¬éì$Œ3&ìõ2lõ2 ùéìI$LÀ5 —Õ ¬ì5œì5àÒ “6 „¨6 “�ŒÊ6 “�üÀ5ª„Ê5 »aéì ˆ w _ VG üÊ5 4Š7 Dÿ6 ƒ7 €ÄÕ Ë8”½8l½8 ÷éì, $ü¯8#$¯8 ö‚Ô ì´8 &Lä8üø6„ ,Ð:3 >ü¹1¨ Îü†2,ü¿2¢üç2úü³5®ü‘7ë¿Ï Õ1ÙÏ ,Ë1řǙș­É™Ê™àË™óG*¤�R{9 ¿Ï i5¿Ï +éì$Ã2 òèÄÕ <ë2‚Ô ÔÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÄÕ ÄÕ 4·5 —Õ çÄÕ ÚÄÕ Æ“�”�•�Ï–�—�И�™�Gš�›�Fœ���Ü­Úݱä}LÂ,“á !ÃÄÕ ¹m‚Ô ZÄÕ º¿Ï A¿êÒ™êÒrí hÇ  oldÁ)eþØ 0”Ú ŸÎÚ oûÚ IàÒ �Ü Ã›Ý >ÆÝ Lç<—Õ Œö< “�üçCIT§®\§®dkr{î ˆÀ‘–Ø‘¢ª$Œ9T†9 @€€€€€€ €@€€€€€€€€ RÔÃ@ Ø'Ä�@ Ø'Ľ? Ø'´ÿ> Ø'´¿> Ø' ¤…> Ø' ¤É= Ø' ”“= Ø' ¼Ö< Ø' Œœ< Ø'¬ä; Ø'|®; Ø'|þ: Ø'lÒ: Ø'l¤: Ø'\ü9 Ø'\Ò9 Ø'L®9 Ø'î@ÝüØ8–ôí$÷8ôí$î8\Ÿ98¼» @€€€€€€ €@€€€€€€€€  » Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø' Ï» Ø' Ï» Ø' Ï» Ø' Ï» Ø' Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'Ï» Ø'ϻݺôí·ôí¶µÈí\ÃD ÔDÞü²C¢ÐCôí$ÇC$ÃD7#)„Ž ÍDŠÞˆ„ôí‚ôí�ˆš½T×F @€€€€€€ €@€€€€€€€€ $™P Å™ôíÄíO Ø'ôèO Å™ôí …PÔ£O Ø'üžO  Å™ôí ½O´ÝN Ø'äØN Å™ôí óNÄ•N Ø'ô�N Å™ôí ­N¤ÑM Ø' ÔÌM Å™ôí åM´‹M Ø' ä†M Å™ôí ¡M”ÉL Ø' ÄÄL Å™ôí  ÛL¤…L Ø' Ô€L Å™ôí  ™L¼¾K Ø' ì¹K Å™ôí  ÕKŒýJ Ø'¼øJ Å™ôí  ŽK¬¸J Ø'ܳJ Å™ôí  ÍJ|ùI Ø'¬ôI Å™ôí ˆJl¼I Ø'œ·I Å™ôí ÉI|ýH Ø'¬øH Å™ôí ŒI\ÂH Ø'Œ½H Å™ôí ÍHl…H Ø'œ€H Å™ôí ’HLÌG Ø'|ÇG Å™ôí ÕG\‘G Ø'ŒŒG Å™ôí œG®Pßü›F“ řǙș­É™Ê™àË™óG*¤�R{9 ôídÀF$²Fôíµôí÷ôí9ôí|ôí¿ôíôíEôíˆôíËôíôíQôí”ôí×ôíôí]ôí ôíäôí'½ ¬± @€€€€€€ €@€€€€€€€€ ° Å™ôíɰ· Ø'¶ Å™ôí³¼»Â Ø'Á Å™ôí½ÆÅÌ Ø'Ë Å™ôíÈÑÐ× Ø'Ö Å™ôíÓÜÛâ Ø' á Å™ôíÞçæí Ø' ì Å™ôíéòñ ø Ø' ÷ Å™ôí ô ýü  Ø'  Å™ôí ÿ   Ø'   Å™ôí     Ø' Å™ôí   $ Ø'# Å™ôí   )(/ Ø'. Å™ôí+43: Ø'9 Å™ôí6?>E Ø'D Å™ôíAJIP Ø'O Å™ôíLUT[ Ø'Z Å™ôíW`_f Ø'e Å™ôíbkjq Ø'p Å™ôímvußtù«!,+ôíßôí"ôíeôí¨ôíëôí.ôíqôí´ôí÷ôí: ôí} ôíÀ ôí ôíF ôí‰ ôíÌ ôí ôíS ½ ØA$èSTâS @€€€€€€ €@€€€€€€€€ R,¸Y ¶%,‰Y À%,ØX ·%,«X Á%,üW  0,ÑW 0¦W >ÿV <4ÓV ©Ö4¤V ÃÖþU BÔU b°U RŽU rêT $ÊT ^¨T zŠT AÎYàüµS™$ÓSôí$ÊS\ûS6 @€€€€€€ €@€€€€€€€€ d¶%-À%.·%/Á%0  01!02">3#<4$©Ö5%ÃÖ6&B7'b8(R9 )r:!*$;"+^<#,z=$-A>%à$!ôí 2U(à Ô[à Ù[ž(&+¯ñ8 ¯ñCLVhÅ º` ä« 8Å á[ š(Å è[¡(-¯ñ9]Gä« nÆ ì[£(Æ ê[ «Ç!&0hÇ º`&Ç ÷[¦(HÇ î[«Ç!«Ç!ov5î BLœÈa š( Øaáaâü¤a=¯ñ<¶a¤c ¥c¤”c š(®cãüñb=¯ñ<‚c\„»et»e âì»e4Ìe ñ8$ÓedÌeÞeäü‰eU¯ñ<©eôí$še¯ñ„¢Ô8§Ì!£ÈÌ!ˆLêg´êgTôg ¦£,dôgüÚg'|Úg€†@üÚg04‚h¯†<D‚h�håüºfÖ,Îf¯ñ$Åfâ‡�±Ì!DïÍ!Õ€†²¯†’Tƒiˆi å$ƒi,ˆi|ƒi ‘i˜iæüÛh=$ôh¯ñ$ëh}3ÝÏ!šL¼jtÈj<Íj Þ$ÈjLÍjÔ¼j ü¼j ÚjájçüˆjY$­j¯ñ$˜jôí$žjm°£*¢Ô.Y–Ñ!Îü¾lÄÃl é$¾lÔÃl+ü¾l> Üál¤æl ê$ál´æl‚mèüŽlt$¯l«Ç!,¥l¶2òÒ!ÓÍÓ!}$än\òn Ø'ÔänDén ç;1¬én-üän6 $‚oL�o Ø'Ä‚oD‡oùÔ!9/œ‡o oéü«nu$Õn«Ç!,ËnÛ¯ñôí¯ñ™ôí’3TùÔ!ùÔ!¡ $Ñqlßq Ø'äÑqDÖqùÔ!9/¼Öq+$ýq\‹r Ø'ÔýqD‚rùÔ!9/¬‚r+$§r |µr Ø'ô§rD¬rùÔ! 9 /̬r+üÑq  $Õr lãr Ø'äÕrDÚrùÔ! 9 /¼Úr÷rêüœqÛ $Âq«Ç!,¸q—¯ñÄôí¾R¯ñôíy ¯ñ:ôí4¯ñÍôíÆfˆùÔ! ùÔ!²ùÔ![ùÔ!ã$‘ulŸu Ø'ä‘uD–uùÔ!9/¼–u+ü‘u: $±u\¿u Ø'Ô±uD¶uùÔ!9/¬¶uÑuëüÞts$‚u«Ç!,øtÙ¯ñôíÿ¯ñ˜ôí‘2SùÔ!ùÔ! $çw|õw Ø'ôçwDìwùÔ!9/Ììw+üçw> $‰xl—x Ø'ä‰xDŽxùÔ!9/¼Žx«xìü²wy$Øw«Ç!,ÎwÙ¯ñôíÿ¯ñ˜ôí‘2SùÔ!ùÔ! äžz¬£z î$žz¼£z*üžz: Ô¾zœÃz ï$¾z¬ÃzÞzíüñym$�z¯ñ$†zµ2Žá!Òéá!} Œº| Ø'ü¬| D±|ùÔ!$¬|2ܱ|. ¼ê| Ø' üÜ|&Dá|ùÔ!$Ü|2üá|!/ ´ } Ø' ü’}%D—}ùÔ!$’}2ü—} / ¤Õ} Ø' üÇ}#DÌ}ùÔ!$Ç} 2ôÌ}. Ôˆ~ Ø'üú})Dÿ}ùÔ!$ú} 2  üÿ}$/  ü¬|®  ÄÁ~ Ø'ü³~'D¸~ùÔ!$³~ 2 ü¸~"à~îü÷{é $�|¯ñ$”|ôí<Üôíú™ôí·Vôítôí2ôíÇc…ùÔ!�ùÔ!BùÔ!öùÔ!ªùÔ!_ùÔ!ò |¶€ Ø'ô¨€D­€ùÔ!$¨€5Ì­€1 ¬ä€ Ø'üÖ€$DÛ€ùÔ!$Ö€6üÛ€3 ¤˜� Ø' üŠ�#D��ùÔ!$Š�6ô��2 ”Ë� Ø' ü½�!DÂ�ùÔ!$½� 6äÂ�2 Äü� Ø'üî�'Dó�ùÔ!$î� 6  üó�"3  ü¨€¢  ´³‚ Ø'ü¥‚%Dª‚ùÔ!$¥‚ 6 üª‚ ЂïüõÛ $™€¯ñ$�€=ôí\÷ôí¯ôíÎhôí‡!ôí@ôíÏd‡ùÔ!¬ùÔ!]ùÔ! ùÔ!¼ùÔ!lùÔ!ùÌ߃ §(þƒðü´ƒJµò\Ƀ¯ñ$Àƒ 1L«†t·†<¼†–Ñ!$·†L¼†Ô«† ü›†, š(͆ñüæ…g¯ñ<‰†¯ñ$ô…ôí$ú…n´¦,¢Ô/_–Ñ!Ñ$†ˆŒ†ˆ4‹ˆÈÌ!)$’ˆd‹ˆÌþ‡žˆòüˇSó‡ ¯ñL݇ôí$臯ñ†¯ñ '¢Ô*\ÈÌ!¹LËŠtØŠ<ÝŠ–Ñ!$ØŠLÝŠ|׊ÜËŠ ü»Š- š(îŠóü†Šh¯ñ<©Š¯ñ$”Šôí$šŠn˼3¢Ô6f–Ñ!ç$¦ŒŒ¦Œ4«Œ ó+$²Œd«ŒÌžŒ¾Œôüë‹S“Œúñ!Lý‹ôí$ˆŒ¯ñ…¯ñŸ'¢Ô*Yþô!¸Lþ�T‹Ž\ŠŽ¼þ� üî�) š(�Žõü³�j¯ñ<Ü�¯ñ$Ã�¯ñ,É�nª‹¥3î 5e$Ø�¤Ø�DÝ� õ+,æ�|Ý�äÐ�ó�öü—�\Å�úñ!L«�¯ñ,¶�¯ñ…¯ñŸ'î )Xºø!·L–‘T¢‘´–‘ ü†‘( š(´‘÷üÎ�f¯ñ<ô�¯ñ$Û�¯ñ,á�n›�,î .^$ã’Œã’,è’ ÷+,î’dè’ÌÛ’û’øü¥’VÐ’úñ!L¶’¯ñ,Á’¯ñ…¯ñŸ'î )Xßû!·L©”Tµ”´©” ü™”( š(Ç”ùüÝ“j¯ñ<‡”¯ñ$ñ,ô“n›�,î .^$þ•¬þ•Lƒ– ù+,�–„ƒ–ìö•š–úü¼•^ë•úñ!LÑ•¯ñ,Ü•¯ñ…¯ñŸ'î )X„ÿ!·ž¬˜ àý ®˜,«˜ª‹,¦˜M$¬¦˜D±˜ ²Ýô T¦˜T±˜ô¦˜4¼˜ Ó_¬�"ÑþÑþÒþTryFromSliceErrorÁÓþó–' —�gˆâ~×W§D¼˜ü“˜2”“˜ ³¤‘#„Ϙ š(å˜ûüÔ—‘üˆ˜]¯ñ<ö—Ýô ,å—$Œ˜¬�"ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¬�"ï�"£Ýô ×âä厼‘ɪ‹ ¢�"æå�"ªÜ‚"; Lëš¼ëš\õš ­¤/lõš ›› 4—›% /J ’› DŒ›     ,   ŒŒ› ¶›  4²› % / J  ­› D§›, Œ§› Ñ› 4Í›% /J È› D›, ŒÂ› ì› 4è›% /J ã› DÝ› ,   ŒÝ›õ›üü­šÈüáš”!Öš¯ñ$¿š Èš,Åš¬�"åš4ßîž Èš‹“š2XAñê�"Üä냩’Bê�"-5<Ôúã“ê�"~†� å @ U·…"6`Ì ¢§¯ñ †¯ñ08(Ì ö¦ §(Ì û¦ª(/µò; µòF¯ñ‹«Ç!“_iŒ�"°(Í ý¦ ß ²Ý`Í ¢§ þ²Ý¯ñ,8îÝej¥¢w|glŽÍ ‚§¬(©­àµå�"½·áŲÝͲݻîÝà «Ç!ΫÇ!Öùœ…“"îÝ¥¢&D¬¨¯ñœ¬¨Dµ¨ æ0Tµ¨+$Õ¨ Å™ôíðØ l„ª¯ñô„ªt’ª ©£5„’ªüö©-lö© ¶M)üö©64¤ª Ó_¸†QD¤ªDѪ  ѪÌÁª|Áª ß ; !ЩÁª  �%ù«! D$) 5  HÔÁª môíDðª¯ñ¬ðª4ùªþô!. $€«  dùª°ªÚª �%ù«!Ø´ðØØ´# àüåª ¯ñ T�« Å™ôí Ÿ«  ‚üü§£ü쩳ü¶ªiŸ¥«ù«!d’¨ µòL„¨Ü¯ñüð©ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸†¤ØûÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´ôícù«!”¾Çôí6¯ñ¯ñ/bitÁ¢Ô$ºª Æ ðØØ´Ž’ µý“"F÷”"Ó¥•"®Ô•"…¦–"9Í–"þô! ý—"&˜Î ﳢ㠆¢ã08(Πó ­(Πȳ°(/‚ó;ŸŸC¢ãˆäî�\f“�"­(Ï Ê³ à ²Ý˜Ï ï³ á²Ý¢ã,8îÝej¥¢w|glŽÏ ϳ²(©­àµŸŸ½·áŲÝͲݻîÝà äîÎäîÖùœ‰ "îÝ¥¢&üÇÆ'tÌÆ ˆ$ÇÆ$ÛÆDáÆëÆüÌÆ"ôƇü÷Å}$¸ÆŸŸ,†Æôí$�ÆÝô D™ÆªÆ,¢Ô/ý�2™´6yí "Ý$¦ÏT Ï @€€€€€€ €@€€€€€€€€ TüƒÛ+ĈÛ ž$ƒÛD¡Û«Û üˆÛ&ü„Ú-Ô‰Ú �$„ÚD¤Ú®Ú ü‰Ú(ü�Ù)´•Ù œ$�ÙD¬Ù¶Ùü•Ù$üžØ+Ä£Ø ›$žØD¼ØÆØü£Ø&ü¦×&œ«× š$¦×D¿×É× ü«×!ü°Ö(¬µÖ ™$°ÖDËÖÕÖüµÖ#üÒÕ$Œ×Õ ˜$ÒÕDéÕóÕü×ÕüˆÕ&œ�Õ —$ˆÕD¡Õ«Õü�Õ!ü£Ô)´¨Ô –$£ÔD¿ÔÉÔü¨Ô$ü½Ó"|ÂÓ •$½ÓDÒÓÜÓìÂÓüóÒ'¤øÒ ”$óÒD�Ó—ÓüøÒ"ü¬Ò l±Ò “$¬ÒD¿ÒÉÒܱÒôíÑ\òÑ ’$íÑDþшÒÌòÑü®Ñ l³Ñ ‘$®ÑDÁÑËÑܳÑäñÐLöÐ �$ñÐD€ÑŠÑ¼öÐô¶Ð\»Ð �$¶ÐDÇÐÑÐÌ»ÐÌþÏ4ƒÐ Ž$þÏDŠÐ”ФƒÐÜÈÏDÍÏ �$ÈÏDÖÏàÏ´ÍÏü½Ó+4àÓ Ó_ÏóSDàÓü£Ô24ÍÔ¥¬"¾DÍÔü°Ö14ÙÖ¥¬"©DÙÖü¦×/4Í×¥¬" DÍ×ü„Ú64²Ú¥¬" ÿD²ÚüƒÛ44¯Û¥¬" jD¯ÛÕÛˆü›Îº  $‘ÏŸŸ,ÁÎôí$ÐÎÝô DäÎýÎ\¹ÏÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏóïû®"8û®"û®"Jû®"û®"\½¢ÔÀý�Ù´Ç ²£"¥ò£"l²¤"3ò¤"ú²¥"Áò¥"ˆ²¦"Oò¦"²§"Ýò§"¤±¨"lñ¨"3¯©"ûî©"Ĭª"Œêª"U¨«"æ«"祬"°¥¬"„¥¬"`¥¬"<¥¬"¥¬"ôü–ä*”›ä Š$–ä®äD³ä½äü›ä%Æä‰ü™ã­$‡äŸŸ,µã¯ñÄãÝô DÚãóã,ã�/ý�2™´6z†²"Þb\Ûè Ø'ÌÎèDÒèùÔ!Îè5¬Òè1ÜúèDÿèæ«"$úèDˆé’é´ÿè<,¯é ðØaLæé Ø'¼ÙéDÝéùÔ!Ùé 5œÝé1 ̃ê4ˆê¨«"$ƒêD�ê™ê ¤ˆê<  ,¶ê ðØalíê Ø'ÜàêDäêùÔ!àê 5  ¼äê1  ôŽë\“ëêª"$ŽëDŸë©ë  Ì“ë< ,Æë ðØa\ýë Ø'ÌðëDôëùÔ!ðë5¬ôë1äœìL¡ì¬ª"$œìD«ìµì¼¡ì<,Òì ðØa|‰í Ø'ìüìD€íùÔ!üì5Ì€í1ü¬í l±íî©"$¬íD¿íÉíܱí=,æí ðØal�î Ø'Ü�îD”îùÔ!�î5¼”î1ô¾î\Ã"$¾îDÏîÙîÌÃî<,öî ðØa|­ï Ø'ì ïD¤ïùÔ! ï5̤ï1# üÐï lÕïñ¨"$ÐïDãïíï!ÜÕï="#,Šð ðØa¬Áð Ø'ü´ð#D¸ðùÔ!´ð6$ü¸ð3(%üêð'¤ïð±¨"$êðD„ñŽñ&üïð">'(,«ñ ðØaŒâñ Ø'üÕñDÙñùÔ!Õñ6)ÜÙñ2.*ü‡ò"|Œòò§"$‡òDœò¦ò +ìŒòü‡ò+4ªò¥¬" U,Dªò*-.,Ìò ðØa¼ƒó" Ø' üöò%DúòùÔ!öò"6!/üúò!3!40ü®ó)´³ó²§"$®óDÊóÔó$1ü³ó$ü®ó24Øó¥¬"$V#2DØó*#34,úó ðØa¤±ô& Ø' ü¤ô"D¨ôùÔ!¤ô&6%5ô¨ô2%96üÙô&œÞôò¦"$ÙôDòôüô'7üÞô!>'89,™õ ðØa”Ðõ) Ø' üÃõ DÇõùÔ!Ãõ)6(:äÇõ2(>;üöõ$Œûõ²¦"$öõD�ö—ö*<üûõ>*=>,´ö ðØa´ëö, Ø' üÞö$DâöùÔ!Þö,6+?üâö 3+D@ü•÷(¬š÷ò¥"$•÷D°÷º÷.Aüš÷#ü•÷14¾÷¥¬".V-BD¾÷*-CD,à÷ ðØa¤—ø0 Ø' üŠø"DŽøùÔ!Šø06/EôŽø2/JFü¿ø&œÄø²¥"$¿øDØøâø2GüÄø!ü¿ø/4æø¥¬"2V1HDæø*1IJ,ˆù ðØaÄ¿ù4 Ø'ü²ù&D¶ùùÔ!²ù463Kü¶ù"33OLüëù+Äðùò¤"$ëùD‰ú“ú5Müðù&>5NO,°ú ðØa´çú7 Ø'üÚú$DÞúùÔ!Úú766PüÞú 36TQü‘û)´–û²¤"$‘ûD­û·û8Rü–û$>8ST,Ôû ðØaÔ‹ü: Ø'üþû(D‚üùÔ!þû:69Uü‚ü$39ZVü¹ü-Ô¾üò£"$¹üDÙüãü<Wü¾ü(ü¹ü64çü¥¬"<V;XDçü*;YZ,‰ý ðØaÄÀý> Ø'ü³ý&D·ýùÔ!³ý>6=[ü·ý"3=`\üìý+Äñý²£"$ìýDŠþ”þ@]üñý&üìý44˜þ¥¬"@V?^D˜þ*?_`,ºþ ðØa$áþ ëþa ŠüÇå¤A$ÃæŸŸ,ñå¯ñ€æÝô D–æ¯æ`ôí.²ôíÑ€ôí#Ò V ôíu $ ¨ ôíÇ v ù ôí Ç K ôíj  œ ôí» h ê ôí z û®"À  ôí8 §û®"îFôíe•ôí´bäôírû®"¹ôí0 û®"ç?ôí^ �ôí¬YÛôíúiû®"°ôí'–û®"Ýã�ý�™´ R*ùÔ!zæ«"?ùÔ!è«"ˆùÔ! êª"ÑùÔ!U¬ª"ùÔ!žî©"cùÔ!æ ¯©"« ùÔ!/ ñ¨"ô ùÔ!w ±¨": ùÔ!¼ ò§"€ ¥¬"J ùÔ!à ²§"£ ¥¬"l ùÔ! ò¦"Æ ùÔ!H ²¦" ùÔ!Žò¥"Q¥¬"ùÔ!°²¥"t¥¬"=ùÔ!Óò¤"–ùÔ!²¤"ÛùÔ!]ò£" ¥¬"éùÔ!²£"B¥¬" <ó— ù—€˜�ü­—S$ä—ŸŸ,½—Ýô LÄ—Ö—! _haystackÁ,™´0ht䚤ޚøšŽü›š]$ÏšŸŸ,©šÝô D°šÁšm(ý�+™´/g�÷ ¦Üß�Dä�æ«"$ß�Dí�÷�´ä�<üß�B 4‡ž Œž„þ� 4|’ž ¢ãüþ�# ¶§ž�ü—�� $Ð�ŸŸ,ª�Ýô D±�Â�UÍøÛá¥Jý�M™´QŠæ«"±ÌŠ¡4�¡¨«"$Š¡D–¡ ¡¤�¡<üŠ¡< d§¡ 4|·¡¢ãü§¡’Ì¡�üÄ ˆ $û ŸŸ,Õ Ýô DÜ í 1ÍÔÚžCý�F™´Jƒ¨«"† Ü·¤D¼¤æ«"$·¤DŤϤ´¼¤<4ë¤ ð¤„⤠  4Ìâ¤,ö¤ ü·¤²  4•¥  š¥„Œ¥    4  ÌŒ¥  , ¥  tÀ¥¤º¥ ü‹¥^  ü¹¥/  dÒ¥  4¬Ò¥,⥠ƒ 陋üí£‚$¨¤ŸŸ,‚¤Ýô D‰¤š¤Áa�qx…Ðüàçn…!(šý��™´¡Úæ«"m�÷ Ý ÌÖ¨4Û¨¨«"$Ö¨Dâ¨ì¨¤Û¨<dÿ¨ 4¬ÿ¨,�© üÖ¨Ÿ  d¥©      4 ¬¥©  ,µ©  <Ï©  Õ©&  ü¤©Q  üΩ&  4ã© è©„Ú©  4ÌÚ©,î© § û©’üލí$ǨŸŸ,¡¨Ýô D¨¨¹¨ dls¤ï÷þ”-Šý��™´‘ʨ«"< 4ø¬ ý¬&4ž­ £­„•­   üø¬. Uü‚­$”‚­ ç€"tÒ­ œÍ­   d÷­  üÍ­7  U üä­ ”ä­èñ" ~  \Ž®T�® ÌŽ®­®“üœ¬‘üæ¬Çü°­}$׬ŸŸ,±¬Ýô D¸¬ɬ\ê¬=ìüT´­wŽdlsïæ‹ý�Ž™´’ word_beforeÁ¡ word_afterÁ‡  èñ">�÷ èñ"�ü¦± l«±ñ¨"$¦±D¹±ñÜ«±ü¥±!̱”üÔ°x$–±ŸŸ,ð°Ýô D÷°ˆ±–'ý�*™´.fñ¨"Ï üê¶Œê¶ ªDü¶†·-ø­ê¶   �%û®"Q%*6ðØüê¶ mü¥·Œ¥· ©D··Á· - ®‰· �%û®"ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïÏóðØúù"v #ø¯¥·  Ñø" Ö$ 0  ü¥·  mÌÒ·  ìÏ· ÀœÏó ò· ˜°Ä·ðù"ðØúù" ¾:• ü˵§üضšov}×ü”·^rx~à û®"ü§¶&ŸŸ,ëµÝô Dúµ“¶ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^úù"Ôû®"@šÂý"Êû®"’>¡� ¹ý�¼™´Ààô"\ܶÆ ±ðØúù"Žöô"T˜· Æ ½ðØúù"Ž- £žø"áÑø"´¾ù"Oðù"ÂÑø"žðù"¥4óÍ øÍ& ±«Î àý4ªÎª‹D¢Î;$üóÍÈ  ü�Î"Œ�Î î|¡Î%* ü‰Î( ðØV àÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‡ üŒÏŒŒÏžø"DžÏ¨Ï  +LâÎ ÀœÏó,å΄ÛÎø³ŒÏ  Ñø" ~  $  0  üŒÏ  m r´«Ïðù"ðØúù"˜tÛÏœÖÏ µ–Ð Ìý4•ÐÂŒD�Ð;$üÖÏÐ ìÿÏdÿÏ í|ŒÐ$)üùÏ#Jू#,ü÷ÐŒ÷оù"D‰Ñ“Ñ+LÍÐ ÀœÏó,ÐЄÆÐø·÷Ð  Ñø"~$0ü÷Ð m fr¸–Ñðù"ðØúù"˜\³ÑTÂÑ̳Ñì°Ñ ÀœÏóÓÑ – ü÷»ÜüáÍò½ÄËüÅÏŽÎÔÚ û®"üÚ¼&ŸŸ,ž¼Ýô D­¼Ƽ\å͆řǙș­É™Ê™àË™óG*¤�R{9 ¥‚#3Ýô ‰âä±4ÐÎ$ÄÎÂý"+û®"›ÅTÉϧ¾¨‹#)Ýô úò§4»Ð$¯ÐÂý"}û®"íTáþ Cý�G™´Làô"RÆ ŒðØúù"ŽÖöô"ÚÆ ¢ðØúù"Žì - ª‹ÛÏ�#•žø"ÌÑø"lðù"s�÷ ÝÂŒ“À†#M¾ù"àÑø"€ðù"‡ 4ÛÔ àÔ&4�Õ †Õ„øÔ   üÛÔ. UüåÔ$”åÔèñ"~ tµÕ œ°Õ   dÚÕ  ü°Õ7  U üÇÕ ”ÇÕèñ" ~  \òÕ T�Ö ÔñÕ    ‘Ö—üùÓ˜üÉÔÈü“Õ~$ºÔŸŸ,”ÔÝô D›Ô¬Ô\ÍÔd?#*T—Õ ·�•œ†ý�‰™´�àô"’öô"o óèñ"L�÷ .èñ"� 4•Ù šÙ&4»Ù ÀÙ„²Ù   ü•Ù. UüŸÙ$”ŸÙèñ"~ tïÙ œêÙ   d”Ú  üêÙ7  U ü�Ú ”�Úèñ" ~  \«Ú T»Ú \ºÚÔ«Ú    ËÚ˜üµØ–üƒÙÈüÍÙ~$ôØŸŸ,ÎØÝô DÕØæØ\‡Ùs"N29TÑٯƜ¤«'�ý��™´”àô"™öô"v úèñ"b�÷ Dèñ"³üôߌôßžø"D†à�à+ø¹ôß  Ñø"I$0ðØüôß mü¯àŒ¯à¾ù"DÁàËà +˜º“àðù"ðØúù" ¾ø»¯à  Ñø" v$ 0  ü¯à  m\Ýà o¼Îàðù"ðØúù" •ÔÜà   Tìà 1 ôÙà ÀœÏó ýà  ™ üÏÞ®üâß›LSZ²üžà_ÖÜâ û®"ü±ß&ŸŸ,õÞÝô D„ß�ßÂý"[û®"–Ï'Âý"·û®"TŽ< jý�m™´qàô"\æßÆ @ðØúù"Ž¥öô"T¢à Æ ÓðØúù"Ž Užø"fÑø";¾ù"Üðù"IÑø"‹ðù"’ü¢æŒ¢æžø"D´æ¾æ+ø½¢æ  Ñø"I$0ðØü¢æ müÝæŒÝæ¾ù"Dïæùæ +˜¾Áæðù"ðØúù" ¾ø¿Ýæ  Ñø" v$ 0  üÝæ  m\Šç oÀüæðù"ðØúù" •\™ç  ÔŠç     ô‡ç ÀœÏó «ç  š üÿä¬ü�æ›LSZ²üÌæ_ÖÜâ û®"üßå&ŸŸ,£åÝô D²åËåÂý"[û®"–Ï'Âý"·û®"TŽ+ jý�m™´qàô"\”æÆ @ðØúù"Ž¥öô"TÐæ Æ ÓðØúù"Ž Užø"fÑø";¾ù"Üðù"IÑø"‹ðù"’4Ûê àê&4�ë †ë„øê   üÛê. Uüåê$”åêèñ"~ \”ë d“ë ¥ë›üÕéÐüÉê\ $ºêŸŸ,þéÝô D�ê¦ê\Íêa< '£Vý�Y™´]àô"b¬èñ" tÂîdçî   ü½î7 UüÔî ”Ôîèñ"~ Tÿî \þî �ïœüÍíÂü îo $‘,ëíÝô DòíƒîT¤î+B '£Vý�Y™´]öô"b¬�÷ ¥èñ"4Ôö Ùö& ÁŒ÷ àý4‹÷ª‹Dƒ÷;$üÔöÈ  üðö"ŒðöÏ�#|‚÷#( üêö( ðØT ू#7 üí÷Œí÷žø"Dÿ÷‰ø  +LÃ÷ ÀœÏó,Æ÷„¼÷øÃí÷  Ñø" ~  $  0  üí÷  mp rÄŒøðù"ðØúù"˜\ªød©ø„¦ø ÀœÏó¼ø �ü—ó¥üÂöú•›¡Ýû®"üþó&ŸŸ,ÂóÝô DÑóêó\Æö䨋#LÝô ¢âäÊ4±÷$¥÷Âý"–û®"0m �ý�’™´–àô"›Æ „ðØúù"ŽÎ!ª‹UÏ�#žø"˜Ñø"8ðù"?tþÿœùÿ Ź€ Ìý4¸€ÂŒD°€ ;$üùÿÐ  좀d¢€À†#|¯€"' üœ€# ðØS ू#7 üš�Œš�¾ù"D¬�¶�  +Lð€ ÀœÏó,ó€„é€øÇš�  Ñø" ~  $ 0 üš�  mo rȹ�ðù"ðØúù"˜T×�\Ö�|Ó� ÀœÏóè� žüÂü¦üèÿ€•›¡Ýû®"ü§ý&ŸŸ,ëüÝô Dúü“ýTìÿÑ訋#SÝô ©úòÑ4Þ€$Ò€Âý"žû®"8u'—ý�š™´žöô"£Æ ŒðØúù"ŽÖ)�÷ ­ÂŒcÀ†#¾ù"§Ñø"Gðù"NÒ Ë†·((Ò Æ†Ïóî­",ɦ Ò ù†(Ó Í† â²ÝÓ ù†"îÝOT¬·afQsÓ Ò†¹(Ž­àšî­¢·áª²Ý²îÝ š¨ ¨œ¨ °Óœàꚨ îÝݬ·ý Ë�ß Ìý4ŒßÂŒD„ß;$ìöÞdöÞÀ†#|ƒß"'üðÞ#JQू#5Ôß à¥‚#¯¬ÜߌÜß « îß$,¹ß üíÞ� ÀœÏóƒà©üíÝ–üÌß% û®"üµÞ-Ýô DˆÞ¡ÞüðÞŒ¨‹#bÝô –úò¾4®ß$¢ßý�Y™´]chÁ? ¦ÂŒöÀ†#ÒÅÅ#; Íçá àý4æáª‹DÞá;$üËá"ŒËáÏ�#|Ýá#(üÅá(KRू#5®â ू#¯¬¶âŒ¶âÅÅ# Èâ",“â üÂá• ÀœÏóÝâªüÂà›ü¦â% û®"üŠá-Ýô DÝàöàüÅᑨ‹#aÝô •âä½4ˆâ$üáý�Y™´]ËÆ#< ¥ª‹ôÏ�#ÐÅÅ#8üÍã'üÍã# ¾ñã&ü‰ä˜ ãx²ÝüÍãß4õã Ò_���UnicodeWordErrorÁ‘óŠ  -¼!Õ™J¦€üõã·²å«üœã–$¾ã±ãÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŒÍ#E²Ý#ËÆ#q“½Ì#n„Í#.Ä£@„£@ ‡éìòè4´@*üŒ@0´Œ@ ¬�öN%ü‡@6 ­éìòèÃ@µüÙ?jªôTò?òè4ä?ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#�ö�þÂ�öûöÒ`ƒ½Ï#ïÏ#ðü•HCÔ•H ˆéìòèD½H4ÇH2üþG[´þGïÏ#PüùGa ­éìòèàH¶ü°G°ªôTäGDÅGòè4ÖGÚÐ#ƒ�öÄïŒ'öÒ+XìÑ#ñïÏ#¾ üýN! ´‡O¬ˆOä   ¡�Ѥóž ö»ûÓWb;ÉØÚØÚBÿ‡LýN ¬ØÚØÔ#|®³DòN øNà4‚P ôëOœëO ¶éìòè ÿOJ 04ÇO Œ½OL½O µéìòèC )ðPü†Lê ïP0Ì~·SüîN¥ ªôT¿Lòè4±LòèÛS–Á /ŸÔ#<óNòè^¢öÒG¤–ÐòÔ#|üÕ#tÔÖ##òèâü“N$ü“N" ­ü“N5¸N º_ù ù ú ¬ü óÕ  >¨WTÑp™Y�7�7ßôž7½ Ù6wQ?mˆ!؆»´Ù#Uÿ»ðØ›Ú#\¼N„¸Nü“N:ÉN ¶_éÙ#×$ÉNßNºüúMeØÚüM ºØÚUÿ/ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéÙ#‚ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw´Ù#éÙ#íŒÙ#®Ù#÷æÚ#F<ÀNÂN ¼  ÀN,ÂNÇN»¥¿N›Ú#»´Ù# ½N¤ Ú¹Ý#~4ÑXÚÐ# ÀÀÀÄ¿ µÃüðµ´]8"»Oÿ�ö®®«°¿ ”3¯f*²Û��ö �ö™dÑXØX ŒéìòèÇ,ØX¼ÇX ÄéìòèäX¿ü”XPÄÄÅ­àÉó¬ (! y?V¾�éìò蜩X ªô,ŸX˜˜­àœÊÞß��ßžÑæßgVeSC�Ôéìòè �öÃÚÐ#nÇß#vÞêß#I4„Z å²Ý¬öY\øY åg öY9œøY/<’ZÚÐ#îÝüöY$,ŒZ ËdHtŒZüöY-4›Z ÒdND›Z©ZÃü«Y~ ­àŒÚY‹á#,²Y·á ¹Y ¾d¾d DebugTupleÁÁdñ�dÂdÇ �dÃdä�dÄd empty_nameÁ�d“(5&àç:Æä#rÈä#{²Ý�îÝQ ÚÐ#]·œºçØâ#ÄÜå#îÝ’¼ã#rîã#G4Ü_˜˜­àœÊÞß��ßžÑæßgVeSC�Ô¥õ«õìÆ_¬Æ_ ¥¥õ«õ†*ê_Îü–_T»_ÄÄÅ­àÉó¬ (! y?V¾�¥õ«õ$¡_œÀæ#èÎ x¥ç#Ä4�aÀæ#t�a,ˆa £¥õ«õ7<ˆa•aÔüá`4 ¥õô` ìç#,ê` Àæ#…?‰é#Œ4¥bÀæ#”¥bL¬b ¤¥õ«õ8\¬b½bÙüùaD ¥õ4”b ìç#L†b Àæ#†?·ê#Œ\€d æ ²ÝÔòc\ôcØâ# òc5Äôc+<“dÀæ#îÝüòc),�d¼ã#uBt�düòc24œdîã#BDœdªdÞü§cƒ ­àŒÖcÖé#,®c·á µcÆä#’Æä#ùÈä#²Ý#îÝÛãé#ãGœJxØâ#Eãé#îݼã#÷îã#Ñ8ÁùÙ ·™e éÙ ·e ¾ùÙ Õúe¼(řǙș­É™Ê™àË™óG*¤�R{9  ØÚ BÿŒï#nžùØ Çg�aº(®®§°ð¨³¤²šè;áØ Ùga[ܼ(Œï#Œï#_Á<æ� ç ÿ`ÿ`V�a¬â`½68ŸœRtŒû� “�üæ�'Lî� ¥ } ø�Nüî�L¹” Á”&ùÝ Ž"`ùÐŽ"`ƒœ üÜ”-è+²Ý3ùÜ ñ@`áÜ ñ`ÌçV#Ù ˜e»(ùÙ ÔDeüÛ�Ù,Å��ñ#€“á >æ{�ѽ¥ $ß�Zëñ#[ƒœ ãÌç¯ùÙ ðe éÙ ðe é18ùÙ ¦®e  ½(‘ï#àï#Uÿ1Œï# Ù ¿eùÙ íÔeùÙ ‚!­e  ¿(±õ#%Œï# Ù ›!eS Ù À$eùÙ Ûôe¼(Œï#"'½(±õ#õ¿(±õ#ªX_Á¹Ù ¿#eÀ(ùÙ ¿#ZeYÙ ×#e –g »(;ÁÙ ã#eÙÙ ý#eê÷# ùÙ ×#BeÙ ¯$e¿(Càï#Ù œ!e �÷#`řǙș­É™Ê™àË™óG*¤�R{9  ØÚÁÙ ƒ!e �g�gStorageÁ�g�ûf‘gƒûf§~Ÿ½[l(Ú>__rust_std_internal_initÁu0ß÷#d(Þ Á™ é ²ÝÞ û™éì#îÝPU¬·bgRtÞ Æ™Ç(�­à› Îõ¦·á®²Ý¶îݤ ¿Ï ¯¿Ï ·Úœçñüû#îÝ䬷ü¿À,œ¿ÀìÑ#|ÓÀó4äÀ5õÀ‡ü†Ào�öT¦Àòè4˜ÀöÒ3nóìÑ#–|€Ø‰Ø ïD€Ø �Ø4‰Øüí×#”í× �CÁ(Á(Â(û—Ä(óß ä;|¤•¯Ž²6²6¨´6ð 6µ6poisonÁ 6¶6êÒ 6M‹3àT—r…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ‚Ô �þ(é4ªØŒªØD±Ø ŸCÐþ#�þ2T±Ø Ñ§Ø ¶ý §Ø Ô§Ø ÐôJ$ øÔžØi@  OT¡õ ` in  z  �4ÎØ¹ß ¾ ©ß ¾  ŒC‚Ô  &Œ±Ù êóŠü Ù#„ Ù • F $”äØTäØ Å6Ñÿ#Ÿ 'ìÚØ Á(„ÿ#üÎØ*$ÕØ ‘MÐþ#�þþD üÕØ#$ñÙ Å™éì¬áÙ|áÙ š2řǙș­É™Ê™àË™óG*¤�R{9 éì~ l4¥Ú4­ÚüžÚ) ôéìòèÑÚ ÐÚüˆÄÉKˆüÜ×õªü”Ù½üÑÙ€�öTÃÄD¤Äòè4µÄ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÐþ#�þTà×… r… ¯é ¹‡$… ˜ØÚ¡Ô�ª€J ¹‡$2Ðþ#|„ÿ#±Ñÿ#;‘ñ#,˜Ù#óŠ,“2“2 UnsafeCellÁ•2�ñ.ç–\*=°"�ø„$LÕÙø„$ ò蹇$ïŒ]öÒaæã&�‘ ôã´�äl ÿý#kÊþ#)Ç€$1ÐôÒ¡õÙØ‚$:ªƒ$ëÕƒ$Çž„$…ò„$8¹‡$yòè€L˜ä Œéìòè —ð#Ęä$¢ä ¿�éìòè UÿoðØó‹$D§ät¢äTÊä‘ñ#ŒÚä “�üÊä"$Õä Ÿ G7¼Õä|ýäTúæ ‘ñ#|‹ç  ëóŠ Œœç “�üúæ4,…ç    p ` <ü…ç)ÄÇç\Ìç ‘éìòè$Çç4ØçœÌçäûçD€è Žéìòè$ûç4‰è,‘è¼€è¡èŒüªÜ÷ ü‹ä–ü¾äã ˜á#œÆÜðá#,¼Ü4�äЋ$x,Âä�ñ#ü“á ð°@�ñ#ž‘óŠš“á zmàpôãiÀõº(—ð#ê‹$áÿŒ$T§Ž$³ÞŽ$‚œ�$K09º(—ð#HWŒ7Ћ$u—ð#~†‹º(—ð#¬ä¯ä�H«äó‹$_óЍäˆC .üÜë¦ 5 4 Œèë êóŠÔßë Tíð‘ñ#Œžñ  êóŠ |Åñ  ëóŠ „êñ “�Œ�ò “�üíðÇ„øð £ ¯ Ÿ { WGüøð¼Éò\Éò,Íò °_0<Íò1 l†õòè|†õ”Ú +ðØ (¬�õ5  Å™éìtêôŸ‰$¤êôùô  2ø„$4+,ùô¬éô5% •õ5 ÄÉõ\ÎõÞŽ$$Éõ4ÚõœÎõ|5„�ž+\§ö¹‡$Œ§ö³ö éCÐþ#�þ8 ,³öÔžö#  4  Õ»ù ¶ý »ù ¾ù Ø»ù  ‘P¶ý¶ý¼¸ý‚¹ý’}£²ËJüü ‘ [`øØ²ùÓ }Œ‘ ÆQ™›$£«°¼ðØ\èù$¹‡$Tóù ‘ý¹‡$$5Dôù#.lÆ€3òè|Æ€”Ú 3+ðØ 2(¼èù"#„ÿ#üèù"D€ú Ì6Ñÿ#"5!T€ú.%!üâù(%%,Ìú&!¯›R›R©žRlockÁ 6ŸR£þ# 6R¤KíÊ6çÑÿ#,Öú4  & îú6!6!"\•û›û àC‚Ô �þ(,•û'),›û5*'\‡û*,Œû+'à‚Ô ¼¾û\Ãû ’éìòè$¾û+,Ïû,)”Ãû,‰ý4 - \„ý$„ý öåž$-A,)&l¶ý0òè|¶ý”Ú 0+ðØ /))Ì­ýD­ýÎÚ /H.)!¼ßý\äýð $$ßý.,ðý-)”äý̽€D½€ÎÚ 2ë1!ü¢€5¬§€ “éìòè$¢€1Rü§€0 „þ4 ðØá€üØê‰) PV ê"åž$)H()s�!!)†4ŽðØ Í!#Û7!è7#$Ö å4&ö 4 (Ä Õ5 *Î'Þ'Ž'üãðŸü�öÒ tüÒù³”Éúü¡ûGü¡ýd8˜á#œºëðá#,ñê4„ë,Ÿë² ã óŠì ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwçð�ñ# ø óŠ à óŠé “á É “á ½ Z  Ú§$w ø„$ëéì! ùß A  ø„$ Ÿ‰$åD“öó¥ˆ$Ò™›$Z™›$¡™›$lřǙș­É™Ê™àË™óG*¤�R{9 ¹ ™›$Å_åž$LÖùÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwåž$Ñ8Ó8Ô8PoisonedÁÕ8óÖ8×8 WouldBlockÁÌaú† tiàåž$ „ÿ#+ Ðþ#®¥ˆ$Î4¡úåž$ířǙș­É™Ê™àË™óG*¤�R{9 ‚Ô œ Ñÿ#¨ åž$“{‚Ô pûåž$(‚Ô ,¥ýéìÖùß ö‚Ô [éì7ùß WÄ FN ~à‚ôã‡resÁ$stack_idÁ¬�ï Ÿ©& Ÿ©=&�U+�×.ŠÚ•$ð «–$¤ ”Ú T õ—$è ø„$¿ ÞŽ$| â™$ “›$e šœ$l €�$„ ”Ú A ’ž$ ÿŸ$ð $³Ñ¡$Y”Ú ÎÚ õð $ÔÎÚ ¦É£$…ˤ$Uáª$~áª$…åž$fåž$mø„$ 4ø‚ L�ƒ �éìòèЋ$Ä�ƒ$‹ƒ ¿�éìò脌$[ðØÙ±$D�ƒt‹ƒ\¿ƒ¹‡$Œ¿ƒ˃â™$.,˃Ô¶ƒ# 5 (Ù»‰ ¶ý »‰¾‰ (Ü»‰ “›$ T $  øÜ²‰‡A  PUšœ$ a jo { ðØ\鉹‡$Tô‰€�$+Dõ‰ % ‹¼é‰„ÿ#üé‰"D�Š’ž$/ T�Š)üã‰( ,ÍŠ¯åž$,׊ ïŠ,Œ‹ Œ�‹$‡‹ ‘M‚Ô �þ,�‹M\‡‹ ¸‹Ëü€ V†‹ˤ$v  ëû ÄÕ�¤üô‚Ïü§ƒœ°üÓ‰æ”ÊŠå‚ðá#,Ђ‚Ô ,ׂ‰Ћ$iD«ƒè¥ˆ$Й›$W™›$ž™›$iõ©$rª${Qåž$L׉áª$–ެ$¶š¬$û¥ˆ$4¢Šåž$z�­$œ­$‚Ô Tƒ‹û�ýà‰Ý­$ü�; Ÿ©¼Ÿ© :Ÿº(—ð#б$Žâ™$&“›$ƒšœ$Š€�$ã‚Ô ¾’ž$ž¡·$îåž$¹åž$Àˤ$áª$Náª$U‚Ô ö"º(—ð#1@�ñЋ$^—ð#gotº(—ð#•ƒ˜ƒ�E”ƒÙ±$\󊑃ˆC |\ˆ� Àœ‚Ô üéŒ< ˜éìòè,ž�¯�‘üŸŒ�˜á#œÇŒðá#,®Œ4µŒÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‚Ô èpàs£LüŽ Àœ‚Ô üÝŽ: ˜éìòè,��¡�’ü“ŽŽ˜á#œ»Žðá#,¢Ž‚Ô ,©Ž¢À$—�!RLå‘ Àœ‚Ô üÆ‘9 ˜éìòè$ù‘‰’“üò�—˜á#œ¤‘ðá#,‹‘‚Ô ,’‘¢À$—�!R4¾“ å²Ý´¯“d±“©€  ¯“9¤±“/DÝ“  ì²Ýdç“ ¹‡$  îÝü¯“E,דª� ” ] Jìד<Œ”  í²Ý\•”‘ñ# îÝü¯“r,†”ª� Š ] J܆”\¹” î ²Ý|Æ”Ÿ‰$îÝü¯“§,³”ª� ‹^Kü³”#ü¯“Á4è”á‚ ODè”ú”—üÜ’ž­àŒ�“ðá#,ã’·á ê’Àƒ ¥Àƒ Àƒ šÀƒ ƒ (²ÝK²ÝþîÝ賂$ø²Ý§îݘ�ñ#¡²ÝPîÝA¬©$J�œŸÐ©€ ­¥ˆ$îÝcª� B�ñ#îݪ� ᬩ$îÝ¡ª� €á‚ QTú�ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#¥õ�þ„ô�Àê¢ÏÊ$€œë¥ ôôÖÞ÷öÒßøæãßùôãßú�äß�wÁ¢”6Õ–¥õ«õs “2“2©ˆ$•2�ñ.ç–\*=°"�řǙș­É™Ê™àË™óG*¤�R{9 ¥õÌë¥ÿ¥  2ÖÍ$  ,ÿ¥,šžÏÊ$¯žË$ ¤ž  ÀÀÀÄ¿ µÃüðµ´]8"»Oÿ¥õ®®«°¿ ”3¯f*²Û�¥õ ¥õ•¤äé¥  üé¥%4†¦ ðW¥õ 0 D†¦üé¥8„�¦ ýWÉé# N”�¦. ²¦̦£üÅ�‡ t—žüæ¢Íùâ �‰]ùâ ìŸ]Éé#ã�ãé#,Ù�L—ž žË$ËóŠAâ ‘]óŠIâ ›]ˆ— !â ð]Éé#õřǙș­É™Ê™àË™óG*¤�R{9 Éé#r ÖÍ$� ÖÍ$• §Í$œžË$|¶Ì$ÒþÏ$�䬤ˆCøé˜ áý˜ à¦ÞsÏ•ùâ ›]]±Î$!¾Ð$îÐ$óTæ§ÏÊ$„à§+Û¬ÏÊ$€œÜ¯¶Ì$ §Í$Ìܯð¯±Î$ @ ,ð¯L†¨ÏÊ$¯žË$ ”¨ ŒÏ$ÍÏ$þÏ$)9äÚ¯  üÚ¯%4÷¯ ñW¥õ 1 D÷¯üÚ¯8„€° ýW÷ê# N ”€°.  £°üà§Ó½°¤ü¥§˜ ”ƒ¨ü׬Íùå �‰]ùå ìŸ]÷ê#4˧‘ë#L½§÷ê#zlƒ¨ žË${òóŠAå ‘]óŠIå ›]ˆ— !å ð]÷ê#řǙș­É™Ê™àË™óG*¤�R{9 ÷ê#Œ ÖÍ$«°Ó$=»Ó$ožË$(¶Ì$ÖþÏ$9è¬PˆCËé˜ Ýý˜ ܦÚwÏ•ùå ›]]±Î$ƃ×$1³×$üÉ´"äÉ´ ÆÀæ#$æ´*$ù´tù´ ê"ï­ï­ ManuallyDropÁñ­�¶„Ÿ~ Á$Àæ#i_f<þ´ ¦¥õ«õ˜Lþ´’µ¥ü™±ùüº´XűÀæ#$«±ŒÜ$D¾´ä‘ë#ì ŒÜ$ èÎ 4èÎ 7oÊÛ$d†Ü$*ìÜ$1 |ú¶ÏÊ$Œ�· ïóŠ´‹· ÀœžË$üç¶;”ç¶ ôÏÊ$~D+0üá¶AS ,ÏÁ €1æ ñ]Œ×ÃïóŠ9æ ù] ‰æ ð] Aæ ‘] óŠIæ ›] óŠIæ ¾]Qæ Ë]¹æ ¾],¸·¯žË$d°º   µ» L‰»¶Ì$,�» Ô‰»L“» �¥õ«õG 7  „“»ùæ ÷!] ±šáæ Û] Å™�Ñùæ ›]]ùæ › ]Ï•!æ ¼]Qæ Â]Yæ Î]XB|†Ä¶Ì$‘ñ#Œ£Ä “�ü†Ä/,–ħŽ$V ,œÄ< ü–ÄàĦü½¶£üµ·�üËÁýùæ �‰]ùæ ìŸ]Ò¶‘ë#LȶÏÊ$5 ÏÊ$¡ÏÊ$kœóŠ¥Lµ·žË$?,ØžË$ò4¡›òóŠ-óŠóŠøóŠë¸äÚˆ— !æ ð]Öþ›üb�ñ#©“á ‹¶Ì$è¶Ì$ðù�ôãã é˜ �ý˜ ‡¦ˆŒ§ß$vžË$Ëâ$ßÏ•{§Ž$ýtæÅ<ëÅìÜ$$æÅLëÅÿÅ«üÅÅ:×Å‘ë#LÍÅb7ìÜ$\ÛÇ æ ²ÝÜÌÇdÎÇ©€  ÌÇ9ÌÎÇ/4ÿÇ n²ÝT‡È ¶Ì$  îÝüÌÇF,ùǪ� “\ JÌùÇ<ªÈ  ð²Ý\³È ÏÊ$  îÝüÌÇs,¤Èª� Š ] JܤÈüÌÇ�4ÑÈá‚ MDÑÈãȰüýÆæ­àŒ¬Çãé#,„Ç·á ‹ÇÀƒ £Àƒ Àƒ ¡ƒ ª²ÝͲ݀îÝr ¶Ì$~²Ý-îÝ ÏÊ$*œ�²©€ ¤í$îÝѪ� °Âí$îÝpª� Oá‚ "èç ‹&® ® ¶˜¯ autÁ ° ¦ ± start_kindÁ j˜µÛÒwâej †»î$|„(ç Z& È(ç _&Ë(+ÿ÷7 ÿ÷B»î$Ó »î$Þ^h˜ï$û(è a& ñ ²Ýèè ‹& ò²Ý»î$+7îÝbg¥¢tyfk‹è f&Í(¤­à°íï$¸·áÀ²ÝȲݸîÝÀ €ð$Ë€ð$Óôœ ‹ò$îÝ¥¢!$Ö &TÐ &ðØü° && ýlƒ&¤ƒ&”&ô$üª"& Û ü€¬&üò,& Û "üÇ$&üÇ"& E <‡&l‚& Å™Û Ü Ý NoncontiguousNFAÁÞ ß ContiguousNFAÁà á ù©MÞ‚¦ÃYÏüÇI&$ý& ©Ðš œý&üÇt&T¢& ¦ Fl­& Ì¢&ìØ& �üǯ&TÍ& § \3  üÍ)&üÇþ&Lµ& ª I,¿&  „µ&6  üÇž &,×& ¢  ø” ø” m<Ý& t×&4‚&dü& $½&€ëë�®ì¦ª ¤X,ð…kìu$±& Å™ÿ÷Œ&ž&¯»î$”é& È(Ää& Å™ÿ÷V`¹üÄÈ&ü¼ Ê&üò” &üºÌ &üó“&d›&ü¹�&řǙș­É™Ê™àË™óG*¤�R{9 ÿ÷œ &ù¦$ï&Ó÷$<ˆ&ýþÿStandardÁ€�ÁÀ‚ƒLeftmostLongestÁ&»Ãù£V lÀ &Äí &ëô$<ö&awÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw»î$°ø$4¾& Ï Ï AhoCorasickBuilderÁÐ nfa_noncontiguousÁ Ñ nfa_contiguousÁ Ò Ò Ó ¦ Ô èí$ 3¿ÇÄ‹ ÷ü$—ˆþ$Јþ$ˆþ$Sˆþ$÷ü$řǙș­É™Ê™àË™óG*¤�R{9 ëô$0ëô$G��‘¢û’“ UnanchoredÁ”•žݨ?yóêu·4›&»î$x°ø$éÿ÷q¦—needlesÁ¢ ac_match_kindÁYac_kindÁYÇ ùɘ÷&ɘÿ™©t° ³wø”¯ô$’æõ$á”ö$ºØö$~ˆ÷$UÍ÷$256ÁXë ƒ'"(ë Z' Î(ë _'Ó(+Ìø7 ÌøBˆ‚%y ˆ‚%„^h †ˆ‚%§(ì a' Ÿ²ÝXì ƒ'ˆ‚%"îÝMR¬·_dQqì f'Õ(Š­à–à‚%ž·á¦²Ý®îÝž ó‚%©ó‚%±Òœßéâ„%îÝÞ¬·üdÒ',Ó'tú'$‚' ìwø”<ú'4‚'pãú'  ‘P�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫø””nsøãìè'�ž£ ÆQ–†%µ½Â Î á4ð' àÛ÷$|¨'4¯' ¥ø”Èš 4¨' D¯'î'dæ' Î(”á' Å™Ìøƒ'dÌ'  ŒÌ'   Ü'$  $û' Å™Ìøe º' L³'   3 ´§'\§'Œ¥ Z Ü£'$ . ü£"'$Á'IaÊü¥Þ'üĹ'w~ü›¹'řǙș­É™Ê™àË™óG*¤�R{9 Ìø|‚'ù¦,Ð'Ó÷$<ê'ˆ‚%<È'–†%„–†%»–†%–řǙș­É™Ê™àË™óG*¤�R{9 Û÷$ä –†%ðwÛ÷$Ýô 4Ÿ'†œà,Q<CãÌøˆ‚%'_kindÁ¥ÿ$ ã��”needleÁ¾  Ž%© Öâ…%ô�†%ͪ‡%Ô“ˆ%Ø�÷ dŒ¥ §256Áí ‚((í Z( Ö(í _(Ú(+œù7 œùBk¡ž sZdŒŸ �(î a( ó²Ýî ‚(!îÝLQ¬·^cPpî f(Ü(‰­à•ê�%�·á¥²Ý­îÝ�¾¤ ¥¡ž ­ÎœÛ徤 îÝÚ¬·ø l±(”±( Â($$Ý( Å™œùðØ  ˆ(  T€(      3 œ€(4‹(“ˆ%YD‹(Ì€(ô€( �($$¸( Å™œùðØ  ì( Tä( 3œä(4ï(“ˆ%YDï( ø( ´ä(  3 ôÝ( Ö( üØ$( Å™œù Œ(  Üüšò(řǙș­É™Ê™àË™óG*¤�R{9 œùt÷(ù¦,Å(Ó÷$<ß(åû  Ýô MÛ÷$š¿ª±œù SÝô �Û÷$êú¡Œ“å�%¯¥ÿ$³&¡�%³“ˆ%ô�÷ דˆ%ï À (ï Ä ((ï — ( Ý(ï œ (â(0ìù< ìùG’¡ž š¡ž ‡nxŒŸ ÆŒŸ ª(ð ž ( ô²Ýð À (îÝð Ä (!îÝsx ég‰ŽzY ð £ (ä(º ­àƃœ%ηáÖ²ÝÞîÝÍ¡ž ÕîÝ·¾¤ ¿¡ž Çœ(¡ž îݾ¤ îÝÔ�%Glõ(”õ( †($$¡( Å™ìùðØ tÅ($Í(â…%<Å(4Í(&üÅ-(Ô( ÅR–†%èø”Û÷$UÿmðØÞ %ÌØ(ôÔ(X ½(  Tµ(      $Œ( Å™ìùðØ W  œµ(4À(“ˆ% } DÀ( É( ´µ(   3  ê( Tâ(  3œâ(4í(“ˆ%Y Dí( ö( ´â(  3|‹( Ý(¬†( Å™ìù«(  æüÝ Î(ü¬y(üÙL(řǙș­É™Ê™àË™óG*¤�R{9 ìù|º (ù¦,ˆ (Ó÷$<¢ (µË6ë�%t–†%}°(Ýô nÛ÷$ßïör]dÝ(Ýô ÓÛ÷$ E07×ÂÉìù�å�%Ú¥ÿ$Þb1Á¼b2Á€}¡�%Èâ…%hÔ %:“ˆ%U“ˆ%xTÜ(4Þ(“ˆ% Ü(DÞ(„Ü(¬Ü( ð(ñ(èzÛ( Þ %’Û÷$ Ù(mÝô ›¤À“ˆ%º�÷ šñ ù(ñ ý(ñ �((ñ Ð( å(ñ Õ(ë(3Èú? ÈúJ·¡ž ¿¤¡ž ¬‘¡ž ™€ŠŒŸ úŒŸ ÞŒŸ Â(ò ×( õ²Ýò ù(îÝò ý(îÝò �(   ! îÝ™ž ëg¯´ ^Ëò Ü(í(å ­àñ�¬%ù·á²Ý îÝú¡ž îÝ塞 íîÝϾ¤ סž ßMœ[f¡ž îÝ[¡ž îÝ?¾¤ îÝ#›®%�l²(”²( Ã($$Þ( Å™ÈúðØt‚($Š(â…%<‚(4Š(&ü‚-(‘( ÅR–†%óø”ë %eðØDZ%Ì•(ô‘(P ú(  Tò(      $É( Å™ÈúðØW  œò(4ý(“ˆ% } Dý( †( ´ò(   3  §( TŸ(  3œŸ(4ª(“ˆ%Y Dª( ³( ´Ÿ(  3 Ô( TÌ(  3œÌ(4×(“ˆ%YD×( à(  ´Ì(!" ! "! 3 œõ(# å(Ìð( Å™Èú#™( ñüšÿ(üéª(ü–}(üÃP($řǙș­É™Ê™àË™óG*¤�R{9 Èú|÷(ù¦,Å(Ó÷$<ß(ž´ë�%]–†%fí(Ýô _Û÷$ÐõàçcNUš(Ýô ÄÛ÷$6!(ȳºÇ(Ýô )Û÷$v›†�-Èúæå�%#¥ÿ$(ͧ%Ú§%Êb3ÁŽÞ¡�%â…%¨½±%z“ˆ%�“ˆ%À“ˆ%ãT™(4›(“ˆ% ™(D›(„™(¬™( ­(®(óɘ( DZ%áÛ÷$ –(mÝô ›¤“ˆ%º�÷ šøó ¨')¸ ¸ FinderÁº  Ž%ž» ™›ž~ûP’Î[“Y^ †©¾%px(ó Z) î(ó _)ñ(+°û7 °ûB©¾%Ç ©¾%Ò^hù¾%ï(ô a) ö²Ýøô ¨') y²Ý©¾%+7îÝbg¥¢tyfk‹ô f)ó(¤­à°Î¿%¸·áÀ²ÝȲݸîÝÀ á¿%Ëá¿%Óôœ ìÁ%îÝ¥¢!l©)”©) º)$$Õ) Å™°û•) Š) T‚)   3œ‚)4�)“ˆ%YD�)ü°#)ܰ) ŠÈš4Ì) )ü°0)TÔ) � J dÔ)Œó) î( ¼î) Å™°û (‚üæ¯)üõš)ü£l) řǙș­É™Ê™àË™óG*¤�R{9 °ûtÃ)ù¦,‘)Ó÷$<«) Ýô 4ù)Û÷$°ÕÀÇ©¾%4§)©¾%p°û å�%l¥ÿ$p Ž%eåËG ¡�%¬“ˆ%í¹Ä%ÎèÄ%¥øõ €(*ááÉ�⨠©ã rabinkarpÁ©ä search_kindÁ©å¼›©¤Ô ­EÛ~ƒ †�È%•�øõ ¨ #*³ ³ ù© ´ ž²Ùµ ¨¤Ù¶ matches_memory_usageÁÙ· pattern_lensÁÙ¸ þ9Ù¹ �Ùº ÐÙ» àÙ¼ óÙ½ ¿Ù¾ min_pattern_lenÁÙ¿ max_pattern_lenÁÙÀ � ÙÎ#ˆÏºóûÑ †¿É%-7�õ   *(õ Z* ô(õ _*õ ^*>ù(MýûY ýûd�È%m �È%y¿É%à ¿É%ì·óŠ¿¦°’É%»ÌË% ó‹ê¿É%£�È%© (ö a* ÷²Ýøö €(* ø²Ý�È%,îÝøö ¨ #* ù ²Ý ¿É%, îÝ�ö   *  ú ²Ý *  6  îÝÛàÏž íòß䬱 y ~ö f*û(2­à?èÌ%H·áQ²ÝZ²ÝKîÝTüÌ%]²Ý)îÝ2‘Í%;²ÝîÝŒ‘óŠ"¾œÌ×üÌ%îÝÍ‘Í%îÝšŒ‘îÝgÏž $›*T•*ðØüõ.* ¶ü¹&* ýüß“* Œñ*¶·¸ÁÀ¹ºÉú$Ï!™^†*cZl„*’û$t±*$¹*â…%<±* 4¹*ü±(*À* ãQ–†%”ø”î %Uÿ bðØþÓ%¤Ä* ÌÀ*ü±.*Ú* ýRÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ–†%þÓ% ¸ ,Ú*ü±;*Là* ùW Š ê* dà*ü‡#*ü‡!* ¹!ü‡R*T¼* »HŒÇ*ì¼*.ü‡m*<ë* ºU Lë*'ü‡Ž*4†* ÈÓ÷$Û÷$W<�* |†*8ü‡§*,§* Ä` <§*øì‡¨*  �%řǙș­É™Ê™àË™óG*¤�R{9 �È%� kp| ü‡¨*m�È%  ¯*Çí®* �%řǙș­É™Ê™àË™óG*¤�R{9 ýûØ´ðØØ´g<�üÏ!*üÏ* ÷""!"üÏL*T‚* ¦!Il�* Ì‚*ü¸!*# �üÏ‹*T­* © ^#4ü­-*üÏ­*Lì* ¨J,ö* „ì*7üÏÍ*,Ž* šÓ÷$Û÷$g<”*tŽ*üÏã*®* ¶_¿É%°ø$[$®*øîÏä*  �%řǙș­É™Ê™àË™óG*¤�R{9 ¿É%•kp$|$üÏä*%m¿É%4Ø*' üÆ4*& ô('% üÁ:* Å™ýû&‹*ü ï²*×Ù%ðØØ´" „* K LüÈ Ã*’ üì™*ü�ö*üú‹*|ƒŠÐü½È*ÀÆ ÌF (ÝÙ%l¤*ù¦$ó *Ó÷$<Œ*ìÒ%P’û$ìÒ%’û$ü•ì*IJ*ìÒ%¸’û$­\“*ØÚ¹ÑÔ%–†%M�È%4þ*ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´�È%i˜Ø%� ÙÙ“¨ÚÉ©ÛinertÁ©Ü¨ ©· o6n€$-9 ûâ%EÎã%„ûâ%� ÆÆçǦ©ÈforceÁ©Éonly_teddy_fatÁ©Êonly_teddy_256bitÁ©Ëheuristic_pattern_limitsÁ©™R±dám îã%y�å%²îã%»â�È%*ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´¿É%dÅÝ% ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¿É%°ø$6 à à “¨Ä noncontiguousÁÙÅ èí$ÙÆ ¿ÙŠà±%LøÙ ÿæ%åÚç%Úç%mÚç%§ÿæ%°˜ÿ$Yf¿É%ãýûÄ�È%Û ¦¢¥ÿ$§packed_match_kindÁ ºÿ$Ò ¼›™ ô € Æ ÎðØØ´Ž!©›\Á*%Æ  ðØØ´Ž¢ %Óâ…%8 ñÓ% ËÔ%Ä ºÕ%\ ýÕ%! ¬Ö%ø éÖ%  ×%“ ç×%S ’Ø%/ ûâ%�×Ù%= ûâ%�åÚ%ø•Û%ÎÛÛ%�ŒÜ%fÒÜ%'ŒÝ%ô¿Ý%È×Ù%Ï�È%¬�È%³ûâ%ÜTÈ*4Ê*“ˆ% È*DÊ*„È*Ø*”¿ Ç* þÓ%Ø Û÷$ Å*Ýô s¤ÿ “ˆ%’�÷ rÀ÷ Ý)+„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�Ä�þhm †Öì%‡h÷ ™*+¨÷ Ê*+(÷ á(+ ü(÷ æ(+�)3äü?ÿÄGÖì% Öì%*¥÷ý­“󊛂Œ¶í%eÖì%Öì%oÈì êó‹ÏÖì%÷ å(+ (ø è(+ û ²ÝÀø Ý)+ H²ÝÖì%*îÝhø ™*+ ü²Ý ) îݨø Ê*+  ý²Ý *  6  îÝ×ÜÏž éîÚß©® y ~ø í(+ƒ)/­à<ÿÄE·áN²ÝW²ÝGîÝPçî%Y²Ý'îÝ0÷ý9²ÝîÝŒ‘óŠ#»œÉÔçî%îÝÉ÷ýîݘŒ‘îÝhÏž ýÔÿ;+\ÿ;+ Òø”$‹<+<‘<+-ü£<½+ ¸ø”Ãþȹ UÿÓ÷$üÿ;â+Dš<+ ˜XÃþäü¸ø”ªô%¸ô%šmüš<Ç+ç=+¶üŽ;Ù+ȹ Œã;+ù¦$²;+Ó÷$<Ë;+řǙș­É™Ê™àË™óG*¤�R{9 Ãþ6âô% ¦m¥ÿ$qŸïó%lÔô% t¾<+   <ß<+Ó÷$tß<+$ç<+â…%*4ç<+üß<(+î<+ ãQ–†%¹ø”‹Ô%ZðØß÷%¤ò<+Ìî<+üß<.+ˆ=+ üRÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ–†%ß÷%²,ˆ=+üß<;+LŽ=+ºÕ%† ˜=+dŽ=+4¿=+  ü¨=.+´¨=+ º;tÇ=+(à=+ ß=+ ¸Aüº<¦+ ȹ «<+âô%bÃþ4¤<+'ØÚx¬ø%Õ–†%ÃþçÓ÷$ �choiceÁL¥ÿ$Ó÷$Öï‹áâ…%bÒ÷%B¦ø%õºÕ%Œõù%4Ãþ÷ _ref__needlesÁTö<+4ø<+“ˆ% ö<+Dø<+„ö<+†=+¹‚õ<+ ß÷%›Û÷$ ó<+Ýô s˜Â“ˆ%’�÷ r¤ÉY+DÉY+ Õ�¦$ÒY+$ØY+,1üÉY,+DëY+ ðWTëY+üŒZ!+ ¾�¦  ÝÂȹ Uÿ ù¦üÉYe+DƒZ+ ˜Xòþ%äü¾�¦íþ%ÿþ%¡~üƒZ++ ³Z+´Z+üÎXæ+¼ȹ Œ­Y+ù¦$ÿX+�·$˜Y+řǙș­É™Ê™àË™óG*¤�R{9 òþ%g ––SeqÁ—÷ɼW_aǧ¯à��&é«ÿ%‹�ÿ%”¦¹”œ½úñý%(±þ%ð�ÿ%‹��&E��&L$¢Z+�ÿ%Ô“Z+t“Z+ ¶ÝÂ>$¨Z++­Z+¾Nȹ ’Z+«ÿ%eòþ%$�Z+ù¦��ÿ%€litsÁ!¦¶�ÿ%«ä‚&« _ref__kindÁD¼d+Öì%ì¼d+$Åd+ ÆÖì%1DÊd+$Ôd+¤Åd+éd+¿üìbý+­ãdŸc+ÿÄ,øb+Ýô Dÿb+Åž$�c+çî%™'ý�+Åœ/g¼„&¼Dóq+Öì%üóq+4üq+ ÇÖì%2Dƒr+$�r+´üq+¢r+Àü¡p�+­ãdÖp+ÿÄ,¯p+Ýô D¶p+Åž$Çp+çî%š'ý�+Åœ/gš†&½D·t+Öì%¼·t+dÀt+ ÈÖì%1tÀt+Þt+ÁüƒsÛ+,¡s+ÿÄ,—s+çî%v6÷‡&}œòv+•w+Âü¼uÙ+,Üu+ÿÄ,Òu+ .dô€+��+ÃüÆÊ+$ß+ÿÄ,Õ+ -D©Ž+ Þ"Àý,«Ž+%|©Ž+$²Ž+øËC4²Ž+¾Ž+Ìü€Ž>+²Ýd’Ž+ Àý,ˆŽ+µù�<ÆŠ&­øË‡DÃ�+ÆŠ&,Å�+ìÃ�+$Ì�+¾á=DÑ�+$Û�+¤Ì�+æ�+ÍüýŽi+­ãd¬�+·‹&,…�+Ýô DŒ�+Åž$��+µù­*ý�-Åœ0kÆŠ&æ¾áÆDí�+ÆŠ&,ï�+üí�+4ö�+±ß>Dý�+$‡‘+´ö�+’‘+Îü¥�m+­ãdÖ�+·‹&,¯�+Ýô D¶�+Åž$Ç�+µù®*ý�-Åœ0kÆŠ&ç±ßÇDû‘+ÆŠ&,ý‘+¼û‘+d„’+ÚÛ=t„’+˜’+ÏüÑ‘G+,ë‘+·‹&,á‘+µù†8ÆŠ&£ÚÛƒ4ý’+ÆŠ&,þ’+œû’+<…“+¸ÚLû’+L…“+”“+Ðü×’=+$ì’+·‹&,â’+µùˆ7ÆŠ&¥¸Ú…(ù ·�+/Xù ëž+¶˜ÿ÷ % †ÿ÷7?8ù Ñž+ Î�Ìø % †Ìø 7?(ù ½ž+ Œ›ýû % †ýû 7  ?0ù ªž+ Ûš°û % †°û 7  ?8ù •ž+•šÈú % †Èú7 ?8ù ÿ�+×™ìù % †ìù7 ?0ù ê�+¢™œù % †œù7 ? „)ù »�+6 „)$U „)Ct „) b“ „) �² „) Ñ „)¿ù ¼�+›) !(/6ÃþD ÃþPXê�%“œùœƒœ%éìùò�¬%?ÈúHο%•°ûžèÌ%ëýûôà‚%AÌøJíï$—ÿ÷ àó­!ó­ró­Ãó­ ó­e ó­¶ ó­F¸“&ü“&ÞÀ”&¡„•&dÈ•&'Œ–&êЖ&­ (ú ¾�+/Xú ëž+¶˜ÿ÷T\ñ ²Ý3?î݈�¬·šŸn ¬8ú Ñž+Î�ÌøÏן²Ý3?îÝ ¬·r +(ú ½ž+Œ›ýûOX÷²Ý5AîÝ…‹¬·™Ÿt ­0ú ªž+Ûš°ûÑÚö²Ý5AîÝ ¬·!t /8ú •ž+ •šÈúS \õ²Ý5 Aî݉�¬·� £t ±8ú ÿ�+×™ìùÕ Þô²Ý5 A  îÝ ¬· % t 30ú ê�+¢™œùW`ó²Ý5AîÝ�“¬·¡§t µú Ã�+�)Ñ×Þåìóú ­à¡™&·á!)ê�%ù²Ý:îÝ  ê�%ƒœ%¡²Ýaîݳ ƒœ%¿�¬%J²ÝˆîÝ\ �¬%hο%ó²Ý¯îÝ ο%èÌ%œ²ÝÖîÝ® èÌ%ºà‚%C²ÝýîÝU à‚%aíï$å²Ý$îÝ÷ íï$ CœQó­'ó­¶ó­E ó­Ôó­có­ðó­x·‘¦&îÝ�¬·Ìê¥&îÝ%¬·ÝÃ¥&îݶ¬·îœ¥&îÝE¬·ÿõ¤&îÝÔ¬·Τ&îÝc¬·!§¤&îÝò¬·2lÑ©+”Ñ©+ â©+&$Ǫ+ Å™ÃþðØt•¬+$�¬+â…%<•¬+4�¬+*ü•¬-+¤¬+ ÌR–†%Ôø”ë %kðØÜ©&̨¬+ô¤¬+T$¦­+ Å™ÃþðØÔÓ°+\Ó°+ Üø”$ß°+<å°+16 Lǰ+  ̰+ àœùœ·±+ „) ̲±+ Å™Ãþ ðØÜò±+dò±+ æø”$ÿ±+<…²+  16  Læ±+  ë±+ àìù¤Ø²+ „)ÔÓ²+ Å™ÃþðØÜ”³+d”³+ ñø”$¡³+<§³+ 16Lˆ³+�³+àÈú¤ú³+ „)Ôõ³+ Å™ÃþðØÔ¶´+\¶´+ ‚ø”$´+<È´+16Lª´+¯´+à°ûœšµ+ „)Ì•µ+ Å™ÃþðØÌÕµ+TÕµ+ ’ø”$àµ+<æµ+16Lɵ+ε+àýû”·¶+ „)IJ¶+ Å™ÃþðØÜñ¶+dñ¶+ Êø”$þ¶+<„·+16Lå¶+ê¶+àÌø¤×·+ „)ÔÒ·+ Å™ÃþðØü“¸+„“¸+ ¹ø”$¤¸+<ª¸+ 27! L‡¸+!Œ¸+" àÿ÷Ä‚¹+# „)"ôý¸+ Å™Ãþ#ðØ$ø¹+ Å™Ãþ‚º+ üð§’+Òüî°h+ü޲j+ü°³j+üÑ´h+üïµf+ü�·j+ü³¸s+$Íõ%t̨+ù¦$›¨+Ó÷$<´¨+«Â%ë�%g–†%p¹˜%¶|œùqÃþ`‡¦%(îìùãÃþÒÙ¸%š`ÈúUÃþDïÅ% Ò°ûÇÃþ¶ÝÙ%~Dýû9Ãþ(•Œ%ð¶Ìø«Ãþš¯ú$b'ÿ÷Ãþ  ¦5¥ÿ$9Ѷu ѶÑѶ-Ѷ‰ѶåѶAѶœ" ¡�%[â…%÷Ò©&Åܪ&B�¬&˜¾­&îï®&D °&šѱ&ðƒ³&FT¬¬+4®¬+“ˆ% ¬¬+D®¬+¬¬¬+D·¬+À‰CT·¬+Á¬+Ô,«¬+ Ü©&EÛ÷$ ©¬+Ýô ”¤m“ˆ%³À‰�ÌëÁ+¼ëÁ+ ÈLŠÂ+ä™Â+ �üŠÂ,+$”Â+ Ë@5ü”Â"+¬ÐÂ+œÐÂ+ é óöÂ+  ‘P�·$öÂ+(- øóëÂU+I  X] ÆQƦ o x}  ‰  ðØïÂ+ à®§D…Ã+L™Ã+d«Ã+4¯Ã+ƒ¾ «Ã+ D¯Ã+$óÄ+TíÄ+ ü™Ã+<£Ã+ É{o ¬£Ã+ü”Ã$+ü…Ã4+,ŽÃ+ ùÎ2 üŽÃ++ ¹Ã+D�Æ+ü�Æ,+ü–Æ!+ ™-ü–Æ#+D¢Å+|¢Å+$«Å+ €+4«Å+D¿Å+„¿Å+,ÈÅ+ þ+<ÈÅ+DöÇ+€È+å ÿÇ+üâÀž+ó‚Õ(ü×Á©+ü½ÂÃ+¶½��&dœÁ+ù¦$üÀ+�·$�Á+�� ExtractorÁ‚¦¼ƒ limit_classÁ¼„ limit_repeatÁ¼…limit_literal_lenÁ¼† limit_totalÁ¼_¿øÍüûlÛÁ+ ÊÂ& ëÃ&O�Ž�PrefixÁ�‘SuffixÁÙ-�¸1—¨†��&dÁÂ+Ʀ/Ʀ8řǙș­É™Ê™àË™óG*¤�R{9 ®§†¸��\®§û5 ��&õÔÅ&]��&– ÊÂ&•§ût‚Å+åÔÅ&ºÔÅ&ÕFÔÅ&a¦”œ extractorÁŒ€ñ2�b ¤OÉ É›»&ã»&Þ”¼&³¶¼&—‰½&žƒ¾Åè¾&|«¿&@��&‚À&ø¿À&ÀûÀ&‹��&0��&B(— …,— Š,£)&+¯€8 ¯€CLV™ ”,¦)™ ’, ÌÈ&&0`š å,´Ù# üh´Ù#Ò­ 3 š –,Dš š,¨)&1ÌÈ&9�® A ´Ù#„UƒblëÉ&®`› å,´Ù#´Ù#*/ ù±´Ù#´Ù#FKS› ¥,¬)H› œ,ÌÈ&ÌÈ&ÆÊ&“ÆÊ&›7î DN¶Ë&ÅPœ §,   (- Å™İ œ ±,®)[ʱ gÌÈ&oÌÈ&wİ ˆî •ŸâÌ&©`� å,´Ù#´Ù#*/ î´Ù#AFN� ¶,°)� ³,İ ÌÈ&ÌÈ& ÆÊ&�ÆÊ&˜9î FP¼Î&¬÷,dý, ›¨,÷, Š,|ý,üå(,Œå, ¸ ]$üå9,Ž, þW´Ù#¯€ Ÿ)Q\’,àÐ& „Ž,¤,âü«y,•¦œÇ,,¶,řǙș­É™Ê™àË™óG*¤�R{9 ´Ù#ç/�aƒåÏ&N¨Ð&ÒÐ&ð4Í,´Ù#dÍ,Ô,¹Ý#*,Ô,äÍ,dÚ, �¨> ç,|Ú,ï,ãü©F,,½,¯€$´,—´Ù#´<¹Ý#¼‡Ó&œ(  �2,  ”2,¶)&+×�8Ò¹@IS(¢ œ2, þ ²Ý¢ €3,!îÝMR¬·_dPq¢ ¡2,¹)‹­à—Ò¹Ÿ·á§²Ý¯îÝž…« ¦‡« ®ÐœÝç…« îÝÛ¬·ú£ €3, ä« 8£ £2, ±)£ ª2,»)-×�9]Gä« n¤ ®2,½)¤ ¬2, Ò¹&0¥ €3,É­ ( ¥ °2,9¥ ´2,¿)&1Ò¹9�® A‡« vRƒ_iÉ­  ¦ €3,&¦ ¿2,Ã)H¦ ¶2,Ò¹Ò¹ov5î BLP§ Á2,  î×� (- Å™İ § Ë2,Å)[ʱ gÒ¹oÒ¹wİ ˆî •Ÿ¶Û&©¨ €3,(-š³ 9>F¨ Ð2,Ç)¨ Í2,İ Ò¹Ò¹ ‡« ˆ‡« �9î FPš³ ºÜ’5,¼’5,t’5,óà* ¬5,L 'sMüø46,  Ìø4, ì¨' ­5,üˆ4§,ç×�T—4,çæúÅö>èóà_ÁÔ¾7,|¾7,èÒ¹4 ;DÎ7,­ãFTÎ7, ×7,ô¾7, Û7,$ 'KMü¥78,è,¶7,îÒ¹î×�öúšҹNç×�_Á/8ç×�GVè§Ò¹s×�|„‰ç×�äž8,  Ìž8,Àß& ¸8,5ü�8:,é×�T‘8,'_ÁüŸ9",  üŸ9 ,¯²!ü‡9;,ê,—9,&_Áܦ;,¤¦;, ¶×�,»;,)Ç;,ëüÜ:k,ÇÍüø:#,,ç:,÷ /Îå&zdÔ@,ÄÉ@, ±)ç@,ìü¾?©,×�Tê?,,Ù?,[÷6},Ô@,— ß@,� ±) à@,£ì¡×��›ôx÷³Ö´ûA,|ûA,¾´,‹B,¬™B, ÿ²ÝüûA4,4’B, Ò_×�Є]>ì’B,µB,íüÉAl,×�TæA,,ÕA,Çͦ²ÝŠ÷>¾´Ì®é&•4©D,|©D,¾D,îü­C‘,,ÍC,Ò¹,ÃC,X5y} ·D,ƒî�}Ò¹{Ñ‹®4¥F,l¥F,¸F,ïü¬EŒ,ÊE,Ò¹,ÀE,X5y} ±F,ƒï�}Ò¹{Ñ‹®4ãG,ïG,ðü·G8,ÕG,Ò¹,ËG, -a_ð]ZÒ¹Xaƒ4ƒJ,lƒJ,–J,ñü‰I�,§I,Ò¹,�I,X5y} �J,ƒñ�}Ò¹{Ñ‹®|£L,D¨L,­ã$£L,T¨L,œ£L, µL,¼L,òüùKC,,“L,Ò¹,‰L,|4­ã™ Ì¿O,”¿O,Ü‚",ÒO,|êO, óÒ¹ÄêO,4úO, ð2DúO,ìåO,l¹P,L¹P, ®ÃP,(üœP,, È)ü˜P1, Àœ×�Є�Q,lúP,DýP, šúP, TýP,üàP(,ÌàP,Àß& CüÝP,, Àœ×�Є~ˆóüÑN¾,ü¶OÙ, ÇÍüˆO#,¬�",ïN,ºO,W…Ò¹©Є U×�¿óöÆNˆCRˆîç×�Ü‚"%½ó&íˆô&ªùô&?Àß&)2ç×�APóöÒ¹m×�v~ƒç×�4ÁÌ T,” T,Ü‚",³T,ü T$,DºT,ùô&<TºT,ü†T?,̆T,Àß&=ËT,õü¿SŒ,×�TñS,¬�",ÞS,€­öÆ?Ü‚"Ìùô&¬Àß&‹4Á4îU,¤îU,\õU,·…"*lõU,ˆV,÷ü¿UI,¬�"<ÜU,Ò¹,ÒU,n5·…"v4Á,œW,„œW,D¢W,­ã%T¢W,´—W, ¼–W,³W,üüãVP,¿Ï ‰W, ‹ƒ,ìV,×�,óV,ªÒ¹Â•›1÷4d­ãé,ÄX,„ÄX,DÊX,­ã%TÊX,´¿X,+ ܺX,ÛX,ÿüûW`, éì4©X, ‹ƒLˆX,×�,“X,ºÒ¹Ò ‹ƒ¨¯µ;÷>q­ã,ŒZ,„ŒZ,D’Z,­ã%T’Z,”‹Z, ‘ý«ƒ$‡Z,J,£Z,ƒüÓYP,¿Ï ùY, «ƒ,ÜY,×�,ãY,™Ò¹±$÷'W­ãËÈ€'«,Ñ[,„Ñ[,D×[,­ã%T×[,”Ð[, ª#«ƒ$Ì[,I+è[,†üˆ[`,Šÿ&4¶[, «ƒL•[,×�, [,˜Ò¹°$÷'W­ãÊ´‚'ªp© Él,(© Šl, È)© �l,Ë)-Є9 ЄDmƒ®u\f÷¯’(ª ‘l, €²Ýpª Él, _ ²Ý)5îÝaf¥¢sxdiŠª –l,Í)¤­à°¼„'¸·áÀ²ÝȲݷîÝ¿·ºǃ®Ïñœþ·ºîÝý¥¢« šl,Ï)« ˜l, ¼„'&0p¬ Él,&¬ ¥l,Ò)H¬ œl,¼„'¼„'ov5î BL௠²q,…  †… /7(¯ üp, Ó)¯ �q,Ö)-Î…9 Î…D… ˆ … “`j½‰'°(° ƒq, �²Ýà° ²q, ‚²Ý… +7îÝch¥¢uzfkŒ° ˆq,Ø)¦­à²”Š'º·á²ÝʲݹîÝÁ §Š'̧Š'Ôöœ´Œ'îÝ¥¢#(± �Ë,± ¢Ë,Þ)(-›†:ãÉBKUP³ „Ì,  ÷×�8³ ªË, Ù)³ ±Ë,á)/›†;×�gJú�'x´ µË,ã)´ ³Ë, ãÉ'1Pµ „Ì,×� üh×�Ò­ 4 µ ·Ë,Fµ »Ë,å)(3ãÉ;�® CÒ¹„Tƒakç�'®P¶ „Ì,×�×�+0 ù±×�×�GLT¶ ÆË,é)H¶ ½Ë,ãÉãÉÒ¹–Ò¹ž8î EO²‘'ÈP· ÈË,  !). Å™İ · ÒË,ë)]ʱ iãÉqãÉyİ �Šî —¡á’'«P¸ „Ì,×�×�+0¶Û&<AI¸ ×Ë,í)¸ ÔË,İ ãÉãÉ!Ò¹�Ò¹•:î GQ¶Û&¿(¹ æÐ,¹ ëÐ,ó)(-Ç:ÍŠBKUP» ËÑ, ú�'8» óÐ, î)» úÐ,ö)/Ç;×�aJú�'r¼ þÐ,ø)¼ üÐ, ÍŠ'1P½ ËÑ,×�ç�'* ½ €Ñ,<½ „Ñ,ú)(3ÍŠ;�® CÒ¹zTƒakç�'¤P¾ ËÑ,×�×�+0²‘'<AI¾ �Ñ,þ)H¾ †Ñ,ÍŠÍŠÒ¹‹Ò¹“8î EO²‘'½P¿ ‘Ñ,  îÇ!). Å™İ ¿ ›Ñ,€*]ʱ iÍŠqÍŠyİ �Šî —¡“›'«PÀ ËÑ,×�×�+0¶Û&<AIÀ  Ñ,‚*À �Ñ,İ ÍŠÍŠ!Ò¹�Ò¹•:î GQ¶Û&¿°Á ûv, Ù)xÁ �w,ç×�øÁ äv.,„*›†(Á óv,+Bç×�_ÁˆÁ ýw, èøÁ äw+,…*(Á õw,*IèSmallIndex::LIMITÁ¸Á Õx, Ù)€Á Ûx,é×�øÁ ½x0,†*›†(Á Íx,+Bé×�_Á€Á Ûy, êøÁ Ãy),‡*(Á Óy,*IêSmallIndex::SIZEÁ°Á Ÿ|,xÁ Ÿ|,¾´(Á ¯|,%øÁ Ÿ|!,Á ¶|, º_×�Є›† Ú)Z(Á º|,¤¢' PÁ ¶|,øÁ Ÿ|/,8Á Á|, Ç_›†Єú‰ Ç*~ Á É|,ô¢' hÁ Á|,Á Ü|,ˆ*øÁ Ý{,÷ɘÁ ù{,(Á è{,ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw›†Є.ÇÍc�s™¾´‚’¢']â¢'øÁ ä� ,ÈÁ ä�,Àß&(Á þ�,)øÁ Þ�', Ù)Á “‚,‰*øÁ š�y,›†(Á Æ�,(Á µ�,×�‰�?Àß&§±›¡É ÐÊÀß&ÅéÁ ƒ‚,Ë Ù)Á „‚,Љ*Ë›†ÅÀ×�D0�ÛˆÁ ´ƒ,PÁ ´ƒ,®¨(Á ¿ƒ,(øÃ ̓~,ƒ²ÝøÁ ´ƒ˜,0Á ƃ, Ò_›†ú‰qIøÁ ƃ†,Á Ú„,Š*øÁ ÿ‚Û,›†(Á œƒ,(Á ‹ƒ,÷É̲ݧ�H®¨ò¨'®0Á ¬†,×�ˆÁ ¬†,@Á ³†,­ã4PÁ ³†,Á ˆ,‹*øÁ ô…W,(Á ”†,ãÉ(Á І,Ò¹‡>­ã‹®´×�­ ´¯­ãÞªÁ ¼†,°‹*«¥ãÉ Ò¹"²Ú0Á �ˆ,×�xÁ �ˆ,0Á –ˆ, ï6@Á –ˆ,Á ¬ˆ,Œ*øÁ Û‡Q,Á ù‡,ãÉ(Á ï‡,Ò¹‰>Õ¬'�°¶×�¯ ¶±Õ¬'àªÁ �ˆ,°Œ*«¥ãÉ Ò¹$²Ú0Á ö‰,×�xÁ ö‰,0Á ý‰,½ó&4@Á ý‰,Á “Š,�*øÁ ‰Q,Á à‰,ãÉ(Á Ö‰,Ò¹‡>½ó&‹®´×�­ ´¯½ó&ÞªÁ „Š,°�*«¥ãÉ Ò¹"²Ú0Á ß‹,×�xÁ ß‹,0Á æ‹, ñ6@Á æ‹,Á ü‹,Ž*øÁ «‹Q,Á É‹,ãÉ(Á ¿‹,Ò¹‰>ݱ'�°¶×�¯ ¶±ݱ'àªÁ í‹,°Ž*«¥ãÉ Ò¹$²Ú0Á æŽ,×�ˆÁ æŽ,@Á íŽ,‡µ4PÁ íŽ,Á …�,�*øÁ ´ŽQ,(Á ÎŽ,ãÉ(Á ÄŽ,Ò¹‡>‡µ‹øÁ š’ ,ÈÁ š’, ó(Á ´’,+øÁ š’+,Á »’,’¢'N(Á ¿’,¤¢' PÁ »’,øÁ š’9,8Á Æ’,â¢'\ Á Î’,ô¢' hÁ Æ’,Á á’,�*øÁ Ì‘•,÷ɘÁ ô‘,¬�"(Á á‘,Ö£'ÁÇÍûöÆ J»µ'’¢'ïâ¢'µ4ÁøÁ …–*,øÁ …–#, õ(Á ©–,,øÁ ÿ•1, Ù)Á ¾–,’*øÁ µ•‰,›†(Á ç•,¬�"(Á Ô•,×�ŽöÆB„¸'­4Á0Á ý—,×� Á ý—,XÁ „˜, ÷6hÁ „˜,Á Ÿ˜,”*øÁ Æ—Y,¬�"8Á ã—,ãÉ(Á Ù—,Ò¹Š?ç¹'Ž4Á(Á …Ÿ,€Á …Ÿ,@Á ‹Ÿ,Á½.PÁ ‹Ÿ,°Á €Ÿ," ¸Á ÿž,Á ¤Ÿ,œ*øÁ Éž[,¿Ï Á êž,ƒý&(Á Òž,›†(Á Ùž,ÅãÉà§­7÷7mÁ½(Á Ó ,€Á Ó ,@Á Ù ,Á½.PÁ Ù ,°Á Π,. ØÁ É ,Á ò ,Ÿ*øÁ ‡ k,Šÿ&0Á ° ,—ÿ&HÁ ” ,›†(Á Ÿ ,ÒãÉí½ÿ&µ¼Â?÷?uÁ½(Á Ñ¢,€Á Ñ¢,@Á ×¢,Á½.PÁ ×¢,�Á Т, È€' Á Ì¢,O(Á ð¢,£*øÁ •¢[,¿Ï Á ¶¢,•�'(Á ž¢,›†(Á ¥¢,ªãÉÅ*÷*`Á½ÜÈ€'³(Á Ĥ,€Á Ĥ,@Á ʤ,Á½.PÁ ʤ,�Á ä, ´‚' Á ¿¤,O(Á ã¤,¦*øÁ ø£k,Šÿ&0Á ¡¤,€ƒ'HÁ …¤,›†(Á �¤,ªãÉÅ*÷*`Á½Ü´‚'³xÅ º±,Є †Є08(Å „±, Æ*Å ‰±,Ê*/ú‰;´ÖCЄˆ¼„'�\fþÃ'­(Æ ‹±, „²ÝxÆ º±,Є#îÝPU¬·bgRtÆ �±,Ì*�­à›´Ö£·á«²Ý³îÝ¡ ¼„'¬¼„'´×œäîÒÆ'îÝᬷÇ ”±,Î*Ç ’±, ´Ö'1xÈ º±,ЄЄ+0 ù±ЄЄGLTÈ Ÿ±,Ñ*HÈ –±,´Ö´Ö¼„'–¼„'ž8î EO«È'ÈpÌ ¨·,Î… †Î…08(Ì ù¶, Ò*Ì þ¶,Ö*/üŠ;ÒïCÎ…ˆ”Š'�\fìÉ'­(Í €·, … ²ÝpÍ ¨·,Î…#îÝPU¬·bgRtÍ …·,Ø*�­à›Ò᫲ݳîÝ¡ ”Š'¬”Š'´×œäîÀÌ'îÝᬷ(Ó •¿,‰Œ †‰Œ08PÓ ¨¿,üŠ †üŠ09(Ó Ñ¾, Ù*‰ŒÓ Ö¾,Ó Õ¾,Eß*TÌ‹` Ì‹k‰Œî ‰ŒùüŠÄÒïÌ—¡±Í'&îÍ'ð‰Œˆ(Ô Ø¾, †²Ý(Ô •¿, ²Ý‰Œ+îÝPÔ ¨¿, ‡²Ý üŠ,  8 îÝ¡¦¤é³¸£¨qvÔÔ Ý¾,â*ï ­àûíÎ'·á ²Ý²ÝîÝ €Ï'²ÝãîÝë ÒïöÒïþ]œkv€Ï'îÝj‘Ò'îÝ8¤é•Á ÎÀ,@Á ÎÀ,Á ÑÀ, �Q‰Œ4(Á ÑÀ,¨Á ÂÀ,XÁ ÂÀ,ÙùQ$Á õÀ,¨Á éÀ, Ù*‰ŒÁ ŒÁ,Á ‹Á,øÁ ˆÀ„,Á*øÁ ¸ÀT,Ì‹`Á ™À,‰ŒÁ �À,üŠÁ ¼À, €Ï'%‰Œ¼ÛË6ì¨7‡”Ó'FÙù‰Œ´ 8Á åÂ,‰ŒpÁ åÂ, Á íÂ,’¶50Á íÂ,x�åÂ,  �%řǙș­É™Ê™àË™óG*¤�R{9 ÅQ‰Œ˜qvÁ åÂ,šxÁ åÂ,m‚×'@Á ‘Ä, üŠxÁ ‘Ä, Á šÄ, ÆQüŠ ;  0Á šÄ,‚óÂ, �%řǙș­É™Ê™àË™óG*¤�R{9 ›†‚×'Ø´ðØØ´m“ÀÁ ‘Ä,0Á ¡Ä, øW›† Ú @Á ¡Ä, Á ÅÄ, PÁ ÀÄ,  €Á »Ä, Å™›Ù' Á ÙÄ,Á ØÄ, øÁ ™ÂÀ,Å*øÁ ÚÂÿ,LSZÞøÁ ˆÄQ, ÖØ'ÀÁ ¯Â, Ì‹HÁ ¡Â,‚×' Á ÞÂ,ÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Ø´‚×'½Ö'L¿Ño‚×'–›†Á ŒÄ,ܧk üŠ‘›Ù'‚‚×'œÌ›ÌÆ oðØØ´ŽˆCms’¶ï·Ö'ÇžØ'ìÐØ'Õ×Ù'A‚×'¶°Õ ûv, î)xÕ �w,ç×�øÕ äv.,ä*Ç(Õ óv,+Bç×�_ÁˆÕ ýw, èøÕ äw+,å*(Õ õw,*IèSmallIndex::LIMITÁ¸Õ Õx, î)€Õ Ûx,é×�øÕ ½x0,æ*Ç(Õ Íx,+Bé×�_Á€Õ Ûy, êøÕ Ãy),ç*(Õ Óy,*IêSmallIndex::SIZEÁ°Õ Ÿ|,xÕ Ÿ|,¾´(Õ ¯|,%øÕ Ÿ|!,Õ ¶|, º_×�ЄÇ ï)Z(Õ º|,·â' PÕ ¶|,øÕ Ÿ|/,8Õ Á|, Ç_ÇЄ»� §+~ Õ É|,‡ã' hÕ Á|,Õ Ü|,è*øÕ Ý{,ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇ»�˜Õ ù{,(Õ è{,ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇЄ�ÇͶ�sì¾´Õ¥â'°õâ'gøÕ ä� ,ÈÕ ä�,Àß&(Õ þ�,)øÕ Þ�', î)Õ “‚,é*øÕ š�y,Ç(Õ Æ�,(Õ µ�,×�‰�?Àß&§±›¡É ÐÊÀß&ÅéÕ ƒ‚,Ë î)Õ „‚,Ðé*ËÇÅÀ×�D0�ÛˆÕ ´ƒ,PÕ ´ƒ, è*(Õ ¿ƒ,*ø× ̓~,ˆ²ÝøÕ ´ƒ˜,0Õ Æƒ, Ò_Ç»�sIøÕ ƃ†,Õ Ú„,ê*øÕ ÿ‚Û,Ç(Õ œƒ,(Õ ‹ƒ,Òã'βݧ�HÜè'ôªé'®0Õ ¬†,×�ˆÕ ¬†,@Õ ³†,­ã4PÕ ³†,Õ Ë†,ë*øÕ ô…W,(Õ ”†,ÍŠ(Õ Š†,Ò¹‡>­ã‹®´×�­ ´¯­ãÞªÕ ¼†,°ë*«¥ÍŠ Ò¹"²Ú0Õ �ˆ,×�xÕ �ˆ,0Õ –ˆ,Õ¬'4@Õ –ˆ,Õ ¬ˆ,ì*øÕ Û‡Q,Õ ù‡,ÍŠ(Õ ï‡,Ò¹‡>Õ¬'‹®´×�­ ´¯Õ¬'ÞªÕ �ˆ,°ì*«¥ÍŠ Ò¹"²Ú0Õ ö‰,×�xÕ ö‰,0Õ ý‰,½ó&4@Õ ý‰,Õ “Š,í*øÕ ‰Q,Õ à‰,ÍŠ(Õ Ö‰,Ò¹‡>½ó&‹®´×�­ ´¯½ó&ÞªÕ „Š,°í*«¥ÍŠ Ò¹"²Ú0Õ ß‹,×�xÕ ß‹,0Õ æ‹,ݱ'4@Õ æ‹,Õ ü‹,î*øÕ «‹Q,Õ É‹,ÍŠ(Õ ¿‹,Ò¹‡>ݱ'‹®´×�­ ´¯ݱ'ÞªÕ í‹,°î*«¥ÍŠ Ò¹"²Ú0Õ æŽ,×�ˆÕ æŽ,@Õ íŽ,‡µ4PÕ íŽ,Õ …�,ï*øÕ ´ŽQ,(Õ ÎŽ,ÍŠ(Õ ÄŽ,Ò¹‡>‡µ‹øÕ š’ ,ÈÕ š’,»µ'(Õ ´’,)øÕ š’+,Õ »’,¥â'L(Õ ¿’,·â' PÕ »’,øÕ š’9,8Õ Æ’,õâ'\ Õ Î’,‡ã' hÕ Æ’,Õ á’,ð*øÕ Ì‘•,Òã'˜Õ ô‘,¬�"(Õ á‘,¼ä'ÁÇÍùöÆ J»µ'¥â'ïõâ'µ4ÁøÕ …–*,øÕ …–#,„¸'(Õ ©–,*øÕ ÿ•1, î)Õ ¾–,ò*øÕ µ•‰,Ç(Õ ç•,¬�"(Õ Ô•,×�ŒöÆB„¸'«4Á0Õ ý—,×� Õ ý—,XÕ „˜,ç¹'4hÕ „˜,Õ Ÿ˜,ô*øÕ Æ—Y,¬�"8Õ ã—,ÍŠ(Õ Ù—,Ò¹ˆ?ç¹'Œ4Á(Õ …Ÿ,€Õ …Ÿ,@Õ ‹Ÿ, ë*0PÕ ‹Ÿ,°Õ €Ÿ," ¸Õ ÿž,Õ ¤Ÿ,ü*øÕ Éž[,¿Ï Õ êž,ƒý&(Õ Òž,Ç(Õ Ùž,ÇÍŠâ§­7÷7m…ü'(Õ Ó ,€Õ Ó ,@Õ Ù ,…ü'.PÕ Ù ,°Õ Π,. ØÕ É ,Õ ò ,ÿ*øÕ ‡ k,Šÿ&0Õ ° ,—ÿ&HÕ ” ,Ç(Õ Ÿ ,ÒÍŠí½ÿ&µ¼Â?÷?u…ü'(Õ Ñ¢,€Õ Ñ¢,@Õ ×¢,…ü'.PÕ ×¢,�Õ Ð¢, È€' Õ Ì¢,O(Õ ð¢,ƒ+øÕ •¢[,¿Ï Õ ¶¢,•�'(Õ ž¢,Ç(Õ ¥¢,ªÍŠÅ*÷*`…ü'ÜÈ€'³(Õ Ä¤,€Õ Ĥ,@Õ Ê¤,…ü'.PÕ Ê¤,�Õ Ã¤, ´‚' Õ ¿¤,O(Õ ã¤,†+øÕ ø£k,Šÿ&0Õ ¡¤,€ƒ'HÕ …¤,Ç(Õ �¤,ªÍŠÅ*÷*`…ü'Ü´‚'³xÙ º±,ЄþÃ'*2(Ù „±, ¦+Ù ‰±,ª+/»�; »�FЄ…¼„'�_iþÃ'ª(Ú ‹±, ‰ ²ÝxÚ º±,Є#îÝPU¬·bgRtÚ �±,¬+�­à›±…(£·á«²Ý³îÝ¡ÒÆ'©¼„'±ÔœáëÒÆ'îÝÞ¬·þÛ ”±,®+Û ’±, ±…('1xÜ º±,ЄЄ+0«È'<AIÜ Ÿ±,±+HÜ –±,±…(±…(¼„'‹¼„'“8î EO«È'½pà ¨·,Î…ìÉ'*2(à ù¶, ²+à þ¶,¶+/½Ž; ½ŽFÎ……”Š'�_iìÉ'ª(á €·, Š ²Ýpá ¨·,Î…#îÝPU¬·bgRtá …·,¸+�­à›�‹(£·á«²Ý³îÝ¡ÀÌ'©”Š'±ÔœáëÀÌ'îÝÞ¬·þ(ç •¿,‰Œ±Í'*2Pç ¨¿,½Ž †½Ž09(ç Ѿ, ¹+‰Œç Ö¾,ç Õ¾,E¿+T��` ��k‰Œè€Ï'ð½ŽÁ�‹(É”ž±Í'¯Ž(퉌…(è Ø¾, ‹²Ý(è •¿, ²Ý‰Œ+îÝPè ¨¿, ‡²Ý ½Ž,  8 îÝ¡¦¤é³¸£¨qvÔè ݾ,Â+ï ­àû®�(·á ²Ý²ÝîÝ €Ï'²ÝãîÝë �‹(ö�‹(þ]œkv€Ï'îÝjÏ’(îÝ8¤é•Õ ÎÀ,@Õ ÎÀ,Õ ÑÀ,”Ó'.(Õ ÑÀ,¨Õ ÂÀ,XÕ ÂÀ, ö*M&Õ õÀ,¨Õ éÀ, ¹+‰ŒÕ ŒÁ,Õ ‹Á,øÕ ˆÀ„,¡+øÕ ¸ÀT,��`Õ ™À,‰ŒÕ �À,½ŽÕ ¼À,€Ï'!‰Œ¼ÛË6ì¨7‡”Ó'B‚”(‰Œ´ 8Õ åÂ,‰ŒpÕ åÂ, Õ íÂ,’¶50Õ íÂ,x‹åÂ, ·Ö'E#Õ åÂ,GxÕ åÂ,m‚×'@Õ ‘Ä, ½ŽxÕ ‘Ä, Õ šÄ, ÆQ½Ž ;  0Õ šÄ,ÅŒóÂ, �%řǙș­É™Ê™àË™óG*¤�R{9 Ç‚×'Ø´ðØØ´m?ÀÕ ‘Ä,0Õ ¡Ä, øWÇ Ù @Õ ¡Ä, Õ ÅÄ, PÕ ÀÄ,  €Õ »Ä, Å™�™( Õ ÙÄ,Õ ØÄ, øÕ ™ÂÀ,¥+øÕ ÚÂÿ,LSZÝøÕ ˆÄQ, ¼˜(ÀÕ ¯Â, ��HÕ ¡Â,‚×' Õ ÞÂ,çÛ'o½Ö'§¿ÑÊ¿‚×'DÇÕ ŒÄ,¶à ½Ž?�™(1‚×'K{›{Æ ðØØ´Ž®ˆCm"’¶J·Ö'"…˜(š¶˜(0½™(ð‚×'eäÁÖ,´ÁÖ, Á*$ØÖ,*ãÖ,ŸüËÕ˜,Ù*Ù*¨Û*ÛËÙÜ*ì¨ÙFÝ™�''àëÅ�(¼èÕ,Å�($ßÕ, o¿�(¼ÔÛ×,¤Û×, ¡+Å�($ð×,)û×, üéÖ’,¹+¹+�®»+ÛËÙ¼+ì¨Ù¨$KPߢÅ�(¬„×,Å�($ûÖ, oˆŸ(»¸é í!ÈË àÄ)1�é Š"Ø¥Ò› )1(é Æ! Ã+é Ë!Ç+0ö�<ÕÊ DÈË ¸âÈÀØ¥’äƒ šmwàÄíÒ› ½(ê Í! ²Ý¸ê í! Œ ²ÝÈË +îÝ�ê Š" �²Ý Ø¥+  7 îÝž£¤é°µ¢§puÑê Ò!É+ë ­à÷ÕÊ ÿ·á²Ý²ÝîÝ âȲÝàîÝèî¤ ðäƒ øUœcnâÈîÝdî¤ îÝ2¤é�256Áˆë Ì<†‘&+ †ü¥(=E(ë Ÿ< Ê+ë ¤<Î+-Å�9õÊAü¥(“ ü¥(ž]gš¦(»256ÁŒÉK\ÉKŒ¥ $ÕK ÜÀK$ .Iü¥(áK¹üŠKW†‘,°KõÊ,œK$£KÀ¡!—»&RŒ¥ ñ256Á0Á1Á2Á3Á4Á5Á(ô ªfô ¯fä+&†‘2í¨ :CM (ö ·f,3;޲Ýö »fV^�²Ý#u}�²ÝB”œ‘²Ýa³»’²Ý€ÒÚ“ ²ÝŸóøƵ   ö ¼fç+/­à<í¨ E·áN²ÝW_iœw‚Ƶ �÷ Àfé+÷ ¾fí¨  *Hø Âfø Ëfì+>CITí¨ \í¨ dkr{î ˆÀ‘–Ø‘¢ª,áw\áw òwÄüÑv¡ïví¨ ,åv†‘_f=dèy,íy Ä$èy<íyÌÜy\ÜyŒ¥ @ûyÅü«yP,Ìyí¨ ,Ây�4æ±(žŒ¥ zŒ€-|€- ÷Ý’”ÿ-üå--|å- Õµ“Dõ-3+”-Òü“�-ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÅõÐÆ ¼Ç-§òD´- Ý’ÍÝ’ø¨  ——³(˳(뤤-”¤- ÷dË-Ô¾-,Å- ï4¾-/œÅ-¹ù ¾ ©ù ¾ ƒô|‚-$‹-›öD‚-4‹-x¨‚-  ‘PÕöD$) ø¨ùW-D  SX˜Ù d mr  ~  ðØ ý- àµù$œ-<¦-|¦-,®-­Ú% <®-$Ø-DÕ- ÀœÅõÐÆ ß-^T¼-4¾-îú ¼- D¾-ü¦!-,¶-ÄÛ¬D Œ¶-ø©¦"-  �%€ãI%*6ü¦"-m‰ôüœ--$¡-óŒZ7ü¡(-ªÇ-[ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏïÐÆ þt �%‹´(›»(Š" É- Þ-Ì=+üŸÀ-Õ ü’Í-üÞ�-29@�‹´(¼ô-§òDÊ-ò´(4Þ-߯\–- ߯;ÅõDâ-Õö¿ÕöñÕöÑ¡áÚïáã´µùZ¨œRÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^›»(‰ôÊ€ãÜãŸÞã¨þÌÁ²ÝMp›»(y‰ôÊÅõ¸¨ 8É<Ö@”œ/�ð ¦b Æ äŽ8µ(Öòµ(­ƒô…›öfð¶(D˜ÙK­Ú€îúÄÛø†º(ÒóŒwÿ»(àÞã½ÞãÄÅõ©ÞãÒÅõ·(ú ½"-ú Â"-û+&+17Ý’Dò´(LU_(ü Ê"- þ+ã °ü ê"-îÝ€ü †#-   îÝÐü œ#-   îÝPü ¼#- îݘü Ì#-îÝ€ü å#-îݸü û#-îÝhü ˜$-îÝPü «$-îÝxü »$- îÝXü Ð$-  îÝÀ îÝ    ïü�ú²Ý$¼ú8>ÓúLRX^gü Ï"-þ+‚ˆ� ­à�ò´(¦·á¯ã ¸�úÁÊÈ ÊÌÈ ÓîÝÁ÷ýÊîÝ®÷ý·îÝ›÷ý¤î݈÷ý‘îÝu¡ž ~îÝa÷ýjîÝN÷ýWîÝ;÷ýDîÝ(÷ý1î݇« îÝÓñ  ÷ý²Ý«¼ú´¾œÌƒ Ú‘æï ÷ýîÝâ÷ýîÝÇ÷ýîݬ÷ýîÝ‘¡ž îÝv÷ýîÝZ÷ýîÝ?÷ýîÝ$÷ýîÝ ‡« îÝîÓñ îÝÒÓúh4=” ²ÝK4=•²ÝK4=–²ÝK4 =‹²ÝK 3 <— ²ÝJ  3 <˜²ÝJ  3<™²ÝJ3<вÝJ3<š ²ÝJ2;›²ÝIæ ²Ý Ùœ²Ý  .þ+?ã Lå U²Ý²Ý'²Ý ²Ý²Ýø²Ý²Ýå²Ýî²ÝѲÝڲݾ²ÝDzݫ²Ý´²Ý˜²Ý¡²Ý…²Ý޲Ýq²Ýz0Á(ý É �²Ý�ý µ ž²Ý¥õ9îÝ`ý � Ÿ²Ý ø”+  7 îÝ­²¤é¿Ä°µpuàý Έ,ú ­à Á”·á²Ý$²ÝîÝ æÑ()²ÝèîÝð Û÷$ûÛ÷$pœ~‰áÓ(îÝ~ýÓ(îÝ>¤é¨(þ ˜  ²Ý�þ û% ¡²Ý²Ý+7îÝch¥¢uzfkŒþ �Œ,¦­à² ‰•½·áŲÝͲݼîÝÄñ»ÌÍ®Ôöœñ»îÝ¥¢#(� û/ ¢²Ý � Ÿ0�–"îÝNS¬·`eQr� €0‘,Œ­à˜ Ö•£·á«²Ý³îÝ¢  �–°ÊØ(¸ÚœçñÈØ(îÝ嬷 (‚ À0  4ˆ‚ ¢4=µ¢ »��‚ µ4>µ¢ ²Ýu ?}£²ÝO @WT²Ýc A=îÝW B_¡²Ýl D>x CDîÝã è ¤éõ?ú@ÄAÉB±C¶ ˜‚ é35¦¡ú‰�‚ þ36¦¡²ÝV 7_¤ ²ÝQ 8YT²Ýe 95îÝY :a¡²Ýn <6z ;<îÝÆ ̤éÚ7à8Ê9Ï:·;¼ ý�‚ Ã30›¶²Ý 1)¥²Ý42<¡²ÝI40U34îÝkq¥¢1…2ˆ3� ˜°‚ �3+þµ²Ý»,Ħ ²Ý4-<§²ÝI/+U./îÝ ¥¢, -ˆ.� 3€‚ Ø2#Õµp‚ ê2$Õµq%z¨²ÝO&W© ²Ýd'#îÝY(aª²Ýn*$z)*îÝâè¤éö%ü&É'Î(·)¼ h‚ £2®µP‚ ²2®µW`«²ÝOW§²ÝdîÝY a¬²Ýn"z!"îÝÈΤéÜâÉÎ ·!¼ ÿh‚ ñ1‚µP‚ €2‚µ=F­²ÝOW§²ÝdîÝYa¬²ÝnzîÝ®´¤éÂÈÉη¼ å�‚ Å1崲ݮ ²Ý4<¡²ÝIUîÝSY¥¢gmˆ� €�‚ œ1 Æ´²Ý£ ¬¯²Ý4 <¡²ÝI  U  îÝîô¥¢  ˆ � ˆ‚ ò0®´²Ý>G°²Ý4<²ÝHTîÝˆŽ¥¢œ¢‡Œ µ‚ Å0­, ÐÖÝäëòùE­à#ÊØ(,·á5=Í®%²ÝO²Ý7îÝ@ñ»IÍ®í²Ý|²ÝÿîÝñ»Í®µ²Ý©²ÝÇîÝÐñ»Ù‡« ȇ« µ²Ýß²ÝãîÝì²ÝÙîÝâ…« 뇫 ö‡« ã²Ý' ²ÝîݲÝîÝ…« óŠ$óвÝo ²Ý?îÝH²Ý5îÝ>Œ‘GÍ®²Ý® ²ÝîÝ"ñ»+ͮϲÝÛ ²ÝáîÝêñ»ó´ÖãÍ®Ï²Ý ²ÝþîÝ ²ÝóîÝüñ» ±…( Í®ø ²ÝY ²Ý' îÝ0 ²Ý îÝ% ñ». � œž ó­Œó­4 ó­Üó­Ïϰ Àó­Ïϰ Àó­Ï#ϰ À$ó­„+ó­, 0ó­ 5ϰ  6ó­ =ϰ  >l ±…(îÝ? ñ»îÝ, ¤é‹ ´ÖîÝy ñ»îÝf ¤é¦ ñ»îÝ­ ¥¢· ñ»îÝ# ¥¢È óŠîÝ™Œ‘î݇¤éã ‡« îÝÎ…« îݼ¤éþ ‡« îÝ…« îÝñ¤é ñ»îÝ8¥¢* ñ»îÝ®¥¢; ñ»îÝ$¥¢L |¸² ‡*«)4;?‡*PatternID::SIZEÁl¸Â ç*²)4;?ç* StateID::SIZEÁ2Á4Á16ÁH¯ «-„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�Èš�þbg †Žô(y�(¯ å, ¯,¯ ê,³,-½™9¶æ AŽô(Ï Žô(Ú]gèô(÷° î,µ,° ì, ¶æ &0H± «-Žô( ühŽô(Ò­ 3 ± ð,D± ô,·,&1¶æ 9�® AÏõ(�Rƒ_iôö(«H² «-Žô(Žô(*/ ù±Žô(Žô(FKS² ÿ,»,H² ö,¶æ ¶æ Ïõ(“Ïõ(›7î DN¼ø(ÅP³ �-  î½™ (- Å™İ ³ ‹-½,[ʱ g¶æ o¶æ wİ ˆî •Ÿèù(©H´ «-Žô(Žô(*/ îŽô(AFN´ �-¿,´ �-İ ¶æ ¶æ  Ïõ(�Ïõ(˜9î FPÂû(Â8µ ­@ñ” †ñ”/7(µ ú? À,µ ÿ?Ä,-Þš9×õ Añ”… ñ”�]gýü(­(¶ �@ ±²Ý8¶ ­@ñ”"îÝNS¬·`eQr¶ †@Æ,Œ­à˜×õ  ·á¨²Ý°îÝŸ äý(ªäý(²ÔœáëÏÿ(îÝ߬·þ8¸ ¡Fñ”ýü()1(¸ óE Ç,¸ øEË,-£›9 £›Dñ”‚äý(Š]gýü(§h¹ ¦Sñ”ýü()1й ¹SÇü†)2(¹ öR Ì,¹ ûR¹ úR>Ð,Mè›Y è›dñ”Ùäý(ádz͊»�—ýü(ü†ßñ”„ü¦J8.\¦J. ‰éìòè$²J. ,¸J.T¿J.dËJ.$ÙJ.MàJ.ƒü¾H¢.ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwø„$Û†ì¸I.ø©,çH.éìTþH.d‘I.òè$ªI.–`) init_valueÁ6 match_offsetÁFÈIÝ…„)LüãL9.\ãL.…„),ïL. ,öL.TýL.d‰M.$—M.CžM.†üûJ£.ç„)ìõK.ø©,¤K.éìT»K.dÎK.òè$çK.–`)ü„)-“…)2È5v…„)Û.ü‰`´.. .¤Œ`.d’`.€¤,Œ`.$t’`.'üŒ`".\¡`.ˆû K$l¡`.(dÝ`. üÆ`$.„Ì`.ÿû ,Æ`. - $ôÌ`./ Tþ`..  „ù`. Å™éì üÃ`r.$§a. Å™éì%üÀ`v. Àœø„$Û† ðØ!Tòb..  l’c.,˜c.´‰ ,’c.*#<˜c.,¬c.dÃc.ü¬c$.„²c.ÿû 4+ #ô²c.- ,Âi.- \½i., Å™éì-|ºi. Àœø„$Û†, Êi.")<Þc. ,çe.,÷e.l÷e.,ýe.íÕ %#<ýe.ä÷e.\…f.£§< ‘f.#t…f.ü÷e%.4”f.ç§S#D”f.üçe6.Líe.ðÎÁC+#üíe0.,¼f.,Ðf.\Ðf.Öf.ñß %#,Öf.ÔÐf.\Üf.�× < èf.#tÜf.;üÊf .ðØ«g.àü¼fŠ.<Âf. çáüÊf{.,#üÂf„.$�g. Å™éìDŒg. Àœø„$Û†ðØ $àg."4åg.$dàg.# $3èÆ"?#'!#0hªàg.  �%ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 éìÛ†!î #ÀÅ% Ñ%làg.' m�“)('œÚg.(«ìg.& [Å×5" �%ç„)Å×&8-#ZL§h.*'àÕ“)éìl²h.+'àÕ“),×h. $Žh.) Å™éìD‹h. Àœø„$Û†) ´i. S *äúh.+ü¥c�. { *@#¼ !$Í')Ëi.é $ú)ü M«."(."&:%K.%(( š³ò ‰ „üâbé.ü‚cÉ.„¦g. Wü¡h„./ç„)ì¦N.<ºM.ø©,ÍM.éìTäM.„÷M.òèD”N.äƒ \Ø¥eø„$vùéìÌéìLæb.µ¢L†c.èø© ­–ªaæØÚ,[ø©tî–ª½ØÚ€¯ø©È$ýf.ø„$îEÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^Å×�“)¹Á’)ùöÒ±Ñ  ø©"ÌÅ×Õ�“)$üg.ø„$\é천ø„$ëéì¿ ­Hå–`éü„)î“…)ôÈø� –`Ä’„Æ ‘&ŽÔ' new_valueÁk* new_match_endÁf+n€¤à ˆû • ÿû U ´‰ d ÿû & òè§íÕ l£§Lç§ðÎõñß ±�× ‘ñ�)èÆŠ»’)Zí”)aéìËéìûòè éì òè éì éì lÜ2/ï2/Åü·28/,Ì2/²�$Ã2/ -äÎtÎ ÓÝDá(ðÉü…kØÚl¶šÝô D¢n1Áý�Hº )’�¿ Ô&Ýô P¿ ì&Åž †Åž/7�¿ ü&Ø¥Ò› )1p¿ ”'  (¿ ±& Ñ,¿ ¶&Ù,8 µ¢Dø©LÝô   Ýô Åžü£õ Ø¥Ñäƒ Ù©÷ý±™£ †Ýô iŽ¢)MÒ› Èì 錜+4¥+ ¥·žÈšDœ+D¥+tý+üç+& Ú, õ+d¥, §-ü·+¢ Ñ,,É,ß,Ùü�(Ïü�+Òµ¢LÈ( ·žD´(Ýô D‘+Åž¸ÍØ¥œý�.ý�2kâ¤)0�÷ $­Iœ­ID²I á�0$»It²I$ÊIÔIÛüèHlµ¢L™Iµ¢DƒI¾§)$�I‚–ª›$Åœ(U¶§)µ$ØS¬ØSLÝS ãŽ0,çS„ÝS$÷S�TÝü‰Sxµ¢LÄSµ¢D­S�©),·S‚–ª›$Ùœ(U‡©)µ$�z¼�zd†zÉ¥&$“z”†z$¢z¬zßüÀylµ¢Líyµ¢DÐyØ¥$Úyx–ª‘$¾»(UÉ¥«$�Œ´�Œd¢Œ é-¯ŒŒ¢Œ$½ŒÇŒàüá‹fµ¢L‰Œµ¢Dñ‹û‹„–ªž$ê(V¢¬)¶ \›“$ “ «¾§)Åž$›“4 “DÅ“lÑ“Ýô œÑ“üÅ“Tø“D†” Ć”d�”åÏ& , œ” |�”üø“& „¡•Åž¸• ­ç”lù”Ýô œù”˜­ù”ù­Ž"` \ £õ  ­º”  ©fÅžŽ'f óŠ­Ö”  §f—&“ ý̦®² *ÏÝâ ‹g* ù ñ@`á ñ`Ìç ùà Ž"` )áüÓ’åü�“¨qx…“–ªLò’¾§)$ý’Åž$”“ÄãQ¿Ÿ¼¿�Ñ«£õ óŠú£õ IóŠ4ýÌ+ýÌ ýÌÕ�²)F î´)RÝô ËÝô Ó£õ kóŠtîÅœñÅœôÇ¥ DZ^å­)E�÷ ðåÏ&œ�÷ úޱ)¸ͱ)€½²)ïÌçÐ,࡜à¡\æ¡ ›$�©)1læ¡1ÌÚ¡ðØ Ç£   †£“ŒóŠ„Œ£\Ž££§ Œ£ š£ tŽ£ “¢íŒóŠ ™¢ÌŒ£4�£ç§ œD�£,í£ Œí£Ló£ œ$�©) 1 \ó£1  ¼ç£  $…¥|…¥DŠ¥«ë ) TŠ¥ ܤ “ŒóŠ â¤  ž¤ íŒóŠ„¤¤\¦¤£§ ¤¤ ²¤ t¦¤̤¤4µ¤ç§[ Dµ¤¬…¥ ,ĥ˥ œ½¥ Ú,ü¯¥"D´¥ áÅž$¯¥Dì´¥ ץإü¹žŸgýã)üΡŠÄ‚¢üõ¢0üÝ£ûü�¤0Äˤõž–ªLáž�©),ìž,Ò¡œþžþŸþ팠þó¡þ¢þ“Œ£þó¤þ¥þè˜n¦»�€'�óŠ� �©)ªœ‚¢¹-ØÚ á£�¿)aú¿){œ�¤®ØÚ�Ýô 1ø©LðÅž;4óŠ7óŠ@óŠÛóŠäSÙœW‚[Ÿ“Ÿ ’Ù ŸlŸ¹/ ø¶)È£§ç§¡æ¹)o«ë £§…ç§H�÷ 'ž½)Û�©)§�©)®$á«|á«D櫌î )Tæ«üÑ«! Ú,üë0DÈ«ž½)$ëAüÈ«+ú«æü�«k¸«–ªL «,««sÅžœÅžËø©å5‚8fŒî ýž½)»$õ±|õ±Dú±Œî )Tú±üç± Ú,üÙ±.DÞ±ž½)$Ù±AüÞ±)޲çü©±eα–ªL¸±ñsÅžœÅžËø©å5’8fŒî ýž½)»¤ù¶Ø¥”·èüÀ¶Tî¶–ªLÔ¶Ø¥$ß¶¾»Iœ˜»²»éüäºN�»–ªLøºƒ»êFlû½Ýô ޾êüν@Ýô Dè½ø©,Þ½ 1|µÃDºÃŒî $µÃTºÃ¬µÃÐÃëüŽÃB,¥Ãø©,›ÃÅžv8Œî “|˜ÈD�ÈŒî $˜ÈT�Èœ˜È±ÈìüóÇ>,ˆÈø©,þÇÅžv8Œî “LˆÍÅž—ÍíüßÌ8Åž$ùÌø©,ïÌ 1|çÑDìÑŒî $çÑTìÑ*¼çÑ,÷Ñ üQ<÷Ñ„ÒîüµÑO… dÐÑø©,ÆÑ£õ ›Åž£AŒî À›Î)ŽlâÖØ¥õÖïü±ÖDØ¥DÏÖø©,ÅÖ 1l³ÙÆÙðü†Ù@$¤Ùø©,šÙ /|‹ÞD�ÞŒî $‹ÞT�Þ¬‹Þ|£ÞD¨ÞŒî $£ÞT¨Þœ£Þü‹Þ+¼ÞñüãÝY$üÝø©,òݜŞÎlÅžž*MŒî úŒî Á|æäDëä«ë $æäTëäüÔä*ŒÔä ðF4÷ä*„åòü”äp$Åäø©,¬ä4³äÝô �Ñ !N«ë ǾÓ)¡¤ éT é Ù·žD«é+ºéúüðèJµ¢LŒé¯¦)Døèý�3ìÔ)�(Ä ƒðÄ ˆðß,(-Åž:£õ BKUÆ ’ðâ,Æ �ð £õ '1€Ç íð ühÒ­ 2 Ç ”ðDpÇ ²ñÃ×))@6Ç ˜ðä,cn£õ v�® ~¼óŠÄ󊃞ƒ«µÃ×)öÃ×)³€È íð'8pÈ ²ñ'8@HUÈ £ðè,HÈ šð£õ £õ ßæí­´Jî Wa,Ãò”·ò\·ò ®… Åž4*Ïòüü‰òF… d ò£õ ,–òÅž{9õÛ)†TØóDæó´Øóôóýü¯óE$Éó£õ ,¿óqd=D®õTÆõü®õ#t·õÁ¥B3Ô·õ×õþü‰õN,žõ£õ ,”õ�‚>Á¥‰|Ð÷DÕ÷ ý$Ð÷TÕ÷.Tã÷¤ã÷D…ø”û÷üÏ÷> !“øÿü—÷|$À÷£õ ,§÷4®÷»Ö¦1Ñ 4aßß)DTËùœËùDåùŒåùü½ù; Ú,þù€ü‡ùwÅž$®ù£õ ,•ù4œù–±~™2Ñ 5d,­ül­ü,³ü›Î)(<³ü|¬ü ‘ýÈš… $¨üP/Áü…ü÷ûJÝô ,—üÝô ,€üÅž,‡ü… ¢£õ »'÷)Y›Î)ÔÔä)±,ÇýlÇý,Íý›Î)(<Íý|Æý ª#Èš… $ÂýO.Ûý‡ü�ýZª�"L©ýª�"LŽýÅž,™ý… ¡£õ º'÷)Y›Î)ÓÊæ)°,äþläþ,êþ›Î)(<êþ|ãþ ‘ý… $ßþN-øþŠü¯þI²Ý$Ïþ²Ý,¸þÅž,¿þ…  £õ ¹'÷)Y›Î)Ò¿è)¯\îÿL€€üàÿ+ Ú,‘€Œü±ÿ`Åž$Ñÿ… ,¹ÿznÙœAT‡�D˜�üø€* ¶ý¨�ŽüÊ€^… dá€Åž$Ò€~rÅœAT›‚\©‚Ì›‚D¸‚LÄ‚¬¸‚ü›‚2 !Ó‚�üæ�m$Œ‚£õ ,ì�§Š',ó�Éøë»®9Ùœ<jT½ƒT˃ĽƒDÙƒD僤كü½ƒ0 !óƒ’ü‘ƒb$®ƒ§Š',—ƒ£õ $žƒÉøë»®9Åœ<j(Ë ¾‰Ë Éî,(-3ö @„çHQ[(Í Ë‰ ³ ²Ý�Í ›Š °²Ý›†,îÝhÍ Ê‹ l²Ý *  6 îÝ ¥¤é²·¢§otÓÍ Ð‰ñ,î ­àú„ç·á ²Ý²ÝîÝ ãɲÝáîÝ錑ñóŠùYœgrãÉîÝfŒ‘îÝ3¤é‘Î Ô‰ó,Î Ò‰ „ç$-7�Ï ›Š›† üh›†Ò­ 4 Ï Ö‰FhÏ Ê‹Ã×))@6Ï Ú‰õ,cn„çv�® ~¾ãÉÆóŠƒžƒ«µºö)øÃ×)³�Ð ›Š›†›†+0í› <AIPhÐ Ê‹'8@HUÐ å‰ù,HР܉„ç„ç÷ãÉÿãɰ·Mî Zdí› @ì‰� é,¬�”üÄŒhö LõŒ›†<ÏŒ4ãŒîNÑ I¼‘�t‘�®¨< �"ü‘� 4©� Ó_›†ú‰KD©�ü‚�8t‚�áëL4³�(À�•üÀ�€ö Lî�<Ì�4Ü�›†¥÷ÉÖîN'Ñ *Y®¨®ü)ßáë±dŸ“›†±“–üò’?›†L‹“„ç,�“ 1\̕ݕ—ü¤•9,¼•„ç,²• 0(Ñ ØšÑ Ýšÿ,(-3‹¢@ÀìHQ[(Ó åš ¿²Ý�Ó ±› °²Ý›†,îÝPÓ ì› ´²Ý Åž,  8 îÝ¢§¤é´¹¤©qvÕÓ êš‚-ð ­àüÀì·á ²Ý²ÝîÝãɲÝãîÝë £õ ö£õ þ^œlwãÉîÝk�ƒ*îÝ8¤é–Ô îš„-Ô ìš Àì$-7�Õ ±››†ºö)* Õ ðš<PÕ ì›Åž ühÅžÒ­ 4KAÕ ôš†-nyÀì��® ‰¿ãÉÇ£õ Ž©ƒ¶Àºö)ù©…*¾�Ö ±››†›†+0í› <AIPPÖ ì›ÅžÅž+0 ù±ÅžÅžGLTYanÖ ÿšŠ-HÖ öšÀìÀìãÉãÉ"£õ Ì£õ ÔQî ^hí› ]ã‡*\¿¢$Ä¢ «�Åž$¿¢4Ä¢TÜ¢Dꢴܢ¼“£ ú,°£ùÚ Ž"`ù±Ž"`ƒœ ¤ô¢µ²Ý2ùÙ ñ@`áÙ ñ`ÌçU#™üä¡Ìü®¢‚ ‹¢,ž¢›†<þ¡׉*$’¢Åž$²¢ú'Œ�ÑÍîNGÅœJÅœM’щ*¬ƒœ  ÌçÚĪ« +|ª« Š*<º«M$Ä« üŸ«*TŸ« ™׉*•H-Ï«üتw Ϋ›7‹¢,�«<óª׉*$ƒ«›†׉*ÐeîN/Åœ2”¾�*TŽŽ*å׉*žd¿®›†Ñ®�ü’®?›†L«®Àì,¡® 1\�°$†° ¡$�°4†°Œ�°˜°žüÚ¯>,ñ¯Àì,ç¯Åžx8í�*•\±$DZí�*$±4DZ|±×±Ÿü�±:,²±Àì,¨±Åžv8í�*“\š³$Ÿ³í�*$š³4Ÿ³*œš³,¦³›Î)O<¦³³³ üá²R… ¼ø²Àì,î²£õ ™Åž¡Aí�*¾›Î)ŒL•´Åž¤´¡üð³4Åž$†´Àì,ü³ 1\ж$�¶í�*$ж4�¶*´Š¶D–¶ßß)OT–¶¦¶¢üáµE$ûµÀì,ñµ£õ —ÅžŸ?í�*¼ßß)Š\á·$æ·í�*$á·4æ·*Œá·í·êî O,í·ø·£ü¼·<,Ñ·Àì,Ç·£õ ˜Åž @í�*½êî ‹PÛ  ÀøÛ äÈ ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk# �þ\a †­™*s{(Û ¬¿ ‹-Û ±¿�-2¡£>Ø¢ FðóŠø­™*Ý ­™*èq{ó‹(ÿ™* (Ü ³¿ ¶ ²ÝPÜ  À �²Ý+îÝøÜ äÈ ·²Ý ­™*-  9 îÝ¢§¤é´¹¤©rwÕÜ ¸¿‘-ð ­àüØ¢ ·á ²Ý²ÝîÝóвÝäîÝì úš*÷úš*ÿ^œlwóŠîÝk÷�*îÝ9¤é–Ý ¼¿“-Ý º¿ Ø¢ $-7PÞ  À'8øÞ äÈ ­™*­™*,1 ù±­™*­™*HMUZboÞ Ç¿–-HÞ ¾¿Ø¢ Ø¢ ùúš*Êúš*ÒNî [e¬ *ü ä ¬ö›†²Ç *2xä Æö(ä öõ —-ä ûõ›-2–¤> –¤I›†«ãɳƒóŠ‹q{²Ç ßó‹®(å ýõ ¸²Ý å ¬ö _ ²Ý›†+îÝxå Æö ð²Ý +  7 îÝ ¥¤é²·¢§puÓå ‚ö�-î ­àú™£*·á ²Ý²ÝîÝ ãɲÝâîÝꌑòóŠúYœgrãÉîÝfŒ‘îÝ4¤é‘øè ãü6ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ¢§ †ž§*¹Á(è °ü ž-è µü£-1ž-ž-ô½ -ÛËÏöàØ±Zk ‰©*vž§*D ž§*P”ž¶¨*n(é ·ü ¹²Ýøé ãü6²Ýž§*,8îÝej¥¢w|glŽé ¼ü¦-©­àµ¿©*½·áŲÝͲݻîÝà Ó©*ÎÓ©*Öùœå«*îÝ¥¢&(ê �¨ê ¢¨±-(-Ø¥:äƒ BKU(ì ª¨'Hì «­ô¾›†LTº²Ý3 ? îÝ€…¬·’—n¤©±»²ÝÀÅƵ Ò×ßäì¼²ÝûƵ ì ¯¨´-9? ­àMäƒ V·á_g²Ýp²ÝyãÉT²Ý‹îÝfŸío§œµó­–ÍŸíîÝ­¬·âƵ éƵ ðí ³¨¶-í ±¨ äƒ '1Hî µ¨,; K äƒ \ ix€�•�ª²äƒ ÃÐHî «­äƒ  ô¾›†/äƒ @ ô¾›†Y  e  sxÊ÷ „ ‰‘î ¾¨¹-‹‘˜Ÿ«äƒ ´äƒ ½ÅÍÔäƒ äƒ âêòãÉãÉ%Ÿí.Ÿí7äƒ äƒ (äƒ 1äƒ :Dî RÀ‘aØ‘nó­œ ý‘© ‘Ê÷½,޲‰ï ñ|])ï Â}] !ï «}] À²üÙ±g»ùï ñ|`]$ö±äƒ ,ì±l•²T,ô¶\î¶$¾· Å™›†š·ô¾›†L¢· Å™›† ª·Ó·¼ü¹¶šüˆ·#ܧŒÒ¶äƒ ,ȶ´ˆ·›†”¾¾«Z(ð Œãð ‘ã¿-(ù¦4�ÿ%<EOlÉå º-ò  ãÂ-8ò ™ãù¦(ó ¢ã%,4½ ²Ýó ¦ãPXÔ²Ý$qvƵ ƒˆ�ó §ãÄ-«­à·�ÿ%¿·áDzÝÏÖßœìöƵ ô «ãÆ-ô ©ã�ÿ%!+Hõ ­ãõ ¶ãÉ-@EKV�ÿ%^�ÿ%fmt}î ŠÀ‘˜Ø‘¤¬øö êƒ!ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#Ȩ�þ]b †ÒÀ*t|(ö —ƒ Ì-ö œƒÐ-/Û†;�»CÒÀ*Ì ÒÀ*×_i¥Á*ô(÷ žƒ ¾ ²Ýø÷ êƒ!ÒÀ*$îÝQV¬·chSu÷ £ƒÒ-�­àœ�»¤·á¬²Ý´îÝ¢ ŽÂ*­ŽÂ*µØœåïýÃ*îÝ⬷ø §ƒÔ-ø ¥ƒ �»'1øù êƒ!ÒÀ*ÒÀ*,1 ù±ÒÀ*ÒÀ*HMUù ²ƒ×-Hù ©ƒ�»�»ŽÂ*—ŽÂ*Ÿ8î EO×Å*É(ú ¡—)pú ¹ª £»Ø¥ %Ò›  1 9Pú ñ¡ ùÁ ˜ Ø- ú ¥—hú †žãÁå Ø-M@ú •™‹»hú 㙋»:*W Ø-Ãy Ø- âú ¦—ã-®´»ÂÉ Ȩ× Ȩã롞 ñóŠÜëóŠX`óŠ¶¾äƒ Ø¥Hó­Tϰ Dó­¶ó­ ó­[ ”Ò› oó‹8ó‹òŒŸ ±ó‹›(û ¨—)pû ¹ª£»Ø¥NVX²Ý2:Y²ÝFRîÝ•š¥¢§¬�†¾Pû ñ¡ùÁà迲Ý2:�²ÝGSîÝ)/¥¢=C†‹Vhû †ž ãÁy ‚À²Ý4<l²ÝH TîÝÃÉ¥¢× ݇Œð@û •™‹»hû 㙋»09Z²ÝPX[²ÝdîÝX `l²Ýl x  îÝž¤¤é²¸ÈÍ µ ºÕû ­—å-ñ÷þ ­àÑÊ*#·á,4¡ž GóŠ3²ÝO²ÝbîÝk²ÝWîÝ`Œ‘ióŠ)²Ý޲Ý;îÝDŒ‘MóŠï²Ý»²ÝîÝ Œ‘äƒ ¯²Ýè²ÝÁîÝÊî¤ Ó œó­4ϰ $ó­è ó­Žó­.g î¤ îÝE¥¢|Œ‘îÝÃ¥¢�Œ‘îÝ;¥¢ž¡ž îݲŒ‘îÝŸ¤é¹ü ±—ç-ü ¯— "ÑÊ**3=Hý ³—,; K!ÑÊ*\ !i ~†“�¤"ÑÊ*µ" Ñ#ÑÊ*â#ï þ$ÑÊ* $  -%ÑÊ*? %M pý ¹ª&ÑÊ*&£»Ø¥/'ÑÊ*@'£»Ø¥Ye sx ù±äƒ äƒ � ”œPý ñ¡(ÑÊ*(ùÁ.)ÑÊ*?)ùÁWcqv㯂‡�hý †ž*ÑÊ**ãÁ.+ÑÊ*?+ãÁWcqv㯂‡� @ý •™,ÑÊ* ,‹»hý ã™-ÑÊ* -‹»\.ÑÊ*m.‹»W/ÑÊ*h/‹»® ºÈÍÝãÙÞ æí Î Úèíã¯ùþ #ý ¼—ê-–œ£ª±¸¿0ËÑÊ*ÔÑÊ*ÝåíôÑÊ*ÑÊ* "*¡ž  óŠè¡ž óŠú/¾¤ 8¾¤ AŒ‘Œ‘%óŠðóŠùŒ‘Œ‘ óŠ¨óŠ±Œ‘ºŒ‘Ãäƒ mäƒ vî¤ î¤ ˆÑÊ*îÑÊ*÷ÑÊ*ÑÊ* ÑÊ*ÑÊ*ÑÊ*$ÑÊ*-ÑÊ*6ÑÊ*?ÑÊ*HÑÊ*QÑÊ*ZÑÊ*cÑÊ*lvî „À‘“Ø‘ ó­‡ ϰ f ý‘¡ì’€ó­Oý‘\ó­ýý‘ ó­¸ý‘Å+½Ú*Ùã¯?㯲Ýã%ã¯þЊ – 0ݪÕ†)1Њ ¶ 0ݪÕ†)2(Š ä 0 ë-Š é 0Š è 0>ï-M�ªY°õ aݪÖâýÞݪ°âý¸Š”Õ† Õ†Üݪ�(‹ ë 0 Á ²ÝЋ – 0 ²Ýݪ+îÝЋ ¶ 0 Ã²Ý ݪ+  7 îÝŸ¤¤é±¶¢§puÒ‹ ð 0ñ-ì ­àø°õ ·á ²Ý²ÝîÝ âý²ÝáîÝé âýôâýüZœhsâýîÝh¦ê*îÝ6¤é’PŒ þ0˜Œ ×0•ö¿†)1 Œ »0•ö¿†)2(Œ ž0 ò-Œ £0Œ ¢0A÷-Pݪ\âýdúóŠ•öé¦ýñ•öæýË�§ó‹@¿†%¿†ö•ö˜(— ®<0 Ä ²Ýð— Ú<0�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÇamîÝ™ž¬·«°œ½— ³<0þ-×­àã ø-ø-ù-ÝÃû-óÉ j@»0¬* A·á(²Ý1îÝ!  Œî*0¢ð*9\œju ð*îÝj¬·Š4­>0Œî*l­>0$´>0 ÆQŒî*24´>0´­>04»>0ößAD»>0É>0äüý=L0¶à|“>0 Êï*L…>0œá‰ Œî*«Dœñ*±öß‹$Æ 1 눂%TË 1„Æ 1$ .IØ 1çü¥³1$Ê1 À1ˆ‚%³¢˜˜!BØëˆ‚%<Ó1dÝ1,Þ1l÷1$÷1_”ó1$ .Ìó1$ˆ1 Œ1D›1$¦1 0ü´\1 dº1$º1$Â197 Å1lÙ1 $Ù1     å1 ”Õ1  $  . ÌÕ1 $ê1 î1 Lü1 „1üÇI1 Ë�16 >îøË´\1  = C �1\™1$ 1Aü®\1 d´1$´1$¼1Z7  ¿1lÓ1$Ó1 ß1”Ï1$ .ÌÏ1$ä1 è1Lö1 þ1üÁI1 ̉16 >îøÌ®\1 =C ‰1\“1$š1aü¨\1  d®1$®1$¶1z7  ¹1lÍ1$Í1 Ù1”É1$ . ÌÉ1$Þ1 â1Lð1 ø1ü»I1 ̓ 16 > îøÍ¨\1 =C ƒ 1� 1 • 1– 1èüÕÁ1üÏÇ1ü—ÿ1!ˆ‚%\í1ˆ‚%×´›9#UàའÙÍÍ��l¹ÁȈ||>>hpwã�Í—»%:256Á256Á\µ 1  Lµ 1 è!ü› &1눂%\§ 1'_Á256Á„à1Dæ1À‰,à1Tæ1($‚1 Å™¥‚#ðØ ¬1 D¦1 3l¢1¢1 ï[$œœ1 ðØë1à(Î¥1! àý<¤1ª‹,Ÿ1!8 " ×1 DÑ1 ë1àó1\ù1Œó1  Ø1  DÒ1      3  lÎ1 Àœ œÉ1 Å™¥‚# ðØùà ž1 D˜1 ,àOl”1 Àœœ�1 Å™¥‚#ðØ¤Æ1TÆ1 ®/&ÄÃ1 Àœô¾1 Å™¥‚#ðØü‰#1¤‰1 „z lž1"'"üƒ)1" †1+ D€1,-+, -,+ º1#¯²ÝLÈ1,Ê1 À# È1(<Ê1)'(„È1$Ò1 ÆQù«ù«CharsÁû«�ýyD4]®¤Nc'‡&4Ò1ÌÈ14Ù1 øW&y%DÙ1ìÅ1$ Àœ%üÀ#1 Å™¥‚#$ â1R*+lü1) Àœ*œ÷1 Å™¥‚#) ‰1“1íü˜û1ü’�1üæ<1„æ1ü·,1.¨‹#ľ1Ýô ,­1hØÚµ&$º1¥‚#5¤�–óŠí ¥‚#±<'.¥‚#Y‹¥Êµ¼>ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw²Ýà«à« Utf8ErrorÁá« valid_up_toÁýyâ« error_lenÁýy"øCð*u³HõÝô Äâäë,·1²Ý‚¥‚#°ßřǙș­É™Ê™àË™óG*¤�R{9 ‹ Û�+ÏÛ�+Ø¥‚#Í7\GNöÆd¶–1¶(¶4¶í©f#ê À‰ ¡…+bª‹å�÷ NüŠ+�ì‹+4��+‰Õ�+XµŽ+ÿ„Ÿ1D¥1À‰,Ÿ1T¥1($Á1 Å™¥‚#¤1\á1|á1 ï1\‚1ì‚1tŽ1Á¥% �1ŒŽ1,«1l«1 ,Þ1 dØ1      3  ü½(1Ô½1 ñ \  '  Tð1 ù1ü¥\1,š18Ñš1 ÌýL™1ÂŒ,”18 "¼Œ14Œ1À†#|“1 $ì†1 ELू#3 \‰1|‰1 —1´ƒ1 Ì1ू#¯4Ù1 ÀœdÔ1 Å™¥‚# ß1$¶1 Å™¥‚#ºÜÿ1 Àœüú!1 Å™¥‚# š1sîüÒÒ1üÑÓ1üö®1äÄ1¨‹#Äý1Ýô ,ì1LÕ1È,ú1©Xnó?UOV¨‹#aÝô “úòºÐ4É1$®1½¥‚#¤¥‚#9 4J")öÆà‚ݪ¯ØËÆ#'DÀ‰#�÷ Ï�÷ ¦Á¥�š™+èÂŒ^À†#<�÷ ÏÌç1   $Ï1 Å™<„1 Å™ ‰1-Ì•1 €$²1 Å™ÌÀ1 À <Ý1 Å™ â1-Ìî1 à <‹1 Å™ �1-Ìœ1 ð <¹1 Å™ ¾1-am÷| ìøï x…ß•ò ÿ¿ ¡ ®¾ Ü1ïüª²1 ØÚl¾1$±1qxàçOVª±:A—»Svd±1·1¥À,±1 »14·1-”«1N Ø$1࡞ „Þ$1\ã$1\£!1„ž!1 ­!1üÞ$$1 „ò$1\÷$1À=‹%1ðüë 1üÒ$01 $ 1Ýô ,…1 “1‘Â^$–!1È!¡ž †öÆGŸK˜W‹¥À¿�÷ Œæ,1 \ë,1Àüæ, 1\û,1€ˆ-1ñüù&�1$¡'1 —'1j˜4Œ ó ­®(éë4;B´ö� ¹º(êì4;B|å¯ ÀÁ(Äí4;Bd�Ì ÇÈ(žî4;B·å ØÚ(øï4×°<C$âå ØÝ(øï4Ïó<C,¬Ÿ ¬³(µ÷4°ÿ<Cë çé'™ü3×°;B\Š  çñ'™ü3²Ý;B¬Ÿ> ‚ƒ'Õþ3:A´È? ‰Š'°ÿ3:A  ÏÔ'ê„3×°;BLð' ÚÜ'ì…3•‡;B$”( Úß'ì…3ô‡;Bü³.% ãä(•‡4;BÜÌÐ ö÷(ñ‰4ŽÓ <CÄÎ „ … 'ÿ–3¹—;Bô¹ ‰ Š '¹—3ðÄ;Bìê Ž � 'ó—3ÿ‚;Büþ"$ • – (¸˜4Ÿ‡<Cüˆ1* š › (ò˜4«¡<CüýI) Ÿ   (¬™4ì‹<CÌ€S ¦ § 'ñ™3‹�;BüúX « ¬ («š4¡é<Côæw ° ± 'åš3úœ;BÄõ€ · ¸ (ª›4›¡<Côņ ¼ ½ (ä›4á�<CìŠÃ Á  (žœ4Ī<C¬èË È É (ãœ4”Ó<CܰÑ Í Î (��4;Büè‘ Ò Ó )×�5ìä=Düý–% × Ø )‘ž5ïò=Düɪ$ Ü Ý )Ëž5¥î=Däë³ ã ä (�Ÿ4€÷<Cüž¹" è é )ÊŸ5<C4‰ " »"½"'˜±3ÐÆ ;BDÑ " »"À"'˜±3¶ß;B$º" »"Ã"'˜±3Ïó;Bt£> ¬#­#'�»3¸Õ;B4ßí Ã#Ç#(Ƚ4‘À<C,Ãî Ã#Ê#(Ƚ4÷À<C<½È Ù$Û$(·É4Ç<C¢„ ›%�%(�Ï4ú¡<C¶„ ›% %(�Ï4ú¡<C$Ê„ ›%£%(�Ï4ú¡<C|Ì °%±%'ÞÐ3ðÑ;B¡  À%Â%'ðÑ3:A¡" À%Å%'ðÑ3:A´²F Ô%Õ%'ªÓ3­ò;BôËË ü%ý%(Š×4Ú×<Cl¼Û ’&“&(ãØ4’¾<CtÏû ´µ-´´µê¾·óô¸ôô I �î/÷hv}毅Œ¤ýÅ Á&Â&(ýÝ4Ïœ<C¤ž$ ü&ý&'¢ã3:Aä„$ �Ž)��Ž®Å�ó ׫*YOn! cÝô kr,Å= ™'œ')šû5²Ý=D4Ù= ™'Ÿ')šû5<CüÚæ!% ½'òè ¾'/Àú; êCJìäƒ% Æ'òèÇ'.™“ :îëBIô‘¢% Ï'òèÐ'.ö¨ :¿íBIüƒ!  éìòè!¡0¶ì<…íDKüÕ†# ³(´()Ïó5<Cü‰>! ­éìòè!®0ªô<ÚÐ#DKüï[/ Ä¥õ«õ#Å2ìç#>Àæ#FMœç™ Á(éìÂ(,Îõ8éì@GÌi' Î(Ï(&Ìø2ˆ‚%:AÄi( Ö(×(&œù29@̦ ( Ý(Þ(*ìù6=DKÌß( å(æ(-Èú9@GNU4ã�+ „)†)(Ãþ4œù<C<÷�+ „)‰)(Ãþ4ìù<C<�ž+ „)Œ)(Ãþ4Èú<C4£ž+ „)�)(Ãþ4°û<C,·ž+ „)’)(Ãþ4ýû<C<Éž+ „)•)(Ãþ4Ìø<C\ßž+ „)˜)(Ãþ4ÿ÷<C´Î, ž)Ÿ)'¯€3´Ù#;B¬ê2, ±)²)'×�3:A¤ïË, Ù)Ú)(›†4×�<C”¸Ñ, î)ï)(Ç4×�<CøÁ ª±!, Æ*Ç*+ú‰7Є?FøÁ �·(, Ò*Ó*+üŠ7Î…?FøÕ ª±!, ¦+§++»�7Є?FøÕ �·(, ²+³++½Ž7Î…?F܃0 �,Ž,'Ö•3�–;B¼“- ¯,°,'½™3Žô(;Bü‰@# À,Á,(Þš4ñ”<CüûE% Ç,È,(£›4ñ”<C|Òu ´µ)´´µß�·óó ÍÖx(ù3•«fÝô nu”´· ÎÏ*ÎÎÏô‘Ñóó —';!⃠gï”ov<£­ §-­-(Ø¥4›†<C¬µƒ Ì-Í-(Û†4ÒÀ*<Cü¶<#0 ø-ù-*Êï*6Œî*>E ôê° •û‰Ìì2«,ùì2¦¡Léí2Ù)—,Ä&Ñ,ú¹$±ðÚ,áºLó‰é,ÕÛ,�›ú,̼TÕ¿‹-¬½¬�ö—-ô½tÊüž-žDʨ§-Ó¿LÂãº-ÛÀTÀƒÌ-³ÁtÈ—Ø-ü†ð2ü©Ò2¤Ò This crate exposes a variety of regex engines used by the `regex` crate. It provides a vast, sprawling and "expert" level API to each regex engine. The regex engines provided by this crate focus heavily on finite automata implementations and specifically guarantee worst case `O(m * n)` time complexity for all searches. (Where `m ~ len(regex)` and `n ~ len(haystack)`.) The primary goal of this crate is to serve as an implementation detail for the `regex` crate. A secondary goal is to make its internals available for use by others. # Table of contents * [Should I be using this crate?](#should-i-be-using-this-crate) gives some reasons for and against using this crate. * [Examples](#examples) provides a small selection of things you can do with this crate. * [Available regex engines](#available-regex-engines) provides a hyperlinked list of all regex engines in this crate. * [API themes](#api-themes) discusses common elements used throughout this crate. * [Crate features](#crate-features) documents the extensive list of Cargo features available. # Should I be using this crate? If you find yourself here because you just want to use regexes, then you should first check out whether the [`regex` crate](https://docs.rs/regex) meets your needs. It provides a streamlined and difficult-to-misuse API for regex searching. If you're here because there is something specific you want to do that can't be easily done with `regex` crate, then you are perhaps in the right place. It's most likely that the first stop you'll want to make is to explore the [`meta` regex APIs](meta). Namely, the `regex` crate is just a light wrapper over a [`meta::Regex`], so its API will probably be the easiest to transition to. In contrast to the `regex` crate, the `meta::Regex` API supports more search parameters and does multi-pattern searches. However, it isn't quite as ergonomic. Otherwise, the following is an inexhaustive list of reasons to use this crate: * You want to analyze or use a [Thompson `NFA`](nfa::thompson::NFA) directly. * You want more powerful multi-pattern search than what is provided by `RegexSet` in the `regex` crate. All regex engines in this crate support multi-pattern searches. * You want to use one of the `regex` crate's internal engines directly because of some interesting configuration that isn't possible via the `regex` crate. For example, a [lazy DFA's configuration](hybrid::dfa::Config) exposes a dizzying number of options for controlling its execution. * You want to use the lower level search APIs. For example, both the [lazy DFA](hybrid::dfa) and [fully compiled DFAs](dfa) support searching by exploring the automaton one state at a time. This might be useful, for example, for stream searches or searches of strings stored in non-contiguous in memory. * You want to build a fully compiled DFA and then [use zero-copy deserialization](dfa::dense::DFA::from_bytes) to load it into memory and use it for searching. This use case is supported in core-only no-std/no-alloc environments. * You want to run [anchored searches](Input::anchored) without using the `^` anchor in your regex pattern. * You need to work-around contention issues with sharing a regex across multiple threads. The [`meta::Regex::search_with`](meta::Regex::search_with) API permits bypassing any kind of synchronization at all by requiring the caller to provide the mutable scratch spaced needed during a search. * You want to build your own regex engine on top of the `regex` crate's infrastructure. # Examples This section tries to identify a few interesting things you can do with this crate and demonstrates them. ### Multi-pattern searches with capture groups One of the more frustrating limitations of `RegexSet` in the `regex` crate (at the time of writing) is that it doesn't report match positions. With this crate, multi-pattern support was intentionally designed in from the beginning, which means it works in all regex engines and even for capture groups as well. This example shows how to search for matches of multiple regexes, where each regex uses the same capture group names to parse different key-value formats. ``` use regex_automata::{meta::Regex, PatternID}; let re = Regex::new_many(&[ r#"(?m)^(?[[:word:]]+)=(?[[:word:]]+)$"#, r#"(?m)^(?[[:word:]]+)="(?[^"]+)"$"#, r#"(?m)^(?[[:word:]]+)='(?[^']+)'$"#, r#"(?m)^(?[[:word:]]+):\s*(?[[:word:]]+)$"#, ])?; let hay = r#" best_album="Blow Your Face Out" best_quote='"then as it was, then again it will be"' best_year=1973 best_simpsons_episode: HOMR "#; let mut kvs = vec![]; for caps in re.captures_iter(hay) { // N.B. One could use capture indices '1' and '2' here // as well. Capture indices are local to each pattern. // (Just like names are.) let key = &hay[caps.get_group_by_name("key").unwrap()]; let val = &hay[caps.get_group_by_name("val").unwrap()]; kvs.push((key, val)); } assert_eq!(kvs, vec![ ("best_album", "Blow Your Face Out"), ("best_quote", "\"then as it was, then again it will be\""), ("best_year", "1973"), ("best_simpsons_episode", "HOMR"), ]); # Ok::<(), Box>(()) ``` ### Build a full DFA and walk it manually One of the regex engines in this crate is a fully compiled DFA. It takes worst case exponential time to build, but once built, it can be easily explored and used for searches. Here's a simple example that uses its lower level APIs to implement a simple anchored search by hand. ``` use regex_automata::{dfa::{Automaton, dense}, Input}; let dfa = dense::DFA::new(r"(?-u)\b[A-Z]\w+z\b")?; let haystack = "Quartz"; // The start state is determined by inspecting the position and the // initial bytes of the haystack. let mut state = dfa.start_state_forward(&Input::new(haystack))?; // Walk all the bytes in the haystack. for &b in haystack.as_bytes().iter() { state = dfa.next_state(state, b); } // DFAs in this crate require an explicit // end-of-input transition if a search reaches // the end of a haystack. state = dfa.next_eoi_state(state); assert!(dfa.is_match_state(state)); # Ok::<(), Box>(()) ``` Or do the same with a lazy DFA that avoids exponential worst case compile time, but requires mutable scratch space to lazily build the DFA during the search. ``` use regex_automata::{hybrid::dfa::DFA, Input}; let dfa = DFA::new(r"(?-u)\b[A-Z]\w+z\b")?; let mut cache = dfa.create_cache(); let hay = "Quartz"; // The start state is determined by inspecting the position and the // initial bytes of the haystack. let mut state = dfa.start_state_forward(&mut cache, &Input::new(hay))?; // Walk all the bytes in the haystack. for &b in hay.as_bytes().iter() { state = dfa.next_state(&mut cache, state, b)?; } // DFAs in this crate require an explicit // end-of-input transition if a search reaches // the end of a haystack. state = dfa.next_eoi_state(&mut cache, state)?; assert!(state.is_match()); # Ok::<(), Box>(()) ``` ### Find all overlapping matches This example shows how to build a DFA and use it to find all possible matches, including overlapping matches. A similar example will work with a lazy DFA as well. This also works with multiple patterns and will report all matches at the same position where multiple patterns match. ``` use regex_automata::{ dfa::{dense, Automaton, OverlappingState}, Input, MatchKind, }; let dfa = dense::DFA::builder() .configure(dense::DFA::config().match_kind(MatchKind::All)) .build(r"(?-u)\w{3,}")?; let input = Input::new("homer marge bart lisa maggie"); let mut state = OverlappingState::start(); let mut matches = vec![]; while let Some(hm) = { dfa.try_search_overlapping_fwd(&input, &mut state)?; state.get_match() } { matches.push(hm.offset()); } assert_eq!(matches, vec![ 3, 4, 5, // hom, home, homer 9, 10, 11, // mar, marg, marge 15, 16, // bar, bart 20, 21, // lis, lisa 25, 26, 27, 28, // mag, magg, maggi, maggie ]); # Ok::<(), Box>(()) ``` # Available regex engines The following is a complete list of all regex engines provided by this crate, along with a very brief description of it and why you might want to use it. * [`dfa::regex::Regex`] is a regex engine that works on top of either [dense](dfa::dense) or [sparse](dfa::sparse) fully compiled DFAs. You might use a DFA if you need the fastest possible regex engine in this crate and can afford the exorbitant memory usage usually required by DFAs. Low level APIs on fully compiled DFAs are provided by the [`Automaton` trait](dfa::Automaton). Fully compiled dense DFAs can handle all regexes except for searching a regex with a Unicode word boundary on non-ASCII haystacks. A fully compiled DFA based regex can only report the start and end of each match. * [`hybrid::regex::Regex`] is a regex engine that works on top of a lazily built DFA. Its performance profile is very similar to that of fully compiled DFAs, but can be slower in some pathological cases. Fully compiled DFAs are also amenable to more optimizations, such as state acceleration, that aren't available in a lazy DFA. You might use this lazy DFA if you can't abide the worst case exponential compile time of a full DFA, but still want the DFA search performance in the vast majority of cases. A lazy DFA based regex can only report the start and end of each match. * [`dfa::onepass::DFA`] is a regex engine that is implemented as a DFA, but can report the matches of each capture group in addition to the start and end of each match. The catch is that it only works on a somewhat small subset of regexes known as "one-pass." You'll want to use this for cases when you need capture group matches and the regex is one-pass since it is likely to be faster than any alternative. A one-pass DFA can handle all types of regexes, but does have some reasonable limits on the number of capture groups it can handle. * [`nfa::thompson::backtrack::BoundedBacktracker`] is a regex engine that uses backtracking, but keeps track of the work it has done to avoid catastrophic backtracking. Like the one-pass DFA, it provides the matches of each capture group. It retains the `O(m * n)` worst case time bound. This tends to be slower than the one-pass DFA regex engine, but faster than the PikeVM. It can handle all types of regexes, but usually only works well with small haystacks and small regexes due to the memory required to avoid redoing work. * [`nfa::thompson::pikevm::PikeVM`] is a regex engine that can handle all regexes, of all sizes and provides capture group matches. It tends to be a tool of last resort because it is also usually the slowest regex engine. * [`meta::Regex`] is the meta regex engine that combines *all* of the above engines into one. The reason for this is that each of the engines above have their own caveats such as, "only handles a subset of regexes" or "is generally slow." The meta regex engine accounts for all of these caveats and composes the engines in a way that attempts to mitigate each engine's weaknesses while emphasizing its strengths. For example, it will attempt to run a lazy DFA even if it might fail. In which case, it will restart the search with a likely slower but more capable regex engine. The meta regex engine is what you should default to. Use one of the above engines directly only if you have a specific reason to. # API themes While each regex engine has its own APIs and configuration options, there are some general themes followed by all of them. ### The `Input` abstraction Most search routines in this crate accept anything that implements `Into`. Both `&str` and `&[u8]` haystacks satisfy this constraint, which means that things like `engine.search("foo")` will work as you would expect. By virtue of accepting an `Into` though, callers can provide more than just a haystack. Indeed, the [`Input`] type has more details, but briefly, callers can use it to configure various aspects of the search: * The span of the haystack to search via [`Input::span`] or [`Input::range`], which might be a substring of the haystack. * Whether to run an anchored search or not via [`Input::anchored`]. This permits one to require matches to start at the same offset that the search started. * Whether to ask the regex engine to stop as soon as a match is seen via [`Input::earliest`]. This can be used to find the offset of a match as soon as it is known without waiting for the full leftmost-first match to be found. This can also be used to avoid the worst case `O(m * n^2)` time complexity of iteration. Some lower level search routines accept an `&Input` for performance reasons. In which case, `&Input::new("haystack")` can be used for a simple search. ### Error reporting Most, but not all, regex engines in this crate can fail to execute a search. When a search fails, callers cannot determine whether or not a match exists. That is, the result is indeterminate. Search failure, in all cases in this crate, is represented by a [`MatchError`]. Routines that can fail start with the `try_` prefix in their name. For example, [`hybrid::regex::Regex::try_search`] can fail for a number of reasons. Conversely, routines that either can't fail or can panic on failure lack the `try_` prefix. For example, [`hybrid::regex::Regex::find`] will panic in cases where [`hybrid::regex::Regex::try_search`] would return an error, and [`meta::Regex::find`] will never panic. Therefore, callers need to pay close attention to the panicking conditions in the documentation. In most cases, the reasons that a search fails are either predictable or configurable, albeit at some additional cost. An example of predictable failure is [`BoundedBacktracker::try_search`](nfa::thompson::backtrack::BoundedBacktracker::try_search). Namely, it fails whenever the multiplication of the haystack, the regex and some constant exceeds the [configured visited capacity](nfa::thompson::backtrack::Config::visited_capacity). Callers can predict the failure in terms of haystack length via the [`BoundedBacktracker::max_haystack_len`](nfa::thompson::backtrack::BoundedBacktracker::max_haystack_len) method. While this form of failure is technically avoidable by increasing the visited capacity, it isn't practical to do so for all inputs because the memory usage required for larger haystacks becomes impractically large. So in practice, if one is using the bounded backtracker, you really do have to deal with the failure. An example of configurable failure happens when one enables heuristic support for Unicode word boundaries in a DFA. Namely, since the DFAs in this crate (except for the one-pass DFA) do not support Unicode word boundaries on non-ASCII haystacks, building a DFA from an NFA that contains a Unicode word boundary will itself fail. However, one can configure DFAs to still be built in this case by [configuring heuristic support for Unicode word boundaries](hybrid::dfa::Config::unicode_word_boundary). If the NFA the DFA is built from contains a Unicode word boundary, then the DFA will still be built, but special transitions will be added to every state that cause the DFA to fail if any non-ASCII byte is seen. This failure happens at search time and it requires the caller to opt into this. There are other ways for regex engines to fail in this crate, but the above two should represent the general theme of failures one can find. Dealing with these failures is, in part, one the responsibilities of the [meta regex engine](meta). Notice, for example, that the meta regex engine exposes an API that never returns an error nor panics. It carefully manages all of the ways in which the regex engines can fail and either avoids the predictable ones entirely (e.g., the bounded backtracker) or reacts to configured failures by falling back to a different engine (e.g., the lazy DFA quitting because it saw a non-ASCII byte). ### Configuration and Builders Most of the regex engines in this crate come with two types to facilitate building the regex engine: a `Config` and a `Builder`. A `Config` is usually specific to that particular regex engine, but other objects such as parsing and NFA compilation have `Config` types too. A `Builder` is the thing responsible for taking inputs (either pattern strings or already-parsed patterns or even NFAs directly) and turning them into an actual regex engine that can be used for searching. The main reason why building a regex engine is a bit complicated is because of the desire to permit composition with de-coupled components. For example, you might want to [manually construct a Thompson NFA](nfa::thompson::Builder) and then build a regex engine from it without ever using a regex parser at all. On the other hand, you might also want to build a regex engine directly from the concrete syntax. This demonstrates why regex engine construction is so flexible: it needs to support not just convenient construction, but also construction from parts built elsewhere. This is also in turn why there are many different `Config` structs in this crate. Let's look more closely at an example: [`hybrid::regex::Builder`]. It accepts three different `Config` types for configuring construction of a lazy DFA regex: * [`hybrid::regex::Builder::syntax`] accepts a [`util::syntax::Config`] for configuring the options found in the [`regex-syntax`](regex_syntax) crate. For example, whether to match case insensitively. * [`hybrid::regex::Builder::thompson`] accepts a [`nfa::thompson::Config`] for configuring construction of a [Thompson NFA](nfa::thompson::NFA). For example, whether to build an NFA that matches the reverse language described by the regex. * [`hybrid::regex::Builder::dfa`] accept a [`hybrid::dfa::Config`] for configuring construction of the pair of underlying lazy DFAs that make up the lazy DFA regex engine. For example, changing the capacity of the cache used to store the transition table. The lazy DFA regex engine uses all three of those configuration objects for methods like [`hybrid::regex::Builder::build`], which accepts a pattern string containing the concrete syntax of your regex. It uses the syntax configuration to parse it into an AST and translate it into an HIR. Then the NFA configuration when compiling the HIR into an NFA. And then finally the DFA configuration when lazily determinizing the NFA into a DFA. Notice though that the builder also has a [`hybrid::regex::Builder::build_from_dfas`] constructor. This permits callers to build the underlying pair of lazy DFAs themselves (one for the forward searching to find the end of a match and one for the reverse searching to find the start of a match), and then build the regex engine from them. The lazy DFAs, in turn, have their own builder that permits [construction directly from a Thompson NFA](hybrid::dfa::Builder::build_from_nfa). Continuing down the rabbit hole, a Thompson NFA has its own compiler that permits [construction directly from an HIR](nfa::thompson::Compiler::build_from_hir). The lazy DFA regex engine builder lets you follow this rabbit hole all the way down, but also provides convenience routines that do it for you when you don't need precise control over every component. The [meta regex engine](meta) is a good example of something that utilizes the full flexibility of these builders. It often needs not only precise control over each component, but also shares them across multiple regex engines. (Most sharing is done by internal reference accounting. For example, an [`NFA`](nfa::thompson::NFA) is reference counted internally which makes cloning cheap.) ### Size limits Unlike the `regex` crate, the `regex-automata` crate specifically does not enable any size limits by default. That means users of this crate need to be quite careful when using untrusted patterns. Namely, because bounded repetitions can grow exponentially by stacking them, it is possible to build a very large internal regex object from just a small pattern string. For example, the NFA built from the pattern `a{10}{10}{10}{10}{10}{10}{10}` is over 240MB. There are multiple size limit options in this crate. If one or more size limits are relevant for the object you're building, they will be configurable via methods on a corresponding `Config` type. # Crate features This crate has a dizzying number of features. The main idea is to be able to control how much stuff you pull in for your specific use case, since the full crate is quite large and can dramatically increase compile times and binary size. The most barebones but useful configuration is to disable all default features and enable only `dfa-search`. This will bring in just the DFA deserialization and search routines without any dependency on `std` or `alloc`. This does require generating and serializing a DFA, and then storing it somewhere, but it permits regex searches in freestanding or embedded environments. Because there are so many features, they are split into a few groups. The default set of features is: `std`, `syntax`, `perf`, `unicode`, `meta`, `nfa`, `dfa` and `hybrid`. Basically, the default is to enable everything except for development related features like `logging`. ### Ecosystem features * **std** - Enables use of the standard library. In terms of APIs, this usually just means that error types implement the `std::error::Error` trait. Otherwise, `std` sometimes enables the code to be faster, for example, using a `HashMap` instead of a `BTreeMap`. (The `std` feature matters more for dependencies like `aho-corasick` and `memchr`, where `std` is required to enable certain classes of SIMD optimizations.) Enabling `std` automatically enables `alloc`. * **alloc** - Enables use of the `alloc` library. This is required for most APIs in this crate. The main exception is deserializing and searching with fully compiled DFAs. * **logging** - Adds a dependency on the `log` crate and makes this crate emit log messages of varying degrees of utility. The log messages are especially useful in trying to understand what the meta regex engine is doing. ### Performance features **Note**: To get performance benefits offered by the SIMD, `std` must be enabled. None of the `perf-*` features will enable `std` implicitly. * **perf** - Enables all of the below features. * **perf-inline** - When enabled, `inline(always)` is used in (many) strategic locations to help performance at the expense of longer compile times and increased binary size. * **perf-literal** - Enables all literal related optimizations. * **perf-literal-substring** - Enables all single substring literal optimizations. This includes adding a dependency on the `memchr` crate. * **perf-literal-multisubstring** - Enables all multiple substring literal optimizations. This includes adding a dependency on the `aho-corasick` crate. ### Unicode features * **unicode** - Enables all Unicode features. This feature is enabled by default, and will always cover all Unicode features, even if more are added in the future. * **unicode-age** - Provide the data for the [Unicode `Age` property](https://www.unicode.org/reports/tr44/tr44-24.html#Character_Age). This makes it possible to use classes like `\p{Age:6.0}` to refer to all codepoints first introduced in Unicode 6.0 * **unicode-bool** - Provide the data for numerous Unicode boolean properties. The full list is not included here, but contains properties like `Alphabetic`, `Emoji`, `Lowercase`, `Math`, `Uppercase` and `White_Space`. * **unicode-case** - Provide the data for case insensitive matching using [Unicode's "simple loose matches" specification](https://www.unicode.org/reports/tr18/#Simple_Loose_Matches). * **unicode-gencat** - Provide the data for [Unicode general categories](https://www.unicode.org/reports/tr44/tr44-24.html#General_Category_Values). This includes, but is not limited to, `Decimal_Number`, `Letter`, `Math_Symbol`, `Number` and `Punctuation`. * **unicode-perl** - Provide the data for supporting the Unicode-aware Perl character classes, corresponding to `\w`, `\s` and `\d`. This is also necessary for using Unicode-aware word boundary assertions. Note that if this feature is disabled, the `\s` and `\d` character classes are still available if the `unicode-bool` and `unicode-gencat` features are enabled, respectively. * **unicode-script** - Provide the data for [Unicode scripts and script extensions](https://www.unicode.org/reports/tr24/). This includes, but is not limited to, `Arabic`, `Cyrillic`, `Hebrew`, `Latin` and `Thai`. * **unicode-segment** - Provide the data necessary to provide the properties used to implement the [Unicode text segmentation algorithms](https://www.unicode.org/reports/tr29/). This enables using classes like `\p{gcb=Extend}`, `\p{wb=Katakana}` and `\p{sb=ATerm}`. * **unicode-word-boundary** - Enables support for Unicode word boundaries, i.e., `\b`, in regexes. When this and `unicode-perl` are enabled, then data tables from `regex-syntax` are used to implement Unicode word boundaries. However, if `regex-syntax` isn't enabled as a dependency then one can still enable this feature. It will cause `regex-automata` to bundle its own data table that would otherwise be redundant with `regex-syntax`'s table. ### Regex engine features * **syntax** - Enables a dependency on `regex-syntax`. This makes APIs for building regex engines from pattern strings available. Without the `regex-syntax` dependency, the only way to build a regex engine is generally to deserialize a previously built DFA or to hand assemble an NFA using its [builder API](nfa::thompson::Builder). Once you have an NFA, you can build any of the regex engines in this crate. The `syntax` feature also enables `alloc`. * **meta** - Enables the meta regex engine. This also enables the `syntax` and `nfa-pikevm` features, as both are the minimal requirements needed. The meta regex engine benefits from enabling any of the other regex engines and will use them automatically when appropriate. * **nfa** - Enables all NFA related features below. * **nfa-thompson** - Enables the Thompson NFA APIs. This enables `alloc`. * **nfa-pikevm** - Enables the PikeVM regex engine. This enables `nfa-thompson`. * **nfa-backtrack** - Enables the bounded backtracker regex engine. This enables `nfa-thompson`. * **dfa** - Enables all DFA related features below. * **dfa-build** - Enables APIs for determinizing DFAs from NFAs. This enables `nfa-thompson` and `dfa-search`. * **dfa-search** - Enables APIs for searching with DFAs. * **dfa-onepass** - Enables the one-pass DFA API. This enables `nfa-thompson`. * **hybrid** - Enables the hybrid NFA/DFA or "lazy DFA" regex engine. This enables `alloc` and `nfa-thompson`. Á ôê° •ûaj‰bj«`j¦¡^jÙ)—\jÑ,ú¹[jÚ,áºYjé,ÕÛWjú,̼Uj‹-¬½Sj—-ô½Qjž-žOj§-Ó¿Mjº-ÛÀKjÌ-³ÁIjØ-\k_kbk„¿ì2Zk”ìì2OküÐí"2t¹í2`kœüí2T¢î24¦î2„”3¡3 ¥3 �3 «3 ¶3, ¬3 ­3 ´3, ®38ý¯3& ±38ý²3 µ3*¸3 »3 �3+ Å3 Æ3 ß38ìÇ3 Ê3 Þ38Ó<Ë3 Ó37loggingÁLÕ3 é3 ‡3, ÷3 ø3 ü3, ù38ýú3 ý3”’3,Ÿ3 ¥3 Ú3 «3 ¶3, ¬3 ­3 ´3, ®38ý¯3& ±38ý²3 µ3*¸3 »3 Ø38¼½3 À3 Á3 Ö38¼Â3'Å38¨,Ç3 Ì3 Í3 Õ3, Î3 Ï3 Ó3, Ð38ýÑ3 Ô3”Ý3,ê3 ð3 ¥3 ö3 �3, ÷3 ø3 ÿ3, ù38ýú3& ü38ýý3 €3*ƒ3 †3 £38¼ˆ3 ‹3 Œ3 ¡38¼�3'�38Í,’3 —3 ˜3  3, ™3 š3 ž3, ›38ýœ3 Ÿ3\ìî2ü¬s§s A module for building and searching with deterministic finite automata (DFAs). Like other modules in this crate, DFAs support a rich regex syntax with Unicode features. DFAs also have extensive options for configuring the best space vs time trade off for your use case and provides support for cheap deserialization of automata for use in `no_std` environments. If you're looking for lazy DFAs that build themselves incrementally during search, then please see the top-level [`hybrid` module](crate::hybrid). # Overview This section gives a brief overview of the primary types in this module: * A [`regex::Regex`] provides a way to search for matches of a regular expression using DFAs. This includes iterating over matches with both the start and end positions of each match. * A [`dense::DFA`] provides low level access to a DFA that uses a dense representation (uses lots of space, but fast searching). * A [`sparse::DFA`] provides the same API as a `dense::DFA`, but uses a sparse representation (uses less space, but slower searching). * An [`Automaton`] trait that defines an interface that both dense and sparse DFAs implement. (A `regex::Regex` is generic over this trait.) * Both dense DFAs and sparse DFAs support serialization to raw bytes (e.g., [`dense::DFA::to_bytes_little_endian`]) and cheap deserialization (e.g., [`dense::DFA::from_bytes`]). There is also a [`onepass`] module that provides a [one-pass DFA](onepass::DFA). The unique advantage of this DFA is that, for the class of regexes it can be built with, it supports reporting the spans of matching capturing groups. It is the only DFA in this crate capable of such a thing. # Example: basic regex searching This example shows how to compile a regex using the default configuration and then use it to find matches in a byte string: ``` use regex_automata::{Match, dfa::regex::Regex}; let re = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")?; let text = b"2018-12-24 2016-10-08"; let matches: Vec = re.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` # Example: searching with regex sets The DFAs in this module all fully support searching with multiple regexes simultaneously. You can use this support with standard leftmost-first style searching to find non-overlapping matches: ``` # if cfg!(miri) { return Ok(()); } // miri takes too long use regex_automata::{Match, dfa::regex::Regex}; let re = Regex::new_many(&[r"\w+", r"\S+"])?; let text = b"@foo bar"; let matches: Vec = re.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(1, 0..4), Match::must(0, 5..8), ]); # Ok::<(), Box>(()) ``` # Example: use sparse DFAs By default, compiling a regex will use dense DFAs internally. This uses more memory, but executes searches more quickly. If you can abide slower searches (somewhere around 3-5x), then sparse DFAs might make more sense since they can use significantly less space. Using sparse DFAs is as easy as using `Regex::new_sparse` instead of `Regex::new`: ``` use regex_automata::{Match, dfa::regex::Regex}; let re = Regex::new_sparse(r"[0-9]{4}-[0-9]{2}-[0-9]{2}").unwrap(); let text = b"2018-12-24 2016-10-08"; let matches: Vec = re.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` If you already have dense DFAs for some reason, they can be converted to sparse DFAs and used to build a new `Regex`. For example: ``` use regex_automata::{Match, dfa::regex::Regex}; let dense_re = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}").unwrap(); let sparse_re = Regex::builder().build_from_dfas( dense_re.forward().to_sparse()?, dense_re.reverse().to_sparse()?, ); let text = b"2018-12-24 2016-10-08"; let matches: Vec = sparse_re.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` # Example: deserialize a DFA This shows how to first serialize a DFA into raw bytes, and then deserialize those raw bytes back into a DFA. While this particular example is a bit contrived, this same technique can be used in your program to deserialize a DFA at start up time or by memory mapping a file. ``` use regex_automata::{Match, dfa::{dense, regex::Regex}}; let re1 = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}").unwrap(); // serialize both the forward and reverse DFAs, see note below let (fwd_bytes, fwd_pad) = re1.forward().to_bytes_native_endian(); let (rev_bytes, rev_pad) = re1.reverse().to_bytes_native_endian(); // now deserialize both---we need to specify the correct type! let fwd: dense::DFA<&[u32]> = dense::DFA::from_bytes(&fwd_bytes[fwd_pad..])?.0; let rev: dense::DFA<&[u32]> = dense::DFA::from_bytes(&rev_bytes[rev_pad..])?.0; // finally, reconstruct our regex let re2 = Regex::builder().build_from_dfas(fwd, rev); // we can use it like normal let text = b"2018-12-24 2016-10-08"; let matches: Vec = re2.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` There are a few points worth noting here: * We need to extract the raw DFAs used by the regex and serialize those. You can build the DFAs manually yourself using [`dense::Builder`], but using the DFAs from a `Regex` guarantees that the DFAs are built correctly. (In particular, a `Regex` constructs a reverse DFA for finding the starting location of matches.) * To convert the DFA to raw bytes, we use the `to_bytes_native_endian` method. In practice, you'll want to use either [`dense::DFA::to_bytes_little_endian`] or [`dense::DFA::to_bytes_big_endian`], depending on which platform you're deserializing your DFA from. If you intend to deserialize on either platform, then you'll need to serialize both and deserialize the right one depending on your target's endianness. * Safely deserializing a DFA requires verifying the raw bytes, particularly if they are untrusted, since an invalid DFA could cause logical errors, panics or even undefined behavior. This verification step requires visiting all of the transitions in the DFA, which can be costly. If cheaper verification is desired, then [`dense::DFA::from_bytes_unchecked`] is available that only does verification that can be performed in constant time. However, one can only use this routine if the caller can guarantee that the bytes provided encoded a valid DFA. The same process can be achieved with sparse DFAs as well: ``` use regex_automata::{Match, dfa::{sparse, regex::Regex}}; let re1 = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}").unwrap(); // serialize both let fwd_bytes = re1.forward().to_sparse()?.to_bytes_native_endian(); let rev_bytes = re1.reverse().to_sparse()?.to_bytes_native_endian(); // now deserialize both---we need to specify the correct type! let fwd: sparse::DFA<&[u8]> = sparse::DFA::from_bytes(&fwd_bytes)?.0; let rev: sparse::DFA<&[u8]> = sparse::DFA::from_bytes(&rev_bytes)?.0; // finally, reconstruct our regex let re2 = Regex::builder().build_from_dfas(fwd, rev); // we can use it like normal let text = b"2018-12-24 2016-10-08"; let matches: Vec = re2.find_iter(text).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` Note that unlike dense DFAs, sparse DFAs have no alignment requirements. Conversely, dense DFAs must be aligned to the same alignment as a [`StateID`](crate::util::primitives::StateID). # Support for `no_std` and `alloc`-only This crate comes with `alloc` and `std` features that are enabled by default. When the `alloc` or `std` features are enabled, the API of this module will include the facilities necessary for compiling, serializing, deserializing and searching with DFAs. When only the `alloc` feature is enabled, then implementations of the `std::error::Error` trait are dropped, but everything else generally remains the same. When both the `alloc` and `std` features are disabled, the API of this module will shrink such that it only includes the facilities necessary for deserializing and searching with DFAs. The intended workflow for `no_std` environments is thus as follows: * Write a program with the `alloc` or `std` features that compiles and serializes a regular expression. You may need to serialize both little and big endian versions of each DFA. (So that's 4 DFAs in total for each regex.) * In your `no_std` environment, follow the examples above for deserializing your previously serialized DFAs into regexes. You can then search with them as you would any regex. Deserialization can happen anywhere. For example, with bytes embedded into a binary or with a file memory mapped at runtime. The `regex-cli` command (found in the same repository as this crate) can be used to serialize DFAs to files and generate Rust code to read them. # Syntax This module supports the same syntax as the `regex` crate, since they share the same parser. You can find an exhaustive list of supported syntax in the [documentation for the `regex` crate](https://docs.rs/regex/1/regex/#syntax). There are two things that are not supported by the DFAs in this module: * Capturing groups. The DFAs (and [`Regex`](regex::Regex)es built on top of them) can only find the offsets of an entire match, but cannot resolve the offsets of each capturing group. This is because DFAs do not have the expressive power necessary. * Unicode word boundaries. These present particularly difficult challenges for DFA construction and would result in an explosion in the number of states. One can enable [`dense::Config::unicode_word_boundary`] though, which provides heuristic support for Unicode word boundaries that only works on ASCII text. Otherwise, one can use `(?-u:\b)` for an ASCII word boundary, which will work on any input. There are no plans to lift either of these limitations. Note that these restrictions are identical to the restrictions on lazy DFAs. # Differences with general purpose regexes The main goal of the [`regex`](https://docs.rs/regex) crate is to serve as a general purpose regular expression engine. It aims to automatically balance low compile times, fast search times and low memory usage, while also providing a convenient API for users. In contrast, this module provides a lower level regular expression interface based exclusively on DFAs that is a bit less convenient while providing more explicit control over memory usage and search times. Here are some specific negative differences: * **Compilation can take an exponential amount of time and space** in the size of the regex pattern. While most patterns do not exhibit worst case exponential time, such patterns do exist. For example, `[01]*1[01]{N}` will build a DFA with approximately `2^(N+2)` states. For this reason, untrusted patterns should not be compiled with this module. (In the future, the API may expose an option to return an error if the DFA gets too big.) * This module does not support sub-match extraction via capturing groups, which can be achieved with the regex crate's "captures" API. * While the regex crate doesn't necessarily sport fast compilation times, the regexes in this module are almost universally slow to compile, especially when they contain large Unicode character classes. For example, on my system, compiling `\w{50}` takes about 1 second and almost 15MB of memory! (Compiling a sparse regex takes about the same time but only uses about 1.2MB of memory.) Conversely, compiling the same regex without Unicode support, e.g., `(?-u)\w{50}`, takes under 1 millisecond and about 15KB of memory. For this reason, you should only use Unicode character classes if you absolutely need them! (They are enabled by default though.) * This module does not support Unicode word boundaries. ASCII word boundaries may be used though by disabling Unicode or selectively doing so in the syntax, e.g., `(?-u:\b)`. There is also an option to [heuristically enable Unicode word boundaries](crate::dfa::dense::Config::unicode_word_boundary), where the corresponding DFA will give up if any non-ASCII byte is seen. * As a lower level API, this module does not do literal optimizations automatically. Although it does provide hooks in its API to make use of the [`Prefilter`](crate::util::prefilter::Prefilter) trait. Missing literal optimizations means that searches may run much slower than what you're accustomed to, although, it does provide more predictable and consistent performance. * There is no `&str` API like in the regex crate. In this module, all APIs operate on `&[u8]`. By default, match indices are guaranteed to fall on UTF-8 boundaries, unless either of [`syntax::Config::utf8`](crate::util::syntax::Config::utf8) or [`thompson::Config::utf8`](crate::nfa::thompson::Config::utf8) are disabled. With some of the downsides out of the way, here are some positive differences: * Both dense and sparse DFAs can be serialized to raw bytes, and then cheaply deserialized. Deserialization can be done in constant time with the unchecked APIs, since searching can be performed directly on the raw serialized bytes of a DFA. * This module was specifically designed so that the searching phase of a DFA has minimal runtime requirements, and can therefore be used in `no_std` environments. While `no_std` environments cannot compile regexes, they can deserialize pre-compiled regexes. * Since this module builds DFAs ahead of time, it will generally out-perform the `regex` crate on equivalent tasks. The performance difference is likely not large. However, because of a complex set of optimizations in the regex crate (like literal optimizations), an accurate performance comparison may be difficult to do. * Sparse DFAs provide a way to build a DFA ahead of time that sacrifices search performance a small amount, but uses much less storage space. Potentially even less than what the regex crate uses. * This module exposes DFAs directly, such as [`dense::DFA`] and [`sparse::DFA`], which enables one to do less work in some cases. For example, if you only need the end of a match and not the start of a match, then you can use a DFA directly without building a `Regex`, which always requires a second DFA to find the start of a match. * This module provides more control over memory usage. Aside from choosing between dense and sparse DFAs, one can also choose a smaller state identifier representation to use less space. Also, one can enable DFA minimization via [`dense::Config::minimize`], but it can increase compilation times dramatically. ÁÓí´¹î2Ó dfa-onepassÁ¼Ñî2ü¸î12ü¯î<2ôî2 ÔüÒw,$Øw Ç|üxüÛÖ A DFA that can return spans for matching capturing groups. This module is the home of a [one-pass DFA](DFA). This module also contains a [`Builder`] and a [`Config`] for building and configuring a one-pass DFA. ÁÓù.¼âxüÜx<„yòý„’Ÿ¦­®¹ºÀÁÇÈÎÒØ–ÎÐ= – üØ…C ΰD€í à$Š  ±$¥±  䮫¬# �õý\ÏÔ% œãDî±& ®ŠLˆü& ®Šý& �š,¡· Ý—¨™ ˜­£ ë–²�  ‘Ú$ÆØ' "ý”<Ìš( #É–ÄÕ³( $ñ�\…ž) &¦¡L’Ù) 'µ¢<�î) (žD¸§- *—,ÂÑ, +ÕÛ,Éú, ,ÛÀTÐÌ- -Ó¿Lܺ- .ú¹$çÚ, /§ÃL‚ò- 0,Æ-0DÓ,ã„ã”öþüã?öDšéìüãV¬Åà”äÓŒ€Æüã»§ª™œ‹Ž}€üãàuxgjY\üãŸQTCF58üãÒ-0 #öøæè¬öÚ\µÑæ23456789:;´€üÇ41 Return a new default one-pass DFA configuration.Á‡ÑæBÿ11Ø�ü®!6ü¾$! Set the desired match semantics.Áç�üïIF The default is [`MatchKind::LeftmostFirst`], which corresponds to theÁü½FC match semantics of Perl-like regex engines. That is, when multipleÁüˆHE patterns would match at the same leftmost position, the pattern thatÁüÕ30 appears first in the concrete syntax is chosen.Á��ü•B? Currently, the only other kind of match semantics supported isÁüÜHE [`MatchKind::All`]. This corresponds to "classical DFA" constructionÁü©+( where all possible matches are visited.ÁÙ�üáKH When it comes to the one-pass DFA, it is rarer for preference order andÁü±JG "longest match" to actually disagree. Since if they did disagree, thenÁü€HE the regex typically isn't one-pass. For example, searching `Samwise`ÁüÍGD for `Sam|Samwise` will report `Sam` for leftmost-first matching andÁü™KH `Samwise` for "longest match" or "all" matching. However, this regex isÁüéIF not one-pass if taken literally. The equivalent regex, `Sam(?:|wise)`Áü·96 is one-pass and `Sam|Samwise` may be optimized to it.Áõ�üýIF The other main difference is that "all" match semantics don't supportÁüË IF non-greedy matches. "All" match semantics always try to match as muchÁ„™! as possible.ÁTµ!Ñæù¦ÑæBÿ11 3$Ä!¦$Ê!ü»2=ü¥"EB Whether to compile a separate start state for each pattern in theÁŒï" one-pass DFA.Á…#�ü�#GD When enabled, a separate **anchored** start state is added for eachÁüÙ#HE pattern in the DFA. When this start state is used, then the DFA willÁü¦$HE only search for matches for the pattern specified, even if there areÁôó$ other patterns in the DFA.Á–%�üž%HE The main downside of this option is that it can potentially increaseÁüë%KH the size of the DFA and/or increase the time it takes to build the DFA.Á»&�üÃ&IF You might want to enable this option when you want to both search forÁü‘'HE anchored matches of any pattern or to search for anchored matches ofÁüÞ'JG one particular pattern while using the same DFA. (Otherwise, you wouldÁü­(0- need to compile a new DFA for each pattern.)Áâ(�üê(  By default this is disabled.Á�)�l—) # ExampleÁ©)�ü±)EB This example shows how to build a multi-regex and then search forÁüû)HE matches for a any of the patterns or matches for a specific pattern.ÁÈ*�<Ð* ```ÁÌÜ* use regex_automata::{Áüú*=: dfa::onepass::DFA, Anchored, Input, Match, PatternID,Á4¼+ };ÁÇ+�ÜÏ+ let re = DFA::builder()Áüï+?< .configure(DFA::config().starts_for_each_pattern(true))Áü³,,) .build_many(&["[a-z]+", "[0-9]+"])?;Áüä,JG let (mut cache, mut caps) = (re.create_cache(), re.create_captures());Áä³- let haystack = "123abc";ÁüÔ-=: let input = Input::new(haystack).anchored(Anchored::Yes);Á–.�üž.A> // A normal multi-pattern search will show pattern 1 matches.Áüä.2/ re.try_search(&mut cache, &input, &mut caps)?;Áü›/=: assert_eq!(Some(Match::must(1, 0..3)), caps.get_match());ÁÝ/�üå/EB // If we only want to report pattern 0 matches, then we'll get noÁ”¯0 // match here.ÁüÆ0FC let input = input.anchored(Anchored::Pattern(PatternID::must(0)));Áü‘12ÍÜ.üÈ1'$ assert_eq!(None, caps.get_match());Áô1�üü1.+ # Ok::<(), Box>(())Á<¯2þ×.¼Â2ÑæÑæBÿ11 4$Þ2êä2üžA2üÅ3GD Whether to attempt to shrink the size of the DFA's alphabet or not.Á‘4�ü™4IF This option is enabled by default and should never be disabled unlessÁüç4$! one is debugging a one-pass DFA.Á�5�ü˜5IF When enabled, the DFA will use a map from all possible bytes to theirÁüæ5HE corresponding equivalence class. Each equivalence class represents aÁü³6KH set of bytes that does not discriminate between a match and a non-matchÁüƒ7A> in the DFA. For example, the pattern `[ab]+` has at least twoÁüÉ7JG equivalence classes: a set containing `a` and `b` and a set containingÁü˜8B? every byte except for `a` and `b`. `a` and `b` are in the sameÁüß8KH equivalence class because they never discriminate between a match and aÁt¯9 non-match.ÁÂ9�üÊ9FC The advantage of this map is that the size of the transition tableÁü•:DA can be reduced drastically from (approximately) `#states * 256 *ÁüÞ:HE sizeof(StateID)` to `#states * k * sizeof(StateID)` where `k` is theÁü«;IF number of equivalence classes (rounded up to the nearest power of 2).Áüù;HE As a result, total space usage can decrease substantially. Moreover,ÁüÆFC disabled, a byte class map is still used while searching. The onlyÁü†?FC difference is that every byte will be forced into its own distinctÁüÑ?HE equivalence class. This is useful for debugging the actual generatedÁüž@IF transitions because it lets one see the transitions defined on actualÁüì@-* bytes instead of the equivalence classes.Ád¥AÑæÑæBÿ11 5$¶Aê¼AüàO;ü’B>; Set a size limit on the total heap used by a one-pass DFA.ÁÕB�üÝB?< This size limit is expressed in bytes and is applied duringÁü¡CC@ construction of a one-pass DFA. If the DFA's heap usage exceedsÁüéCGD this configured limit, then construction is stopped and an error isÁlµD returned.ÁÇD�äÏD The default is no limit.ÁðD�løD¯Ö.ŠE�ü’EDA This example shows a one-pass DFA that fails to build because ofÁüÛEEB a configured size limit. This particular example also serves as aÁü¥FFC cautionary tale demonstrating just how big DFAs with large UnicodeÁôðF character classes can get.Á“G�<›Gþ×.ü§G=: # if cfg!(miri) { return Ok(()); } // miri takes too longÁüéG30 use regex_automata::{dfa::onepass::DFA, Match};Á¡H�Ä©H // 6MB isn't enough!Á”ÆH DFA::builder()ÁüÝH=: .configure(DFA::config().size_limit(Some(6_000_000)))ÁÌŸI .build(r"\w{20}")Á´½I .unwrap_err();ÁØI�üàI // ... but 7MB probably is!Áü„JHE // (Note that DFA sizes aren't necessarily stable between releases.)ÁÜÑJ’Ù.üñJ=: .configure(DFA::config().size_limit(Some(7_000_000)))ÁܳK .build(r"\w{20}")?;ÁüÓKJ¶Ú.ü¢L" let haystack = "A".repeat(20);ÁüÉL2/ re.captures(&mut cache, &haystack, &mut caps);Áü€M>; assert_eq!(Some(Match::must(0, 0..20)), caps.get_match());ÁÃM�üËM.áß.<þMþ×.ŠN�ü’NDA While one needs a little more than 3MB to represent `\w{20}`, itÁüÛNDA turns out that you only need a little more than 4KB to representÁü¤O74 `(?-u:\w{20})`. So only use Unicode if you need it!ÁTçOÑæØÚÑæBÿ11 6$öOª¯,üOüœQ)üÝP:7 Returns the match semantics set in this configuration.Át£Qƒ. ƒ.Ñæù¦Bÿ1 ²Q1 7$³Qü…S1ü�RKH Returns whether this configuration has enabled anchored starting statesÁüßR! for every pattern in the DFA.ÁÜŒS„. „.ÑæBÿ1 ¨S1 8$©Sü¯U&üúSGD Returns whether this configuration has enabled byte classes or not.ÁüÆTJG This is typically a debugging oriented option, as disabling it confersÁ¬•U no speed benefit.Á„¶U…. ….ÑæBÿ1 ÇU1 9$ÈUü¬X-ü�VDA Returns the DFA size limit of this configuration if one was set.ÁüÖVEB The size limit is total number of bytes on the heap that a DFA isÁü WHE permitted to use. If the DFA exceeds this limit during construction,ÁüíW:7 then construction is stopped and an error is returned.Át³X†. †.ÑæØÚBÿ1 ÂX1 :$ÃXü�[3L›[‡. ‡.ÑæÑæÑæBÿ1 ¥[1 ;$¦[¥ ¬[d¯o½ç=>?ABCD¼ŒpüÂoEB Create a new one-pass DFA builder with the default configuration.Á“p½çBÿ<<¼‘üŒs=üÌq0- Build a one-pass DFA from the given pattern.Á�r�ü‰rJG If there was a problem parsing or compiling the pattern, then an errorÁ„Ør is returned.ÁÓí”órÔír,“sŒ.�. Œ.½ç �.þïBÿ< ™s<ñŒ$šsîN< süÎuiüûs1. Build a one-pass DFA from the given patterns.Á±t�ü¹tIF When matches are returned, the pattern ID corresponds to the index ofÁü‡u# the pattern in the slice given.ÁÓ픵uÔ¯uTÕuŽ.�. Ž.½ç �.©òþïBÿ<Œ@@ øu<þƵ“ àu£µ“TãuùŽ$ùu¨ ¯¸)+ü×}AüÂw# Build a DFA from the given NFA.Áêw�lòw¯Ö.„x�üŒxGD This example shows how to build a DFA if you already have an NFA inÁLØx hand.Áæx�<îxþ×.üúxGD use regex_automata::{dfa::onepass::DFA, nfa::thompson::NFA, Match};ÁÆy�üÎyEB // This shows how to set non-default options for building an NFA.Áì˜z let nfa = NFA::compiler()Áüºz.+ .configure(NFA::config().shrink(true))Áôíz .build(r"[a-z0-9]+")?;Áü�{1. let re = DFA::builder().build_from_nfa(nfa)?;ÁüÆ{J¶Ú.ü•|41 re.captures(&mut cache, "foo123bar", &mut caps);ÁüÎ|=: assert_eq!(Some(Match::must(0, 0..9)), caps.get_match());Á�}�ü˜}.áß.<Ë}þ×.tÞ}�. �.½ç�»þïBÿ< í}<Ìî$î}ß'ô}ü…ˆ;ü¹‡GD Apply the given one-pass DFA configuration options to this builder.ÁLŒˆ‘. ‘.½çÑæÄ–/Bÿ< –ˆ< B$›ˆÉ4¡ˆüú‹dü�‰74 Set the syntax configuration for this builder usingÁü̉41 [`syntax::Config`](crate::util::syntax::Config).Á…Š�ü�ŠJG This permits setting things like case insensitivity, Unicode and multiÁtÜŠ line mode.ÁïŠ�ü÷ŠGD These settings only apply when constructing a one-pass DFA directlyÁœÃ‹ from a pattern.ÁÓí”á‹ÔÛ‹4�Œ’. ’.½çÝ’²š/Bÿ< ‘Œ< C$–ŒÉ4¤Œü¤�DüŸ�=: Set the Thompson NFA configuration for this builder usingÁüá�<9 [`nfa::thompson::Config`](crate::nfa::thompson::Config).Á¢Ž�üªŽFC This permits setting things like whether additional time should beÁüõŽ(% spent shrinking the size of the NFA.Á¢��üª�EB These settings only apply when constructing a DFA directly from aÁdô� pattern.ÁÓ픋�Ô…�D«�“. “.½ç±ª¼ž/Bÿ< ´�< D$¹�É4¿�䈭ÄFFˆèGHIJLMNP�­üã­;æ­ Ñæ Ä�»ˆèBÿEE GÄÉ4ê­ß'ú­üãÃ-,æÃ ˆèþïBÿEE HÄ$ðÃ但tÀ† —. —.ˆèBÿE φE IÄ$Ô†üâ�¤”å� ˜.™. ˜.ˆèÇ ™.ÝÁÄíÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸ïBÿE �‘E JÄ$†‘dfa_idÁ4”‘ž²,­‘®#DÓ‘ΓJ�K�K�KKJKÞÐÈË Uÿü˜Ÿ„|›Ÿ š. š.ˆèܧÇÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwǸïBÿE ´ŸE LÄ$¹Ÿ¾¾ÇŸnfa_idÁ4çŸü¿©pÜ© ›. ›.ˆèǸ¤/BÿE ç©E MÄ$ì©¿¤/4ú©üÚ²<|ݲ œ. œ.ˆè¸¤/BÿE í²E NÄ$ò²š¹N�O�O�OONO»�¸ïUÿƒ®ü“ÃvT–à �. �.ˆèÇÄíÿ¡/BÿE ªÃE PÄ$¯Ã¿¤/4½Ã®#DÖÃDŒ ¡éRSUVWXYZ[\]^_`abcdüð¥4ü› JG Parse the given regular expression using the default configuration andÁüê *' return the corresponding one-pass DFA.Á™¡�ü¡¡HE If you want a non-default configuration, then use the [`Builder`] toÁüî¡ set your own configuration.Á’¢�lš¢¯Ö.¬¢�<´¢þ×.üÀ¢3µö.ø¢�ü€£'$ let re = DFA::new("foo[0-9]+bar")?;Áü¬£J¶Ú.û£�üƒ¤96 re.captures(&mut cache, "foo12345barzzz", &mut caps);ÁüÁ¤>; assert_eq!(Some(Match::must(0, 0..11)), caps.get_match());Áü„¥.áß.<·¥þ×.Óí”É¥ÔÃ¥÷¥Ÿ. Ÿ.þïBÿQ „¦Q RîNkÆü̬IüئIF Like `new`, but parses multiple patterns into a single "multi regex."Áü¦§85 This similarly uses the default regex configuration.Áã§�l맯Ö.ý§�<…¨þ×.ü‘¨3µö.ɨ�üѨ30 let re = DFA::new_many(&["[a-z]+", "[0-9]+"])?;Áü‰©J¶Ú.Ø©�üà©1. re.captures(&mut cache, "abc123", &mut caps);Áü–ª=: assert_eq!(Some(Match::must(0, 0..3)), caps.get_match());Áت�üàª1. re.captures(&mut cache, "123abc", &mut caps);Áü–«=‰Ý.Ø«�üà«.áß.<“¬þ×.Ó픥¬ÔŸ¬DÓ¬ .  .©òþïBÿQŒTT õ¬Q¹Ž/ ܬÊŽ/T߬ Sµ“¨ wÇ!üý·8üÏ­GD Like `new`, but builds a one-pass DFA directly from an NFA. This isÁü›®HE useful if you already have an NFA, or even if you hand-assembled theÁDè® NFA.Áõ®�lý®¯Ö.�¯�ü—¯EB This shows how to hand assemble a regular expression via its HIR,Áüá¯A> compile an NFA from it and build a one-pass DFA from the NFA.Á§°�<¯°þ×.Ì»°ŽØ.ÔÙ° dfa::onepass::DFA,ÁÜø° nfa::thompson::NFA,Át˜± Match,Á4«±÷Ø.ü¶±EB use regex_syntax::hir::{Hir, Class, ClassBytes, ClassBytesRange};Á€²�üˆ²;8 let hir = Hir::class(Class::Bytes(ClassBytes::new(vec![ÁüȲ)& ClassBytesRange::new(b'0', b'9'),Áüö²)& ClassBytesRange::new(b'A', b'Z'),Áü¤³)& ClassBytesRange::new(b'_', b'_'),ÁüÒ³)& ClassBytesRange::new(b'a', b'z'),ÁL€´ ])));ÁŽ´�ü–´;8 let config = NFA::config().nfa_size_limit(Some(1_000));ÁüÖ´FC let nfa = NFA::compiler().configure(config).build_from_hir(&hir)?;Á¡µ�ü©µ%" let re = DFA::new_from_nfa(nfa)?;ÁüÓµJ¶Ú.ü¢¶.+ let expected = Some(Match::must(0, 0..1));ÁüÕ¶,) re.captures(&mut cache, "A", &mut caps);Áü†·+( assert_eq!(expected, caps.get_match());Á¶·�ü¾·.áß.<ñ·þ×.d„¸�»þïBÿQQ Uß'‘¸üß½0üî¸74 Create a new one-pass DFA that matches every input.Áª¹�l²¹¯Ö.Ĺ�<̹þ×.üع3µö.�º�ü˜º# let dfa = DFA::always_match()?;ÁüÀº'$ let mut cache = dfa.create_cache();Áüìº)& let mut caps = dfa.create_captures();Áš»�ü¢»(% let expected = Match::must(0, 0..0);ÁüÏ»,) dfa.captures(&mut cache, "", &mut caps);Áü€¼1. assert_eq!(Some(expected), caps.get_match());Áü¶¼/, dfa.captures(&mut cache, "foo", &mut caps);Áüê¼1 Â/ü ½.áß.<Ó½þ×.dæ½þïBÿQQ Vü£Ã/üù¾;8 Create a new one-pass DFA that never matches any input.Á¹¿�lÁ¿¯Ö.Ó¿�<Û¿þ×.üç¿*' use regex_automata::dfa::onepass::DFA;Á–À�üžÀ" let dfa = DFA::never_match()?;ÁüÅÀ'ÃÀ/üñÀ)õÀ/ŸÁ�ü§Á,éÁ/üØÁ'¤ß.ü„Â/ÜÂ/ü¸Â'¤ß.üäÂ.áß.<—Ãþ×.\ªÃþïBÿQQ WÌ¥Îü»Ä-* Return a default configuration for a DFA.ÁíÄ�üõÄIF This is a convenience routine to avoid needing to import the `Config`ÁüÃÅ41 type when customizing the construction of a DFA.ÁüÅ�l„ƯÖ.–Æ�üžÆIF This example shows how to change the match semantics of this DFA fromÁüìÆKH its default "leftmost first" to "all." When using "all," non-greedinessÁü¼ÇJG doesn't apply and neither does preference order matching. Instead, theÁü‹ÈJG longest match possible is always returned. (Although, by construction,ÁüÚÈEB it's impossible for a one-pass DFA to have a different answer forÁü¤É+( "preference order" vs "longest match.")ÁÔÉ�<ÜÉþ×.üèÉ>; use regex_automata::{dfa::onepass::DFA, Match, MatchKind};Á«Ê�ܳÊ’Ù.üÓÊ<9 .configure(DFA::config().match_kind(MatchKind::All))Áä”Ë .build(r"(abc)+?")?;ÁüµË&# let mut cache = re.create_cache();ÁüàË(% let mut caps = re.create_captures();Á�Ì�ü•Ì1. re.captures(&mut cache, "abcabc", &mut caps);ÁüËÌFC // Normally, the non-greedy repetition would give us a 0..3 match.Áü–Í=: assert_eq!(Some(Match::must(0, 0..6)), caps.get_match());ÁüØÍ.áß.<‹Îþ×.4¬ÎÑæBÿQQ XÜ­×üâÎ?< Return a builder for configuring the construction of a DFA.Á¦Ï�ü®Ï@= This is a convenience routine to avoid needing to import theÁüóÏ%" [`Builder`] type in common cases.Á�Ð�l¥Ð¯Ö.·Ð�ü¿ÐDA This example shows how to use the builder to disable UTF-8 mode.ÁˆÑ�<�Ñþ×.üœÑ=îõ.ÌÞÑŽØ.Ôüш·/´›Ò nfa::thompson,Á¬¶Ò util::syntax,ÁtÐÒÑ·/4ãÒ÷Ø.îÒ�ÜöÒ’Ù.ü–Ó2/ .syntax(syntax::Config::new().utf8(false))ÁüÍÓ63 .thompson(thompson::Config::new().utf8(false))ÁüˆÔ&# .build(r"foo(?-u:[^b])ar.*")?;Áü³ÔJ¶Ú.‚Õ�üŠÕ0- let haystack = b"foo\xFFarzz\xE2\x98\xFF\n";Áü¿Õ.+ let expected = Some(Match::must(0, 0..8));ÁüòÕ1. re.captures(&mut cache, haystack, &mut caps);Áü¨Ö+Þ½/ØÖ�üàÖ.áß.<“×þ×.<´×½çBÿQQÃŒüçÛ)üí×GD Create a new empty set of capturing groups that is guaranteed to beÁü¹Ø*' valid for the search APIs on this DFA.ÁèØ�üðØIF A `Captures` value created for a specific DFA cannot be used with anyÁt¾Ù other DFA.ÁÑÙ�üÙÙA> This is a convenience function for [`Captures::all`]. See theÁüŸÚDA [`Captures`] documentation for an explanation of its alternativeÁüèÚIF constructors that permit the DFA to do less work during a search, andÁô¶Û thus might make it faster.Á|îÛ¡. ¡.¡é˜ÛBÿQ þÛQ Z$ÿÛü€ß#üÓÜ$! Create a new cache for this DFA.ÁüÜ�ü„Ý@= The cache returned should only be used for searches for thisÁüÉÝA> DFA. If you want to reuse the cache for another DFA, then youÁü�Þ?< must call [`Cache::reset`] with that DFA (or, equivalently,ÁÔÓÞ [`DFA::reset_cache`]).Ád‡ß¢. ¢.¡é�ëBÿQ ”ßQ [$•ßü„ë,üÊßIF Reset the given cache such that it can be used for searching with theÁü˜à! this DFA (and only this DFA).Á¾à�üÆàHE A cache reset permits reusing memory already allocated in this cacheÁÌ“á with a different DFA.Á±á�l¹á¯Ö.Ëá�üÓáFC This shows how to re-purpose a cache for use with a different DFA.Ážâ�<¦âþ×.ü²â=îõ.üôâ3µö.¬ã�ü´ã let re1 = DFA::new(r"\w")?;ÁüØã let re2 = DFA::new(r"\W")?;Áüüã*' let mut caps1 = re1.create_captures();Áü«ä*' let mut caps2 = re2.create_captures();ÁÚä�üâä'$ let mut cache = re1.create_cache();Á|Žå assert_eq!(Áü¢å# Some(Match::must(0, 0..2)),ÁüÊåJG { re1.captures(&mut cache, "Δ", &mut caps1); caps1.get_match() },Á4™æ );Á¤æ�ü¬æHE // Using 'cache' with re2 is not allowed. It may result in panics orÁüùæIF // incorrect results. In order to re-purpose the cache, we must resetÁüÇç96 // it with the one-pass DFA we'd like to use it with.Á4…è //Áü�èJG // Similarly, after this reset, using the cache with 're1' is also notÁ|ßè // allowed.Áüóè  re2.reset_cache(&mut cache);Á|˜é»ç/ü¬é# Some(Match::must(0, 0..3)),ÁüÔéKH { re2.captures(&mut cache, "☃", &mut caps2); caps2.get_match() },Á4¤ê×è/¯ê�ü·ê.áß.<êêþ×.\‹ë£.¤. £.¡é ¤.�ëBÿQ —ëQ \$˜ëóA›Êü˜ì#üÙë,) Return the config for this one-pass DFA.ÁTŸì¥. ¥.¡é ¥.ÑæBÿQ ªìQ ]$«ììŸíüÞì.+ Returns a reference to the underlying NFA.Á<¦í¦. ¦.¡é ¦.�»BÿQ ®íQ¼˜$¯íü�ï"üÜí@= Returns the total number of patterns compiled into this DFA.Á¡î�ü©îEB In the case of a DFA that contains no patterns, this returns `0`.Á\ˆï§. §.¡éBÿQ ”ïQ _$•ïüçñ üÖï<9 Returns the total number of states in this one-pass DFA.Á—ð�üŸðIF Note that unlike dense or sparse DFAs, a one-pass DFA does not exposeÁüíðJG a low level DFA API. Therefore, this routine has little use other thanÁļñ being informational.ÁLîñ¨. ¨.¡éBÿQ øñQôó$ùñüŒÿ#üÀòFC Returns the total number of elements in the alphabet for this DFA.Á‹ó�ü“óC@ That is, this returns the total number of transitions that eachÁüÛóHE state in this DFA must have. The maximum alphabet size is 256, whichÁü¨ô,) corresponds to each possible byte value.ÁÙô�üáô=: The alphabet size may be less than 256 though, and unlessÁü£õHE [`Config::byte_classes`] is disabled, it is typically must less thanÁüðõHE 256. Namely, bytes are grouped into equivalence classes such that noÁü½öIF two bytes in the same class can distinguish a match from a non-match.Áü‹÷EB For example, in the regex `^[a-z]+$`, the ASCII bytes `a-z` couldÁüÕ÷GD all be in the same equivalence class. This leads to a massive spaceÁd¡ø savings.Á²ø�üºøIF Note though that the alphabet length does _not_ necessarily equal theÁüˆùGD total stride space taken up by a single DFA state in the transitionÁüÔùDA table. Namely, for performance reasons, the stride is always theÁü�úGD smallest power of two that is greater than or equal to the alphabetÁüéúDA length. For this reason, [`DFA::stride`] or [`DFA::stride2`] areÁü²ûGD often more useful. The alphabet length is typically useful only forÁÜþû informational purposes.Ážü�ü¦üC@ Note also that unlike dense or sparse DFAs, a one-pass DFA doesÁüîüEB not have a special end-of-input (EOI) transition. This is becauseÁü¸ýFC a one-pass DFA handles look-around assertions explicitly (like theÁüƒþHE [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM)) and does not buildÁüÐþ)& them into the transitions of the DFA.Ád“ÿ©. ©.¡éBÿQ  ÿQ©÷$¡ÿôèŠü×ÿJG Returns the total stride for every state in this DFA, expressed as theÁü¦€JG exponent of a power of 2. The stride is the amount of space each stateÁüõ€KH takes up in the transition table, expressed as a number of transitions.ÁüÅ�,) (Unused transitions map to dead states.)Áö��üþ�EB The stride of a DFA is always equivalent to the smallest power ofÁüÈ‚FC 2 that is greater than or equal to the DFA's alphabet length. ThisÁü“ƒHE definition uses extra space, but possibly permits faster translationÁüàƒKH between state identifiers and their corresponding offsets in this DFA'sÁ¬°„ transition table.ÁÊ„�üÒ„JG For example, if the DFA's stride is 16 transitions, then its `stride2`Áä¡… is `4` since `2^4 = 16`.ÁÂ…�üÊ…IF The minimum `stride2` value is `1` (corresponding to a stride of `2`)Áü˜†GD while the maximum `stride2` value is `9` (corresponding to a strideÁüä†GD of `512`). The maximum in theory should be `8`, but because of someÁü°‡KH implementation quirks that may be relaxed in the future, it is one moreÁü€ˆFC than `8`. (Do note that a maximal stride is incredibly rare, as itÁüˈHE would imply that there is almost no redundant in the regex pattern.)Á˜‰�ü ‰IÁó/üî‰J•ô/ĽŠéô/<. ª.¡éBÿQ ÷ŠQš$øŠì„�ü©‹JG Returns the total stride for every state in this DFA. This correspondsÁüø‹GD to the total number of transitions used by each state in this DFA'sÁ¬ÄŒš‰0ÞŒ�üæŒIF Please see [`DFA::stride2`] for more information. In particular, thisÁü´�GD returns the stride as the number of transitions, where as `stride2`Áü€Ž/, returns it as the exponent of a power of 2.Á´Ž�ü¼ŽIÁó/üŠ�J•ô/ÄÙ�éô/4‹�«. «.¡éBÿQ ’�Q c$“�ü’“#üË�41 Returns the memory usage, in bytes, of this DFA.Á„‘�üŒ‘EB The memory usage is computed based on the number of bytes used toÁ¼Ö‘ represent this DFA.Áò‘�üú‘DA This does **not** include the stack size used up by this DFA. ToÁüÃ’<9 compute that, use `std::mem::size_of::()`.Ád™“¬. ¬.¡éBÿQ ¦“Q d$§“”Ä“<Ï“DÌ”¡égjmpqrü¹¬rüÛ”IF Executes an anchored leftmost forward search, and returns true if andÁü©•96 only if this one-pass DFA matches the given haystack.Áç•�üï•C@ This routine may short circuit if it knows that scanning futureÁü·–FC input will never lead to a different result. In particular, if theÁü‚—FC underlying DFA enters a match state, then this routine will returnÁüÍ—IF `true` immediately without inspecting any future input. (Consider howÁü›˜EB this might make a difference given the regex `a+` on the haystackÁüå˜IF `aaaaaaaaaaaaaaa`. This routine can stop after it sees the first `a`,Áü³™FC but routines like `find` need to continue searching because `+` isÁ¼þ™ greedy by default.)Ášš�ü¢šGD The given `Input` is forcefully set to use [`Anchored::Yes`] if theÁüîšDA given configuration was [`Anchored::No`] (which is the default).Á·›�d¿› # PanicsÁЛ�üØ›HE This routine panics if the search could not complete. This can occurÁü¥œ# in the following circumstances:ÁÍœ�üÕœC@ * When the provided `Input` configuration is not supported. ForÁü��A> example, by providing an unsupported anchor mode. Concretely,Áüã�A> this occurs when using [`Anchored::Pattern`] without enablingÁü©ž(% [`Config::starts_for_each_pattern`].ÁÖž�üÞžGD When a search panics, callers cannot know whether a match exists orÁDªŸ not.Á·Ÿ�ü¿ŸGD Use [`DFA::try_search`] if you want to handle these panics as errorÁœ‹  values instead.Á£ �l« ¯Ö.½ �ÜÅ  This shows basic usage:Áå �<í þ×.üù *õÄ/¨¡�ü°¡'ž«/üÜ¡&äÎ/‡¢�ü�¢41 assert!(re.is_match(&mut cache, "foo12345bar"));ÁüÈ¢0- assert!(!re.is_match(&mut cache, "foobar"));Áüý¢.áß.<°£þ×.¼£�üÄ£+( # Example: consistency with search APIsÁô£�üü£IF `is_match` is guaranteed to return `true` whenever `captures` returnsÁüʤGD a match. This includes searches that are executed entirely within aÁt–¥ codepoint:Á©¥�<±¥þ×.ü½¥30 use regex_automata::{dfa::onepass::DFA, Input};Áõ¥�ìý¥ let re = DFA::new("a*")?;ÁüŸ¦&äÎ/ʦ�üÒ¦DA assert!(!re.is_match(&mut cache, Input::new("☃").span(1..2)));Áü›§.áß.<Χþ×.Ú§�üâ§EB Notice that when UTF-8 mode is disabled, then the above reports aÁü¬¨IF match because the restriction against zero-width matches that split aÁôú¨ codepoint has been lifted:Á�©�<¥©þ×.ü±©GD use regex_automata::{dfa::onepass::DFA, nfa::thompson::NFA, Input};Áý©�Ü…ª’Ù.ü¥ª,) .thompson(NFA::config().utf8(false))Á´Öª .build("a*")?;Áüñª&äÎ/œ«�ü¤«C@ assert!(re.is_match(&mut cache, Input::new("☃").span(1..2)));Áüì«.áß.<Ÿ¬þ×.DÀ¬­.®. ­.¡é ®.�믢Bÿf¸h…ihi ê¬fþƯ¢ ͬ©¯¢¿�|Ь g¸¯¢$ë¬óABÔ–`MÔɬGIü§Äwüª¯JG Executes an anchored leftmost forward search, and returns a `Match` ifÁüù¯=: and only if this one-pass DFA matches the given haystack.Á»°�üðKH This routine only includes the overall match span. To get access to theÁü“±DA individual spans of each capturing group, use [`DFA::captures`].Áܱ�üä±Gç�0ü°²D¹ž0ù²�d�³”Ÿ0’³�üš³H¸Ÿ0üç³#‹ 0�´�ü—´CÆ 0üß´A”¡0ü¥µAà¡0üëµ(¬¢0˜¶�ü ¶Gì¢0Dì¶½£0ù¶�ü�·GÝ£0œÍ·®¤0å·�lí·¯Ö.ÿ·�ü‡¸DA Leftmost first match semantics corresponds to the match with theÁüиGD smallest starting offset, but where the end offset is determined byÁüœ¹GD preferring earlier branches in the original regular expression. ForÁüè¹KH example, `Sam|Samwise` will match `Sam` in `Samwise`, but `Samwise|Sam`Áü¸º&# will match `Samwise` in `Samwise`.Áãº�üëºKH Generally speaking, the "leftmost first" match is how most backtrackingÁü»»HE regular expressions tend to work. This is in contrast to POSIX-styleÁüˆ¼FC regular expressions that yield "leftmost longest" matches. Namely,ÁüÓ¼C@ both `Sam|Samwise` and `Samwise|Sam` match `Samwise` when usingÁü›½FC leftmost longest semantics. (This crate does not currently supportÁüæ½  leftmost longest semantics.)Á‹¾�<“¾þ×.üŸ¾3µö.×¾�üß¾$! let re = DFA::new("foo[0-9]+")?;Áüˆ¿&äÎ/ü³¿(% let expected = Match::must(0, 0..8);Áüà¿@= assert_eq!(Some(expected), re.find(&mut cache, "foo12345"));Á¥À�ü­ÀGD // Even though a match is found after reading the first byte (`a`),ÁüùÀJG // the leftmost first match semantics demand that we find the earliestÁüÈÁHE // match that prefers earlier parts of the pattern over later parts.Áü•  let re = DFA::new("abc|a")?;ÁüºÂ&äÎ/üåÂ(% let expected = Match::must(0, 0..3);Áü’Ã;8 assert_eq!(Some(expected), re.find(&mut cache, "abc"));ÁÒÃ�üÚÃ.áß.<�Äþ×.$®Ä¯.°. ¯.¡é °.�믢�´Bÿf¸k…llk ÔÄfÚ±0 ·Äì±0|ºÄ j¸¯¢$ÕÄóAøá–`â³Ä;=üÒÛ‡ü»ÌEB Executes an anchored leftmost forward search and writes the spansÁü…ÍFC of capturing groups that participated in a match into the providedÁüÐÍJG [`Captures`] value. If no match was found, then [`Captures::is_match`]ÁüŸÎ$! is guaranteed to return `false`.ÁÈÎ�üÐÎGç�0üœÏD¹ž0åÏ�díÏ”Ÿ0þÏ�ü†ÐH¸Ÿ0üÓÐ#‹ 0ûÐ�üƒÑCÆ 0üËÑA”¡0ü‘ÒAà¡0ü×Ò(¬¢0„Ó�üŒÓGì¢0DØÓ½£0åÓ�üíÓGÝ£0œ¹Ô®¤0ÑÔ�lÙÔ¯Ö.ëÔ�üóÔA> This shows a simple example of a one-pass regex that extractsÁÔ¹Õ capturing group spans.ÁØÕ�<àÕþ×.üìÕ96 use regex_automata::{dfa::onepass::DFA, Match, Span};ÁªÖ�´²Ö let re = DFA::new(ÁüÍÖIF // Notice that we use ASCII here. The corresponding Unicode regexÁü›×! // is sadly not one-pass.ÁüÁ×DA "(?P[[:alpha:]]+)[[:space:]]+(?P[[:alpha:]]+)",Á<ŠØ )?;Áü–ØJ¶Ú.åØ�üíØ<9 re.captures(&mut cache, "Bruce Springsteen", &mut caps);Áü®Ù>; assert_eq!(Some(Match::must(0, 0..17)), caps.get_match());ÁüñÙ:7 assert_eq!(Some(Span::from(0..5)), caps.get_group(1));Áü°ÚHE assert_eq!(Some(Span::from(6..17)), caps.get_group_by_name("last"));ÁýÚ�ü…Û.áß.<¸Ûþ×.DÙÛ±.².³. ±.¡é ².�믢 ³.˜ÛBÿf¸n…ono ƒÜfÚ±0 æÛì±0|éÛ m¸¯¢$„ÜóAÔè–`ßèɾíèâÛDFüº†”ü·ÞE¹Ä0ü�ßF‰Å0üÌßJÚÅ0ü›à$¯Æ0Äà�üÌà/, The differences with [`DFA::captures`] are:Á€á�üˆáFC 1. This returns an error instead of panicking if the search fails.ÁüÓáKH 2. Accepts an `&Input` instead of a `Into`. This permits reusingÁü£âFC the same input for multiple searches, which _may_ be important forÁdîâ latency.ÁüÿâIF 3. This does not automatically change the [`Anchored`] mode from `No`ÁüÍãHE to `Yes`. Instead, if [`Input::anchored`] is `Anchored::No`, then anÁ´šä error is returned.Áµä�d½ä # ErrorsÁÎä�üÖäHE This routine errors if the search could not complete. This can occurÁü£å#‹ 0Ëå�üÓåCÆ 0ü›æA”¡0üáæAà¡0ü§ç(¬¢0Ôç�üÜçGD When a search returns an error, callers cannot know whether a matchÁ”¨è exists or not.Á¿è�üÇè&# # Example: specific pattern searchÁòè�üúèHE This example shows how to build a multi-regex that permits searchingÁüÇéFC for specific patterns. Note that this is somewhat less useful thanÁü’êEB in other regex engines, since a one-pass DFA by definition has noÁüÜêIF ambiguity about which pattern can match at a position. That is, if itÁüªëJG were possible for two different patterns to match at the same startingÁüùëIF position, then the multi-regex would not be one-pass and constructionÁ´Çì would have failed.Áâì�üêìIF Nevertheless, this can still be useful if you only care about matchesÁü¸íIF for a specific pattern, and want the DFA to report "no match" even ifÁü†î*' some other pattern would have matched.Áµî�ü½î96 Note that in order to make use of this functionality,ÁüûîGD [`Config::starts_for_each_pattern`] must be enabled. It is disabledÁüÇï:7 by default since it may result in higher memory usage.Á†ð�<Žðþ×.ÌšðŽØ.ü¸ð=±Ø.4úð÷Ø.…ñ�Ü�ñ’Ù.ü­ñ?·Ù.üññ,€Ú.ü¢òJ¶Ú.äñò‰Û.ü’ó=¯Û.Ôó�üÜóA‚Ü.ü¢ô2ÍÜ.üÙô=‰Ý.›õ�ü£õEÜÝ.”íõªÞ.ü„öFÆÞ.üÏö2ÍÜ.ü†÷'¤ß.²÷�üº÷.áß.<í÷þ×.ù÷�ü�ø0- # Example: specifying the bounds of a searchÁ¶ø�ü¾øGD This example shows how providing the bounds of a search can produceÁüŠù;8 different results than simply sub-slicing the haystack.ÁÊù�<Òùþ×.üÞù=îõ.ü úDA use regex_automata::{dfa::onepass::DFA, Anchored, Input, Match};Áéú�üñú;8 // one-pass DFAs fully support Unicode word boundaries!Áü±ûKH // A sad joke is that a Unicode aware regex like \w+\s is not one-pass.ÁT�ü // :-(Áü�ü(% let re = DFA::new(r"\b[0-9]{3}\b")?;Áü½üJ¶Ú.üŒý let haystack = "foo123bar";Á°ý�ü¸ýEB // Since we sub-slice the haystack, the search doesn't know aboutÁü‚þFC // the larger context and assumes that `123` is surrounded by wordÁüÍþIF // boundaries. And of course, the match position is reported relativeÁü›ÿEB // to the sub-slice as well, which means we get `0..3` instead ofÁtåÿ // `3..6`.Áüøÿ.+ let expected = Some(Match::must(0, 0..3));Áü«€DA let input = Input::new(&haystack[3..6]).anchored(Anchored::Yes);Áüô€2ÍÜ.ü«�+Þ½/Û��üã�KH // But if we provide the bounds of the search within the context of theÁü³‚HE // entire haystack, then the search can take the surrounding contextÁü€ƒFC // into account. (And if we did find a match, it would be reportedÁü˃C@ // as a valid offset into `haystack` instead of its sub-slice.)ÁÄ“„ let expected = None;Áü°„IF let input = Input::new(haystack).range(3..6).anchored(Anchored::Yes);Áüþ„2ÍÜ.üµ…+Þ½/å…�üí….áß.< †þ×.TÁ†´.µ.¶.·.¸. ´.¡é µ.�ë ¶.Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa·. ¸.˜ÛÃÓBÿf Õ†f¥Ñ$Ö†óAUì–``ìɾkìü¯¢·üÔˆE¹Ä0üž‰F‰Å0üé‰EB `slots`, and returns the matching pattern ID. The contents of theÁü³ŠJG slots for patterns other than the matching pattern are unspecified. IfÁü‚‹GD no match was found, then `None` is returned and the contents of allÁÜ΋ `slots` is unspecified.Áî‹�üö‹FC This is like [`DFA::try_search`], but it accepts a raw slots sliceÁüÁŒGD instead of a `Captures` value. This is useful in contexts where youÁü��0- don't want or need to allocate a `Captures`.ÁÂ��üÊ�KH It is legal to pass _any_ number of slots to this routine. If the regexÁüšŽFC engine would otherwise write a slot offset that doesn't fit in theÁüåŽKH provided slice, then it is simply skipped. In general though, there areÁüµ�63 usually three slice lengths you might want to use:Áð��üø�C@ * An empty slice, if you only care about which pattern matched.Á”À� * A slice withÁü×�@= [`pattern_len() * 2`](crate::dfa::onepass::DFA::pattern_len)Áüœ‘KH slots, if you only care about the overall match spans for each matchingÁdì‘ûœ/”ý‘Žû0ü”’KH [`slot_len()`](crate::util::captures::GroupInfo::slot_len) slots, whichÁüä’FC permits recording match offsets for every capturing group in everyÁd¯“ûœ/À“�dÈ“¯Ö0Ù“�üá“HÓÖ0ü®”#‹ 0Ö”�üÞ”CÆ 0ü¦•A”¡0üì•Aà¡0ü²–(¬¢0ß–�üç–G‹Ø0”³—ÜØ0Ê—�lÒ—¯Ö.ä—�üì—A> This example shows how to find the overall match offsets in aÁü²˜JG multi-pattern search without allocating a `Captures` value. Indeed, weÁü�™)& can put our slots right on the stack.Á¯™�<·™þ×.üÙHE use regex_automata::{dfa::onepass::DFA, Anchored, Input, PatternID};Á�š�옚 let re = DFA::new_many(&[Á¬ºš r"[a-zA-Z]+",Á”Ôš r"[0-9]+",ÁDëš ])?;Áüøš&äÎ/ü£›:7 let input = Input::new("123").anchored(Anchored::Yes);Áâ›�üê›DA // We only care about the overall match offsets here, so we justÁü³œGD // allocate two slots for each pattern. Each slot records the startÁäÿœ // and end of the match.Áô � let mut slots = [None; 4];ÁüÃ�C@ let pid = re.try_search_slots(&mut cache, &input, &mut slots)?;Áü‹ž.+ assert_eq!(Some(PatternID::must(1)), pid);Á¾ž�üÆžKH // The overall match offsets are always at 'pid * 2' and 'pid * 2 + 1'.Áü–ŸIF // See 'GroupInfo' for more details on the mapping between groups andÁ¤äŸ // slot indices.ÁüýŸ1. let slot_start = pid.unwrap().as_usize() * 2;Áü³ " let slot_end = slot_start + 1;ÁüÚ <9 assert_eq!(Some(0), slots[slot_start].map(|s| s.get()));Áü›¡:7 assert_eq!(Some(3), slots[slot_end].map(|s| s.get()));ÁÚ¡�üâ¡.áß.<•¢þ×.„¶¢¹.º.».¼.½. ¹.¡é º.�ë ».Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¼. ½.ü¦ÀªBÿf Тf•§$Ñ¢óA÷õ–`ö©& öüŒ­·¤�­ ¾.¿.À.Á.Â. ¾.¡é ¿.�ë À.Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÁ. Â.ü¦ÀªBÿf ­­f¤Þ$®­óA,¼­–`,×­©&,ò­D¢º¡étuü±º­T´º Ã.Ä.Å.Æ.Ç. Ã.¡é Ä.�ë Å.Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÆ. Ç.ü¦ÀªBÿs Ⱥs t$ɺóA,׺–`,òº©&,�»üŸòâT¢ò È.É.Ê.Ë.Ì.Í. È.¡é É.�ë Ê.Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaË.Ç Ì.ü¦ Í.ܧBÿs ¶òs u$·òóA,Åò–`,àò™´ûò ØŽó©&,¤ó matched_pidÁ\ÏóD؃¡éwxyz{|}~€�Ô¶„,¹„ Î. Î.¡éÇBÿv ¿„v w$À„üæ†Flé† Ï. Ï.¡é›†ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇÛ†Bÿv ÷†v x$ø†¾¾þ†üÖŽ:TÙŽ Ð. Ð.¡éÇéëBÿv äŽv y$厠ØëŽ—»$ùŽü•‘Dt˜‘ Ñ. Ñ.¡éÇéëBÿv §‘v z$¬‘ Ø²‘—»$À‘toÁÊ‘üš—F”�— Ò. Ò.¡éÇŸŸ—«¡ÛË ¢Ä« +¾›>mó ÌÒ.Bÿv °—v {$±— Ø·—üŽ›;„‘› Ó. Ó.¡éÇêìBÿv ¢›v |$£› Ø©›üŠ�I¤�� Ô. Ô.¡éÇêìBÿv ¢�v }$§� Ø­�patepsÁ4»�üן7lÚŸ Õ. Õ.¡éǶàBÿv èŸv ~$韈CïŸüá£"lä£ Ö. Ö.¡éÇBÿv ò£v $ó£ü•©@\£© ×. ×.¡éÇÇBÿv ¯©v €$´©id1Áº©id2ÁÈ©ü”¬@,¢¬ Ø. Ø.¡é°ûBÿv¾ ‚‚ ¨¬vþưûܸ¬…#°û¶û´½¬�#°û¶ûÇ<̬×Ã$­¬ƒ FHìݯ¡é„ g„ü�°@„°Ù.Ú.Û. Ù.¡é Ú.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Û.­àBÿƒ ˆ°ƒ „$‰°œ �°ṵ̈•¼Ï° Ü.Ý.Þ. Ü.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý. Þ.¡éÇ­àBÿ ÷° …œ ô°Òž± Øµ±üÊÅ.ć‡ÊꈉÅQÆQ‰ÏÅLÿÅ$„Ɔ†Û‰ü¦Æ2$©Æâ. â.Êê–‰Bÿ† ®Æ† ‰Ä$³ÆT¢Ù�닌�Ž�ì²Üü³Ù-* Create a new [`onepass::DFA`](DFA) cache.ÁåÙ�üíÙ>; A potentially more convenient routine to create a cache isÁü°ÚDA [`DFA::create_cache`], as it does not require also importing theÁŒùÚ `Cache` type.Á�Û�ü—ÛKH If you want to reuse the returned `Cache` with some other one-pass DFA,ÁüçÛFC then you must call [`Cache::reset`] with the desired one-pass DFA.Á¹Üç. ç.¡é�ëBÿŠ ÁÜŠ¸”é¾½Üü–é!üÔÝB? Reset this cache such that it can be used for searching with aÁü›Þ$! different [`onepass::DFA`](DFA).ÁÄÞ�üÌÞHŠã/ü™ß" with a different one-pass DFA.ÁÀß�lÈ߯Ö.Úß�üâßJG This shows how to re-purpose a cache for use with a different one-passÁD±à DFA.Á¾à�<Æàþ×.üÒà=îõ.ü”á3µö.Ìá�üÔá¿å/üøáéå/üœâ*“æ/üËâ*Èæ/úâ�ü‚ã'Šç/|®ã»ç/üÂã#Õç/üêãJƒè/4¹ä×è/Ää�üÌäHõè/ü™åIÈé/üçå9œê/4¥æßê/ü°æJðê/|ÿæÄë/ü“ç Þë/|¸ç»ç/üÌç#—ì/üôçKÅì/4Äè×è/Ïè�ü×è.áß.<Šéþ×.,�éè.é. è.�ë é.¡éBÿŠ £éм•$¨éé¾®éüÒì#ü…ë;8 Returns the heap memory usage, in bytes, of this cache.ÁÅë�üÍëFC This does **not** include the stack size used up by this cache. ToÁü˜ì52 compute that, use `std::mem::size_of::()`.ÁdÙìê. ê.�ëBÿŠ æìŠ �$çìüÓí:tÖí ë. ë.�ë ë.ü¦BÿŠ åíŠ Ž$êíüÖî4dÙî ì. ì.�ëBÿŠ æîŠ �$ëîÔÁŒñî|¹óéë‘’“”•–—˜™š›ÄÏólÕó ��Ìòótøó ��̲ôt¸ô ��Üòô„øô ��¤ºõLÀõ ��üºöH½ö ÇÄíéëBÿ�� –ø"TÁö ØÓö®#Dáöijù<¶ù éëBÿ�� —$¾ùä·ýTºý ñ. ñ.éëBÿ� Åý� ˜$ÆýìÞþDáþ ò. ò.éëÇBÿ� êþ�ˆú$ëþü΂(dÑ‚ ó. ó.éëÇBÿ� Þ‚�åû$ã‚ Øé‚ô‡„DŠ„ ô. ô.éëÄíBÿ� “„� ›$”„üâ„$éë� g�ü�…@�…õ.ö.÷. õ.éë ö.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡÷.­àBÿœ ”…œ �$•…œ ›…¤”Žê쟠¡¢£¤¥¦§¨©ª«Ô¯Ž|µŽ žžÜÔŽ„ÚŽ žžÔ•�|›� žžÜË�„Ñ� žžÔ�‘|•‘ žžÄÅ‘lË‘ žžì�“,„“ êìBÿžž ¥Ì­•D°• êìBÿžž ¦$¹•üÜ–(Tß– êìܧBÿžž §$ê–üŸœ*¤¢œ ê웆Bÿžž ¨$·œü§ž:tªž ê웆êìBÿžž ©$¹ž¾¾¿žìÊ DÍ  êìÄíBÿžž ª$Ö ü�¢<d’¢ êìÄíêìBÿžž «$Ÿ¢®#D¥¢üþ£)êì­ g­ü®¤@±¤ù.ú.û. ù.êì ú.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡û.­àBÿ¬ µ¤¬ ­$¶¤œ ¼¤lü¯Äí¯°±²³´µ¶·¤�°L–° ®®¬À°Tư ®®¤à°Læ° ®®´û±,þ± ÄíBÿ®® ²Ìþ²D�³ ÄíBÿ®® ³$г¼ç³,ê³ ÄížîBÿ®® ´$ð³üð´,Ló´ ÄížîÄíBÿ®® µ$ý´©&,ƒµÌ€·,ƒ· Äí¯ñBÿ®® ¶$‰·ü¯¸1L²¸ Äí¯ñÄíBÿ®® ·$¼¸look_setÁD¸ü÷¹"Äí¹ g¹ü º@£ºý.þ.ÿ. ý.Äí þ.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÿ.­àBÿ¸ §º¸ ¹$¨ºœ ®ºT•̞½¾¿À”¦Ì,¬Ì ººüôÌ%4÷Ì žîžîBÿºº ¼$þÌùÀ$„Íü°Î%4³Î žîžîBÿºº ½$ºÎùÀ$ÀÎÌýÏD€Ð žîBÿºº ¾$‰ÐÔúÐ$ýÐ žîøîBÿºº ¿$‚Ñü©Õk,¬Õ �/žî �/ü¦Bÿº óÕº À$»Õ™´ÉÕcaller_explicit_slotsÁ¬ÜÕü¶Øžî gÂüÜØ@ߨ‚/ƒ/„/ ‚/žî ƒ/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡„/­àBÿÁ ãØÁ Â$äØœ êØ܉ÜøîÄÅÅQÆQÅL«Ü$°ÜÃÃüÃÜ#$ÆÜˆ/ ˆ/øîØÚBÿà ËÜà Å$ÐÜ|½ç¸ïÇÈÉÊËÌÍüÓç;Öç ×°¸ïBÿÆÆšì¬ºÚçüÒè4$Õè Ïó¸ïBÿÆÆ ȬºÚèüËé,|Îé ¸ïBÿÆÆ ɪ¯,ÞéüÊê.ŒÍê ¸ïBÿÆÆ ʪ¯,ßêüÍë-„Ðë ôí¸ïBÿÆÆ Ë¢Ô$áëüÎì2œÑì ¸ïBÿÆÆ ̪¯,åìü×í0dÚí  ¸ïBÿÆÆ Í«°çíüëî%Ó‰|Ùî¼Óî¸ïÏ‚Ïü—ï>4šï‘/ ‘/¸ïřǙș­É™Ê™àË™óG*¤�R{9  ‘/�BÿÎ ¡ïÎ Ï$¢ï¤äïü‘ñ&¸ïÒ¥gÒü¾ñDÁñ’/“/”/ ’/¸ï “/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡”/­àBÿÑ ÅñÑ Ò$Æñœ Ìñ¤‘òdå{Ó� ¬³{Óù.¼Ê{ü²{0ü©{;Dé{ ×éíòü…CÔÕµ¢<3î)ÔÖ|)ü ü¶ -TÇ  ××ÿÆÅ�(ü¶ ä ŸgÅ�(„Ó ×£Ø1,¶Ø1 £Ø18¶Ø1,ØÙÚÛØÙÚÛÛÙÚØì• L˜  •/ •/Å�(Bÿ× ¢ × ØÅ�($£ ÜÔ <×  –/ –/Å�(Bÿ× ß × ÙÅ�($à üÙ6\Ü —/ —/Å�(ÇÇBÿ× è× ÚÅ�($í©�1óµ�1�üâ6,å ˜/ ˜/Å�(¾ Bÿ×¾ ÜÜ ë×þÆíÛ1Üû…#íÛ1¶û´€�#íÛ1¶ûÇ<� ÛÅ�(íÛ1$ðƒ öLNlÝ!ëñÞáãüÆ#2Ô# œ/ œ/õ)ëñBÿÝõ)ßß Û#ÝþÆÈÝ1|Ü#×ÈÝ1Tá# ÞÈÝ1¨ Ø#%'ß$Þ�à�à�ààÞàÈÝ1‚Ç Ã‡UÿÁÀüð&y$þ& �/ž/ �/ëñ ž/ÈÝ1ÇÇBÿÝõ)ââ Œ'ÝõÝ1|§'†Þ1T¬' áÈÝ1$‘'¨ Ÿ'©�1À'µ�1Ö'68üŸ*6,­* Ÿ/ëñ Ÿ/ÈÝ1BÿÝõ)ää À*ÝõÝ1|Å*†Þ1TÊ* ãÈÝ1$·*¨ ½*$&4ø6ã�å�å�ååãåÈÝ1¶ûÇUÿ¦ýÁÀ„¡?®òçèüå?(Dè?Ô£/ £/®òÇBÿæ ñ?æ ç$ò?ˆCø?üî@.\ñ@Ô¤/ ¤/®òÇBÿæ ý@æ è$þ@÷,„A\¯HÓù.¼•Hü�H<³HÔù©ÛH’éëµ¢<òHî)éì®)TŒI×éí,ÅHŒÍHEÌàH5Œ…I&¼�I¡éïðñòØÙÚÛñïòðä¿ILÂI ¥/ ¥/¡éBÿî ÌIî ï$ÍIÔ’J<•J ¦/ ¦/¡éBÿî �Jî ð$žJü‚L5\…L §/ §/¡éÇÇBÿî ‘Lî ñ$–L©�1œLµ�1ªLüúL5,ýL ¨/ ¨/¡é°ûBÿî¾ óó ƒMî�Ÿ1Ü“M¯Ÿ1´˜MÄŸ1<§M ò°û$ˆMƒ ¯!,.t”ï2ü�.4ü- A module for building and searching with lazy deterministic finite automata (DFAs). Like other modules in this crate, lazy DFAs support a rich regex syntax with Unicode features. The key feature of a lazy DFA is that it builds itself incrementally during search, and never uses more than a configured capacity of memory. Thus, when searching with a lazy DFA, one must supply a mutable "cache" in which the actual DFA's transition table is stored. If you're looking for fully compiled DFAs, then please see the top-level [`dfa` module](crate::dfa). # Overview This section gives a brief overview of the primary types in this module: * A [`regex::Regex`] provides a way to search for matches of a regular expression using lazy DFAs. This includes iterating over matches with both the start and end positions of each match. * A [`dfa::DFA`] provides direct low level access to a lazy DFA. # Example: basic regex searching This example shows how to compile a regex using the default configuration and then use it to find matches in a byte string: ``` use regex_automata::{hybrid::regex::Regex, Match}; let re = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")?; let mut cache = re.create_cache(); let haystack = "2018-12-24 2016-10-08"; let matches: Vec = re.find_iter(&mut cache, haystack).collect(); assert_eq!(matches, vec![ Match::must(0, 0..10), Match::must(0, 11..21), ]); # Ok::<(), Box>(()) ``` # Example: searching with multiple regexes The lazy DFAs in this module all fully support searching with multiple regexes simultaneously. You can use this support with standard leftmost-first style searching to find non-overlapping matches: ``` # if cfg!(miri) { return Ok(()); } // miri takes too long use regex_automata::{hybrid::regex::Regex, Match}; let re = Regex::new_many(&[r"\w+", r"\S+"])?; let mut cache = re.create_cache(); let haystack = "@foo bar"; let matches: Vec = re.find_iter(&mut cache, haystack).collect(); assert_eq!(matches, vec![ Match::must(1, 0..4), Match::must(0, 5..8), ]); # Ok::<(), Box>(()) ``` # When should I use this? Generally speaking, if you can abide the use of mutable state during search, and you don't need things like capturing groups or Unicode word boundary support in non-ASCII text, then a lazy DFA is likely a robust choice with respect to both search speed and memory usage. Note however that its speed may be worse than a general purpose regex engine if you don't select a good [prefilter](crate::util::prefilter). If you know ahead of time that your pattern would result in a very large DFA if it was fully compiled, it may be better to use an NFA simulation instead of a lazy DFA. Either that, or increase the cache capacity of your lazy DFA to something that is big enough to hold the state machine (likely through experimentation). The issue here is that if the cache is too small, then it could wind up being reset too frequently and this might decrease searching speed significantly. # Differences with fully compiled DFAs A [`hybrid::regex::Regex`](crate::hybrid::regex::Regex) and a [`dfa::regex::Regex`](crate::dfa::regex::Regex) both have the same capabilities (and similarly for their underlying DFAs), but they achieve them through different means. The main difference is that a hybrid or "lazy" regex builds its DFA lazily during search, where as a fully compiled regex will build its DFA at construction time. While building a DFA at search time might sound like it's slow, it tends to work out where most bytes seen during a search will reuse pre-built parts of the DFA and thus can be almost as fast as a fully compiled DFA. The main downside is that searching requires mutable space to store the DFA, and, in the worst case, a search can result in a new state being created for each byte seen, which would make searching quite a bit slower. A fully compiled DFA never has to worry about searches being slower once it's built. (Aside from, say, the transition table being so large that it is subject to harsh CPU cache effects.) However, of course, building a full DFA can be quite time consuming and memory hungry. Particularly when large Unicode character classes are used, which tend to translate into very large DFAs. A lazy DFA strikes a nice balance _in practice_, particularly in the presence of Unicode mode, by only building what is needed. It avoids the worst case exponential time complexity of DFA compilation by guaranteeing that it will only build at most one state per byte searched. While the worst case here can lead to a very high constant, it will never be exponential. # Syntax This module supports the same syntax as the `regex` crate, since they share the same parser. You can find an exhaustive list of supported syntax in the [documentation for the `regex` crate](https://docs.rs/regex/1/regex/#syntax). There are two things that are not supported by the lazy DFAs in this module: * Capturing groups. The DFAs (and [`Regex`](regex::Regex)es built on top of them) can only find the offsets of an entire match, but cannot resolve the offsets of each capturing group. This is because DFAs do not have the expressive power necessary. Note that it is okay to build a lazy DFA from an NFA that contains capture groups. The capture groups will simply be ignored. * Unicode word boundaries. These present particularly difficult challenges for DFA construction and would result in an explosion in the number of states. One can enable [`dfa::Config::unicode_word_boundary`] though, which provides heuristic support for Unicode word boundaries that only works on ASCII text. Otherwise, one can use `(?-u:\b)` for an ASCII word boundary, which will work on any input. There are no plans to lift either of these limitations. Note that these restrictions are identical to the restrictions on fully compiled DFAs. ÁÓª+”ÿî2Ôùî24œï2ûÃßüÂ�®TŸ.4á÷ä»T«.4‚ø¥ T·.4÷ù�¼\Ì.4‰ú$‹.4Œ‹.4OQ@B24|È.4'\Ý.4üõð Types and routines specific to lazy DFAs. This module is the home of [`hybrid::dfa::DFA`](DFA). This module also contains a [`hybrid::dfa::Builder`](Builder) and a [`hybrid::dfa::Config`](Config) for configuring and building a lazy DFA. Áå.4¦§ß½¿Àö‚“𣬹ËÒ�$‚á8ûýà<� Ùûþü¨…Cûÿ�®TÙáûƒä»Tå‚û„¥ Tñ÷û…�¼\‹‰û‡»½„˜ ûˆå 4³Âû‰±D˱ ûŠ«³$ô–û�õý\úÔ%ûŽÎ�<‡ƒ&û�† $§Þû‘´Ù,­¯,û’á÷·Œ´À,û“âì¸|ÇÌ,û”äØ$,áÿû•é›Lûü(û–¦¡L›Ù)û˜ NFAStateIDÁT±î)û™žDܧ-û›áºLæé,ûœ—,ñÑ,û�ÛÀTøÌ-ûžÓ¿L„º-ûŸ̼T�‹-û ãÂTºë-û¡‚$Ö£û£ž�,ÜÏ+û¤­¯dãÊ+û¥$û¶¹dˆ«|œ�,²œ²ü²$—š‡Šx{ü²Vmp]`NQlÆCü²«ü²¿<Dé-0 ü²ò\™ñôÝàÊͤð¾ü²æ±´<¦œü²š�’‚ps`cPS@C´®4ü²¡(,Î  ¼Ç TÍ ûäÖ |Ü ûDÅ&ïò©ª¬­®¯°±²³´µ¶·¸ü¯,4üÔ&HE Parse the given regular expression using a default configuration andÁü¡'&# return the corresponding lazy DFA.ÁÌ'�üÔ'HÏ©/ü¡(¢ª/Å(�lÍ(¯Ö.ß(�<ç(þ×.üó(=: use regex_automata::{hybrid::dfa::DFA, HalfMatch, Input};Áµ)�ü½)(% let dfa = DFA::new("foo[0-9]+bar")?;Áüê)'ÃÀ/–*�üž**' let expected = HalfMatch::must(0, 11);Á|Í*»ç/¼á* Some(expected),Áüý*DA dfa.try_search_fwd(&mut cache, &Input::new("foo12345bar"))?,Á4Æ+×è/üÑ+.áß.<„,þ×.Óí”–,Ô�,¶,­/ ­/�ØBÿ¨ Ã,¨ ©îN<º,ü„3Iü—-IF Parse the given regular expressions using a default configuration andÁüå-,) return the corresponding lazy multi-DFA.Á–.�üž.HÏ©/üë.¢ª/�/�l—/¯Ö.©/�<±/þ×.ü½/=Ù£2ÿ/�ü‡041 let dfa = DFA::new_many(&["[0-9]+", "[a-z]+"])?;ÁüÀ0'ÃÀ/ì0�üô0)& let expected = HalfMatch::must(1, 3);Á|¢1»ç/¼¶1¸¥2üÒ1DÙ¥24›2×è/ü¦2.áß.<Ù2þ×.Óí”ë2Ôå2D‹3®/ ®/©ò�ØBÿ¨Œ«« ­3¨¹Ž/ ”3ÊŽ/T—3 ªµ“¨ î+ üÝ80ü‡430 Create a new lazy DFA that matches every input.Á¿4�lÇ4¯Ö.Ù4�<á4þ×.üí4=Ù£2¯5�ü·5#•À/üß5'ÃÀ/‹6�ü“6)& let expected = HalfMatch::must(0, 0);ÁüÁ62/ assert_eq!(Some(expected), dfa.try_search_fwd(Áüø6&# &mut cache, &Input::new(""))?,Á4£7×è/ü®72�®2üå7)& &mut cache, &Input::new("foo"))?,Á4“8×è/üž8.áß.<Ñ8þ×.dä8�ØBÿ¨¨ ¬üÕ=/ü÷974 Create a new lazy DFA that never matches any input.Á³:�l»:¯Ö.Í:�<Õ:þ×.üá:2/ use regex_automata::{hybrid::dfa::DFA, Input};Á˜;�ü ;"·Å/üÇ;'ÃÀ/ó;�üû;GD assert_eq!(None, dfa.try_search_fwd(&mut cache, &Input::new(""))?);ÁüÇ/, Return a default configuration for a `DFA`.Á¡?�ü©?KH This is a convenience routine to avoid needing to import the [`Config`]Áüù?96 type when customizing the construction of a lazy DFA.Á·@�l¿@¯Ö.Ñ@�üÙ@JG This example shows how to build a lazy DFA that heuristically supportsÁä¨A Unicode word boundaries.ÁÉA�<ÑAþ×.üÝA=îõ.üŸBIF use regex_automata::{hybrid::dfa::DFA, HalfMatch, MatchError, Input};ÁíB�ÜõB’Ù.ü•C=: .configure(DFA::config().unicode_word_boundary(true))Áä×C .build(r"\b\w+\b")?;ÁüøC&äÎ/£D�ü«DJG // Since our haystack is all ASCII, the DFA search sees then and knowsÁüúDEB // it is legal to interpret Unicode word boundaries as ASCII wordÁ”ÄE // boundaries.ÁüÛE&# let input = Input::new("!!foo!!");Áü†F)& let expected = HalfMatch::must(0, 5);Áü´FGD assert_eq!(Some(expected), re.try_search_fwd(&mut cache, &input)?);Á€G�üˆGHE // But if our haystack contains non-ASCII, then the search will failÁ¬ÕG // with an error.ÁüïG)& let input = Input::new("!!βββ!!");Áü�H0- let expected = MatchError::quit(b'\xCE', 2);ÁüÒHEB assert_eq!(Err(expected), re.try_search_fwd(&mut cache, &input));ÁœI�ü¤I.áß.<×Iþ×.4êI¯øBÿ¨¨„³ ÜèQü JC@ Return a builder for configuring the construction of a `Regex`.ÁèJ�üðJ@ÔÒ/üµK%ŸÓ/ßK�lçK¯Ö.ùK�ü�LC@ This example shows how to use the builder to disable UTF-8 modeÁìÉL everywhere for lazy DFAs.ÁëL�<óLþ×.üÿL=îõ.üÁMKH use regex_automata::{hybrid::dfa::DFA, util::syntax, HalfMatch, Input};Á‘N�Ü™N’Ù.ü¹N2‚Ö/üðN&€×/ü›O&äÎ/ÆO�üÎO=: let input = Input::new(b"\xFEfoo\xFFarzz\xE2\x98\xFF\n");Áü�P/, let expected = Some(HalfMatch::must(0, 9));ÁüÄP52 let got = re.try_search_fwd(&mut cache, &input)?;ÁôþP assert_eq!(expected, got);Á¡Q�ü©Q.áß.<ÜQþ×.<ïQõùBÿ¨¨óÖüÑT#ü¨R)& Create a new cache for this lazy DFA.ÁÖR�üÞR@¢ß/ü£SB? lazy DFA. If you want to reuse the cache for another DFA, thenÁüêSC@ you must call [`Cache::reset`] with that DFA (or, equivalently,ÁÔ²T‚á/dØT¯/ ¯/ïòûóBÿ¨ åT¨ °$æTüžb,ü›UIýá/üéU&# this lazy DFA (and only this DFA).Á”V�üœVHŠã/ôéV with a different lazy DFA.ÁŒW�ü”WJG Resetting a cache sets its "clear count" to 0. This is relevant if theÁüãWFC lazy DFA has been configured to "give up" after it has cleared theÁü®X$! cache a certain number of times.Á×X�üßXEB Any lazy state ID generated by the cache prior to resetting it isÁä©Y invalid after the reset.ÁÊY�lÒY¯Ö.äY�üìYF¨ä/·Z�<¿Zþ×.üËZ=îõ.ü�[=Ù£2Ï[�ü×[  let dfa1 = DFA::new(r"\w")?;Áüü[  let dfa2 = DFA::new(r"\W")?;Á¡\�ü©\(% let mut cache = dfa1.create_cache();Á|Ö\»ç/üê\$! Some(HalfMatch::must(0, 2)),Áü“]<9 dfa1.try_search_fwd(&mut cache, &Input::new("Δ"))?,Á4Ô]×è/ß]�üç]IF // Using 'cache' with dfa2 is not allowed. It may result in panics orÁüµ^IÈé/üƒ_0- // it with the DFA we'd like to use it with.Á4¸_ßê/üÃ_KH // Similarly, after this reset, using the cache with 'dfa1' is also notÁ|“`Äë/ü§`! dfa2.reset_cache(&mut cache);Á|Í`»ç/üá`$! Some(HalfMatch::must(0, 3)),ÁüŠa=: dfa2.try_search_fwd(&mut cache, &Input::new("☃"))?,Á4Ìa×è/×a�üßa.áß.<’bþ×.\¥b°/±/ °/ïò ±/ûóBÿ¨ ±b¨ ±$²bóA,¸büØk"ü…cEB Returns the total number of patterns compiled into this lazy DFA.ÁÏc�ü×cEÈñ/¡d�l©d¯Ö.»d�üÃdGD This example shows the pattern length for a DFA that never matches:Á�e�<—eþ×.ü£e)& use regex_automata::hybrid::dfa::DFA;ÁÑe�üÙe"·Å/ü€f%" assert_eq!(dfa.pattern_len(), 0);Áüªf.áß.<Ýfþ×.éf�üñfA> And another example for a DFA that matches at every position:Á·g�<¿gþ×.üËg)ÌÕ2ùg�ü�h#•À/ü©h%" assert_eq!(dfa.pattern_len(), 1);ÁüÓh.áß.<†iþ×.’i�üšiC@ And finally, a DFA that was constructed from multiple patterns:Áâi�<êiþ×.üöi)ÌÕ2¤j�ü¬j>; let dfa = DFA::new_many(&["[0-9]+", "[a-z]+", "[A-Z]+"])?;Áüïj%" assert_eq!(dfa.pattern_len(), 3);Áü™k.áß.<Ìkþ×.\ßk²/ ²/ïòBÿ¨ ëk¨¿ç $ìkü­r*ü§lKH Returns the equivalence classes that make up the alphabet for this DFA.Á÷l�üÿlEB Unless [`Config::byte_classes`] was disabled, it is possible thatÁüÉmGD multiple distinct bytes are grouped into the same equivalence classÁü•nFC if it is impossible for them to discriminate between a match and aÁüànHE non-match. This has the effect of reducing the overall alphabet sizeÁü­oHE and in turn potentially substantially reducing the size of the DFA'sÁ¬úoš‰0”p�üœpKH The downside of using equivalence classes like this is that every stateÁüìpFC transition will automatically use this map to convert an arbitraryÁü·qGD byte to its corresponding equivalence class. In practice this has aÁüƒr%" negligible impact on performance.Ád´r³/ ³/ïò ³/ªÓBÿ¨ Ár¨ ³$Ârüªs#üûr*' Returns this lazy DFA's configuration.ÁT±s´/ ´/ïò ´/¯øBÿ¨ ¼s¨÷  $½sü£t'üðs.Øï/<ªtµ/ µ/ïò µ/�»Bÿ¨ ²t¨ÕÙ$³tÔàw<ãwû¶/ ¶/ïòBÿ¨ ëw¨ ¶$ìwÌ×y4Úyû·/ ·/ïòBÿ¨ áy¨ ·$âyüÖ#üšz96 Returns the memory usage, in bytes, of this lazy DFA.ÁØz�üàzIF This does **not** include the stack size used up by this lazy DFA. ToÁü®{FC compute that, use `std::mem::size_of::()`. This also does notÁüù{)& include the size of the `Cache` used.Á§|�ü¯|HE This also does not include any heap memory used by the NFA inside ofÁüü|KH this hybrid NFA/DFA. This is because the NFA's ownership is shared, andÁüÌ}JG thus not owned by this hybrid NFA/DFA. More practically, several regexÁü›~FC engines in this crate embed an NFA, and reporting the NFA's memoryÁüæ~EB usage in all of them would likely result in reporting higher heapÁü°! memory than is actually used.Ádݸ/ ¸/ïòBÿ¨ ê¨ ¸$ëD�ƒïòº½ÀÂÄü�¯Šü¬ƒJG Executes a forward search and returns the end position of the leftmostÁüûƒEB match that is found. If no match exists, then `None` is returned.ÁÅ„�üÍ„GD In particular, this method continues searching even after it entersÁü™…EB a match state. The search only terminates once it has reached theÁüã…FC end of the input or when it has entered a dead or quit state. UponÁü®†JG termination, the position of the last byte seen while still in a matchÁ´ý† state is returned.Á˜‡�d ‡¯Ö0±‡�ü¹‡HÓÖ0ü†ˆ! in a number of circumstances:Á¬ˆ�ü´ˆKH * The configuration of the lazy DFA may permit it to "quit" the search.Áü„‰EB For example, setting quit bytes or enabling heuristic support forÁüΉJG Unicode word boundaries. The default configuration does not enable anyÁü�Š63 option that could result in the lazy DFA quitting.ÁüØŠGD * The configuration of the lazy DFA may also permit it to "give up"Áü¤‹C@ on a search if it makes ineffective use of its transition tableÁüì‹EB cache. The default configuration does not enable this by default,Áü¶Œ,) although it is typically a good idea to.ÁüçŒCÆ 0ü¯�52 example, by providing an unsupported anchor mode.Áé��üñ�G‹Ø0”½ŽÜØ0ÔŽ�lÜŽ¯Ö.îŽ�üöŽ1. This example shows how to run a basic search.Á¬��<´�þ×.üÀ�=Ù£2‚��üŠ�%" let dfa = DFA::new("foo[0-9]+")?;Áü´�'ÃÀ/üà�)& let expected = HalfMatch::must(0, 8);ÁüŽ‘2�®2üÅ‘.+ &mut cache, &Input::new("foo12345"))?,Á4ø‘×è/ƒ’�ü‹’Gœ¿0ü×’Jî¿0ü¦“HÃÀ0üó“! let dfa = DFA::new("abc|a")?;Áü™”'ÃÀ/üÅ”)& let expected = HalfMatch::must(0, 3);Áüó”2�®2üª•)& &mut cache, &Input::new("abc"))?,Á4Ø•×è/ã•�üë•.áß.<ž–þ×.ª–�ü²–&†Ù0Ý–�üå–KH This example shows how to build a lazy multi-DFA that permits searchingÁÔµ— for specific patterns.ÁÔ—�<Ü—þ×.Ìè—ŽØ.̆˜ hybrid::dfa::DFA,Áü¤˜.+ Anchored, HalfMatch, PatternID, Input,Á4ט÷Ø.â˜�äê˜ let dfa = DFA::builder()Áü‹™?·Ù.üÏ™;8 .build_many(&["[a-z0-9]{6}", "[a-z][a-z0-9]{5}"])?;Áü�š'ÃÀ/仚 let haystack = "foo123";ÁÜš�üäšC@ // Since we are using the default leftmost-first match and bothÁü¬›KH // patterns match at the same starting position, only the first patternÁüü›GD // will be returned in this case when doing a search for any of theÁ„Èœ // patterns.ÁüÝœ/, let expected = Some(HalfMatch::must(0, 6));Áü‘�EB let got = dfa.try_search_fwd(&mut cache, &Input::new(haystack))?;ÁôÛ�±Ä2þ��ü†žJG // But if we want to check whether some other pattern matches, then weÁüÕž" // can provide its pattern ID.Áüüž/, let expected = Some(HalfMatch::must(1, 6));Áü°Ÿ$! let input = Input::new(haystack)ÁüÙŸ96 .anchored(Anchored::Pattern(PatternID::must(1)));Áü— 63 let got = dfa.try_search_fwd(&mut cache, &input)?;ÁôÒ ±Ä2õ �üý .áß.<°¡þ×.¼¡�üÄ¡0šä0ù¡�ü�¢Gâä0üÍ¢;´å0�£�<•£þ×.ü¡£=Ù£2ã£�üë£FC // N.B. We disable Unicode here so that we use a simple ASCII wordÁü¶¤EB // boundary. Alternatively, we could enable heuristic support forÁü€¥@= // Unicode word boundaries since our haystack is pure ASCII.ÁüÅ¥.+ let dfa = DFA::new(r"(?-u)\b[0-9]{3}\b")?;Áüø¥'ÃÀ/ü¤¦òè0Ȧ�üЦIF // Since we sub-slice the haystack, the search doesn't know about theÁüž§B? // larger context and assumes that `123` is surrounded by wordÁüå§IÊê0ü³¨GD // to the sub-slice as well, which means we get `3` instead of `6`.Áüÿ¨/, let expected = Some(HalfMatch::must(0, 3));Áü³©! let got = dfa.try_search_fwd(ÁœÙ© &mut cache,Áüñ©%" &Input::new(&haystack[3..6]),Á<›ªÞÌ0ô§ª±Ä2ʪ�üÒªK¹í0ü¢«H�î0üï«Fâî0üº¬C³ï0Ä‚­€ð0üŸ­!±�3œÅ­Ü�3üÝ­*' &Input::new(haystack).range(3..6),Á<Œ®ÞÌ0ô˜®±Ä2»®�üî.áß.<ö®þ×.t—¯¹/º/»/¼/ ¹/ïò º/ûó »/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¼/õÛBÿ¹ ¯¯¹»ô f6óA#2–`.2<ô¹º�»�»�»»ºêã$Òºº�¼�¼�¼¼ºýêüàíŠü�»JG Executes a reverse search and returns the start of the position of theÁüлDA leftmost match that is found. If no match exists, then `None` isÁl™¼Ôò.«¼�d³¼¯Ö0ļ�ü̼HÓÖ0ü™½!­ñ2¿½�üǽKæñ2ü—¾E¼ò2üá¾JŒó2ü°¿6áó2üë¿G¢ô2ü·ÀCôô2üÿÀEÂõ2üÉÁ,’ö2üúÁCÆ 0üÂÂ5Øö2üÂ�ü„ÃG‹Ø0”ÐÃÜØ0çÃ�lïïÖ.�Ä�ü‰Ä30 This routine is principally useful when used inÁÄÁÄ conjunction with theÁüÞÄMJ [`nfa::thompson::Config::reverse`](crate::nfa::thompson::Config::reverse)Áü°ÅFC configuration. In general, it's unlikely to be correct to use bothÁüûÅEB `try_search_fwd` and `try_search_rev` with the same DFA since anyÁüÅÆDA particular DFA will only support searching in one direction withÁÜŽÇ respect to the pattern.Á®Ç�<¶Çþ×.ÌÂÇŽØ.´àÇ‹Õ/ÌûÇ•þ2Ì™È HalfMatch, Input,Á4·È÷Ø.ÂÈ�äÊÈŒÿ2üëÈ85 .thompson(thompson::Config::new().reverse(true))Áì¨É .build("foo[0-9]+")?;ÁüÊÉ'ÃÀ/üöÉ)Ú­2|¤Ê»ç/¼¸Ê¸¥2üÔÊA> dfa.try_search_rev(&mut cache, &Input::new("foo12345"))?,Á4šË×è/¥Ë�ü­ËFC // Even though a match is found after reading the last byte (`c`),ÁüøËJî¿0üÇÌIF // match that prefers earlier parts of the pattern over latter parts.Áä•ÍŒÿ2ü¶Í8‰œ3ÌóÍ .build("abc|c")?;Áü‘Î'ÃÀ/ü½Î)Ú­2üëÎ2/ assert_eq!(Some(expected), dfa.try_search_rev(Áü¢Ï)Þû24ÐÏ×è/ÛÏ�üãÏ.áß.<–Ðþ×.¢Ð�̪Ð # Example: UTF-8 modeÁÈÐ�üÐÐA> This examples demonstrates that UTF-8 mode applies to reverseÁü–ÑDA DFAs. When UTF-8 mode is enabled in the underlying NFA, then allÁüßÑHE matches reported must correspond to valid UTF-8 spans. This includesÁü¬Ò:7 prohibiting zero-width matches that split a codepoint.ÁëÒ�üóÒJG UTF-8 mode is enabled by default. Notice below how the only zero-widthÁüÂÓ30 matches reported are those at UTF-8 boundaries:ÁúÓ�<‚Ôþ×.ÌŽÔŽØ.̬Ô•þ2´ÊÔ‹Õ/üåÔ$! HalfMatch, Input, MatchKind,Á4ŽÕ÷Ø.™Õ�ä¡ÕŒÿ2üÂÕ8‰œ3¬ÿÕ .build(r"")?;Áü™Ö'ÃÀ/ÅÖ�üÍÖ2/ // Run the reverse DFA to collect all matches.Áü„×&# let mut input = Input::new("☃");Áì¯× let mut matches = vec![];ÁTÑ× loop {Áüà×74 match dfa.try_search_rev(&mut cache, &input)? {ÁÔœØ None => break,ÁÌ»Ø Some(hm) => {ÁüÙØ! matches.push(hm);ÁüÿØ96 if hm.offset() == 0 || input.end() == 0 {ÁÔ½Ù break;ÁüÜÙ52 } else if hm.offset() < input.end() {Áü–Ú/, input.set_end(hm.offset());ÁÄÊÚ } else {ÁüçÚB? // This is only necessary to handle zero-widthÁü®ÛFC // matches, which of course occur in this example.ÁüùÛC@ // Without this, the search would never advanceÁüÁÜ:7 // backwards beyond the initial match.Áü€Ý30 input.set_end(input.end() - 1);ÁŒ¸Ý }ÁlÎÝ }ÁLàÝ }Á,îÝ }ÁøÝ�ü€Þ$! // No matches split a codepoint.ÁÄ©Þ let expected = vec![ÁôÆÞ HalfMatch::must(0, 3),ÁôéÞ HalfMatch::must(0, 0),Á4Œß ];Áü—ß" assert_eq!(expected, matches);Á¾ß�üÆß.áß.<ùßþ×.…à�ü�àB? Now let's look at the same example, but with UTF-8 mode on theÁäÔà underlying NFA disabled:Áõà�<ýàþ×.̉áŽØ.̧á•þ2´Åá‹Õ/üàá$ÿ¥34‰â÷Ø.”â�äœâŒÿ2ü½âDA .thompson(thompson::Config::new().reverse(true).utf8(false))Á¬†ãå¦3ü ã'ÃÀ/Ìã�üÔã2¡§3ü‹ä&Þ§3ì¶äލ3TØäµ¨3üçä7ʨ3ԣ勩3ÌÂ審3üàå!Ó©3ü†æ9ÿ©3ÔÄæª3üãæ5çª3ü�ç/§«3ÄÑçà«3üîçBƒ¬3üµèFЬ3ü€éC¡­3üÈé:ï­3ü‡ê3´®3Œ¿êñ®3lÕꌯ3Lç꣯3,õ궯3ÿê�ü‡ë$Ó¯3İë�°3ôÍ룰3ôðë HalfMatch::must(0, 2),Áô“ì HalfMatch::must(0, 1),Áô¶ì˰34Ùìó°3üäì"„±3‹í�ü“í.áß.<Æíþ×.tçí½/¾/¿/À/ ½/ïò ¾/ûó ¿/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÀ/õÛBÿ¹ ÿí¹ጠ©?óAÕ;–`à;<ºñ½�¾�¾�¾¾½ž÷$˜ò½�¿�¿�¿¿½ÕýüÉ•­üÇòJG Executes an overlapping forward search and returns the end position ofÁü–óKH matches as they are found. If no match exists, then `None` is returned.Áæó�üîóGD This routine is principally only useful when searching for multipleÁüºôIF patterns on inputs where multiple patterns may match the same regionsÁüˆõHE of text. In particular, callers must preserve the automaton's searchÁüÕõJG state from prior calls so that the implementation knows where the lastÁœ¤ö match occurred.Á¼ö�üÄöC@ When using this routine to implement an iterator of overlappingÁüŒ÷IF matches, the `start` of the search should remain invariant throughoutÁüÚ÷IF iteration. The `OverlappingState` given to the search will keep trackÁü¨øDA of the current position of the search. (This is because multipleÁüñøDA matches may be reported at the same position, so only the searchÁüºù>; implementation itself knows when to advance the position.)Áýù�ü…úGD If for some reason you want the search to forget about its previousÁüÑúKH state and restart the search at a particular position, then setting theÁü¡û>; state to [`OverlappingState::start`] will accomplish that.Áäû�dìû¯Ö0ýû�ü…üHÓÖ0üÒü!­ñ2øü�ü€ýKæñ2üÐýE¼ò2üšþJŒó2üéþ6áó2ü¤ÿG¢ô2üðÿCôô2ü¸€EÂõ2ü‚�,’ö2ü³�CÆ 0üû�5Øö2µ‚�ü½‚G‹Ø0”‰ƒÜØ0 ƒ�l¨ƒ¯Ö.ºƒ�üƒDA This example shows how to run a basic overlapping search. NoticeÁü‹„FC that we build the automaton with a `MatchKind::All` configuration.ÁüÖ„FC Overlapping searches are unlikely to work as one would expect whenÁü¡…GD using the default `MatchKind::LeftmostFirst` match semantics, sinceÁüí…JG leftmost-first matching is fundamentally incompatible with overlappingÁü¼†IF searches. Namely, overlapping searches need to report matches as theyÁüЇKH are seen, where as leftmost-first searches will continue searching evenÁüÚ‡IF after a match has been observed in order to find the conventional endÁü¨ˆGD position of the match. More concretely, leftmost-first searches useÁüôˆJG dead states to terminate a search after a specific match can no longerÁüÉKH be extended. Overlapping searches instead do the opposite by continuingÁü“ŠKH the search to find totally new matches (potentially of other patterns).ÁãŠ�<ëŠþ×.ü÷Š=îõ.̹‹ŽØ.ü׋-* hybrid::dfa::{DFA, OverlappingState},Áü‰Œ$ÿ¥34²Œ÷Ø.½Œ�äÅŒŒÿ2üæŒ<÷Í/ü§�*' .build_many(&[r"\w+$", r"\S+$"])?;ÁüÖ�'ÃÀ/‚Ž�ÔŠŽ let haystack = "@foo";Áü©Ž.+ let mut state = OverlappingState::start();ÁÜŽ�üäŽ/, let expected = Some(HalfMatch::must(1, 4));Áü˜�# dfa.try_search_overlapping_fwd(ÁüÀ�63 &mut cache, &Input::new(haystack), &mut state,Á<û�ÞÌ0ü‡�,) assert_eq!(expected, state.get_match());Á¸��üÀ�IF // The first pattern also matches at the same position, so re-runningÁüŽ‘FC // the search will yield another match. Notice also that the firstÁüÙ‘GD // pattern is returned after the second. This is because the secondÁü¥’IF // pattern begins its match before the first, is therefore an earlierÁüó’(% // match and is thus reported first.Áü “/, let expected = Some(HalfMatch::must(0, 4));ÁüÔ“#ÒÓ3üü“6€Ô3<·”ÞÌ0üÔ,ÏÔ3ô”�üü”.áß.<¯•þ×.ÔЕÁ/Â/Ã/Ä/Å/ Á/ïò Â/ûó Ã/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÄ/ Å/ÂúÃÓBÿ¹ ô•¹˜› ÕFóAaD–`lDƒzDtï™À�Á�Á�ÁÁÀ™ˆ üÅÁ­üƒ›FC Executes a reverse overlapping search and returns the start of theÁüΛJG position of the leftmost match that is found. If no match exists, thenÁ¼�œ `None` is returned.Á¹œ�üÁœC§À3ü‰�IõÀ3ü×�IÉÁ3ü¥žD�Â3üîžDìÂ3ü·Ÿ>»Ã3úŸ�ü‚ G‘Ä3üΠKãÄ3üž¡>¹Å3á¡�d顯Ö0ú¡�ü‚¢HÓÖ0üÏ¢!­ñ2õ¢�üý¢Kæñ2üÍ£E¼ò2ü—¤JŒó2üæ¤6áó2ü¡¥G¢ô2üí¥Côô2üµ¦EÂõ2üÿ¦,’ö2ü°§CÆ 0üø§5Øö2²¨�üº¨G‹Ø0”†©ÜØ0�©�Ì¥©¶¡3é�üË©Aç¡3ü‘ªD³¢3üÚªH‚£3ü§«:Õ£3æ«�üî«J§¤3ü½¬3ü¤3õ¬�<ý¬þ×.̉­ŽØ.ü§­-ÞÐ3´Ù­‹Õ/üô­$ÿ¥34�®÷Ø.¨®�ä°®Œÿ2üÑ®<÷Í/ü’¯8‰œ3üϯ%" .build_many(&[r"", r"☃"])?;Áüù¯'ÃÀ/¥°�ü­°2¡§3üä°" let input = Input::new("☃");Áü‹±.ÒÒ3ì¾±ލ3Tà±µ¨3üï±HE dfa.try_search_overlapping_rev(&mut cache, &input, &mut state)?;Áü¼²! match state.get_match() {ÁÔⲋ©3ü�³)& Some(hm) => matches.push(hm),ÁL¯³£¯3,½³¶¯3dz�üϳ$Ó¯3Äø³�°3ô•´£°3ô¸´ HalfMatch::must(1, 0),ÁôÛ´˰34þ´ó°3ü‰µ"„±3°µ�ü¸µ.áß.<ëµþ×.÷µ�üÿµBè±3䯶´²3ç¶�<ï¶þ×.Ìû¶ŽØ.ü™·-ÞÐ3´Ë·‹Õ/üæ·$ÿ¥34�¸÷Ø.š¸�䢸Œÿ2üø<÷Í/ü„¹Dس3ü͹%ªã3ü÷¹'ÃÀ/£º�ü«º2¡§3üâº"…ä3ü‰».ÒÒ3ì¼»ލ3TÞ»µ¨3üí»HÝä3üº¼!°å3Ô་©3üÿ¼)êå3L­½£¯3,»½¶¯3Ž�üͽ:7 // Now *all* positions match, even within a codepoint,ÁüŒ¾52 // because we lifted the requirement that matchesÁüƾ'$ // correspond to valid UTF-8 spans.ÁÄò¾�°3ô�¿£°3ô²¿È·3ôÕ¿ð·3ôø¿ñæ3ô›À˰34¾Àó°3üÉÀ"„±3ðÀ�üøÀ.áß.<«Áþ×.ÔÌÁÆ/Ç/È/É/Ê/ Æ/ïò Ç/ûó È/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÉ/ Ê/ÂúÃÓBÿ¹ ðÁ¹ Â�LóAqJ–`|Jƒ‡JtëÅÂ�Ã�Ã�Ãé” üÂÞ«üÿÆFC Writes the set of patterns that match anywhere in the given searchÁüÊÇEB configuration to `patset`. If multiple patterns match at the sameÁü”ÈJG position and the underlying DFA supports overlapping matches, then allÁüãÈ30 matching patterns are written to the given set.Á›É�ü£ÉGD Unless all of the patterns in this DFA are anchored, then generallyÁüïÉ96 speaking, this will visit every byte in the haystack.Á­Ê�üµÊIF This search routine *does not* clear the pattern set. This gives someÁüƒËGD flexibility to the caller (e.g., running multiple searches with theÁüÏËHE same pattern set), but does make the API bug-prone if you're reusingÁüœÌFC the same pattern set for multiple searches but intended them to beÁ„çÌ independent.ÁüÌ�ü„ÍDA If a pattern ID matched but the given `PatternSet` does not haveÁüÍÍIF sufficient capacity to store it, then it is not inserted and silentlyÁd›Î dropped.Á¬Î�d´Î¯Ö0ÅÎ�üÍÎHÓÖ0üšÏ!­ñ2ÀÏ�üÈÏKæñ2ü˜ÐE¼ò2üâÐJŒó2ü±Ñ6áó2üìÑG¢ô2ü¸ÒCôô2ü€ÓEÂõ2üÊÓ,’ö2üûÓCÆ 0üÃÔ5Øö2ýÔ�ü…ÕG‹Ø0”ÑÕÜØ0èÕ�lðÕ¯Ö.‚Ö�üŠÖGD This example shows how to find all matching patterns in a haystack,ÁüÖÖIF even when some patterns match at the same position as other patterns.Á¤×�<¬×þ×.ü¸×=îõ.Ìú׎Ø.̘Ø•þ2ü¶Ø%" Input, MatchKind, PatternSet,Á4àØ÷Ø.ëØ�¬óØ let patterns = &[Áü�ÙFC r"\w+", r"\d+", r"\pL+", r"foo", r"bar", r"barfoo", r"foobar",Á4ØÙó°3äãÙŒÿ2ü„Ú<÷Í/üÅÚ .build_many(patterns)?;ÁüéÚ'ÃÀ/•Û�ü�Û%" let input = Input::new("foobar");ÁüÇÛ85 let mut patset = PatternSet::new(dfa.pattern_len());Áü„ÜHE dfa.try_which_overlapping_matches(&mut cache, &input, &mut patset)?;ÁüÑÜ'$ let expected = vec![0, 2, 3, 4, 6];ÁüýÜHE let got: Vec = patset.iter().map(|p| p.as_usize()).collect();ÁôÊݱÄ2íÝ�üõÝ.áß.<¨Þþ×.ìÉÞË/Ì/Í/Î/Ï/ Ë/ïò Ì/ûó Í/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÎ/ Ï/¡£ÃÓBÿ¹ ðÞ¹´Ê$ñÞóAëO–`öO˜¢ PDÏãïòÆÇÈÉÊËÍÏÐüÖø–üÞãHE Transitions from the current state to the next state, given the nextÁ”«ä byte of input.ÁÂä�üÊä>; The given cache is used to either reuse pre-computed stateÁü�åFC transitions, or to store this newly computed transition for futureÁüØåJG reuse. Thus, this routine guarantees that it will never return a stateÁü§æ! ID that has an "unknown" tag.ÁÍæ�üÕæ # State identifier validityÁùæ�ü�çDA The only valid value for `current` is the lazy state ID returnedÁüÊçC@ by the most recent call to `next_state`, `next_state_untagged`,Áü’è=: `next_state_untagged_unchecked`, `start_state_forward` orÁüÔèKH `state_state_reverse` for the given `cache`. Any state ID returned fromÁü¤éGD prior calls to these routines (with the same `cache`) is consideredÁüðéKH invalid (even if it gives an appearance of working). State IDs returnedÁüÀêFC from _any_ prior call for different `cache` values are also alwaysÁd‹ë invalid.Áœë�ü¤ëIF The returned ID is always a valid ID when `current` refers to a validÁüòëDA ID. Moreover, this routine is defined for all possible values ofÁd»ì `input`.ÁÌì�üÔìIF These validity rules are not checked, even in debug mode. Callers areÁü¢í.+ required to uphold these rules themselves.ÁÕí�üÝíEB Violating these state ID validity rules will not sacrifice memoryÁü§î=: safety, but _may_ produce an incorrect result or a panic.Áéî�dñ0‚ï�üŠïFC If the given ID does not refer to a valid state, then this routineÁüÕïHE may panic but it also may not panic and instead return an invalid orÁŒ¢ð incorrect ID.Á¸ð�lÀð¯Ö.Òð�üÚðFC This shows a simplistic example for walking a lazy DFA for a givenÁü¥ñ.+ haystack by using the `next_state` method.ÁØñ�<àñþ×.üìñ2š±2£ò�ü«ò$! let dfa = DFA::new(r"[a-z]+r")?;ÁüÔò'ÃÀ/ü€ó$! let haystack = "bar".as_bytes();Á©ó�ü±óGD // The start state is determined by inspecting the position and theÁüýó%" // initial bytes of the haystack.Áü§ô*' let mut sid = dfa.start_state_forward(ÁüÖô*' &mut cache, &Input::new(haystack),Á<…õÞÌ0ü‘õ*' // Walk all the bytes in the haystack.ÁÄÀõ for &b in haystack {ÁüÝõ2/ sid = dfa.next_state(&mut cache, sid, b)?;Á,”ö¶¯3üžöKH // Matches are always delayed by 1 byte, so we must explicitly walk theÁüîö96 // special "EOI" transition at the end of the search.Áü¬÷/, sid = dfa.next_eoi_state(&mut cache, sid)?;Áäà÷ assert!(sid.is_match());Á�ø�ü‰ø.áß.<¼øþ×.TÝøÐ/Ñ/ Ð/ïò Ñ/ûó°ÿ€ª BÿÅ ñøÅ Æ$òøóAîTë« ùT–`Uü—¦‡üÇüH΄4ü”ý41 byte of input and a state ID that is not tagged.ÁÍý�üÕýJG The only reason to use this routine is performance. In particular, theÁü¤þIF `next_state` method needs to do some additional checks, among them isÁüòþFC to account for identifiers to states that are not yet computed. InÁü½ÿIF such a case, the transition is computed on the fly. However, if it isÁü‹€KH known that the `current` state ID is untagged, then these checks can beÁdÛ€ omitted.Áì€�üô€FC Since this routine does not compute states on the fly, it does notÁü¿�KH modify the cache and thus cannot return an error. Consequently, `cache`Áü�‚FC does not need to be mutable and it is possible for this routine toÁüÚ‚FC return a state ID corresponding to the special "unknown" state. InÁü¥ƒGD this case, it is the caller's responsibility to use the prior stateÁüñƒIF ID and `input` with `next_state` in order to force the computation ofÁü¿„HE the unknown transition. Otherwise, trying to use the "unknown" stateÁüŒ…GD ID will just result in transitioning back to itself, and thus neverÁüØ…IF terminating. (This is technically a special exemption to the state IDÁü¦†JG validity rules, but is permissible since this routine is guaranteed toÁüõ†IF never mutate the given `cache`, and thus the identifier is guaranteedÁ¬Ã‡ to remain valid.)Á݇�üå‡HE See [`LazyStateID`] for more details on what it means for a state IDÁܲˆ to be tagged. Also, seeÁüÒˆIF [`next_state_untagged_unchecked`](DFA::next_state_untagged_unchecked)Áü ‰A> for this same idea, but with bounds checks forcefully elided.Áæ‰�üî‰ò‡4’Š�üšŠ>; The only valid value for `current` is an **untagged** lazyÁüÝŠ>; state ID returned by the most recent call to `next_state`,Áü ‹;8 `next_state_untagged`, `next_state_untagged_unchecked`,Áüà‹IF `start_state_forward` or `state_state_reverse` for the given `cache`.Áü®ŒFC Any state ID returned from prior calls to these routines (with theÁüùŒGD same `cache`) is considered invalid (even if it gives an appearanceÁüÅ�GD of working). State IDs returned from _any_ prior call for differentÁü‘Ž+( `cache` values are also always invalid.ÁÁŽ�üÉŽI€�4ü—�HE ID, although it may be tagged. Moreover, this routine is defined forÁüä�# all possible values of `input`.ÁŒ��ü”�GD Not all validity rules are checked, even in debug mode. Callers areÁüà�.š�4“‘�ü›‘Eà�4üå‘=°�4§’�d¯’”Ÿ0À’�üÈ’F ‘4ü““Hñ‘4Œà“Ã’4ö“�lþ“¯Ö.�”�ü˜”F‡“4üã”FC haystack by using the `next_state_untagged` method where possible.Á®•�<¶•þ×.ü•2š±2ù•�ü�–$È”4üª–'ÃÀ/üÖ–$†•4ÿ–�ü‡—G•4üÓ—%”–4üý—*Ä–4ü¬˜*ù–4<Û˜ÞÌ0üç˜*¼—4œ–™ let mut at = 0;Áü®™ while at < haystack.len() {ÁäÒ™ if sid.is_tagged() {Áüó™A> sid = dfa.next_state(&mut cache, sid, haystack[at])?;Á„¹š } else {ÁüΚ# let mut prev_sid = sid;ÁüöšHE // We attempt to chew through as much as we can while movingÁüÛHE // through untagged state IDs. Thus, the transition functionÁü�œGD // does less work on average per byte. (Unrolling this loopÁüÜœ# // may help even more.)Áü„�'$ while at < haystack.len() {Áü°� prev_sid = sid;ÁüÔ�.+ sid = dfa.next_state_untagged(Áü‡ž2/ &mut cache, sid, haystack[at],Á”¾ž );ÁÄÕž at += 1;Áüòž$! if sid.is_tagged() {ÁÔ›Ÿª3ŒºŸñ®3lПŒ¯3üâŸIF // We must ensure that we never proceed to the next iterationÁü° EB // with an unknown state ID. If we don't account for thisÁüú HE // case, then search isn't guaranteed to terminate since allÁüÇ¡A> // transitions on unknown states loop back to itself.Áü�¢! if sid.is_unknown() {Áü³¢%" sid = dfa.next_state(ÁüÝ¢;8 &mut cache, prev_sid, haystack[at - 1],Áœ�£ )?;Álµ£Œ¯3LÇ££¯3,Õ£¶¯3üߣKÞ˜4ü¯¤9´™4üí¤/ø™4ä¡¥±š4Â¥�üÊ¥.áß.<ý¥þ×.œž¦Ò/Ó/ Ò/ïò Ó/ûó°ÿ°ÿBÿÅ »¦Å Ç$¼¦óAàWë« ëW–`õWü–˜üê¨HE Transitions from the current state to the next state, eliding boundsÁü·©KH checks, given the next byte of input and a state ID that is not tagged.Á‡ª�ü�ªJçœ4üÞªI¼�4ü¬«F�ž4ü÷«Iáž4üŬKµŸ4d•­Š 4¦­�ü®­F® 4üù­Kÿ 4üÉ®FÕ¡4ü”¯F¦¢4ü߯G÷¢4ü«°IÉ£4üù°H�¤4üƱGð¤4ü’²IÂ¥4üà²J–¦4ü¯³Ië¦4¬ý³¾§4—´�üŸ´Hë§4Üì´½¨4üŒµ52 [`next_state_untagged`](DFA::next_state_untagged)ÁüƵFC for this same idea, but with memory safety guaranteed by retainingÁ”‘¶ bounds checks.Á¨¶�ü°¶ò‡4Ô¶�üܶ>¬ª4üŸ·>õª4üâ·;¾«4ü¢¸I„¬4üð¸Fج4ü»¹G©­4ü‡ºGû­4üÓº+Í®4ƒ»�ü‹»I€�4üÙ»HŸ¯4ü¦¼#ò¯4μ�üÖ¼G­°4ü¢½.š�4Õ½�üݽEà�4ü§¾=°�4é¾�dñ¾ # SafetyÁ‚¿�üŠ¿JG Callers of this method must guarantee that `current` refers to a validÁüÙ¿JG state ID according to the rules described above. If `current` is not aÁü¨ÀKH valid state ID for this automaton, then calling this routine may resultÁÔøÀ in undefined behavior.Á—Á�üŸÁIF If `current` is valid, then the ID returned is valid for all possibleÁ´íÁ values of `input`.Áì¤ÂÔ/Õ/ Ô/ïò Õ/ûó°ÿ°ÿÿÅ ËÂÅ È$ÌÂóAdZë« oZ–`yZü á‡ü‰ÅHE Transitions from the current state to the next state for the specialÁ|ÖÅ EOI symbol.ÁêÅ�üòÅ>Ê…4üµÆF“†4ü€ÇJä†4üÏÇ!¹‡4õÇ�üýÇGD This routine must be called at the end of every search in a correctÁüÉÈKH implementation of search. Namely, lazy DFAs in this crate delay matchesÁü™ÉFC by one byte in order to support look-around operators. Thus, afterÁüäÉKH reaching the end of a haystack, a search implementation must follow oneÁÄ´Ê last EOI transition.ÁÑÊ�üÙÊKH It is best to think of EOI as an additional symbol in the alphabet of aÁü©ËJG DFA that is distinct from every other symbol. That is, the alphabet ofÁüøËKH lazy DFAs in this crate has a logical size of 257 instead of 256, whereÁüÈÌKH 256 corresponds to every possible inhabitant of `u8`. (In practice, theÁü˜ÍIF physical alphabet size may be smaller because of alphabet compressionÁüæÍIF via equivalence classes, but EOI is always represented somehow in theÁt´Î alphabet.)ÁÇÎ�üÏÎò‡4óÎ�üûÎD©ˆ4üÄÏCøˆ4üŒÐ=Ɖ4üÎÐKŽŠ4üžÑGäŠ4üêÑK¶‹4üºÒFŒŒ4d…ÓÜŒ4–Ó�üžÓI€�4<ìÓ ID.ÁøÓ�ü€ÔIÆŽ4üÎÔ.š�4�Õ�ü‰ÕEà�4üÓÕ=°�4•Ö�d�Ö”Ÿ0®Ö�ü¶ÖF ‘4ü�×Hñ‘4ŒÎ×Ã’4ä×�lìׯÖ.þ×�ü†ØKH This shows a simplistic example for walking a DFA for a given haystack,ÁüÖØ@= and then finishing the search with the final EOI transition.Á›Ù�<£Ùþ×.ü¯Ù2š±2æÙ�üîÙ$È”4ü—Ú'ÃÀ/üÃÚ$†•4ìÚ�üôÚG•4üÀÛ%”–4üêÛ*Ä–4ü™Ü*ù–4<ÈÜÞÌ0üÔÜ*¼—4ăÝð—4ü Ý2“˜4,×ݶ¯3üáÝGD // Matches are always delayed by 1 byte, so we must explicitly walkÁü­ÞJG // the special "EOI" transition at the end of the search. Without thisÁüüÞJG // final transition, the assert below will fail since the DFA will notÁüËß&# // have entered a match state yet!Áüöß/ø™4äªà±š4Ëà�üÓà.áß.<†áþ×.t§áÖ/×/ Ö/ïò ×/ûó°ÿ€ª BÿÅ ¿áÅ É$ÀáóA^ë«  ^üˆò†üðäDA Return the ID of the start state for this lazy DFA for the givenÁܹå starting configuration.ÁÙå�üáåHE Unlike typical DFA implementations, the start state for DFAs in thisÁü®æ2/ crate is dependent on a few different factors:Áåæ�üíæC@ * The [`Anchored`] mode of the search. Unanchored, anchored andÁüµçJG anchored searches for a specific [`PatternID`] all use different startÁ\„è states.Áü”èFC * Whether a "look-behind" byte exists. For example, the `^` anchorÁüßè85 matches if and only if there is no look-behind byte.ÁüœéJG * The specific value of that look-behind byte. For example, a `(?m:^)`ÁüëéGD assertion only matches when there is either no look-behind byte, orÁü·ê30 when the look-behind byte is a line terminator.Áïê�ü÷êB? The [starting configuration](start::Config) provides the aboveÁ„¾ë information.ÁÓë�üÛëDA This routine can be used for either forward or reverse searches.Áü¤ìA> Although, as a convenience, if you have an [`Input`], then itÁüêì?< may be more succinct to use [`DFA::start_state_forward`] orÁü®íIF [`DFA::start_state_reverse`]. Note, for example, that the convenienceÁüüíEB routines return a [`MatchError`] on failure where as this routineÁìÆî returns a [`StartError`].Áèî�dðî¯Ö0�ï�ü‰ïHE This may return a [`StartError`] if the search needs to give up whenÁüÖïFC determining the start state (for example, if it sees a "quit" byteÁü¡ðDA or if the cache has become inefficient). This can also return anÁüêðIF error if the given configuration contains an unsupported [`Anchored`]Á”¸ñ configuration.Á\�òØ/Ù/Ú/ Ø/ïò Ù/ûó Ú/ö�ûÄ BÿÅ ¤òÅåÐ $¥òóAÎdÉÜdüÚþ‰ü—øGD Return the ID of the start state for this lazy DFA when executing aÁœãø forward search.Áûø�üƒùGD This is a convenience routine for calling [`DFA::start_state`] thatÁüÏùKH converts the given [`Input`] to a [start configuration](start::Config).ÁüŸúKH Additionally, if an error occurs, it is converted from a [`StartError`]ÁüïúA> to a [`MatchError`] using the offset information in the givenÁtµû [`Input`].ÁÈû�dÐû¯Ö0áû�üéûHE This may return a [`MatchError`] if the search needs to give up whenÁü¶üIF determining the start state (for example, if it sees a "quit" byte orÁü„ýJG if the cache has become inefficient). This can also return an error ifÁüÓýIF the given `Input` contains an unsupported [`Anchored`] configuration.ÁœáþÛ/Ü/Ý/Þ/ Û/ïò Ü/ûó Ý/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÞ/¸Ò BÿÅ þþÅ Ë$ÿþóA&i–`1i,Ö€Ë�Ì�Ì�ÌÌËáÑ ü�‹‰üÚ„GÙð4œ¦… reverse search.Á¾…�üÆ…GÕñ4ü’†K§ò4üâ†Kýò4ü²‡AÓó4tø‡žô4‹ˆ�d“ˆ¯Ö0¤ˆ�ü¬ˆHßô4üùˆI²õ4üljJ†ö4ü–ŠIÛö4œ¤‹ß/à/á/â/ ß/ïò à/ûó á/Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaâ/¸Ò BÿÅ Á‹Å Í$‹óA.n–`9n,™�Í�Î�Î�ÎÎÍ¼Ü üõ§@üœ�B? Returns the total number of patterns that match in this state.Áã��üë�A> If the lazy DFA was compiled with one pattern, then this mustÁü±‘74 necessarily always return `1` for all match states.Áí‘�üõ‘HE A lazy DFA guarantees that [`DFA::match_pattern`] can be called withÁüÂ’IF indices up to (but not including) the length returned by this routineÁ´�“ without panicking.Á«“�d³“”Ÿ0Ä“�üÌ“GD If the given state is not a match state, then this may either panicÁü˜”" or return an incorrect result.Á¿”�lÇ”¯Ö.Ù”�üá”DA This example shows a simple instance of implementing overlappingÁüª•GD matches. In particular, it shows not only how to determine how manyÁüö•GD patterns have matched in a particular state, but also how to accessÁü–)& which specific patterns have matched.Áð–�üø–KH Notice that we must use [`MatchKind::All`] when building the DFA. If weÁüÈ—HE used [`MatchKind::LeftmostFirst`] instead, then the DFA would not beÁü•˜JG constructed in a way that supports overlapping matches. (It would onlyÁüä˜JG report a single pattern that matches at any particular point in time.)Á³™�ü»™GD Another thing to take note of is the patterns used and the order inÁü‡šIF which the pattern IDs are reported. In the example below, pattern `3`ÁüÕšC@ is yielded first. Why? Because it corresponds to the match thatÁü�›GD appears first. Namely, the `@` symbol is part of `\S+` but not partÁüé›JG of any of the other patterns. Since the `\S+` pattern has a match thatÁü¸œJG starts to the left of any other pattern, its ID is returned before anyÁT‡� other.Á–��<ž�þ×.üª�=îõ.üì�=: use regex_automata::{hybrid::dfa::DFA, Input, MatchKind};Á®ž�ä¶žŒÿ2üמ<÷Í/´˜Ÿ .build_many(&[Áü³Ÿ1. r"\w+", r"[a-z]+", r"[A-Z]+", r"\S+",ÁdéŸ ])?;ÁüúŸ'ÃÀ/ü¦ %" let haystack = "@bar".as_bytes();ÁР�üØ G•4ü¤¡%”–4üΡ*Ä–4üý¡*ù–4<¬¢ÞÌ0ü¸¢*¼—4Äç¢ð—4ü„£2“˜4,»£¶¯3üÅ£/ø™4ù£�ä�¤±š4ü¢¤2/ assert_eq!(dfa.match_len(&mut cache, sid), 3);ÁüÙ¤HE // The following calls are guaranteed to not panic since `match_len`ÁÔ¦¥ // returned `3` above.ÁüÅ¥DA assert_eq!(dfa.match_pattern(&mut cache, sid, 0).as_usize(), 3);ÁüަDA assert_eq!(dfa.match_pattern(&mut cache, sid, 1).as_usize(), 0);ÁüצDA assert_eq!(dfa.match_pattern(&mut cache, sid, 2).as_usize(), 1);Á §�ü¨§.áß.<Û§þ×.Lü§ã/ä/ ã/ïò ä/ûó°ÿBÿÅ †¨Å Ï$‡¨óAŽrˆC™rüÕ°ƒü¦©HE Returns the pattern ID corresponding to the given match index in theÁ„ó© given state.Áˆª�ü�ªC@ See [`DFA::match_len`] for an example of how to use this methodÁüتGD correctly. Note that if you know your lazy DFA is configured with aÁü¤«FC single pattern, then this routine is never necessary since it willÁüï«C@ always return a pattern ID of `0` for an index of `0` when `id`Áü·¬! corresponds to a match state.Áݬ�üå¬DA Typically, this routine is used when implementing an overlappingÁü®­52 search, as the example for `DFA::match_len` does.Áè­�d𭔟0�®�ü‰®EB If the state ID is not a match state or if the match index is outÁüÓ®EB of bounds for the given state, then this routine may either panicÁü�¯FC or produce an incorrect result. If the state ID is correct and theÁüè¯EB match index is correct, then this routine always produces a validÁ„²° `PatternID`.Álܰå/æ/ å/ïò æ/ûó°ÿ›†BÿÅ ó°Å Ð$ô°óA’tˆC�t�ê §tT£ãûóÒÓÔÕÖ×ÙÚô±åü´ã.+ Create a new cache for the given lazy DFA.Áçã�üïãJG The cache returned should only be used for searches for the given DFA.Áü¾äFC If you want to reuse the cache for another DFA, then you must callÁü‰å# [`Cache::reset`] with that DFA.Á¸åë/ ë/ïòûóBÿÑ ÁåÑ ÒÒ¼åü³ø"ü¾ëJG Reset this cache such that it can be used for searching with the givenÁü�ì! lazy DFA (and only that DFA).Á³ì�ü»ìHŠã/ôˆíÕÈ2«í�ü³íJ‰É2ü‚îFÝÉ2üÍî$­Ê2öî�üþîEçÊ2äÈïµË2éï�lñï¯Ö.ƒð�ü‹ðF¨ä/Öð�<Þðþ×.üêð=îõ.ü¬ñ=Ù£2îñ�üöñ ÏÌ2ü›ò ùÌ2Àò�üÈò(¯Í2|õò»ç/ü‰ó$îÍ2ü²ó<œÎ24óó×è/þó�ü†ôIûÎ2üÔôIÈé/ü¢õ0ÜÏ24×õßê/üâõK£Ð2|²öÄë/¼Æö cache.reset(&dfa2);Á|âö»ç/üöö$½Ñ2üŸ÷=ëÑ24á÷×è/ì÷�üô÷.áß.<§øþ×.,ºøì/í/ ì/ûó í/ïòBÿÑ ÀøÑ Ó$ÅøÒËøüøü)üŽù<9 Initializes a new search starting at the given position.ÁÏù�ü×ùJG If a previous search was unfinished, then it is finished automaticallyÁô¦ú and a new search is begun.ÁÉú�üÑúA> Note that keeping track of search progress is _not necessary_Áü—ûC@ for correct implementations of search using a lazy DFA. KeepingÁüßû>; track of search progress is only necessary if you want theÁü¢üC@ [`Config::minimum_bytes_per_state`] configuration knob to work.Ádÿüî/ î/ûóBÿÑ ŒýÑ Ô$‘ý™´Á„üÀ‚*ü½ÿDA Updates the current search to indicate that it has search to theÁ¬†€ current position.Á €�ü¨€GD No special care needs to be taken for reverse searches. Namely, theÁüô€JG position given may be _less than_ the starting position of the search.ÁÃ��dË�”Ÿ0Ü��üä�IF This panics if no search has been started by [`Cache::search_start`].ÁlÇ‚ï/ ï/ûóBÿÑ Õ‚Ñ Õ$Ú‚™´E†üª…*üéƒ?< Indicates that a search has finished at the given position.Á­„�dµ„”Ÿ0Æ„�ü΄I˯5l±…ð/ ð/ûóBÿÑ ¿…Ñ Ö$Ä…™´4ˆü ‹'üý†HE Returns the total number of bytes that have been searched since thisÁÜʇ cache was last cleared.Áê‡�üò‡C@ This is useful for determining the efficiency of the cache. ForÁüºˆA> example, the lazy DFA uses this value in conjunction with theÁü€‰IF [`Config::minimum_bytes_per_state`] knob to help determine whether itÁÔΉ should quit searching.Áí‰�üõ‰HE This always returns `0` if search progress isn't being tracked. NoteÁüŠGD that the lazy DFA search routines in this crate always track searchÁlŽ‹ progress.Á„§‹ñ/ ñ/ûóBÿÑ ¸‹Ñ ×$¹‹‰Œ×�Ø�Ø�ØØ×ØöŠ UÿüÈŽ"ü¡ŒJG Returns the total number of times this cache has been cleared since itÁüðŒ%" was either created or last reset.Áš��ü¢�FC This is useful for informational purposes or if you want to changeÁüí�EB search strategies based on the number of times the cache has beenÁd·Ž cleared.Á\ÏŽò/ ò/ûóBÿÑ ÛŽÑ Ù$ÜŽüÞ�#ü‘�;ú®1Ñ��üÙ�Fͯ1ü¤�5ž°1då�ó/ ó/ûóBÿÑ ò�Ñ Ú$ó�¤Œ‘<’‘û¼Å‘TË‘ûœ‚šËõ޴؛ۛûø/ ø/ËõBÿÝ ß›Ýäˆ $à›löŸÓ‰|䟼ޟDûŸûÕí Ì΢Â3áÌ3ââá™öãäæèéëíïðñòôøùúûüýþÓ¢×¢üº£:½£û Â3ïò Ì3ûó™öBÿàà ãÂ3Ì3ÒÁ£óA,Ï£üý¤*4€¥ûå å™ö££ƒµ¦Òû§óAû²õ/ଆɯÂ3åBÿà‡¥à äÂ3Ì3$�¥#%ü™¬�„œ¬ûü/ ü/™ö°ÿÞЀª Bÿà ¶¬à æÂ3Ì3$»¬ë« <ͬÊ$ë¬,™¸æ�ç�ç�ççæç°ÿ°ÿUÿüŠ¿ƒŒ�¿ûý/ ý/™öØ¥†‘ûÄ Bÿà ¨¿à èÂ3Ì3$­¿ã÷D»¿‚,׿üËʇ|ÎÊûþ/ þ/™ödž‘€ª Bÿà çÊà éÂ3Ì3$ìÊ nfa_start_idÁdúÊ‚,œË$øÑé�ê�ê�êêéêÞÄ5÷ýü¿×§ŒÂ×ûÿ/ ÿ/™öè›Ù4€ª BÿàÙ4ìì Ý×àþÆžÈ5ü™Ø#…#žÈ5áÄ5ôžØ�#žÈ5áÄ5°ÿ\±Ø ëÂ3Ì3žÈ5$â×Ö<ð×idmapÁ,’Øhjü–à“L™àû€0 €0™ö½™žÈ5€ª BÿàÙ4îî ¬ààËÈ5üÜà#ÞÈ5ôáàóÈ5\ôà íÂ3Ì3žÈ5$±àƒ,¿à³È5,ÕàHJü�ð>l ðû�0 �0™ö€ª Bÿà ®ðà ïÂ3Ì3$³ðüƒû7|†ûû‚0 ‚0™öÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÕþBÿà –ûà ðÂ3Ì3$›û̈˜\‹˜ûƒ0 ƒ0™öBÿà —˜à ñÂ3Ì3$œ˜ÌÛŸ\ÞŸû„0 „0™öBÿà êŸà òÂ3Ì3$ïŸ$¨¬ò�ó�ó�óóòóÞÄ5·« ĈµT‹µû…0 …0™öBÿà –µà ôÂ3Ì3$›µ$‰Âô�õ�õ�õõôõÞÄ5$ÜÂô�ö�ö�ööôöÞÄ5$¬Ãô�÷�÷�÷÷ô÷ÞÄ5ü¹Ñ)T¼Ñû†0 †0™ö°ÿBÿà ÇÑà øÂ3Ì3$ÌшCÒÑüüÔ+tÿÔû‡0 ‡0™ö°ÿBÿà ŽÕà ùÂ3Ì3$“ÕüôÖEœ÷Öûˆ0 ˆ0™ö°ÿ°ÿBÿà ‹×à úÂ3Ì3$�×”$–׊˜1©×üßÙ}tâÙû‰0 ‰0™ö°ÿÞаÿBÿà úÙà ûÂ3Ì3$ÿÙ”$�ÚÊ$¨ÚŠ˜1ÆÚüûÞw|þÞûŠ0 Š0™öØ¥†‘°ÿBÿà —ßà üÂ3Ì3$œßã÷Dªß‚,ÆßˆCÜßüôç4Œ÷çû‹0 ‹0™öÞšBÿà ‰èà ýÂ3Ì3$Žèü‡ë9ŒŠëûŒ0 Œ0™öè›Bÿà œëà þÂ3Ì3$¡ëÖ<§ëä„îÂ3€Ì3��€çö‚ƒ„…†‡ˆ‰Š‹Œ‰î�îüóî9öîû…Á5 Ì3ûóçöBÿÿÿ ‚Â3Ì3ÒúîóA,ˆïüÊñ�œÍñû�0 �0çöØ¥†‘ûÄ Bÿÿ êñÿ ƒÂ3Ì3$ëñã÷Ñ“‚Ü“ü£ù6„¦ùû‘0 ‘0çö°ÿ ‘0½™Bÿÿ ·ùÿ „Â3Ì3$¸ù Ø¾ùüèþ.\ëþû’0 ’0çö°ÿBÿÿ ÷þÿ …Â3Ì3$øþˆCþþü³€#T¶€û“0 “0çö°ÿBÿÿ Á€ÿ †Â3Ì3$€ü“‚ <–‚û”0 ”0çö°ÿBÿÿ ž‚ÿ ‡Â3Ì3$Ÿ‚üÄ… <Ç…û•0 •0çö°ÿBÿÿ Ï…ÿ ˆÂ3Ì3$Ð…üù‰+Dü‰û–0 –0çö°ÿBÿÿ …Šÿ ‰Â3Ì3$†ŠˆCŒŠüæ‹4œé‹û—0˜0 —0çö ˜0½™Bÿÿ ý‹ÿ ŠÂ3Ì3$þ‹ƒ,„ŒüÌ�FÜÏ�û™0š0 ™0çö š0è›Bÿÿ ë�ÿ ‹Â3Ì3$ì�ƒ,ò�ü»”aü¾”û›0 ›0çöBÿÿ ç”ÿ ŒÂ3Ì3$è”state_heap_sizeÁ|ö”¤§•<­•û¼à•Tæ•û|ßµ÷�‘’¼þŸ$� ûµ÷Bÿ�� �ü¿¡:d¡û 0  0µ÷řǙș­É™Ê™àË™óG*¤�R{9 °ÿ½™Bÿ� Ï¡� ‘$Ô¡ü‘¨/T”¨û¡0 ¡0µ÷ÿè Bÿ� Ÿ¨� ’$¤¨\©¶¯ø”•–—˜™š›œ�žŸ ¡¢£¤¥§¨©ª«¬­®¯´ø¶ü»¶85 Return a new default lazy DFA builder configuration.Áÿ¶¯øBÿ““ ”ü©Ý6ü¶·$ÈÃ.ß·�üç·I‚Ä.üµ¸FÕÄ.ü€¹H¥Å.ü͹3÷Å.…º�ü�ºBÀÆ.üÔºFC [`MatchKind::All`]. This corresponds to classical DFA constructionÁüŸ»96 where all possible matches are added to the lazy DFA.ÁÝ»�üå»EB Typically, `All` is used when one wants to execute an overlappingÁü¯¼HE search and `LeftmostFirst` otherwise. In particular, it rarely makesÁüü¼KH sense to use `All` with the various "leftmost" find routines, since theÁü̽IF leftmost routines depend on the `LeftmostFirst` automata constructionÁüš¾C@ strategy. Specifically, `LeftmostFirst` adds dead states to theÁüâ¾A> lazy DFA as a way to terminate the search and report a match.Áü¨¿HE `LeftmostFirst` also supports non-greedy matches using this strategyÁäõ¿ where as `All` does not.Á–À�üžÀ! # Example: overlapping searchÁÄÀ�üÌÀGD This example shows the typical use of `MatchKind::All`, which is toÁü˜Á report overlapping matches.Á¼Á�<ÄÁþ×.üÐÁ=îõ.Ì’ÂŽØ.ü°Â-ÞÐ3üâÂ$ÿ¥34‹Ã÷Ø.–Ã�äžÃŒÿ2ü¿Ã<÷Í/ü€Ä*ÝÑ3ü¯Ä'ÃÀ/ÔÛÄ­Ò3üúÄ.ÒÒ3­Å�üµÅ/˜Ó3üéÅ#ÒÓ3ü‘Æ6€Ô3<ÌÆÞÌ0üØÆ,ÏÔ3‰Ç�ü‘ÇI“Õ3üßÇFçÕ3üªÈG¸Ö3üöÈIŠ×3üÄÉ(Þ×3üñÉ/‘Ø3ü¥Ê#ÒÓ3üÍÊ6€Ô3<ˆËÞÌ0ü”Ë,ÏÔ3ÅË�üÍË.áß.<€Ìþ×.ŒÌ�ü”Ì74 # Example: reverse automaton to find start of matchÁÐÌ�üØÌDA Another example for using `MatchKind::All` is for constructing aÁü¡ÍGD reverse automaton to find the start of a match. `All` semantics areÁüíÍDA used for this in order to find the longest possible match, whichÁü¶Î2/ corresponds to the leftmost starting position.ÁíÎ�üõÎ41 Note that if you need the starting position thenÁü®ÏJG [`hybrid::regex::Regex`](crate::hybrid::regex::Regex) will handle thisÁüýÏ?< for you, so it's usually not necessary to do this yourself.ÁÁÐ�<ÉÐþ×.ÌÕÐŽØ.ÌóЕþ2ܑѬ·/ü±Ñ.+ Anchored, HalfMatch, Input, MatchKind,Á4äÑ÷Ø.ïÑ�ü÷Ñ+( let input = Input::new("123foobar456");Áì§Ò let pattern = r"[a-z]+r";ÁÉÒ�üÑÒ%" let dfa_fwd = DFA::new(pattern)?;ÁüûÒ  let dfa_rev = DFA::builder()Áü Ó.+ .thompson(NFA::config().reverse(true))ÁüÓÓ<÷Í/Ì”Ô .build(pattern)?;Áü²Ô/, let mut cache_fwd = dfa_fwd.create_cache();ÁüæÔ/, let mut cache_rev = dfa_rev.create_cache();ÁšÕ�ü¢Õ-* let expected_fwd = HalfMatch::must(0, 9);ÁüÔÕ-* let expected_rev = HalfMatch::must(0, 3);Áü†ÖKH let got_fwd = dfa_fwd.try_search_fwd(&mut cache_fwd, &input)?.unwrap();ÁüÖÖIF // Here we don't specify the pattern to search for since there's onlyÁü¤×IF // one pattern and we're doing a leftmost search. But if this were anÁüò×IF // overlapping search, you'd need to specify the pattern that matchedÁüÀØJG // in the forward direction. (Otherwise, you might wind up finding theÁü�ÙHE // starting position of a match of some other pattern.) That in turnÁüÜÙKH // requires building the reverse automaton with starts_for_each_patternÁ|¬Ú // enabled.Á¬ÀÚ let input = inputÁ„ÚÚ .clone()ÁüïÚ" .range(..got_fwd.offset())Áü–Û! .anchored(Anchored::Yes);Áü¼ÛKH let got_rev = dfa_rev.try_search_rev(&mut cache_rev, &input)?.unwrap();ÁüŒÜ&# assert_eq!(expected_fwd, got_fwd);Áü·Ü&# assert_eq!(expected_rev, got_rev);ÁâÜ�üêÜ.áß.<�Ýþ×.T°Ý¯øù¦¯øBÿ““Å´ $¿Ý¦$ÅÝü�ô<ü ÞA> Set a prefilter to be used whenever a start state is entered.ÁæÞ�üîÞFC A [`Prefilter`] in this context is meant to accelerate searches byÁü¹ßGD looking for literal prefixes that every match for the correspondingÁü…àFC pattern (or patterns) must start with. Once a prefilter produces aÁüÐàHE match, the underlying search routine continues on to try and confirmÁt�á the match.Á°á�ü¸áIF Be warned that setting a prefilter does not guarantee that the searchÁü†âC@ will be faster. While it's usually a good bet, if the prefilterÁüÎâHE produces a lot of false positive candidates (i.e., positions matchedÁü›ãGD by the prefilter but not by the regex), then the overall result canÁüçãHE be slower than if you had just executed the regex engine without anyÁ|´ä prefilters.ÁÈä�üÐäA> Note that unless [`Config::specialize_start_states`] has beenÁü–åEB explicitly set, then setting this will also enable (when `pre` isÁüàåIF `Some`) or disable (when `pre` is `None`) start state specialization.Áü®æGD This occurs because without start state specialization, a prefilterÁüúæHE is likely to be less effective. And without a prefilter, start stateÁüÇç(% specialization is usually pointless.Áôç�üüç# By default no prefilter is set.Á¤è�l¬è¯Ö.¾è�<Æèþ×.ÌÒèŽØ.Ìðè•þ2üŽé# util::prefilter::Prefilter,Áü¶é$! Input, HalfMatch, MatchKind,Á4ßé÷Ø.êé�üòéHE let pre = Prefilter::new(MatchKind::LeftmostFirst, &["foo", "bar"]);ÁÜ¿ê’Ù.üßê0- .configure(DFA::config().prefilter(pre))Áü”ë$! .build(r"(foo|bar)[a-z]+")?;Áü½ë&äÎ/üèë.+ let input = Input::new("foo1 barfox bar");Á|›ì»ç/ü¯ì%" Some(HalfMatch::must(0, 11)),ÁüÙì/, re.try_search_fwd(&mut cache, &input)?,Á4�í×è/˜í�ü í.áß.<Óíþ×.ßí�üçíFC Be warned though that an incorrect prefilter can lead to incorrectÁd²î results!ÁÃî�<Ëîþ×.Ì×îŽØ.Ìõî•þ2ü“ï#ø’6ü»ï$¦“64äï÷Ø.ïï�ü÷ïHE let pre = Prefilter::new(MatchKind::LeftmostFirst, &["foo", "car"]);ÁÜÄð’Ù.üäð0Ñ”6ü™ñ$Œ•6üÂñ&äÎ/üíñ.Ê•6| ò»ç/ü´ò>; // No match reported even though there clearly is one!Ál÷ò None,Áü‰ó/Á–64½ó×è/Èó�üÐó.áß.<ƒôþ×.L–ô¯øȹ ¯øBÿ““³ $¤ôѶªôüÞ�=ü£öEëÎ.líö lazy DFA.Áÿö�ü‡÷GàÏ.üÓ÷HE pattern in the lazy DFA. When this start state is used, then the DFAÁü øIF will only search for matches for the pattern specified, even if thereÁüîø" are other patterns in the DFA.Á•ù�ü�ùHˆÒ.üêùFC the size of the DFA and/or increase the time it takes to build theÁüµúGD DFA at search time. However, since this is configuration for a lazyÁü�ûIF DFA, these states aren't actually built unless they're used. EnablingÁüÏûJG this isn't necessarily free, however, as it may result in higher cacheÁTžü usage.Á­ü�üµüHE There are a few reasons one might want to enable this (it's disabledÁ„‚ý by default):Á—ý�üŸýJG 1. When looking for the start of an overlapping match (using a reverseÁüîýKH DFA), doing it correctly requires starting the reverse search using theÁü¾þHE starting state of the pattern that matched in the forward direction.Áü‹ÿFC Indeed, when building a [`Regex`](crate::hybrid::regex::Regex), itÁüÖÿGD will automatically enable this option when building the reverse DFAÁ|¢€ internally.Áü¶€GD 2. When you want to use a DFA with multiple patterns to both searchÁü‚�GD for matches of any pattern or to search for anchored matches of oneÁüÎ�KH particular pattern while using the same DFA. (Otherwise, you would needÁüž‚+( to compile a new DFA for each pattern.)Á΂�üÖ‚ úÕ.û‚�lƒƒ¯Ö.•ƒ�ü�ƒIF This example shows how to use this option to permit the same lazy DFAÁüëƒJG to run both general searches for any pattern and anchored searches forÁ¼º„ a specific pattern.ÁÖ„�<Þ„þ×.ÌꄎØ.̈…•þ2ü¦….+ Anchored, HalfMatch, Input, PatternID,Á4Ù…÷Ø.ä…�äì…Œÿ2ü�†?·Ù.üц=: .build_many(&[r"[a-z0-9]{6}", r"[a-z][a-z0-9]{5}"])?;Áü“‡'ÃÀ/ü¿‡  let haystack = "bar foo123";Áä‡�üì‡DA // Here's a normal unanchored search that looks for any pattern.Áüµˆ*' let expected = HalfMatch::must(0, 10);Áüäˆ%" let input = Input::new(haystack);ÁüމHE assert_eq!(Some(expected), dfa.try_search_fwd(&mut cache, &input)?);ÁüÛ‰JG // We can also do a normal anchored search for any pattern. Since it'sÁüªŠGD // an anchored search, we position the start of the search where weÁüöŠ! // know the match will begin.Áüœ‹*Э6üË‹0- let input = Input::new(haystack).range(4..);Áü€ŒHµ®6üÍŒGD // Since we compiled anchored start states for each pattern, we canÁü™�DA // also look for matches of other patterns explicitly, even if aÁüâ�52 // different pattern would have normally matched.ÁüœŽ*' let expected = HalfMatch::must(1, 10);ÁüËŽ$»…3œôŽ .range(4..)ÁüŒ�9ê…3üÊ�Hµ®6—��üŸ�.áß.<Ò�þ×.¼å�¯ø¯øBÿ““ —$�‘ꇑü¸ 2üè‘GD Whether to attempt to shrink the size of the lazy DFA's alphabet orÁD´’½£0Á’�üÉ’IËá.ü—“" one is debugging the lazy DFA.Á¾“�üÆ“EB When enabled, the lazy DFA will use a map from all possible bytesÁü�”DA to their corresponding equivalence class. Each equivalence classÁüÙ”HE represents a set of bytes that does not discriminate between a matchÁü¦•GD and a non-match in the DFA. For example, the pattern `[ab]+` has atÁüò•IF least two equivalence classes: a set containing `a` and `b` and a setÁüÀ–HE containing every byte except for `a` and `b`. `a` and `b` are in theÁü�—FC same equivalence classes because they never discriminate between aÁÔØ— match and a non-match.Á÷—�üÿ—Fµç.üʘIF can be reduced drastically from `#states * 256 * sizeof(LazyStateID)`Áü˜™EB to `#states * k * sizeof(LazyStateID)` where `k` is the number ofÁüâ™DA equivalence classes (rounded up to the nearest power of 2). As aÁü«šKH result, total space usage can decrease substantially. Moreover, since aÁüûšJG smaller alphabet is used, DFA compilation during search becomes fasterÁüÊ›JG as well since it will potentially be able to reuse a single transitionÁ¼™œ for multiple bytes.Áµœ�ü½œGD **WARNING:** This is only useful for debugging lazy DFAs. DisablingÁü‰�GD this does not yield any speed advantages. Namely, even when this isÁüÕ�FÖì.ü žF¦í.üëžHöí.ü¸ŸIÈî.ü† -›ï.d¿ ¯ø¯øBÿ““ ˜$РêÖ ü˜À;ü¬¡1. Heuristically enable Unicode word boundaries.Áâ¡�üê¡JG When set, this will attempt to implement Unicode word boundaries as ifÁü¹¢JG they were ASCII word boundaries. This only works when the search inputÁüˆ£JG is ASCII only. If a non-ASCII byte is observed while searching, then aÁü×£+( [`MatchError::quit`] error is returned.Á‡¤�ü�¤FC A possible alternative to enabling this option is to simply use anÁüÚ¤JG ASCII word boundary, e.g., via `(?-u:\b)`. The main reason to use thisÁü©¥JG option is if you absolutely need Unicode support. This option lets oneÁüø¥FC use a fast search implementation (a DFA) for some potentially veryÁüæGD common cases, while providing the option to fall back to some otherÁü�§FC regex engine to handle the general case when an error is returned.ÁÚ§�üâ§IF If the pattern provided has no Unicode word boundary in it, then thisÁü°¨EB option has no effect. (That is, quitting on a non-ASCII byte onlyÁüú¨GD occurs when this option is enabled _and_ a Unicode word boundary isÁ䯩 present in the pattern.)Áç©�üï©GD This is almost equivalent to setting all non-ASCII bytes to be quitÁü»ªIF bytes. The only difference is that this will cause non-ASCII bytes toÁü‰«GD be quit bytes _only_ when a Unicode word boundary is present in theÁdÕ«ûœ/æ«�üî«<9 When enabling this option, callers _must_ be prepared toÁü¯¬=: handle a [`MatchError`] error during search. When using aÁüñ¬IF [`Regex`](crate::hybrid::regex::Regex), this corresponds to using theÁü¿­IF `try_` suite of methods. Alternatively, if callers can guarantee thatÁü�®KH their input is ASCII only, then a [`MatchError::quit`] error will neverÁüÝ®  be returned while searching.Á‚¯�üН  This is disabled by default.Á¯¯�l·¯¯Ö.ɯ�üѯJG This example shows how to heuristically enable Unicode word boundariesÁü °IF in a pattern. It also shows what happens when a search comes across aÁœî° non-ASCII byte.Á†±�<ޱþ×.Ìš±ŽØ.̸±•þ2üÖ±%" HalfMatch, Input, MatchError,Á4€²÷Ø.‹²�䓲Œÿ2ü´²=�¸2üö² .build(r"\b[0-9]+\b")?;Áüš³'ÃÀ/Ƴ�üγC@ // The match occurs before the search ever observes the snowmanÁü–´%" // character, so no error occurs.ÁüÀ´" let haystack = "foo 123 ☃";Áüç´/, let expected = Some(HalfMatch::must(0, 7));Áü›µE”ƒ3ôåµ±Ä2ˆ¶�ü�¶GD // Notice that this search fails, even though the snowman characterÁüܶC@ // occurs after the ending match offset. This is because searchÁü¤·GD // routines read one byte past the end of the search to account forÁüð·JG // look-around, and indeed, this is required here to determine whetherÁü¿¸ // the trailing \b matches.Áüã¸! let haystack = "foo 123 ☃";Áü‰¹-* let expected = MatchError::quit(0xE2, 8);Áü»¹DA let got = dfa.try_search_fwd(&mut cache, &Input::new(haystack));Áü„º# assert_eq!(Err(expected), got);Á¬º�ü´ºKH // Another example is executing a search where the span of the haystackÁü„»KH // we specify is all ASCII, but there is non-ASCII just before it. ThisÁüÔ»'$ // correctly also reports an error.Áü€¼/, let input = Input::new("β123").range(2..);Áü´¼-* let expected = MatchError::quit(0xB2, 1);Áüæ¼52 let got = dfa.try_search_fwd(&mut cache, &input);Áü ½#×Û6Ƚ�üн41 // And similarly for the trailing word boundary.Áü‰¾/, let input = Input::new("123β").range(..3);Áü½¾-* let expected = MatchError::quit(0xCE, 3);Áüï¾5âÞ6ü©¿#×Û6Ñ¿�üÙ¿.áß.<ŒÀþ×.¬ŸÀ¯ø¯øBÿ““ ™$¹Àê¿ÀüæÛ4ü¨Ã&# Add a "quit" byte to the lazy DFA.ÁÓÃ�üÛÃJG When a quit byte is seen during search time, then search will return aÁüªÄHE [`MatchError::quit`] error indicating the offset at which the searchÁd÷Ä stopped.ÁˆÅ�ü�ÅFC A quit byte will always overrule any other aspects of a regex. ForÁüÛÅJG example, if the `x` byte is added as a quit byte and the regex `\w` isÁüªÆFC used, then observing `x` will cause the search to quit immediatelyÁüõÆ30 despite the fact that `x` is in the `\w` class.Á­Ç�üµÇIF This mechanism is primarily useful for heuristically enabling certainÁüƒÈHE features like Unicode word boundaries in a DFA. Namely, if the inputÁüÐÈGD to search is ASCII, then a Unicode word boundary can be implementedÁüœÉGD via an ASCII word boundary with no change in semantics. Thus, a DFAÁüèÉJG can attempt to match a Unicode word boundary but give up as soon as itÁü·ÊIF observes a non-ASCII byte. Indeed, if callers set all non-ASCII bytesÁü…ËIF to be quit bytes, then Unicode word boundaries will be permitted whenÁüÓË85 building lazy DFAs. Of course, callers should enableÁü�ÌIF [`Config::unicode_word_boundary`] if they want this behavior instead.ÁüÞÌJG (The advantage being that non-ASCII quit bytes will only be added if aÁü­Í-* Unicode word boundary is in the pattern.)ÁßÍ�üçÍ<áÍ6ü¨Î=¨Î6üêÎIðÎ6ä¸Ï `try_` suite of methods.ÁÙÏ�üáÏ,) By default, there are no quit bytes set.Á’Ð�dšÐ”Ÿ0«Ð�ü³ÐHE This panics if heuristic Unicode word boundaries are enabled and anyÁü€ÑJG non-ASCII byte is removed from the set of quit bytes. Namely, enablingÁüÏÑKH Unicode word boundaries requires setting every non-ASCII byte to a quitÁüŸÒGD byte. So if the caller attempts to undo any of that, then this willÁTëÒ panic.ÁúÒ�l‚Ó¯Ö.”Ó�üœÓFC This example shows how to cause a search to terminate if it sees aÁüçÓJG `\n` byte. This could be useful if, for example, you wanted to preventÁü¶ÔA> a user supplied pattern from matching across a line boundary.ÁüÔ�<„Õþ×.ü�Õ=îõ.üÒÕ>; use regex_automata::{hybrid::dfa::DFA, MatchError, Input};Á•Ö�ä�ÖŒÿ2ü¾Ö30 .configure(DFA::config().quit(b'\n', true))ÁüöÖ# .build(r"foo\p{any}+bar")?;Áüž×'ÃÀ/Ê×�ôÒ× let haystack = "foo\nbar";Áüõ×HE // Normally this would produce a match, since \p{any} contains '\n'.ÁüÂØGD // But since we instructed the automaton to enter a quit state if aÁüŽÙ=: // '\n' is observed, this produces a match error instead.ÁüÐÙ.+ let expected = MatchError::quit(b'\n', 3);ÁüƒÚ!±�3œ©ÚÜ�3ôÁÚ &Input::new(haystack),ÁœäÚ ).unwrap_err();ÁôüÚ±Ä2ŸÛ�ü§Û.áß.<ÚÛþ×.$íÛ¯ø¯øBÿ““ š$öÛ—»$üÛê†Üüõþ=üŸà52 Enable specializing start states in the lazy DFA.ÁÙà�üáàIF When start states are specialized, an implementor of a search routineÁü¯áKH using a lazy DFA can tell when the search has entered a starting state.ÁüÿáGD When start states aren't specialized, then it is impossible to knowÁüËâ1. whether the search has entered a start state.Á�ã�ü‰ãC@ Ideally, this option wouldn't need to exist and we could alwaysÁüÑãJG specialize start states. The problem is that start states can be quiteÁü äIF active. This in turn means that an efficient search routine is likelyÁüîäGD to ping-pong between a heavily optimized hot loop that handles mostÁüºåHE states and to a less optimized specialized handling of start states.Áü‡æDA This causes branches to get heavily mispredicted and overall canÁüÐæHE materially decrease throughput. Therefore, specializing start statesÁü�ç-* should only be enabled when it is needed.ÁÏç�ü×çKH Knowing whether a search is in a start state is typically useful when aÁü§èIF prefilter is active for the search. A prefilter is typically only runÁüõèJG when in a start state and a prefilter can greatly accelerate a search.ÁüÄéIF Therefore, the possible cost of specializing start states is worth itÁü’êIF in this case. Otherwise, if you have no prefilter, there is likely noÁüàê&# reason to specialize start states.Á‹ë�ü“ëB? This is disabled by default, but note that it is automaticallyÁüÚëIF enabled (or disabled) if [`Config::prefilter`] is set. Namely, unlessÁü¨ìIF `specialize_start_states` has already been set, [`Config::prefilter`]ÁüöìHE will automatically enable or disable it based on whether a prefilterÁüÃíGD is present or not, respectively. This is done because a prefilter'sÁü�îFC effectiveness is rooted in being executed whenever the DFA is in aÁüÚîJG start state, and that's only possible to do when they are specialized.Á©ï�ü±ïA> Note that it is plausibly reasonable to _disable_ this optionÁü÷ïFC explicitly while _enabling_ a prefilter. In that case, a prefilterÁüÂðIF will still be run at the beginning of a search, but never again. ThisÁü�ñJG in theory could strike a good balance if you're in a situation where aÁüßñB? prefilter is likely to produce many false positive candidates.Á¦ò�l®ò¯Ö.Àò�üÈòHE This example shows how to enable start state specialization and thenÁü•ó?< shows how to check whether a state is a start state or not.ÁÙó�<áóþ×.üíó>±ô6°ô�ä¸ôŒÿ2üÙô?< .configure(DFA::config().specialize_start_states(true))ÁÜ�õ .build(r"[a-z]+")?;Áü½õ'ÃÀ/éõ�üñõ0- let haystack = "123 foobar 4567".as_bytes();Áü¦öJG let sid = dfa.start_state_forward(&mut cache, &Input::new(haystack))?;ÁüõöHE // The ID returned by 'start_state_forward' will always be tagged asÁüÂ÷@= // a start state when start state specialization is enabled.Áì‡ø assert!(sid.is_tagged());Á䩸 assert!(sid.is_start());ÁÊø�üÒø.áß.<…ùþ×.‘ù�ü™ùC@ Compare the above with the default lazy DFA configuration whereÁüáùEB start states are _not_ specialized. In this case, the start stateÁü«ú52 is not tagged and `sid.is_start()` returns false.Áåú�<íúþ×.üùú>±ô6¼û�üÄû# let dfa = DFA::new(r"[a-z]+")?;Áüìû'ÃÀ/˜ü�ü ü0Ï‘7üÕüJŠ’7ü¤ý@= // Start states are not tagged in the default configuration!Áôéý assert!(!sid.is_tagged());ÁìŒþ assert!(!sid.is_start());Á®þ�ü¶þ.áß.<éþþ×.¼üþ¯ø¯øBÿ““ô³ $˜ÿêžÿü®” 7üÿÿHE Sets the maximum amount of heap memory, in bytes, to allocate to theÁüÌ€ KH cache for use during a lazy DFA search. If the lazy DFA would otherwiseÁüœ� GD use more heap memory, then, depending on other configuration knobs,Áüè� EB either stop the search and return an error or clear the cache andÁIJ‚  continue the search.ÁÏ‚ �üׂ DA The default cache capacity is some "reasonable" number that willÁü ƒ GD accommodate most regular expressions. You may find that if you needÁüìƒ GD to build a large DFA then it may be necessary to increase the cacheÁl¸„  capacity.ÁÊ„ �üÒ„ KH Note that while building a lazy DFA will do a "minimum" check to ensureÁü¢… GD the capacity is big enough, this is more or less about correctness.Áüî… KH If the cache is bigger than the minimum but still "too small," then theÁü¾† HE lazy DFA could wind up spending a lot of time clearing the cache andÁü‹‡ HE recomputing transitions, thus negating the performance benefits of aÁü؇ HE lazy DFA. Thus, setting the cache capacity is mostly an experimentalÁü¥ˆ FC endeavor. For most common patterns, however, the default should beÁ|ðˆ  sufficient.Á„‰ �üŒ‰ A> For more details on how the lazy DFA's cache is used, see theÁüÒ‰  documentation for [`Cache`].Á÷‰ �lÿ‰ ¯Ö.‘Š �ü™Š GD This example shows what happens if the configured cache capacity isÁüåŠ IF too small. In such cases, one can override the cache capacity to makeÁü³‹ JG it bigger. Alternatively, one might want to use less memory by settingÁ삌  a smaller cache capacity.Á¤Œ �<¬Œ þ×.ü¸Œ =îõ.üúŒ =Ù£2¼� �üÄ� ! let pattern = r"\p{L}{1000}";Áê� �üò� JG // The default cache capacity is likely too small to deal with regexesÁüÁŽ HE // that are very large. Large repetitions of large Unicode characterÁüŽ� ;8 // classes are a common way to make very large regexes.ÁüÎ� +( let _ = DFA::new(pattern).unwrap_err();Áüþ� 0- // Bump up the capacity to something bigger.Áä³� Œÿ2üÔ� IF .configure(DFA::config().cache_capacity(100 * (1<<20))) // 100 MBÁÌ¢‘ Ýü5üÀ‘ 'ÃÀ/ì‘ �üô‘ IF let haystack = "ͰͲͶͿΆΈΉΊΌΎÎ�ΑΒΓΔΕΖΗΘΙ".repeat(50);ÁüÂ’ 2/ let expected = Some(HalfMatch::must(0, 2000));Áüù’ FC let got = dfa.try_search_fwd(&mut cache, &Input::new(&haystack))?;ÁôÄ“ ±Ä2ç“ �üï“ .áß.<¢” þ×.tµ” ¯ø¯øBÿ““ œ$È” öÆ,Δ üǨ ?ü«• KH Configures construction of a lazy DFA to use the minimum cache capacityÁüû• KH if the configured capacity is otherwise too small for the provided NFA.ÁË– �üÓ– JG This is useful if you never want lazy DFA construction to fail becauseÁü¢— $! of a capacity that is too small.ÁË— �üÓ— HE In general, this option is typically not a good idea. In particular,Áü ˜ GD while a minimum cache capacity does permit the lazy DFA to functionÁüì˜ HE where it otherwise couldn't, it's plausible that it may not functionÁü¹™ HE well if it's constantly running out of room. In that case, the speedÁü†š EB advantages of the lazy DFA may be negated. On the other hand, theÁüК HE "minimum" cache capacity computed may not be completely accurate andÁü�› IF could actually be bigger than what is really necessary. Therefore, itÁüë› IF is plausible that using the minimum cache capacity could still resultÁ친  in very good performance.ÁÛœ �ü㜠¦Ñ6ˆ� �l�� ¯Ö.¢� �üª� G­¥7üö� IF too small. In such cases, one could override the capacity explicitly.ÁüÄž IF An alternative, demonstrated here, let's us force construction to useÁü’Ÿ FC the minimum cache capacity if the configured capacity is otherwiseÁtÝŸ  too small.ÁðŸ �<øŸ þ×.ü„  =îõ.üÆ  =Ù£2ˆ¡ �ü�¡ !•¨7¶¡ �ü¾¡ JΨ7ü�¢ H£©7üÚ¢ ;ö©7üš£ +¼ª7üÊ£ GD // Configure construction such it automatically selects the minimumÁü–¤ 96 // cache capacity if it would otherwise be too small.ÁäÔ¤ Œÿ2üõ¤ A> .configure(DFA::config().skip_cache_capacity_check(true))ÁÌ»¥ Ýü5üÙ¥ 'ÃÀ/…¦ �ü�¦ I¹¬7üÛ¦ 2�­7ü’§ FÊ­7ôݧ ±Ä2€¨ �üˆ¨ .áß.<»¨ þ×.ÌΨ ¯ø¯øBÿ““ �$ì¨ êò¨ ü¢Ï HüÕ© GD Configure a lazy DFA search to quit after a certain number of cacheÁt¡ª  clearings.Á´ª �ü¼ª GD When a minimum is set, then a lazy DFA search will *possibly* "giveÁüˆ« IF up" after the minimum number of cache clearings has occurred. This isÁüÖ« JG typically useful in scenarios where callers want to detect whether theÁü¥¬ KH lazy DFA search is "efficient" or not. If the cache is cleared too manyÁüõ¬ KH times, this is a good indicator that it is not efficient, and thus, theÁüÅ­ 30 caller may wish to use some other regex engine.Áý­ �ü…® EB Note that the number of times a cache is cleared is a property ofÁüÏ® EB the cache itself. Thus, if a cache is used in a subsequent searchÁü™¯ A> with a similarly configured lazy DFA, then it could cause theÁü߯ DA search to "give up" if the cache needed to be cleared, dependingÁü¨° A> on its internal count and configured minimum. The cache clearÁüî° ?< count can only be reset to `0` via [`DFA::reset_cache`] (orÁü²± GD [`Regex::reset_cache`](crate::hybrid::regex::Regex::reset_cache) ifÁüþ± " you're using the `Regex` API).Á¥² �ü­² FC By default, no minimum is configured. Thus, a lazy DFA search willÁüø² HE never give up due to cache clearings. If you do set this option, youÁüų FC might consider also setting [`Config::minimum_bytes_per_state`] inÁü�´ HE order for the lazy DFA to take efficiency into account before givingÁ<Ý´  up.Áé´ �lñ´ ¯Ö.ƒµ �ü‹µ JG This example uses a somewhat pathological configuration to demonstrateÁüÚµ EB the _possible_ behavior of cache clearing and how it might resultÁü¤¶ &# in a search that returns an error.Á϶ �ü×¶ FC It is important to note that the precise mechanics of how and whenÁü¢· 52 a cache gets cleared is an implementation detail.ÁÜ· �<ä· þ×.üð· =îõ.ü²¸ NK use regex_automata::{hybrid::dfa::DFA, Input, MatchError, MatchErrorKind};Á…¹ �ü�¹ @= // This is a carefully chosen regex. The idea is to pick oneÁüÒ¹ DA // that requires some decent number of states (hence the boundedÁü›º HE // repetition). But we specifically choose to create a class with anÁüèº KH // ASCII letter and a non-ASCII letter so that we can check that no newÁü¸» KH // states are created once the cache is full. Namely, if we fill up theÁüˆ¼ JG // cache on a haystack of 'a's, then in order to match one 'β', a newÁü×¼ JG // state will need to be created since a 'β' is encoded with multipleÁü¦½ JG // bytes. Since there's no room for this state, the search should quitÁüõ½ " // at the very first position.Áüœ¾  let pattern = r"[aβ]{100}";ÁäÁ¾ Œÿ2œâ¾  .configure(Áüú¾ FC // Configure it so that we have the minimum cache capacityÁüÅ¿ KH // possible. And that if any clearings occur, the search quits.ÁÌ•À  DFA::config()Áü³À 0- .skip_cache_capacity_check(true)ÁüèÀ " .cache_capacity(0)Áü�Á 41 .minimum_cache_clear_count(Some(0)),ÁLÈÁ  )ÁÌÖÁ Ýü5üôÁ 'ÃÀ/ Â �ü¨Â 74 // Our search will give up before reaching the end!Áüä 0- let haystack = "a".repeat(101).into_bytes();Áü™Ã HE let result = dfa.try_search_fwd(&mut cache, &Input::new(&haystack));Á¬æÃ  assert!(matches!(Áü€Ä $! *result.unwrap_err().kind(),Áü©Ä &# MatchErrorKind::GaveUp { .. },Á<ÔÄ  ));ÁàÄ �üèÄ JG // Now that we know the cache is full, if we search a haystack that weÁü·Å GD // know will require creating at least one new state, it should notÁüƒÆ %" // be able to make much progress.Áü­Æ 1. let haystack = "β".repeat(101).into_bytes();ÁüãÆ HŒÚ7¬°Ç ÞÚ7üÊÇ $þÚ7üóÇ &­Û7<žÈ ÝÛ7ªÈ �ü²È JG // If we reset the cache, then we should be able to create more statesÁü�É 74 // and make more progress with searching for betas.Á´½É  cache.reset(&dfa);ÁüØÉ 1ÓÝ7üŽÊ HŒÚ7¬ÛÊ ÞÚ7üõÊ $þÚ7üžË &­Û7<ÉË ÝÛ7ÕË �üÝË KH // ... switching back to ASCII still makes progress since it just needsÁü­Ì -* // to set transitions on existing states!ÁüßÌ 0ÑÙ7ü”Í HŒÚ7¬áÍ ÞÚ7üûÍ $þÚ7ü¤Î &­Û7<ÏÎ ÝÛ7ÛÎ �üãÎ .áß.<–Ï þ×.Ì©Ï ¯øØÚ¯øBÿ““ ž$ÇÏ ôïÍÏ üÊã Fü¹Ð FC Configure a lazy DFA search to quit only when its efficiency dropsÁä„Ñ  below the given minimum.Á¥Ñ �ü­Ñ IF The efficiency of the cache is determined by the number of DFA statesÁüûÑ JG compiled per byte of haystack searched. For example, if the efficiencyÁüÊÒ FC is 2, then it means the lazy DFA is creating a new DFA state afterÁü•Ó HE searching approximately 2 bytes in a haystack. Generally speaking, 2ÁüâÓ IF is quite bad and it's likely that even a slower regex engine like theÁü°Ô EB [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM) would be faster.ÁúÔ �ü‚Õ KH This has no effect if [`Config::minimum_cache_clear_count`] is not set.ÁüÒÕ JG Namely, this option only kicks in when the cache has been cleared moreÁü¡Ö KH than the minimum number. If no minimum is set, then the cache is simplyÁüñÖ IF cleared whenever it fills up and it is impossible for the lazy DFA toÁü¿× -* quit due to ineffective use of the cache.Áñ× �üù× HE In general, if one is setting [`Config::minimum_cache_clear_count`],ÁüÆØ FC then one should probably also set this knob as well. The reason isÁü‘Ù GD that the absolute number of times the cache is cleared is generallyÁüÝÙ HE not a great predictor of efficiency. For example, if a new DFA stateÁüªÚ GD is created for every 1,000 bytes searched, then it wouldn't be hardÁüöÚ GD for the cache to get cleared more than `N` times and then cause theÁüÂÛ KH lazy DFA to quit. But a new DFA state every 1,000 bytes is likely quiteÁü’Ü FC good from a performance perspective, and it's likely that the lazyÁüÝÜ IF DFA should continue searching, even if it requires clearing the cacheÁŒ«Ý  occasionally.ÁÁÝ �üÉÝ FC Finally, note that if you're implementing your own lazy DFA searchÁü”Þ GD routine and also want this efficiency check to work correctly, thenÁüàÞ HE you'll need to use the following routines to record search progress:Á­ß �üµß DA * Call [`Cache::search_start`] at the beginning of every search.Áüþß C@ * Call [`Cache::search_update`] whenever [`DFA::next_state`] isÁ\Æà  called.ÁüÖà FC * Call [`Cache::search_finish`] before completing a search. (It isÁü¡á EB not strictly necessary to call this when an error is returned, asÁüëá GD `Cache::search_start` will automatically finish the previous searchÁü·â IF for you. But calling it where possible before returning helps improveÁü…ã @= the accuracy of how many bytes have actually been searched.)Á¼Ñã ¯øØÚ¯øBÿ““ Ÿ$íã ôïóã üœå )üÝä :Úþ.t£å ¦0 ¦0¯øù¦Bÿ“ ²å “  $³å ü׿ 1ü�æ C@ Returns the prefilter set in this configuration, if one at all.ÁlÞæ §0 §0¯øÅ™Ç™È™­É™Ê™àË™óG*¤�R{9  §0äüBÿ“ ìæ “ ¡$íæ üÀè 1üÊç Kðÿ.üšè !Å€/ÜÇè ¨0 ¨0¯øBÿ“ ãè “þ¡ $äè üêê &üµé GÀ�/ü�ê J‘‚/¬Ðê ä‚/„ñê ©0 ©0¯øBÿ“ ‚ë “ £$ƒë üöì /üÈë IF Returns whether this configuration has enabled heuristic Unicode wordÁü–ì IF boundary support. When enabled, it is possible for a search to returnÁläì  an error.ÁÌýì ª0 ª0¯øBÿ“ —í “ ¤$˜í üåï (üçí JG Returns whether this configuration will instruct the lazy DFA to enterÁü¶î IF a quit state whenever the given byte is seen during a search. When atÁü„ï JG least one byte has this enabled, it is possible for a search to returnÁlÓï £ÿ7Dìï «0 «0¯øBÿ“ õï “ ¥$öï —»$üï ³ð ¥�¦�¦�¦¦¥¦Ú×UÿåÀü“ó 1üÔð DA Returns whether this configuration will instruct the lazy DFA toÁü�ñ HE "specialize" start states. When enabled, the lazy DFA will tag startÁüêñ EB states so that search routines using the lazy DFA can detect whenÁü´ò FC it's in a start state and do some kind of optimization (like run aÁ|ÿò  prefilter).ÁÜšó ¬0 ¬0¯øBÿ“ ¶ó “ §$·ó üÆô )üˆô 96 Returns the cache capacity set on this configuration.Á”Íô ­0 ­0¯øBÿ“ àô “ ¨$áô üöõ 3ü²õ ?< Returns whether the cache capacity check should be skipped.Áìýõ ®0 ®0¯øBÿ“ ›ö “ ©$œö üèø <üïö JG Returns, if set, the minimum number of times the cache must be clearedÁü¾÷ HE before a lazy DFA search can give up. When no minimum is set, then aÁü‹ø FC search will never quit and will always clear the cache whenever itÁlÖø  fills up.Áìïø ¯0 ¯0¯øØÚBÿ“ �ù “ ª$Žù ü—ü :üéù JG Returns, if set, the minimum number of bytes per state that need to beÁü¸ú KH processed in order for the lazy DFA to keep going. If the minimum fallsÁüˆû IF below this number (and the cache has been cleared a minimum number ofÁüÖû <9 times), then the lazy DFA will return a "gave up" error.ÁÜžü °0 °0¯øØÚBÿ“ ºü “ «$»ü ü•ƒ qü”ý KH Returns the minimum lazy DFA cache capacity required for the given NFA.Áäý �üìý GD The cache capacity required for a particular NFA may change withoutÁü¸þ 74 notice. Callers should not rely on it being stable.Áôþ �üüþ IF This is useful for informational purposes, but can also be useful forÁüÊÿ GD other reasons. For example, if one wants to check the minimum cacheÁü–€ HE capacity themselves or if one wants to set the capacity based on theÁd〠 minimum.Áô€ �üü€ JG This may return an error if this configuration does not support all ofÁüË� IF the instructions used in the given NFA. For example, if the NFA has aÁü™‚ JG Unicode word boundary but this configuration does not enable heuristicÁüè‚ (% support for Unicode word boundaries.ÁÔœƒ ±0²0 ±0¯ø ²0�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwØûBÿ“ Àƒ “ ¬$Áƒ ß'σ üÚ‡ r¬Ý‡ û³0´0µ0 ³0¯ø ´0�» µ0ÚתÓBÿ“ ü‡ “ ­$ý‡ ß'‹ˆ ¼:$¨ˆ üª“ fŒ­“ û¶0·0 ¶0¯ø ·0�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÚרûBÿ“ È“ “ ®$É“ ß'ד üŸ� (L¢� û¸0 ¸0¯ø¯ø¯øBÿ“ ¬� “ ¯$­� ¥ ³� ´ž ¯�°�°�°°¯°ƒ¹ Uÿ½Êdˆ¿ õù²³´¶·¸¹¼á¿ ü›¿ A> Create a new lazy DFA builder with the default configuration.Áè¿ õùBÿ±± ²üÝ =ü¡Á ,) Build a lazy DFA from the given pattern.ÁÒÁ �üÚÁ Jž‰/„©Â ñ‰/Óí”Ä Ծ ,ä ½0¾0 ½0õù ¾0�ØBÿ± ê ± ³$ë îN<ñ ü›Å iüÌà -* Build a lazy DFA from the given patterns.Áþà �ü†Ä I΋/üÔÄ #¡Œ/Ó픂ŠÔüÄ T¢Å ¿0À0 ¿0õù À0©ò�ØBÿ±Œµµ ÅÅ ±¹Ž/ ­Å ÊŽ/T°Å ¡×$ÆÅ ¨ ²"$üÒÒ bü»É #‹Ž/ãÉ �üëÉ JG Note that this requires owning a `thompson::NFA`. While this may forceÁüºÊ HE you to clone the NFA, such a clone is not a deep clone. Namely, NFAsÁü‡Ë KH are defined internally to support shared ownership such that cloning isÁ|×Ë  very cheap.ÁëË �lóË ¯Ö.…Ì �ü�Ì IF This example shows how to build a lazy DFA if you already have an NFAÁdÛÌ  in hand.ÁìÌ �<ôÌ þ×.Ì€Í ŽØ.ÌžÍ •þ2´¼Í ‹Õ/Ì×Í ¼›34õÍ ÷Ø.€Î �üˆÎ òè0¬Î �ü´Î E¶�/üþÎ '$ let nfa = thompson::Compiler::new()ÁüªÏ 85 .configure(thompson::Config::new().shrink(true))ÁÜçÏ  .build(r"[0-9]+")?;Áü‡Ð 2/ let dfa = DFA::builder().build_from_nfa(nfa)?;Áü¾Ð 'ÃÀ/üêÐ /Ú‚3üžÑ E”ƒ3ôèÑ ±Ä2‹Ò �ü“Ò .áß.<ÆÒ þ×.tÙÒ Á0 Á0õù�»�ØBÿ± ñÒ ±’ã $òÒ ß'€Ó ü©è ;üáç C@ Apply the given lazy DFA configuration options to this builder.ÁL°è Â0 Â0õù¯ø¨«8Bÿ± ºè ±ø´ $¿è É4Åè üšì dü´é 7‘–/üðé 4Ó–/©ê �ü±ê JŸ—/t€ë ó—/“ë �ü›ë JG These settings only apply when constructing a lazy DFA directly from aÁdêë ûœ/Óí”�ì Ôûë 4¡ì Ã0 Ã0õùÝ’Ø­8Bÿ± ±ì ± ¸$¶ì É4Äì üüð Dü¿í =ÿ™/ü�î <Çš/Âî �üÊî KH This permits setting things like whether the DFA should match the regexÁüšï JG in reverse or if additional time should be spent shrinking the size ofÁdéï  the NFA.Áúï �ü‚ð E¬œ/dÌð ûœ/Óí”ãð ÔÝð Dƒñ Ä0 Ä0õù±ªè°8Bÿ± Œñ ±Œ¶ $‘ñ É4—ñ ¬â‰ Âú»¼üÞŠ "üþ‰ HE Create a new overlapping state that begins at the start state of anyÁtËŠ  automaton.Á,åŠ ÂúBÿººäš ü�Ž ,ü³Œ JG Return the match result of the most recent search to execute with thisÁT‚�  state.Á‘� �ü™� DA A searches will clear this result automatically, such that if noÁüâ� 63 match is found, this will correctly report `None`.ÁL¤Ž Ì0 Ì0ÂúÄÜBÿº ®Ž ºû… $¯Ž üž’ âü¡’ "ûÐ0Ñ0Ò0 Ð0Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÑ0 Ò0Âú‰ÿ ÃÓBÿ‚¾¾ Ó’ þƉÿ Ä’ Í0Î0Ï0ˆ#‰ÿ  Í0Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÎ0 Ï0Âúü½“ BÍ0Î0Ï0�#‰ÿ ¹·8ÃÓ´é“  ½‰ÿ –`ÁƒÁå 4‰“ èêü�� _¬ � ûÓ0 Ó0ªÓÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw°ÿã€Bÿ Ä�  ¿ש<»� ü“¬ |´–¬ ûÔ0Õ0 Ô0�» Õ0ªÓBÿ ·¬  Àß'²¬ ש<ˬ ¡¼æ¬ ¤–­ <œ­ û¼Ë­ TÑ­ ûLê.4,î.4ôáç÷‚ƒ»½„ ÃÅß'*° ÃÆžD=§-ÃÇ,ä @.0´/ |¨ ØûÉÊËÌü¾ ?Ì ×°ØûBÿÈÈ˜ß ¬ºÐ üÁ lÜÏ ØûBÿÈÈ Êí¹<ô ü¹,Œ üª `ô¸ ã€ØûBÿÈÈ Ë¬ºà üþCüŒ%ØûBÿÈÈ Ìü©%Ó‰|—¼‘Øû΂ÎüÕ>4ØÞ0 Þ0ØûřǙș­É™Ê™àË™óG*¤�R{9  Þ0�Õ1BÿÍ ßÍ Î$àü‘&ØûÐ¥gÐü¾DÁß0à0á0 ß0Øû à0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡á0­àBÿÏ ÅÏ Ð$Æœ Ì|¢&ÒýÒÓÔü¸&2,Æ&ÕþÒýBÿÑÑ Ò¬ºÌ&üš'*$¨'ÒýBÿÑÑû —»$­'üô'@¤‚(Ø¥ÒýBÿÑÑô¢ ¾»$—(ü‰)%Ó‰|÷(¼ñ(ÒýÖ‚Öüµ)>4¸)æ0 æ0ÒýřǙș­É™Ê™àË™óG*¤�R{9  æ0�Õ1BÿÕ ¿)Õ Ö$À)üî*&ÒýØ¥gØü›+Dž+ç0è0é0 ç0Òý è0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡é0­àBÿ× ¢+× Ø$£+œ ©+|»>ÕþÚÛüÑ>3¬ß>ÕþBÿÙÙ Úü©?,t·?ÕþBÿÙÙ Ûü�@%Ó‰|þ?¼ø?Õþüº@&ÕþÞ¥gÞüç@Dê@î0ï0ð0 î0Õþ ï0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ð0­àBÿÝ î@Ý Þ$ï@œ õ@4õ.4ù.4ô‰Š „æ?°ÿáâãäåæçèéêëìíîïðñòóôõö¤Ç@Æ32Á܇@Æ64Áܤ@ü†@:üý?E<Í@ßàà̯AdµAßàà´ìALòAßàà´ªBL°Bßàà¼èBTîBßà༧CT­CßààÜæC÷CààüÂEEÐEĹ8Bÿàà èˆCÔEüÏI0lØIß°ÿBÿàà‹È ˆC.áü‰M/Œ—Mþ0 þ0°ÿBÿà ©MàÉ¥ $ªMü”O6”¨Oÿ0 ÿ0°ÿBÿà »Oà‘¯ $¼OüÊP4TÞP€1 €1°ÿ°ÿBÿà éPà ì$êPü‹R1<ŸR�1 �1°ÿ°ÿBÿà §Rà í$¨RüÆS1<ÚS‚1 ‚1°ÿ°ÿBÿà âSà î$ãSüÚU2DîUƒ1 ƒ1°ÿ°ÿBÿà ÷Uà ï$øUüõW2D‰X„1 „1°ÿ°ÿBÿà ’Xà ð$“Xü€[%ü¤Y<9 Return true if and only if this lazy state ID is tagged.ÁåY�üíYHE When a lazy state ID is tagged, then one can conclude that it is oneÁüºZ30 of a match, start, dead, quit or unknown state.ÁL�[…1 …1°ÿBÿà —[à˜² $˜[üû]&üè[FC Return true if and only if this represents a lazy state ID that isÁü³\IF "unknown." That is, the state has not yet been created. When a callerÁü�]JG sees this state ID, it generally means that a state has to be computedÁÄÐ] in order to proceed.ÁTˆ^†1 †1°ÿBÿà “^௧ $”^ü�a#üñ^IF Return true if and only if this represents a dead state. A dead stateÁü¿_FC is a state that can never transition to any other state except theÁüŠ`HE dead state. When a dead state is seen, it generally indicates that aÁ¼×` search should stop.Á<Ža‡1 ‡1°ÿBÿà –aà ó$—aüµe#üñaIF Return true if and only if this represents a quit state. A quit stateÁü¿bEB is a state that is representationally equivalent to a dead state,Áü‰cIF except it indicates the automaton has reached a point at which it canÁü×cGD no longer determine whether a match exists or not. In general, thisÁü£dIF indicates an error during search and the caller must either pass thisÁüñd1. error up or use a different search technique.Á<Âeˆ1 ˆ1°ÿBÿà Êeà ô$Ëeüóh$ü¥fFC Return true if and only if this lazy state ID has been tagged as aÁ„ðf start state.Á…g�„�g Note that ifÁü¢gFC [`Config::specialize_start_states`](crate::hybrid::dfa::Config) isÁüígGD disabled (which is the default), then this will always return falseÁü¹h'$ since start states won't be tagged.ÁD€i‰1 ‰1°ÿBÿà ‰ià õ$ŠiüÓj$üåiF¢Þ8„°j match state.ÁDàjŠ1 Š1°ÿBÿà éjàÚã $êj¬’nã€øüôn%L‚o’1 ’1ã€Bÿ÷ Œo÷ ø$�oüÔo+Ó‰|Âo¼¼oã€ü„p,ã€û¥gûü·p@ºp“1”1•1 “1〠”1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡•1­àBÿú ¾pú û$¿pœ Åplý.4üöñ A lazy DFA backed `Regex`. This module provides a [`Regex`] backed by a lazy DFA. A `Regex` implements convenience routines you might have come to expect, such as finding a match and iterating over all non-overlapping matches. This `Regex` type is limited in its capabilities to what a lazy DFA can provide. Therefore, APIs involving capturing groups, for example, are not provided. Internally, a `Regex` is composed of two DFAs. One is a "forward" DFA that finds the end offset of a match, where as the other is a "reverse" DFA that find the start offset of a match. See the [parent module](crate::hybrid) for examples. Á,…/4«°¼ÃÒ$¡ûü€ù©§öü��®T¼áü‚±Dر üƒ�$ö«ü…žD�§-ü‡—,—Ñ,üˆÕÛ,žú,ü‰ÛÀT¥Ì-üŠÓ¿L±º-ü‹,üœüüü"â›ÒÔŒµÄlÓµüün§©üüŽ›�ŠŒxzfhTVTáü¦:7 Convenience routines for regex and cache construction.Áá��Ž�‘’üˆ%6üòJ¸¨/üÁ # return the corresponding regex.Áé �üñ HÏ©/ü¾!¢ª/â!�lê!¯Ö.ü!�<„"þ×.ü�"63 use regex_automata::{hybrid::regex::Regex, Match};ÁË"�üÓ")& let re = Regex::new("foo[0-9]+bar")?;Áü�#&äÎ/|¬#»ç/üÀ#$! Some(Match::must(0, 3..14)),Áüé#1. re.find(&mut cache, "zzzfoo12345barzzz"),Á4Ÿ$×è/üª$.áß.<Ý$þ×.Óí”ï$Ôé$�%™1 ™1€ñ BÿŒ œ%Œ �îN<“%ü�-Züô%Iÿ­/üÂ&8Ó®/ÿ&�l‡'¯Ö.™'�<¡'þ×.ü­'6Ýî8è'�üð'52 let re = Regex::new_many(&["[a-z]+", "[0-9]+"])?;Áüª(&äÎ/Õ(�üÝ(C@ let mut it = re.find_iter(&mut cache, "abc 1 foo 4567 0 quux");Áü¥)63 assert_eq!(Some(Match::must(0, 0..3)), it.next());Áüà)63 assert_eq!(Some(Match::must(1, 4..5)), it.next());Áü›*63 assert_eq!(Some(Match::must(0, 6..9)), it.next());ÁüÖ*85 assert_eq!(Some(Match::must(1, 10..14)), it.next());Áü“+85 assert_eq!(Some(Match::must(1, 15..16)), it.next());ÁüÐ+85 assert_eq!(Some(Match::must(0, 17..21)), it.next());Áü�,  assert_eq!(None, it.next());Áü²,.áß.<å,þ×.Óí”÷,Ôñ,D—-š1 š1©ò€ñ BÿŒŒ�� Â-Œ¹Ž/  -ÊŽ/T£- ޵“¨ aø Ü©6ü¦.C›¿2î.�üö.@ÔÒ/ü»/%ŸÓ/å/�lí/¯Ö.ÿ/�ü‡0CµÀ2|Ï0 everywhere.Áã0�<ë0þ×.ü÷0=îõ.̹1ŽØ.ü×1A> hybrid::regex::Regex, nfa::thompson, util::syntax, Match,Á4�2÷Ø.¨2�ì°2 let re = Regex::builder()ÁüÒ22‚Ö/ü‰36¿Ö/üÄ3&€×/üï3&äÎ/š4�ü¢441 let haystack = b"\xFEfoo\xFFarzz\xE2\x98\xFF\n";ÁüÛ4.+ let expected = Some(Match::must(0, 1..9));ÁüŽ5,) let got = re.find(&mut cache, haystack);Áô¿5±Ä2â5�üê5.áß.<�6þ×.<°6݃BÿŒŒåï üš9#üé6(% Create a new cache for this `Regex`.Á–7�üž7@¢ß/üã7EB `Regex`. If you want to reuse the cache for another `Regex`, thenÁü­8GD you must call [`Cache::reset`] with that `Regex` (or, equivalently,Áäù8 [`Regex::reset_cache`]).Ád¡9›1 ›1á��ƒBÿŒ ®9Œ ‘$¯9ü¾E,üä9Iýá/ü²:)& this `Regex` (and only this `Regex`).Áà:�üè:HŠã/ìµ; with a different `Regex`.Á×;�üß;J‰É2ü®�<š>þ×.ü¦>=îõ.üè>6Ýî8£?�ü«?! let re1 = Regex::new(r"\w")?;ÁüÑ?! let re2 = Regex::new(r"\W")?;Á÷?�üÿ?'Šç/|«@»ç/ü¿@#Õç/üç@# re1.find(&mut cache, "Δ"),Á4�A×è/šA�ü¢AHõè/üïAIÈé/ü½B2/ // it with the Regex we'd like to use it with.Á4ôBßê/üÿBJðê/|ÎCÄë/üâC Þë/|‡D»ç/ü›D#—ì/üÃD$! re2.find(&mut cache, "☃"),Á4ìD×è/÷D�üÿD.áß.<²Eþ×.\ÅEœ1�1 œ1á� �1�ƒBÿŒ ÑEŒ ’$ÒEóA,ØET¶GüæFOL Standard infallible search routines for finding and iterating over matches.Áá�”—šüäUrüÇGFC Returns true if and only if this regex matches the given haystack.Á’H�üšHIF This routine may short circuit if it knows that scanning future inputÁüèHKH will never lead to a different result. In particular, if the underlyingÁü¸IKH DFA enters a match state or a dead state, then this routine will returnÁüˆJIF `true` or `false`, respectively, without inspecting any future input.ÁÖJ�dÞJ”Ÿ0ïJ�ü÷JH¸Ÿ0üÄK!­ñ2êK�üòKKæñ2üÂLE¼ò2üŒMJŒó2üÛM6áó2ü–NG¢ô2üâNCôô2üªOEÂõ2üôO,’ö2ü¥PCÆ 0üíP5Øö2§Q�ü¯QGì¢0DûQ½£0ˆR�ü�RKH Use [`Regex::try_search`] if you want to handle these error conditions.ÁàR�lèR¯Ö.úR�<‚Sþ×.üŽS-* use regex_automata::hybrid::regex::Regex;ÁÀS�üÈS)©ï8üöS&äÎ/¡T�ü©T4û¥0üâT0º¦0ü—U.áß.<ÊUþ×.DëUž1Ÿ1 ž1á� Ÿ1�ƒ¯¢Bÿ“¸•…––• •V“Ú±0 øUì±0|ûU ”¸¯¢$–VóA°ú–`ºúôU8:ü�hwüàXGD Returns the start and end offset of the leftmost match. If no matchÁü¬Y$! exists, then `None` is returned.ÁÕY�dÝY”Ÿ0îY�üöYH¸Ÿ0üÃZ!­ñ2éZ�üñZKæñ2üÁ[E¼ò2ü‹\JŒó2üÚ\6áó2ü•]G¢ô2üá]Côô2ü©^EÂõ2üó^,’ö2ü¤_CÆ 0üì_5Øö2¦`�ü®`Gì¢0Dú`½£0‡a�ü�aK¨�9ßa�lça¯Ö.ùa�<�bþ×.ü�b63 use regex_automata::{Match, hybrid::regex::Regex};ÁÈb�üÐb&# let re = Regex::new("foo[0-9]+")?;Áüûb&äÎ/|¦c»ç/üºc$! Some(Match::must(0, 3..11)),Áüãc.+ re.find(&mut cache, "zzzfoo12345zzz"),Á4–d×è/¡d�ü©dGœ¿0üõdIF // the default leftmost-first match semantics demand that we find theÁüÃeKH // earliest match that prefers earlier parts of the pattern over latterÁl“f // parts.Áü¥f" let re = Regex::new("abc|a")?;ÁüÌf&äÎ/ü÷fGD assert_eq!(Some(Match::must(0, 0..3)), re.find(&mut cache, "abc"));ÁüÃg.áß.<ögþ×.$—h 1¡1  1á� ¡1�ƒ¯¢�´Bÿ“¸˜…™™˜ ½h“Ú±0  hì±0|£h —¸¯¢$¾hóAVü–``üœh8:ü­y”üÌiHE Returns an iterator over all non-overlapping leftmost matches in theÁü™jJG given bytes. If no match exists, then the iterator yields no elements.Áèj�dðj”Ÿ0�k�ü‰kH¸Ÿ0üÖk!­ñ2ük�ü„lKæñ2üÔlE¼ò2üžmJŒó2üím6áó2ü¨nG¢ô2üônCôô2ü¼oEÂõ2ü†p,’ö2ü·pCÆ 0üÿp5Øö2¹q�üÁqGì¢0D�r½£0šr�ü¢rIF The above conditions also apply to the iterator returned as well. ForÁüðrIF example, if the lazy DFA gives up or quits during a search using thisÁü¾s52 method, then a panic will occur during iteration.Áøs�ü€tKH Use [`Regex::try_search`] with [`util::iter::Searcher`](iter::Searcher)ÁüÐt1. if you want to handle these error conditions.Á†u�lŽu¯Ö. u�<¨uþ×.ü´u6Ýî8ïu�ü÷u&«—9ü¢v&äÎ/Ív�üÕv# let text = "foo1 foo12 foo123";ÁüývGD let matches: Vec = re.find_iter(&mut cache, text).collect();ÁìÉw assert_eq!(matches, vec![Áìëw Match::must(0, 0..4),Áô�x Match::must(0, 5..10),Áü°x Match::must(0, 11..17),Á<Ôx ]);Áüàx.áß.<“yþ×.L´y›œ ›á� œ�ƒ¯¢°°¾¾´é¾üµóAü¶ÛËüK}ŒgÒÊb›œ¸Bÿ“¸�…žž�¾y“Ú±0 Êyì±0|Íy š¸¯¢$ëyóA!þ–`+þ?AÂyÆyBDT´|ü­{JG Lower level "search" primitives that accept a `&Input` for cheap reuseÁüø{;8 and return an error if one occurs instead of panicking.Áá� ¡üŸˆ‚üÅ|G”“9ü‘}$å“9º}�üÂ}:7 This is like [`Regex::find`] but with two differences:Á�~�ü‰~A> 1. It is not generic over `Into` and instead accepts aÁüÏ~IF `&Input`. This permits reusing the same `Input` for multiple searchesÁü�FC without needing to create a new one. This _may_ help with latency.ÁüèDA 2. It returns an error if the search could not complete where asÁü±€ [`Regex::find`] will panic.ÁÕ€�dÝ€¯Ö0î€�üö€HÓÖ0üÃ�!­ñ2é��üñ�Kæñ2üÁ‚E¼ò2ü‹ƒJŒó2üÚƒ6áó2ü•„G¢ô2üá„Côô2ü©…EÂõ2üó…,’ö2ü¤†CÆ 0üì†5Øö2¦‡�ü®‡G‹Ø0”ú‡ÜØ0T¦ˆ¢1£1¤1¥1 ¢1á� £1�ƒ ¤1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¥1æù BÿŸ ºˆŸÇø $»ˆóAï–`úüÑ¡0\Ô¡ü¦1§1¨1 ¦1á� §1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¨1BÿŸ ࡟º† $á¡–`,ç¡TÀ¤üæ£JG Non-search APIs for querying information about the regex and setting aÁt±¤ prefilter.Áá�£¤¥윦üѤDA Return the underlying lazy DFA responsible for forward matching.Áš¥�ü¢¥EB This is useful for accessing the underlying lazy DFA and using itÁüì¥+( directly if the situation calls for it.Á<£¦©1 ©1á� ©1ïòBÿ¢ «¦¢ïò $¬¦쨨üݦDA Return the underlying lazy DFA responsible for reverse matching.Á¦§�ü®§E‹¶9üø§+Û¶9<¯¨ª1 ª1á� ª1ïòBÿ¢ ·¨¢£Œ $¸¨üƒ¬"üé¨?< Returns the total number of patterns matched by this regex.Á­©�lµ©¯Ö.Ç©�<Ï©þ×.üÛ©=îõ.ü�ª-¯�9Ϫ�üת?< let re = Regex::new_many(&[r"[a-z]+", r"[0-9]+", r"\w+"])?;Áü›«$! assert_eq!(3, re.pattern_len());ÁüÄ«.áß.<÷«þ×.\Ь«1 «1á�Bÿ¢ –¬¢ ¥$—¬ü²5æG§Ì3¨¸©§©¨£‚ª«ÅQÆQ«Dz˲ϲLþ²$ƒ³¦¦‹¢ü¤³#$§³¯1 ¯1£‚�´Bÿ¦ ¬³¦ «æGÌ3¸$±³< ´«�¬�¬�¬¬«­¢ T¤¼�ƒ®¯°±²³´µ¶ü½¾üµ¼-* Create a new cache for the given `Regex`.Áç¼�üï¼EB The cache returned should only be used for searches for the givenÁü¹½IF `Regex`. If you want to reuse the cache for another `Regex`, then youÁü‡¾1. must call [`Cache::reset`] with that `Regex`.Áľ´1 ´1á��ƒBÿ­ ̾­ ®é¾ȾüÃË#ü÷¿J²¡5üÆÀ$! `Regex` (and only that `Regex`).ÁïÀ�ü÷ÀHŠã/ìÄÁ»�9æÁ�üîÁJ‰É2ü½ÂKü�9ô�ÃЂ9°Ã�l¸Ã¯Ö.ÊÃ�üÒÃJ�ƒ9¡Ä�<©Äþ×.üµÄ=îõ.ü÷Ä6Ýî8²Å�üºÅ!²„9üàÅ!Ý„9†Æ�üŽÆ'Šç/|ºÆ»ç/üÎÆ#Õç/üöÆ#½…94žÇ×è/©Ç�ü±ÇHõè/üþÇIÈé/üÌÈ2Ÿ†94ƒÉßê/üŽÉJðê/|ÝÉÄë/´ñÉ cache.reset(&re2);Á|ŒÊ»ç/ü Ê#—ì/üÈÊ$¬‡94ñÊ×è/üÊ�ü„Ë.áß.<·Ëþ×.,Ê˵1¶1 µ1�ƒ ¶1á�Bÿ­ ÐË­ ¯$ÕËé¾ÛËüùÌ(üÈÌ,) Return a reference to the forward cache.Á<€Í·1 ·1�ƒ ·1ûóBÿ­ ˆÍ­ °$�ÍüöÍ(üÅÍ,) Return a reference to the reverse cache.Á<ý͸1 ¸1�ƒ ¸1ûóBÿ­ …έ ±$ŠÎüüÏ0üÂÎ41 Return a mutable reference to the forward cache.ÁûÎ�üƒÏJG If you need mutable references to both the forward and reverse caches,ÁüÒÏ%" then use [`Cache::as_parts_mut`].Á\ƒÐ¹1 ¹1�ƒ ¹1ûóBÿ­ �Э ²$”ÐüŽÒ0üÔÐ41 Return a mutable reference to the reverse cache.Á�Ñ�ü•ÑJ½Ë9üäÑ%’Ì9\•Òº1 º1�ƒ º1ûóBÿ­ ¡Ò­ ³$¦Òü±Ó4üæÒFC Return references to the forward and reverse caches, respectively.ÁD¸Ó»1 »1�ƒ »1ûóçÐ9Bÿ­ ÁÓ­ ´$ÂÓüõÔDüšÔ@= Return mutable references to the forward and reverse caches,ÁŒßÔ respectively.ÁdüÔ¼1 ¼1�ƒ ¼1ûóµÒ9Bÿ­ ‰Õ­›²$ŽÕüñ×#üöÕHE Returns the heap memory usage, in bytes, as a sum of the forward andÁäÃÖ reverse lazy DFA caches.ÁäÖ�üìÖFͯ1ü·×5ž°1dø×½1 ½1�ƒBÿ­ …Ø­ ¶$†Ød¡ì݃¸¹º¼½¾¿¼÷ìü´ì>; Create a new regex builder with the default configuration.Áþì݃Bÿ·· ¸üýî?üÄí)& Build a regex from the given pattern.Áòí�üúíJž‰/„Éîñ‰/Óí”äîÔÞî,„ïÂ1Ã1 Â1݃ Ã1€ñ Bÿ· Šï· ¹$‹ïîN<‘ïü¼ðküîï*' Build a regex from the given patterns.ÁÓ픣ðÔ�ðTÃðÄ1Å1 Ä1݃ Å1©ò€ñ Bÿ·Œ»» æð·¹Ž/ ÎðÊŽ/TÑð“ð $çð¨ Â"$üâ‚BüŽõIF Build a regex from its component forward and reverse hybrid NFA/DFAs.ÁÜõ�üäõC@ This is useful when you've built a forward and reverse lazy DFAÁü¬öIF separately, and want to combine them into a single regex. Once build,ÁüúöJG the individual DFAs given can still be accessed via [`Regex::forward`]ÁÜÉ÷ and [`Regex::reverse`].Áé÷�üñ÷C@ It is important that the reverse lazy DFA be compiled under theÁ̹ø following conditions:Á×ø�üßø1. * It should use [`MatchKind::All`] semantics.Áü•ù! * It should match in reverse.Áü»ù@= * Otherwise, its configuration should match the forward DFA.Á€ú�üˆúJG If these conditions aren't satisfied, then the behavior of searches isÁ„×ú unspecified.Áìú�üôúGD Note that when using this constructor, no configuration is applied.ÁüÀûDA Since this routine provides the DFAs to the builder, there is noÁü‰ü52 opportunity to apply other configuration options.ÁÃü�lËü¯Ö.Ýü�üåüIF This shows how to build individual lazy forward and reverse DFAs, andÁü³ý,) then combine them into a single `Regex`.Áäý�<ìýþ×.ÌøýŽØ.ü–þ)& hybrid::{dfa::DFA, regex::Regex},Á´Äþ‹Õ/”ßþ MatchKind,Á4öþ÷Ø.�ÿ�ü‰ÿ&# let fwd = DFA::new(r"foo[0-9]+")?;Áä´ÿ let rev = DFA::builder()ÁüÕÿ<÷Í/ü–€8‰œ3ôÓ€ .build(r"foo[0-9]+")?;Áö€�üþ€85 let re = Regex::builder().build_from_dfas(fwd, rev);Áü»�&äÎ/üæ�85 assert_eq!(true, re.is_match(&mut cache, "foo123"));Áü£‚.áß.<Ö‚þ×.|邯1 Æ1݃ïòïòá�Bÿ· ù‚·¢¹ $ú‚­H<€ƒ¼H<ŽƒüÓ…düÕƒ7‘–/ü‘„4Ó–/Ê„�üÒ„JŸ—/t¡…ó—/Ó픺…Ô´…4Ú…Ç1 Ç1݃Ý’¤é9Bÿ· ê…· ½$ï…É4ý…ü‰‰Düó†=ÿ™/üµ‡0- [`nfa::thompson::Config`](thompson::Config).Áê‡�üò‡F››/ü½ˆ(ì›/Óí”ðˆÔêˆD�‰È1 È1݃±ª“ë9Bÿ· ™‰· ¾$ž‰É4¤‰ü”Œ:ü‹ŠEB Set the lazy DFA compilation configuration for this builder usingÁ¤ÕŠ [`dfa::Config`].ÁîŠ�üöŠKH This permits setting things like whether Unicode word boundaries shouldÁüÆ‹IF be heuristically supported or settings how the behavior of the cache.Á›ŒÉ1 É1݃¯ø�î9Bÿ· ŸŒ· ¿$¤ŒÉ4ªŒÄ‹�݃Á÷Á¼ª�<­�݃BÿÀÀ ÁTŒ/44�/4ôÑÒÖ×ÛÜÞàáâåèéâ«,)5‚ÂÆ� „05ÒÂÇù©B5öÂÈ�¼\T5‰ÂÉé›L‡5ü(ÂËáºL£5é,ÂÍ—,®5Ñ,ÂÎÛÀTµ5Ì-ÂÏú¹$Á5Ú,ÂÐ,5œ5ü"5ÆÈ¶¸¥§|P5—ül5¤|5‹üœ5|~kmY[GIüä5Dò5Ê1Ë1Ì1Í1 Ê1ïò Ë1ûó Ì1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÍ1õÛBÿ …5´ÛÒ€5óA,�5–`,¦5ü· ¬5dº 5ÂÎ1Ï1Ð1Ñ1Ò1 Î1ïò Ï1ûó Ð1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÑ1řǙș­É™Ê™àË™óG*¤�R{9  Ò1äüõÛBÿ Ñ 5 ÒÒÌ 5óA,Û 5–`,ò 5Ѷ‰ 5÷œD© 5Ü�5t�5 ¬5 à5 ¶5 Ê5 , ·58 Ø¸5& »58²$¼5$ À5, Â58™´Ã5& Å58²$Æ5*Ì5 Ï5 Ù5 Ð5 Ø58Þ58—»$â5 ç5 é58–`,ê5 ï58ý�Dð5 ø5 ù5 ú58 get_uncheckedÁlû5 ˆ5 Œ5, ‰58™´Š5% �58Ò›5 ž58È0ìŸ5 ¼5 Î58óA,½5$ Â5, Ä58 ØÅ5$ È58—»$Ê5% Ú5Î5Ò�Ô�Ô�ÔÔÒÔÕþÛ†UÿóІU5Ò�Õ�Õ�ÕÕÒÕíù9ûù9ü‘o5DŸo5Ó1Ô1Õ1Ö1 Ó1ïò Ô1ûó Õ1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÖ1õÛBÿ ²o5¥òÒ­o5óA,¼o5–`,Óo5ü‘rŒ5d”r5Â×1Ø1Ù1Ú1 ×1ïò Ø1ûó Ù1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÚ1õÛBÿ «r5 ×Ò¦r5óA,µr5–`,Ìr5÷œDãr5ÜÙx5tæx5 õx5 ©z5 ÿx5 “y5 , €y58 Ø�y5& „y58²$…y5$ ‰y5, ‹y58™´Œy5& Žy58²$�y5*•y5 ˜y5 ¢z5 ™y5 ¡z58§y58—»$«y5 °y5 ²y58–`,³y5 ¸y58ý�D¹y5 Áy5 Ây5 Ãy58ôö9lÄy5 Ñy5 Õy5, Òy58™´Óy5% Öy58Òäy5 çy58È0ìèy5 …z5 —z58óA,†z5$ ‹z5, �z58 ØŽz5$ ‘z58—»$“z5% £z5�|5×�Ù�Ù�ÙÙ×Ùíù9ûù9½‘5×�Ú�Ú�ÚÚ×Úíù9ûù9ü±›ž5¤¿›5Û1Ü1Ý1Þ1ß1 Û1ïò Ü1ûó Ý1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÞ1 ß1ÂúÃÓBÿ Þ›5Õ„ ÒÙ›5óA,è›5–`,ÿ›5ƒ,–œ5ü� ·5Ä„ 5Âà1á1â1ã1ä1å1 à1ïò á1ûó â1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaã1řǙș­É™Ê™àË™óG*¤�R{9  ä1äü å1ÂúÃÓBÿ § 5 ÜÒ¢ 5óA,± 5–`,È 5Ѷß 5ƒ,ÿ 5“­5Ü�Ý�Ý�ÝÝÜÝíù9ûù9ü꾞5¤ø¾5æ1ç1è1é1ê1 æ1ïò ç1ûó è1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaé1 ê1ÂúÃÓBÿ —¿5‡‘ Ò’¿5óA,¡¿5–`,¸¿5ƒ,Ï¿5çÎ5Þ�ß�ß�ßßÞßíù9ûù9üâÛn5DåÛ5Âë1ì1í1î1 ë1ïò ì1ûó í1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaî1¸Ò Bÿ øÛ5 àÒóÛ5óA,‚Ü5–`,™Ü5üÐÞn5DÓÞ5Âï1ð1ñ1ò1 ï1ïò ð1ûó ñ1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaò1¸Ò Bÿ æÞ5 áÒáÞ5óA,ðÞ5–`,‡ß5ü¾á 5<Áá5Âó1ô1õ1ö1÷1ø1 ó1ïò ô1ûó õ1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaö1 ÷1°ÿ ø1ÄÜÃÓBÿ Óá5 âÒÎá5óA,Ýá5–`,ôá5 Ø‹â5†¸¦â5‰ä5â�ã�ã�ããâãíù9ûù9¥ç5â�ä�ä�ääâäíù9±Ñ ü‹ë 5<Žë5Âù1ú1û1ü1ý1þ1 ù1ïò ú1ûó û1Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaü1 ý1°ÿ þ1ÄÜÃÓBÿ  ë5 åÒ›ë5óA,ªë5–`,Áë5 ØØë5†¸óë5éí5å�æ�æ�ææåæíù9ûù9Ñð5å�ç�ç�ççåçíù9ûù9üêþ†5Œíþ5Âÿ1€2�2‚2 ÿ1ïò €2ûó �2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa‚2¸Ò Bÿ ‰ÿ5 èÒ„ÿ5óA,“ÿ5–`,ªÿ5™´Áÿ5üÌ�'5<Ï�5ÂÛ†Bÿ éÑ 4×�5d½ï2ü¤6Ÿ Provides a regex matcher that composes several other regex matchers automatically. This module is home to a meta [`Regex`], which provides a convenient high level API for executing regular expressions in linear time. # Comparison with the `regex` crate A meta `Regex` is the implementation used directly by the `regex` crate. Indeed, the `regex` crate API is essentially just a light wrapper over a meta `Regex`. This means that if you need the full flexibility offered by this API, then you should be able to switch to using this API directly without any changes in match semantics or syntax. However, there are some API level differences: * The `regex` crate API returns match objects that include references to the haystack itself, which in turn makes it easy to access the matching strings without having to slice the haystack yourself. In contrast, a meta `Regex` returns match objects that only have offsets in them. * At time of writing, a meta `Regex` doesn't have some of the convenience routines that the `regex` crate has, such as replacements. Note though that [`Captures::interpolate_string`](crate::util::captures::Captures::interpolate_string) will handle the replacement string interpolation for you. * A meta `Regex` supports the [`Input`](crate::Input) abstraction, which provides a way to configure a search in more ways than is supported by the `regex` crate. For example, [`Input::anchored`](crate::Input::anchored) can be used to run an anchored search, regardless of whether the pattern is itself anchored with a `^`. * A meta `Regex` supports multi-pattern searching everywhere. Indeed, every [`Match`](crate::Match) returned by the search APIs include a [`PatternID`](crate::PatternID) indicating which pattern matched. In the single pattern case, all matches correspond to [`PatternID::ZERO`](crate::PatternID::ZERO). In contrast, the `regex` crate has distinct `Regex` and a `RegexSet` APIs. The former only supports a single pattern, while the latter supports multiple patterns but cannot report the offsets of a match. * A meta `Regex` provides the explicit capability of bypassing its internal memory pool for automatically acquiring mutable scratch space required by its internal regex engines. Namely, a [`Cache`] can be explicitly provided to lower level routines such as [`Regex::search_with`]. ÁÓª „ªï2Ĥï2$Åï2öŸ­¹ÛÓê÷‚£ �®TÁ6É쓨<â6Ïîâ«,ë6¬ïëÄ|ò6�ðç4ƒ6·ñ¾¾\‹6…ò”¾,˜6ìóÒÅ,Ÿ6šô�Æ4®6£õ$®6Œº6¯ü®(6£¥”–…‡vxgiXZIK: Ì-öü¦¡LJ Ù)öýd hjY[,# LNÄ0 >+-|à ©„ÿ€�‚ƒ„ü”* üÙ J G If it is known which pattern ID caused this build error to occur, thenÁܨ  this method returns it.ÁÈ �üÐ J G Some errors are not associated with a particular pattern. However, anyÁüŸ G D errors that occur as part of parsing a pattern are guaranteed to beÁüë !  associated with a pattern ID.Á‘ �l™ ¯Ö.« �<³ þ×.ü¿1 . use regex_automata::{meta::Regex, PatternID};Áõ �üýI F let err = Regex::new_many(&["a", "b", r"\p{Foo}", "c"]).unwrap_err();ÁüË8 5 assert_eq!(Some(PatternID::must(2)), err.pattern());Á<ˆ þ×.<› ‹2 ‹2©„ܧBÿþ £ þ ÿ$¤ üâ) üÄI F If this error occurred because the regex exceeded the configured sizeÁü’J G limit before being built, then this returns the configured size limit.Áá �üéE B The limit returned is what was configured, and corresponds to theÁü³* ' maximum amount of heap usage in bytes.ÁTé Œ2 Œ2©„ØÚBÿþ ô þ €$õ ü‚: ü’J G If this error corresponds to a syntax error, then a reference to it isÁäá  returned by this method.Ád‰ �2 �2©„řǙș­É™Ê™àË™óG*¤�R{9  �2ÐÆ Bÿþ – þ �$— üÆ@ Ô ›†ëû©„Bÿþþ¸¡¾¾Ø ¬ºè ü‡@ • ›†̈©„Bÿþþœ£¾¾™ ¬º© üÈ? Ö ×°©„Bÿþþ „¬ºÚ üá% Ó‰|Ï ¼É ©„†‚†ü�> 4� Ž2 Ž2©„řǙș­É™Ê™àË™óG*¤�R{9  Ž2�Õ1Bÿ… — … †$˜ üó& ©„ˆ¥gˆü D £ �2�2‘2 �2©„ �2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‘2­àBÿ‡ § ‡ ˆ$¨ œ ® üÅ(% Ó‰|³( ¼­( ì…üï(& ì…‹¥g‹üœ)D Ÿ) •2–2—2 •2ì… –2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡—2­àBÿŠ £) Š ‹$¤) œ ª) üû*$ ì…�®�ü¦+' $©+ Û†ì…BÿŒŒ �merrÁ$®+ Äß. •‡�üþ.* Œ/ •‡BÿŽŽ×�üì/. Ó‰|Ú/ ¼Ô/ •‡üŸ0/ •‡’¥g’üÕ0D Ø0 ›2œ2�2 ›2•‡ œ2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�2­àBÿ‘ Ü0 ‘ ’$Ý0 œ ã0 üë1- ì…”®”üŸ2/ $¢2 •‡ì…Bÿ““ ”¬º§2 œ…9 ô‡–üŸ9: \­9 ô‡Bÿ•• –Ñ 4¹9 üŸ:) Ó‰|�: ¼‡: ô‡üÍ:* ô‡™¥g™üþ:D �; ¡2¢2£2 ¡2ô‡ ¢2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡£2­àBÿ˜ …; ˜ ™$†; œ Œ; ü“<( ì…›®›üÂ<* $Å< ô‡ì…Bÿšš ›¬ºÊ< ü–=( ô‡�®�üÅ=+ $È= Û†ô‡Bÿœœ �¸À:$Í= üÿ=# \ƒ6Ó� ¬Ö6Óª+”í6üÕ+6üÌ66<‡6ꧪ‹ÁTÙÚŸ¢áÁœå㟣áºLÿé,Ÿ¤—,ŠÑ,Ÿ¥ÛÀT‘Ì-Ÿ¦,¾ľz|hjVXBD-/ü·,ÏÓª+”¢,Ôœ,ÔÅ,¤2¥2¦2§2 ¤2ïò ¥2ûó ¦2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa§2û¢Bÿ ê,¯ÅÒå,óA,ˆ-–`,³-Þ¬LÊ-í0§�¨�¨�¨¨§¨íù9ûù9Û:§�©�©�©©§©‰ëUÿ±Ñ üçFÞÓª+”�FÔ—FtêFŸ¨2©2ª2«2¬2­2 ¨2ïò ©2ûó ª2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa«2 ¬2°ÿ ­2ÄÜÃÓBÿ ƒG ªÒþFóA,¡G–`,ÌG ØãG†¸�HƒJª�«�«�««ª«íù9ûù9…Mª�¬�¬�¬¬ª¬íù9ûù9\�6<”6êµ– 7Ð=­¯–­¯ü7…C­°“ó47¶­±ŸÃLS7ö­³Ó¿Ll7º-­´,7z|D7Z´!7J,>7´F7=¼^7-üˆf7¤–7®2¯2°2 ®2ñ‰ ¯2 °2‰ôřǙș­É™Ê™àË™óG*¤�R{9 …C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅñ”�þBÿ ¶7 µ†Ã$°7”œ$Æ7Œù7<�7<–7T�64¡6ê¿ÁÄÇÉÊËÍÎÏÑÕ×Ùˆð<¸8Ÿ¹»ClassÁ,Á8ë¹¼“óÈ8¶¹½HirKindÁ<Í8À¹¾Œ›8„¯8fNP<>$&üÔD8¼â8ê±2²2 ±2‰ô ²2ÈšBÿ ÿ8 ¿¤Oú8litÁ…8<À8¿�À�À�ÀÀ¿Àöô•§ü€ 58¤Ž 8ê³2 ³2‰ôBÿ ¨ 8 Á¤O£ 8,� 8Á�Â�Â�ÂÂÁÂ‚Ç ßØUÿñÇ ,« 8Á�Ã�Ã�ÃÃÁÃ‚Ç Uÿûù9üäa8äò8ê´2µ2 ´2‰ô µ2ôþ%Bÿ œ8 ĹR4”8÷ÉD¦8,ÿ8Ä�Å�Å�ÅÅÄÅ�Ø:Uÿ,ø8Ä�Æ�Æ�ÆÆÄÆéÛ:üÄo8üÇ8¹¶2·2 ¶2¿œ ·2ôþ%Bÿ ò8 Ç”œ$ì8 separatorÁLþ8÷ÉD”8T� 8Ç�È�È�ÈÈÇÈ•§UÿóŠ ëìíUnicodeÁîóïðBytesÁñóÞ$\®4¹ üë ,8´î 8¹¸2 ¸2‰ôBÿ Š!8 ɤO…!8üË!.8tÎ!8¹¹2 ¹2‰ôřǙș­É™Ê™àË™óG*¤�R{9  ¹2ºÞ:Bÿ â!8 ʤOÝ!8üÀ$C8ÔÃ$8¹º2»2 º2‰ô »2ºÞ:Bÿ ã$8 ˤOÞ$8·Ü:Lé$8,¹)8Ë�Ì�Ì�ÌÌËÌéÛ:¸Þ:üþ)#8L�*8¹¼2 ¼2‰ôîâ:Bÿ ”*8 ͤO�*8üˆ+<8¤‹+8¹½2¾2 ½2ºÞ: ¾2ºÞ:Bÿ ¦+8 ÎleftÁ$ +8rightÁ,®+8üŽ2M8ü‘28¹¿2À2 ¿2ºÞ: À2ôþ%Bÿ ¶28 ÏclsÁ±28÷ÉD¾28,ˆ38Ï�Ð�Ð�ÐÐÏÐ ÝÂUÿÂâ:üÆ3B8ôÉ38¹Á2Â2 Á2ºÞ: Â2ÈšBÿ í38 Ñéã:è38®Ö:õ38<Õ48Ñ�Ò�Ò�ÒÒÑÒöô �� ClassBytesÁžã�ãS¦ ïcÍF,,Ü58Ñ�Ó�Ó�ÓÓÑÓÒüUÿ ùùæðúã�ã ­øsÒÖXj$„68Ñ�Ô�Ô�ÔÔÑÔUÿÀè:üÄ648¤Ç68¹Ã2 Ã2‰ôBÿ á68 Õ¤OÜ68—»$ç68,´>8Õ�Ö�Ö�ÖÖÕÖéÛ:åÀüî>M8œñ>8¹Ä2 Ä2©ç:Bÿ Š?8 ×éã:…?8—»$ª?8<ì?8×�Ø�Ø�ØØ×Ø ¯¯ClassBytesRangeÁ°‚ã±’ãdÏLlD»kUÿåÀü¥@]8´¨@8¹Å2 Å2Äè:Bÿ É@8 Ùéã:Ä@8ËÆ#ï@8<¡A8Ù�Ú�Ú�ÚÚÙÚ ‹‹ClassUnicodeRangeÁŒ‚ã�’ã&¶2‘ÂUÿ L©6,­6ꉊŒìñö÷ý…�𣬷ÏY4ÍÛÝ RefUnwindSafeÁl,–šÛß UnwindSafeÁT;•šÛà¸Ù _ŸÛâKj„KÛã–oÐ=Ûä–Ûäüy…CÛå™O˜ Ûç¤O$§ãÛé“ó­¶Ûê�®TßÉÛíÝn$þ‚ÛïÝpD„³ÛðÒyD—£ Ûñ±$¼± ÛóŒÞlÂ÷!Ûô”œãDñ±&Û÷´…LûÁ&Ûø�$�«ÛùŒ–\£­(ÛúÖÞ$¿­Ûü­àLÅÄÛýé›Läü(Ûþñ�\„ž)Û€¦¡L‘Ù)Û�áºL®é,Ûƒ—,¹Ñ,Û„ÕÛ,Àú,Û…Ó¿LǺ-Û†̼TÒ‹-Û‡ú¹$ÞÚ,Ûˆ$tÆü%¬¯“–,PTX‰Ld|knDtMd„@Cü„ 7¡(+,»Œ»ŒØ$ü»@Dó  úýü»~ðD±áäü»Ÿü»³ÙÜÉ̺½Œ�®ü»�¡¤‘”¤Ù…ü»Æx{hkü»ð^aOR?B/2"téLîÛ­­®ÖÞ±ó¬ rÚµím¤SËŽŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#…#�#ËŽ–š•šýÆÿ �þ¼ÎtÓÛÄ‹‹ÄÄÅ­àÉó¬ (! y?V¾�ÄËŽ×÷:℞\£Û×÷:Tõ_ü©_KH Convenience constructors for a `Regex` using the default configuration.ÁÞˆŽ�‘’üŸe6ü†`C@ Builds a `Regex` from a single pattern string using the defaultÁ”Î`®ï4å`�üí`KH If there was a problem parsing the pattern or a problem turning it intoÁü½a/, a regex matcher, then an error is returned.Áña�üùaKH If you want to change the configuration of a `Regex`, use a [`Builder`]Á´Éb with a [`Config`].Áäb�lìb¯Ö.þb�<†cþ×.ü’c-* use regex_automata::{meta::Regex, Match};ÁÄc�üÌc(% let re = Regex::new(r"(?Rm)^foo$")?;Áäùc let hay = "\r\nfoo\r\n";Áüšd96 assert_eq!(Some(Match::must(0, 2..5)), re.find(hay));ÁØd�üàd.áß.<“eþ×.¦eÌ2 Ì2„ã Bÿ� ³e� ŽîN<ªeü¢�Zü‹f@= Builds a `Regex` from many pattern strings using the defaultÁ”Ðf®ï4çf�üïfKH If there was a problem parsing any of the patterns or a problem turningÁü¿g96 them into a regex matcher, then an error is returned.Áýg�ü…hKÉû:´Õh�ü:ðh�Üøh # Example: simple lexerÁ˜i�ü iJG This simplistic example leverages the multi-pattern support to build aÁüïiJG simple little lexer. The pattern ID in the match tells you which regexÁü¾jIF matched, which in turn might be used to map back to the "type" of theÁüŒk  token returned by the lexer.Á±k�<¹kþ×.üÅk-ïü:÷k�üÿk let re = Regex::new_many(&[Á¼£l r"[[:space:]]",Áü¿l$! r"[A-Za-z0-9][A-Za-z0-9_]+",Átèl r"->",Álûl r".",ÁD�m¯ƒ1üšmJG let haystack = "fn is_boss(bruce: i32, springsteen: String) -> bool;";Áüém?< let matches: Vec = re.find_iter(haystack).collect();Áì­nÑ¥9üÏn'$ Match::must(1, 0..2), // 'fn'Áüûn&# Match::must(0, 2..3), // ' 'Áü¦o,) Match::must(1, 3..10), // 'is_boss'Áü×o&# Match::must(3, 10..11), // '('Áü‚p*' Match::must(1, 11..16), // 'bruce'Áü±p&# Match::must(3, 16..17), // ':'ÁüÜp&# Match::must(0, 17..18), // ' 'Áü‡q(% Match::must(1, 18..21), // 'i32'Áü´q&# Match::must(3, 21..22), // ','Áüßq&# Match::must(0, 22..23), // ' 'ÁüŠr0- Match::must(1, 23..34), // 'springsteen'Áü¿r&# Match::must(3, 34..35), // ':'Áüêr&# Match::must(0, 35..36), // ' 'Áü•s+( Match::must(1, 36..42), // 'String'ÁüÅs&# Match::must(3, 42..43), // ')'Áüðs&# Match::must(0, 43..44), // ' 'Áü›t'$ Match::must(2, 44..46), // '->'ÁüÇt&# Match::must(0, 46..47), // ' 'Áüòt)& Match::must(1, 47..51), // 'bool'Áü u&# Match::must(3, 51..52), // ';'Á<Ëuí¦9×u�üßu.áß.<’vþ×.žv�ü¦v;8 One can write a lexer like the above using a regex likeÁüævEB `(?P[[:space:]])|(?P[A-Za-z0-9][A-Za-z0-9_]+)|...`,Áü°wGD but then you need to ask whether capture group matched to determineÁüüwFC which branch in the regex matched, and thus, which token the matchÁüÇxJG corresponds to. In contrast, the above example includes the pattern IDÁü–y?< in the match. There's no need to use capture groups at all.ÁÚy�üây74 # Example: finding the pattern that caused an errorÁžz�ü¦zC@ When a syntax error occurs, it is possible to ask which patternÁäîz caused the syntax error.Á�{�<—{þ×.ü£{1…±:Ù{�üá{I̱:ü¯|8Ÿ²:<ì|þ×.ø|�ü€}%" # Example: zero patterns is validÁª}�ü²}EB Building a regex with zero patterns results in a regex that neverÁüü}GD matches anything. Because this routine is generic, passing an emptyÁüÈ~GD slice usually requires a turbo-fish (or something else to help typeÁ|” inference).Á¨�<°þ×.ü¼;8 use regex_automata::{meta::Regex, util::syntax, Match};Áü�ü„€+( let re = Regex::new_many::<&str>(&[])?;Áü´€" assert_eq!(None, re.find(""));ÁÛ€�üã€.áß.<–�þ×.D©�Í2 Í2©ò„ã Bÿ�Œ�� Ô��¹Ž/ ²�ÊŽ/Tµ� �µ“¨ f1 "Ì©‰ü¸‚1. Return a default configuration for a `Regex`.Áî‚�üö‚KÆ´2üƃ85 type when customizing the construction of a `Regex`.Áƒ„�ü‹„'$ # Example: lower the NFA size limitÁ·„�ü¿„JG In some cases, the default size limit might be too big. The size limitÁüŽ…KH can be lowered, which will prevent large regex patterns from compiling.ÁÞ…�<æ…þ×.üò…=îõ.ü´†$! use regex_automata::meta::Regex;Á݆�üå†! let result = Regex::builder()Áü‹‡FC .configure(Regex::config().nfa_size_limit(Some(20 * (1<<10))))ÁüÖ‡IF // Not even 20KB is enough to build a single large Unicode class!Á¼¤ˆ .build(r"\pL");ÁìÀˆ assert!(result.is_err());Áâˆ�üêˆ.áß.<�‰þ×.4°‰Å�Bÿ�� ‘ÜŸ�üæ‰C›¿2®Š�ü¶Š@ÔÒ/üûŠ%ŸÓ/¥‹�ü­‹)& # Example: change the line terminatorÁÛ‹�üã‹JG This example shows how to enable multi-line mode by default and changeÁü²Œ(% the line terminator to the NUL byte:Áߌ�<çŒþ×.üóŒ;Û˜;³��ì»�úú8üÝ�74 .syntax(syntax::Config::new().multi_line(true))Áü™Ž<9 .configure(Regex::config().line_terminator(b'\x00'))ÁÔÚŽ .build(r"^foo$")?;ÁäùŽ let hay = "\x00foo\x00";Áüš�96 assert_eq!(Some(Match::must(0, 1..4)), re.find(hay));ÁØ��üà�.áß.<“�þ×.<¦�Ó‘Bÿ��âá T©‘üÝ�KH High level convenience routines for using a regex to search a haystack.ÁÞˆ”—š�¡¥©üô¦@üº‘Fð‰9…’�ü�’IÌŠ9üÛ’HE will never lead to a different result. (Consider how this might makeÁü¨“HE a difference given the regex `a+` on the haystack `aaaaaaaaaaaaaaa`.Áüõ“JG This routine _may_ stop after it sees the first `a`, but routines likeÁüÄ”HE `find` need to continue searching because `+` is greedy by default.)Á‘•�l™•¯Ö.«•�<³•þ×.ü¿•$‚Ÿ;è•�üð•)©ï8ž–�ü¦–(% assert!(re.is_match("foo12345bar"));ÁüÓ–$! assert!(!re.is_match("foobar"));Áü–�ü„—.áß.<·—þ×.×�üË—+Ÿ§0û—�üƒ˜GD `is_match` is guaranteed to return `true` whenever `find` returns aÁüϘEB match. This includes searches that are executed entirely within aÁt™™‡©0¬™�<´™þ×.üÀ™-* use regex_automata::{meta::Regex, Input};Áò™�üú™ let re = Regex::new("a*")?;Ážš�ü¦šFC // This doesn't match because the default configuration bans emptyÁüñš*' // matches from splitting a codepoint.Áü ›85 assert!(!re.is_match(Input::new("☃").span(1..2)));ÁüÝ›<9 assert_eq!(None, re.find(Input::new("☃").span(1..2)));Ážœ�ü¦œ.áß.<Ùœþ×.åœ�üíœE«0ü·�I’¬0ô…žå¬0¨ž�<°žþ×.ü¼ž41 use regex_automata::{meta::Regex, Input, Match};Áõž�ìýžúú8üŸŸ52 .configure(Regex::config().utf8_empty(false))Á´ÙŸÌ®0ôŸ�üüŸ74 assert!(re.is_match(Input::new("☃").span(1..2)));Á|¸ »ç/üÌ # Some(Match::must(0, 1..1)),Áüô .+ re.find(Input::new("☃").span(1..2)),Á4§¡×è/²¡�üº¡.áß.<í¡þ×.ù¡�ü�¢JG A similar idea applies when using line anchors with CRLF mode enabled,ÁüТ@= which prevents them from matching between a `\r` and a `\n`.Á•£�<�£þ×.ü©£4÷³;â£�üê£%" let re = Regex::new(r"(?Rm:$)")?;Áü”¤96 assert!(!re.is_match(Input::new("\r\n").span(1..1)));ÁüÒ¤:7 // A regular line anchor, which only considers \n as aÁü‘¥# // line terminator, will match.Áü¹¥$! let re = Regex::new(r"(?m:$)")?;Áüâ¥85 assert!(re.is_match(Input::new("\r\n").span(1..1)));ÁŸ¦�ü§¦.áß.<Ú¦þ×.Dû¦Î2 Î2Þˆ¯¢Bÿ“¸•…––• œ§“Ú±0 ˆ§ì±0|‹§ ”¸¯¢$�§–`�5„§46ü¼­EüªªIF Executes a leftmost search and returns the first match that is found,Á”øª if one exists.Á�«�l—«¯Ö.©«�<±«þ×.ü½«-ïü:ï«�ü÷«&«—9ü¢¬@= assert_eq!(Some(Match::must(0, 0..8)), re.find("foo12345"));Áç¬�üï¬.áß.<¢­þ×.$íÏ2 Ï2Þˆ¯¢�´Bÿ“¸˜…™˜™ à­“Ú±0 Ì­ì±0|Ï­ —¸¯¢$á­–`“7È­46üù´lü²®HE Executes a leftmost forward search and writes the spans of capturingÁüÿ®FC groups that participated in a match into the provided [`Captures`]ÁüʯKH value. If no match was found, then [`Captures::is_match`] is guaranteedÁ´š° to return `false`.Áµ°�l½°¯Ö.ϰ�<×°þ×.üã°,) use regex_automata::{meta::Regex, Span};Á”±�üœ±@= let re = Regex::new(r"^([0-9]{4})-([0-9]{2})-([0-9]{2})$")?;Áüá±(•Ï/޲�ü–²)& re.captures("2010-03-14", &mut caps);ÁìIJ assert!(caps.is_match());Áüæ²:7 assert_eq!(Some(Span::from(0..4)), caps.get_group(1));Áü¥³:7 assert_eq!(Some(Span::from(5..7)), caps.get_group(2));Áüä³;8 assert_eq!(Some(Span::from(8..10)), caps.get_group(3));Á¤´�ü¬´.áß.<ß´þ×.D€µÐ2Ñ2 Ð2Þˆ¯¢ Ñ2˜ÛBÿ“¸›…œ›œ ªµ“Ú±0 �µì±0|�µ š¸¯¢$«µ–`“8ɾž8‰µ=?ü³»nü¥¶DA Returns an iterator over all non-overlapping leftmost matches inÁüî¶GD the given haystack. If no match exists, then the iterator yields noÁlº· elements.ÁÌ·�lÔ·¯Ö.æ·�<î·þ×.üú·-ïü:¬¸�ü´¸&«—9ü߸'$ let haystack = "foo1 foo12 foo123";Áü‹¹?ƒ‡;ìϹÑ¥9ìñ¹÷¥9ô“º�¦9ü¶ºŦ9<Úºí¦9üæº.áß.<™»þ×.Lº»ž žÞˆ¯¢……¾¾ˆé¾Û‰óAÛŠÛËÛ@ZN·¼�¢mž¸Bÿ“¸Ÿ…  ŸÄ»“Ú±0 Ì»ì±0|Ï» �¸¯¢$í»–`ß:;=È»8:ü�Çvü´½IF Returns an iterator over all non-overlapping `Captures` values. If noÁü‚¾74 match exists, then the iterator yields no elements.Á¾¾�üƾIF This yields the same matches as [`Regex::find_iter`], but it includesÁü”¿EB the spans of all capturing groups that participate in each match.ÁÞ¿�üæ¿JG **Tip:** See [`util::iter::Searcher`](crate::util::iter::Searcher) forÁüµÀJG how to correctly iterate over all matches in a haystack while avoidingÁü„ÁJG the creation of a new `Captures` value for every match. (Which you areÁüÓÁ%" forced to do with an `Iterator`.)ÁýÁ�l…¯Ö.—Â�<ŸÂþ×.ü«Â,úÃ;ÜÂ�üäÂ30 let re = Regex::new("foo(?P[0-9]+)")?;ÁœÃ�ü¤Ã'ßË;üÐà let matches: Vec = reÁüôà  .captures_iter(haystack)Áü™ÄKH // The unwrap is OK since 'numbers' matches if the pattern matches.ÁüéÄ?< .map(|caps| caps.get_group_by_name("numbers").unwrap())Áœ­Å .collect();ÁìÅÅÑ¥9ÌçÅ Span::from(3..4),ÁÔ…Æ Span::from(8..10),ÁܤÆ Span::from(14..17),Á<ÄÆí¦9üÐÆ.áß.<ƒÇþ×.l¤Ç¢ ¢Þˆ¯¢��ëÄ’é¾Û“óAÛ”ɾÛ•ÛËÛac ›‹ýq¢¸Bÿ“¸£…¤¤£²Ç“Ú±0 ºÇì±0|½Ç ¡¸¯¢$ÛÇ–`Ù=;=¶Ç8:üˆõdüÛÉFC Returns an iterator of spans of the haystack given, delimited by aÁü¦ÊKH match of the regex. Namely, each element of the iterator corresponds toÁüöÊJG a part of the haystack that *isn't* matched by the regular expression.ÁÅË�lÍ˯Ö.ßË�üçËGD To split a string delimited by arbitrary amounts of spaces or tabs:Á³Ì�<»Ìþ×.üÇÌ$‚Ÿ;ðÌ�üøÌ$! let re = Regex::new(r"[ \t]+")?;Áü¡Í" let hay = "a b \t c\td e";ÁüÈÍKH let fields: Vec<&str> = re.split(hay).map(|span| &hay[span]).collect();Áü˜Î63 assert_eq!(fields, vec!["a", "b", "c", "d", "e"]);ÁÓÎ�üÛÎ.áß.<ŽÏþ×.šÏ�Ì¢Ï # Example: more casesÁÀÏ�„ÈÏ Basic usage:ÁÝÏ�<åÏþ×.üñÏ$‚Ÿ;šÐ�ü¢Ð let re = Regex::new(r" ")?;ÁüÆÐ'$ let hay = "Mary had a little lamb";ÁüòÐDA let got: Vec<&str> = re.split(hay).map(|sp| &hay[sp]).collect();Áü»Ñ@= assert_eq!(got, vec!["Mary", "had", "a", "little", "lamb"]);Á€Ò�üˆÒ let re = Regex::new(r"X")?;ÁŒ¬Ò let hay = "";ÁüÂÒD¿â;ô‹Ó assert_eq!(got, vec![""]);Á®Ó�ü¶Óæã;üÚÓ$! let hay = "lionXXtigerXleopard";ÁüƒÔD¿â;üÌÔ:7 assert_eq!(got, vec!["lion", "", "tiger", "leopard"]);Á‹Õ�ü“Õ  let re = Regex::new(r"::")?;Áü¸Õ%" let hay = "lion::tiger::leopard";ÁüâÕD¿â;ü«Ö63 assert_eq!(got, vec!["lion", "tiger", "leopard"]);ÁæÖ�üîÖ.áß.<¡×þ×.­×�üµ×GD If a haystack contains multiple contiguous matches, you will end upÁü�Ø-* with empty spans yielded by the iterator:Á³Ø�<»Øþ×.üÇØ$‚Ÿ;ðØ�üøØæã;ܜ٠let hay = "XXXXaXXbXc";Áü¼ÙD¿â;ü…Ú=: assert_eq!(got, vec!["", "", "", "", "a", "", "b", "c"]);ÁÇÚ�üÏÚ let re = Regex::new(r"/")?;Á´óÚ let hay = "(///)";ÁüŽÛD¿â;ü×Û,) assert_eq!(got, vec!["(", "", "", ")"]);ÁˆÜ�ü�Ü.áß.<ÃÜþ×.ÏÜ�ü×ÜHE Separators at the start or end of a haystack are neighbored by emptyÁT¤Ý spans.Á³Ý�<»Ýþ×.üÇÝ$‚Ÿ;ðÝ�üøÝ let re = Regex::new(r"0")?;Á¤œÞ let hay = "010";ÁüµÞD¿â;üþÞ'$ assert_eq!(got, vec!["", "1", ""]);Áªß�ü²ß.áß.<åßþ×.ñß�üùßFC When the empty string is used as a regex, it splits at every validÁüÄàJG UTF-8 boundary by default (which includes the beginning and end of theÁt“á haystack):Á¦á�<®áþ×.üºá$‚Ÿ;ãá�ôëá let re = Regex::new(r"")?;Á¬Žâ let hay = "rust";Áü¨âD¿â;üñâ63 assert_eq!(got, vec!["", "r", "u", "s", "t", ""]);Á¬ã�ü´ã>; // Splitting by an empty string is UTF-8 aware by default!Áô÷ãâð;¤šä let hay = "☃";Áü³äD¿â;üüä)& assert_eq!(got, vec!["", "☃", ""]);Áªå�ü²å.áß.<ååþ×.ñå�üùåJG But note that UTF-8 mode for empty strings can be disabled, which willÁüÈæ@= then result in a match at every byte offset in the haystack,Áü�ç,) including between every UTF-8 code unit.Á¾ç�<Æçþ×.üÒç$‚Ÿ;ûç�ìƒèúú8ü¥è5Ñ´;¬ßèå¦3üùè let hay = "☃".as_bytes();Áü�éEB let got: Vec<&[u8]> = re.split(hay).map(|sp| &hay[sp]).collect();ÁÌçé assert_eq!(got, vec![Áü…êIF // Writing byte string slices is just brutal. The problem is thatÁüÓê52 // b"foo" has type &[u8; 3] instead of &[u8].Áü�ëIF &[][..], &[b'\xE2'][..], &[b'\x98'][..], &[b'\x83'][..], &[][..],Á<Ûëí¦9çë�üïë.áß.<¢ìþ×.®ì�ü¶ìJG Contiguous separators (commonly shows up with whitespace), can lead toÁü…íDA possibly surprising behavior. For example, this code is correct:ÁÎí�<Öíþ×.üâí$‚Ÿ;‹î�ü“îãá;Ü·î let hay = " a b c";Áü×îD¿â;ü ï=ôé;âï�üêï.áß.<�ðþ×.©ð�ü±ðKH It does *not* give you `["a", "b", "c"]`. For that behavior, you'd wantÁü�ñ)& to match contiguous space characters:Á¯ñ�<·ñþ×.üÃñ$‚Ÿ;ìñ�üôñ  let re = Regex::new(r" +")?;ÁÜ™òâû;ü¹òD¿â;ü‚óEB // N.B. This does still include a leading empty span because ' +'ÁüÌó0- // matches at the beginning of the haystack.Áü�ô-* assert_eq!(got, vec!["", "a", "b", "c"]);Á³ô�ü»ô.áß.<îôþ×.,�õ¦ ¦Þˆ¯¢ššÒÅ�åËÛž¯Û b…a®¦¸Bÿ“¸§…¨§¨•õ“Ú±0 �õì±0| õ ¥¸¯¢$¾õ–`˜?;=™õ8:üŒŠ|ü³öGD Returns an iterator of at most `limit` spans of the haystack given,ÁüÿöGD delimited by a match of the regex. (A `limit` of `0` will return noÁüË÷FC spans.) Namely, each element of the iterator corresponds to a partÁü–øGD of the haystack that *isn't* matched by the regular expression. TheÁüâøKH remainder of the haystack that is not split will be the last element inÁŒ²ù the iterator.ÁÈù�lÐù¯Ö.âù�üêù-* Get the first two words in some haystack:Áœú�<¤úþ×.ü°ú=îõ.üòú$‚Ÿ;›û�ü£û)& let re = Regex::new(r"\W+").unwrap();ÁüÑû" let hay = "Hey! How are you?";ÁÜøû let fields: Vec<&str> =Áü˜ü;8 re.splitn(hay, 3).map(|span| &hay[span]).collect();ÁüØü74 assert_eq!(fields, vec!["Hey", "How", "are you?"]);Á”ý�üœý.áß.<Ïýþ×.Ûý�Ôãý # Examples: more casesÁ‚þ�<Šþþ×.ü–þ$‚Ÿ;¿þ�üÇþãá;üëþ'�â;ü—ÿHE let got: Vec<&str> = re.splitn(hay, 3).map(|sp| &hay[sp]).collect();Áüäÿ:7 assert_eq!(got, vec!["Mary", "had", "a little lamb"]);Á£€�ü«€æã;ŒÏ€�ä;üå€HìŠ<ô²�¹ä;Õ��üÝ�æã;ü�‚$þä;üª‚HìŠ<ü÷‚74 assert_eq!(got, vec!["lion", "", "tigerXleopard"]);Á³ƒ�ü»ƒ Žæ;üàƒ%¹æ;üŠ„HE let got: Vec<&str> = re.splitn(hay, 2).map(|sp| &hay[sp]).collect();Áüׄ41 assert_eq!(got, vec!["lion", "tiger::leopard"]);Á�…�ü˜…æã;ļ… let hay = "abcXdef";ÁüÙ…HE let got: Vec<&str> = re.splitn(hay, 1).map(|sp| &hay[sp]).collect();Áü¦†%" assert_eq!(got, vec!["abcXdef"]);ÁІ�ü؆æã;¼ü† let hay = "abcdef";Áü˜‡Hò�<üå‡$! assert_eq!(got, vec!["abcdef"]);ÁŽˆ�ü–ˆæã;ĺˆŸ�<ü׈HE let got: Vec<&str> = re.splitn(hay, 0).map(|sp| &hay[sp]).collect();Á䤉 assert!(got.is_empty());Áʼn�ü͉.áß.<€Šþ×.4“Šª ªÞˆ¯¢££�Ʀ»ÆÛ§ª¯Û® »ää-窸Bÿ“¸«…¬¬«šŠ“Ú±0 ¢Šì±0|¥Š ©¸¯¢$Ê–`¬@ª¯¶@DFžŠACT€ŒüÈ‹74 Lower level search routines that give more control.ÁÞˆ®¯°±²ü ‘8ü‘ŒG”“9üÝŒ$å“9†��üŽ�HE This is like [`Regex::find`] but, but it accepts a concrete `&Input`ÁüÛ�  instead of an `Into`.Á€Ž�lˆŽ¯Ö.šŽ�<¢Žþ×.ü®Ž4÷³;çŽ�üïŽ)& let re = Regex::new(r"Samwise|Sam")?;ÁÜ�� let input = Input::new(Áü½�96 "one of the chief characters, Samwise the Brave",Á4û�×è/ü†�@= assert_eq!(Some(Match::must(0, 29..36)), re.search(&input));ÁË��üÓ�.áß.<†‘þ×.4§‘Ò2Ó2Ô2 Ò2Þˆ Ó2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÔ2�´Bÿ­ ®‘­¸ï $¯‘–`vDüî¦Aü€�JG Returns the end offset of the leftmost match. If no match exists, thenÁ¼Ï�©Ý3ë��üó�KH This is distinct from [`Regex::search`] in that it only returns the endÁüÞHE of a match and not the start of the match. Depending on a variety ofÁü�ŸIF implementation details, this _may_ permit the regex engine to do lessÁüÞŸJG overall work. For example, if a DFA is being used to execute a search,Áü­ HE then the start of a match usually requires running a separate DFA inÁüú JG reverse to the find the start of a match. If one only needs the end ofÁüÉ¡HE a match, then the separate reverse scan to find the start of a matchÁü–¢JG can be skipped. (Note that the reverse scan is avoided even when usingÁüå¢JG `Regex::search` when possible, for example, in the case of an anchoredÁd´£ search.)ÁÅ£�lÍ£¯Ö.ߣ�<ç£þ×.üó£85 use regex_automata::{meta::Regex, Input, HalfMatch};Á°¤�ü¸¤)õ—<Üæ¤¨˜<ü†¥9Θ<4Ä¥×è/üÏ¥EB assert_eq!(Some(HalfMatch::must(0, 36)), re.search_half(&input));Á™¦�ü¡¦.áß.<Ô¦þ×.\õ¦Õ2Ö2×2 Õ2Þˆ Ö2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa×2ÄÜBÿ­ �§­ ¯$‚§–`,Iü‘ÄEü­ªHªÁ;üúªFýÁ;üÅ«KÎÂ;´•¬£Ã;°¬�ü¸¬HE This is like [`Regex::captures`], but it accepts a concrete `&Input`Áü…­ ø–<ª­�ü²­&†Ù0Ý­�üå­HE This example shows how to build a multi-pattern `Regex` that permitsÁü²®$! searching for specific patterns.ÁÛ®�<ã®þ×.ÌﮎØ.¤�¯ meta::Regex,Áü¦¯*' Anchored, Match, PatternID, Input,Á4Õ¯÷Ø.à¯�üè¯DA let re = Regex::new_many(&["[a-z0-9]{6}", "[a-z][a-z0-9]{5}"])?;Áü±°(•Ï/äÞ°–€3ÿ°�ü‡±CÊ€3üϱK˜�3üŸ²Gî�3„벿‚3ü€³.+ let expected = Some(Match::must(0, 0..6));Áü³³96 re.search_captures(&Input::new(haystack), &mut caps);Áüñ³+Þ½/¡´�ü©´Jÿƒ3üø´"Ô„3üŸµ.+ let expected = Some(Match::must(1, 0..6));ÁüÒµ$»…3üûµ9ê…3ü¹¶*' re.search_captures(&input, &mut caps);Áüè¶+Þ½/˜·�ü ·.áß.<Ó·þ×.ß·�üç·0šä0œ¸�ü¤¸Gâä0üð¸;´å0°¹�<¸¹þ×.üĹ=îõ.ü†º41 use regex_automata::{meta::Regex, Match, Input};Á¿º�üǺ*' let re = Regex::new(r"\b[0-9]{3}\b")?;Áüöº(•Ï/ü£»òè0Ç»�üÏ»E©é0ü™¼Fùé0üä¼IÊê0ü²½Ežë0tü½íë0ü�¾.†ì0ü¾,) let input = Input::new(&haystack[3..6]);Áüó¾*ž®<ü¢¿+Þ½/Ò¿�üÚ¿K¹í0üªÀH�î0ü÷ÀFâî0üÂÁC³ï0Ċ€ð0ü§Â1. let input = Input::new(haystack).range(3..6);ÁüÝÂ*ž®<üŒÃ+Þ½/¼Ã�üÄÃ.áß.<÷Ãþ×.|˜ÄØ2Ù2Ú2Û2 Ø2Þˆ Ù2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÚ2 Û2˜ÛBÿ­ ¨Ä­¯ñ $©Ä–`žKɾ©KüÒÚ„üáÅHªÁ;ü®ÆFC groups that participated in a match into the provided `slots`, andÁüùÆKH returns the matching pattern ID. The contents of the slots for patternsÁüÉÇKH other than the matching pattern are unspecified. If no match was found,Áü™ÈGD then `None` is returned and the contents of `slots` is unspecified.ÁåÈ�üíÈDA This is like [`Regex::search`], but it accepts a raw slots sliceÁü¶ÉGÜö0ü‚Ê0®÷0·Ê�ü¿ÊKö÷0ü�ËFÌø0üÚËK�ù0üªÌ6óù0åÌ�üíÌCÁú0üµÍJG * A slice with [`pattern_len() * 2`](Regex::pattern_len) slots, if youÁü„ÎFC only care about the overall match spans for each matching pattern.Á”ÏÎŽû0üæÎKèü0ü¶ÏF¾ý0d�Ðûœ/’Ð�lšÐ¯Ö.¬Ð�ü´ÐAþÿ0üúÐJÊ€1üÉÑ)Ÿ�1÷Ñ�<ÿÑþ×.ü‹Ò=îõ.üÍÒ85 use regex_automata::{meta::Regex, PatternID, Input};ÁŠÓ�ü’Óþ„;„¶Ó r"\pL+",Á|ËÓ r"\d+",ÁDßÓ¯ƒ1üìÓ%" let input = Input::new("!@#123");Á–Ô�üžÔD£„1üçÔGò„1ä³ÕÃ…1ôÔÕé…1ü÷Õ2/ let pid = re.search_slots(&input, &mut slots);Áü®Ö.à†1áÖ�üéÖK¦‡1ü¹×Iü‡1¤‡Øψ1ü Ø1îˆ1üÖØ"ª‰1üýØ<9 assert_eq!(Some(3), slots[slot_start].map(|s| s.get()));Áü¾Ù:7 assert_eq!(Some(6), slots[slot_end].map(|s| s.get()));ÁýÙ�ü…Ú.áß.<¸Úþ×.dÙÚÜ2Ý2Þ2ß2 Ü2Þˆ Ý2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÞ2 ß2ü¦ܧBÿ­ ïÚ­ü– $ðÚ–`µO©&ÀOü¡ïrüÜÞFµð3ü§ßE†ñ3üñßDA position and this `Regex` was configured with [`MatchKind::All`]ÁüºàGD semantics, then all matching patterns are written to the given set.Á†á�üŽáKH Unless all of the patterns in this `Regex` are anchored, then generallyÁüÞá1. speaking, this will scan the entire haystack.Á”â�üœâI™ô3üêâGíô3ü¶ãH¿õ3üƒäF’ö3„Îäâö3ãä�üëäDŠ÷3ü´åIÙ÷3d‚æ¬ø3“æ�l›æ¯Ö.­æ�üµæGþú3ü�çIÐû3üÏçIF It is important that we configure the `Regex` with [`MatchKind::All`]Áü�èEB semantics here, or else overlapping matches will not be reported.Áçè�<ïèþ×.üûè=îõ.ü½éDA use regex_automata::{meta::Regex, Input, MatchKind, PatternSet};Á†ê�¬Žê´ý3ü¨êFÔý34óêó°3ìþêúú8ü ë>; .configure(Regex::config().match_kind(MatchKind::All))ÁüãëÐþ3‡ì�ü�ì%–ÿ3ü¹ì74 let mut patset = PatternSet::new(re.pattern_len());Áüõì63 re.which_overlapping_matches(&input, &mut patset);Áü°í'Ü€4üÜíHŽ�4ô©î±Ä2Ìî�üÔî.áß.<‡ïþ×.̨ïà2á2â2ã2 à2Þˆ á2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaâ2 ã2¡£Bÿ­ Ëï­ ²$Ìï–`ÒS˜¢ ÝST�ôüŽóNK Lower level search routines that give more control, and require the callerÁüÝó/, to provide an explicit [`Cache`] parameter.ÁÞˆ´µ¶·¸ü�ýoüžô>; This is like [`Regex::search`], but requires the caller toÁüáô  explicitly pass a [`Cache`].Á†õ�üŽõ$! # Why pass a `Cache` explicitly?Á·õ�ü¿õJG Passing a `Cache` explicitly will bypass the use of an internal memoryÁüŽöGD pool used by `Regex` to get a `Cache` for a search. The use of thisÁüÚöIF pool can be slower in some cases when a `Regex` is used from multipleÁü¨÷HE threads simultaneously. Typically, performance only becomes an issueÁüõ÷EB when there is heavy contention, which in turn usually only occursÁü¿øHE when each thread's primary unit of work is a regex search on a smallÁlŒù haystack.Ážù�l¦ù¯Ö.¸ù�<Àùþ×.üÌù4÷³;…ú�ü�ú)õ—<ü»ú&äÎ/Üæú¨˜<ü†û9Θ<4Äû×è/|Ïû»ç/üãû%" Some(Match::must(0, 29..36)),Áü�ü+( re.search_with(&mut cache, &input),Á4½ü×è/Èü�üÐü.áß.<ƒýþ×.\¤ýä2å2æ2ç2 ä2Þˆ å2ËŽ æ2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaç2�´Bÿ³ ¹ý³Ö�$ºýóAW–`'Wü߈xüÒÿC@ This is like [`Regex::search_half`], but requires the caller toÁüš€ äÑ<¿€�üÇ€$œÒ<ð€�üø€JØÒ<üÇ�G­Ó<ü“‚IÿÓ<üá‚HÓÔ<ü®ƒE¦Õ<üøƒHöÕ<lÅ„ÈÖ<ׄ�lß„¯Ö.ñ„�<ù„þ×.ü……8™£<Â…�üÊ…)õ—<üø…&äÎ/Ü£†¨˜<üÆ9Θ<4�‡×è/|Œ‡»ç/ü ‡%" Some(HalfMatch::must(0, 36)),Áüʇ0- re.search_half_with(&mut cache, &input),Á4ÿ‡×è/Šˆ�ü’ˆ.áß.<ňþ×.„æˆè2é2ê2ë2 è2Þˆ é2ËŽ ê2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaë2ÄÜBÿ³ €‰³ª‰$�‰óAZ–`Züš¨„ü¢‹GD This is like [`Regex::search_captures`], but requires the caller toÁüî‹ äÑ<“Œ�ü›Œ$œÒ<ÄŒ�üÌŒJØÒ<ü›�G­Ó<üç�IÿÓ<üµŽHÓÔ<ü‚�E¦Õ<üÌ�HöÕ<l™�ÈÖ<«��ü³�&†Ù0Þ��üæ�Hè<ü³‘$–©<Ü‘�<ä‘þ×.Ìð‘ŽØ.¤Ž’í©<ü§’*Œª<4Ö’÷Ø.á’�üé’Dܪ<ü²“J¶Ú.ä�”–€3¢”�üª”CÊ€3üò”K˜�3ü•Gî�3„Ž–¿‚3ü£–.�¬<üÖ–JG re.search_captures_with(&mut cache, &Input::new(haystack), &mut caps);Áü¥—+Þ½/Õ—�üÝ—Jÿƒ3ü¬˜"Ô„3üÓ˜.Ç­<ü†™$»…3ü¯™9ê…3üí™;8 re.search_captures_with(&mut cache, &input, &mut caps);Áü­š+Þ½/Ýš�üåš.áß.<˜›þ×.¤›�ü¬›0šä0á›�üé›Gâä0üµœ;´å0õœ�<ýœþ×.ü‰�=îõ.üË�4ý¯<„ž�üŒž*ɰ<ü»žJ¶Ú.üŠŸòè0®Ÿ�ü¶ŸE©é0ü€ Fùé0üË IÊê0ü™¡Ežë0tã¡íë0üö¡.†ì0ü©¢,‚²<üÚ¢;‘ç<üš£+Þ½/Ê£�üÒ£K¹í0ü¢¤H�î0üï¤Fâî0üº¥C³ï0Ä‚¦€ð0üŸ¦1®³<üÕ¦;‘ç<ü•§+Þ½/ŧ�üͧ.áß.<€¨þ×.¤¡¨ì2í2î2ï2ð2 ì2Þˆ í2ËŽ î2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaï2 ð2˜ÛBÿ³ ¿¨³ ™$À¨óA'\–`2\ɾ=\ü·º¤üµªDA This is like [`Regex::search_slots`], but requires the caller toÁüþª äÑ<£«�ü««$œÒ<Ô«�üÜ«JØÒ<ü«¬G­Ó<ü÷¬IÿÓ<üÅ­HÓÔ<ü’®E¦Õ<üÜ®HöÕ<l©¯ÈÖ<»¯�lï¯Ö.Õ¯�üݯAþÿ0ü£°JÊ€1üò°)Ÿ�1 ±�<¨±þ×.ü´±=îõ.üö±8º½<³²�ü»²þ„;„ß²˜¾<|ô²²¾<Dˆ³¯ƒ1ü•³&äÎ/üÀ³%Ú¾<ê³�üò³D£„1ü»´Gò„1䇵Ã…1ô¨µé…1ü˵C@ let pid = re.search_slots_with(&mut cache, &input, &mut slots);Áü“¶.à†1ƶ�üζK¦‡1üž·Iü‡1¤ì·ψ1ü…¸1îˆ1ü»¸"ª‰1üâ¸<ôÀ<ü£¹:»Á<â¹�üê¹.áß.<�ºþ×.Œ¾ºñ2ò2ó2ô2õ2 ñ2Þˆ ò2ËŽ ó2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaô2 õ2ü¦ܧBÿ³ Ùº³ý· $ÚºóAû^–`_©&_üÑÉ’ü®½GD This is like [`Regex::which_overlapping_matches`], but requires theÁüú½*' caller to explicitly pass a [`Cache`].Á©¾�ü±¾JØÒ<ü€¿G­Ó<üÌ¿IÿÓ<üšÀHÓÔ<üçÀE¦Õ<ü±ÁHöÕ<lþÁÈÖ<�Â�ü˜Â$œÒ<ÁÂ�lɯÖ.ÛÂ�<ãÂþ×.üïÂ=îõ.ü±ÃD—Ê<úÃ�¬‚Ä´ý3üœÄFÔý34çÄó°3ìòÄúú8ü”Å>¬Ë<ü×ÅÐþ3üûÅ&äÎ/¦Æ�ü®Æ%–ÿ3üØÆ7 Ì<ü”ÇGD re.which_overlapping_matches_with(&mut cache, &input, &mut patset);ÁüàÇ'Ü€4üŒÈHŽ�4ôÙȱÄ2üÈ�ü„É.áß.<·Éþ×.ôØÉö2÷2ø2ù2ú2 ö2Þˆ ÷2ËŽ ø2Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaù2 ú2¡£Bÿ³ €Ê³ ¸$�ÊóAia–`ta˜¢ aT–Íü„ÌHE Various non-search routines for querying properties of a `Regex` andÁüÍÌHE convenience routines for creating [`Captures`] and [`Cache`] values.ÁÞˆº»¼½¾ÀÁÂÃü´ã)ü§ÍJG Creates a new object for recording capture group offsets. This is usedÁüöÍKH in search APIs like [`Regex::captures`] and [`Regex::search_captures`].ÁÆÎ�üÎÎ%" This is a convenience routine forÁüøÎKH `Captures::all(re.group_info().clone())`. Callers may build other typesÁüÈÏGD of `Captures` values that record less information (and thus requireÁü”ÐDA less work from the regex engine) using [`Captures::matches`] andÁÄÝÐ [`Captures::empty`].ÁúÐ�l‚ѯÖ.”Ñ�üœÑ?< This shows some alternatives to [`Regex::create_captures`]:ÁàÑ�<èÑþ×.ÌôÑŽØ.¤’Òí©<ü«Ò! util::captures::Captures,ÁüÑÒ Match, PatternID, Span,Á4õÒ÷Ø.€Ó�üˆÓHE let re = Regex::new(r"(?[A-Z][a-z]+) (?[A-Z][a-z]+)")?;ÁÕÓ�üÝÓGD // This is equivalent to Regex::create_captures. It stores matchingÁü©Ô+( // offsets for all groups in the regex.ÁüÙÔ96 let mut all = Captures::all(re.group_info().clone());Áü—Õ/, re.captures("Bruce Springsteen", &mut all);ÁüËÕ=: assert_eq!(Some(Match::must(0, 0..17)), all.get_match());Áü�ÖGD assert_eq!(Some(Span::from(0..5)), all.get_group_by_name("first"));ÁüÙÖGD assert_eq!(Some(Span::from(6..17)), all.get_group_by_name("last"));Á¥×�ü­×EB // In this version, we only care about the implicit groups, whichÁü÷×HE // means offsets for the explicit groups will be unavailable. It canÁüÄØHE // sometimes be faster to ask for fewer groups, since the underlyingÁü‘Ù@= // regex engine needs to do less work to keep track of them.ÁüÖÙA> let mut matches = Captures::matches(re.group_info().clone());ÁüœÚ30 re.captures("Bruce Springsteen", &mut matches);ÁüÔÚ+( // We still get the overall match info.Áü„ÛA> assert_eq!(Some(Match::must(0, 0..17)), matches.get_match());ÁüÊÛ30 // But now the explicit groups are unavailable.Áü‚Ü96 assert_eq!(None, matches.get_group_by_name("first"));ÁüÀÜ85 assert_eq!(None, matches.get_group_by_name("last"));ÁýÜ�ü…ÝJG // Finally, in this version, we don't ask to keep track of offsets forÁüÔÝHE // *any* groups. All we get back is whether a match occurred, and ifÁü¡Þ.+ // so, the ID of the pattern that matched.ÁüÔÞ=: let mut empty = Captures::empty(re.group_info().clone());Áü–ß1. re.captures("Bruce Springsteen", &mut empty);Á¤Ìß // it's a match!Áôåß assert!(empty.is_match());Á¼ˆà // for pattern ID 0Áü¤à74 assert_eq!(Some(PatternID::ZERO), empty.pattern());Áüàà%" // Match offsets are unavailable.ÁüŠá(% assert_eq!(None, empty.get_match());Áü·á:7 // And of course, explicit groups are unavailable too.Áüöá74 assert_eq!(None, empty.get_group_by_name("first"));Áü²â63 assert_eq!(None, empty.get_group_by_name("last"));Áíâ�üõâ.áß.<¨ãþ×.|»ãû2 û2Þˆ˜ÛBÿ¹ Ë㹆ù $Ìãüåê#üœäA> Creates a new cache for use with lower level search APIs likeÁÜâä [`Regex::search_with`].Á‚å�üŠåIF The cache returned should only be used for searches for this `Regex`.ÁüØåJG If you want to reuse the cache for another `Regex`, then you must callÁü§æ'$ [`Cache::reset`] with that `Regex`.ÁÓæ�üÛæ52 This is a convenience routine for [`Cache::new`].Á•ç�l�ç¯Ö.¯ç�<·çþ×.üÃç4÷³;üç�ü„è.+ let re = Regex::new(r"(?-u)m\w+\s+m\w+")?;Áü·è&äÎ/üâè>; let input = Input::new("crazy janey and her mission man");Á|¥é»ç/ü¹é%" Some(Match::must(0, 20..31)),Áüãé+¹Ø<4“ê×è/žê�ü¦ê.áß.<Ùêþ×.dìêü2 ü2ވˎBÿ¹ ùê¹ »$úêüÏò"ü¼ë74 Returns the total number of patterns in this regex.Áøë�ü€ìGD The standard [`Regex::new`] constructor always results in a `Regex`ÁüÌìEB with a single pattern, but [`Regex::new_many`] permits building aÁÄ–í multi-pattern regex.Á³í�ü»íJG A `Regex` guarantees that the maximum possible `PatternID` returned inÁüŠîIF any match is `Regex::pattern_len() - 1`. In the case where the numberÁüØî.+ of patterns is `0`, a match is impossible.Á‹ï�l“ï¯Ö.¥ï�<­ïþ×.ü¹ï$‚Ÿ;âï�üêï)& let re = Regex::new(r"(?m)^[a-z]$")?;Áü˜ð$! assert_eq!(1, re.pattern_len());ÁÁð�üÉð+­™;üùð$! assert_eq!(0, re.pattern_len());Á¢ñ�üªñ0- let re = Regex::new_many(&["a", "b", "c"])?;Áüßñ$Á»9ˆò�ü�ò.áß.<Ãòþ×.\Öòý2 ý2ÞˆBÿ¹ âò¹ ¼$ãòüº€#ü£ó1. Returns the total number of capturing groups.ÁÙó�üáóC@ This includes the implicit capturing group corresponding to theÁü©ô?< entire match. Therefore, the minimum value returned is `1`.Áíô�lõô¯Ö.‡õ�ü�õDA This shows a few patterns and how many capture groups they have.ÁØõ�<àõþ×.üìõ$‚Ÿ;•ö�Ì�ö let len = |pattern| {Áü»ö74 Regex::new(pattern).map(|re| re.captures_len())Á4÷ö÷Ø.‚÷�ìŠ÷ assert_eq!(1, len("a")?);Áü¬÷ assert_eq!(2, len("(a)")?);ÁüÐ÷# assert_eq!(3, len("(a)|(b)")?);Áüø÷)& assert_eq!(5, len("(a)(b)|(c)(d)")?);Áü¦ø! assert_eq!(2, len("(a)|b")?);ÁüÌø! assert_eq!(2, len("a|(b)")?);Áüòø  assert_eq!(2, len("(b)*")?);Áü—ù  assert_eq!(2, len("(b)+")?);Á¼ù�üÄù.áß.<÷ùþ×.ƒú�ü‹ú  # Example: multiple patternsÁ°ú�ü¸úFC This routine also works for multiple patterns. The total number isÁüƒû2/ the sum of the capture groups of each pattern.Áºû�<Âûþ×.üÎû$‚Ÿ;÷û�Ôÿû let len = |patterns| {Áüžü=: Regex::new_many(patterns).map(|re| re.captures_len())Á4àü÷Ø.ëü�üóü%" assert_eq!(2, len(&["a", "b"])?);Áü�ý)& assert_eq!(4, len(&["(a)", "(b)"])?);ÁüËý1. assert_eq!(6, len(&["(a)|(b)", "(c)|(d)"])?);Áü�þ63 assert_eq!(8, len(&["(a)(b)|(c)(d)", "(x)(y)"])?);Áü¼þ'$ assert_eq!(3, len(&["(a)", "b"])?);Áüèþ'$ assert_eq!(3, len(&["a", "(b)"])?);Áü”ÿ*' assert_eq!(4, len(&["(a)", "(b)*"])?);ÁüÃÿ+( assert_eq!(4, len(&["(a)+", "(b)+"])?);Áóÿ�üûÿ.áß.<®€þ×.dÁ€þ2 þ2ÞˆBÿ¹ ΀¹ ½$Ï€üÁ•2üþ�EB Returns the total number of capturing groups that appear in everyÁœÈ‚ possible match.Áà‚�üè‚IF If the number of capture groups can vary depending on the match, thenÁü¶ƒJG this returns `None`. That is, a value is only returned when the numberÁü…„0- of matching groups is invariant or "static."Áº„�ü„EB Note that like [`Regex::captures_len`], this **does** include theÁüŒ…JG implicit capturing group corresponding to the entire match. Therefore,ÁüÛ…KH when a non-None value is returned, it is guaranteed to be at least `1`.Áü«†B? Stated differently, a return value of `Some(0)` is impossible.Áò†�lú†¯Ö.Œ‡�ü”‡EB This shows a few cases where a static number of capture groups isÁüÞ‡.+ available and a few cases where it is not.Á‘ˆ�<™ˆþ×.ü¥ˆ=îõ.çˆ�üïˆ$‚Ÿ;˜‰�Ì ‰ë©=ü¾‰>; Regex::new(pattern).map(|re| re.static_captures_len())Á4�Š÷Ø.ŒŠ�ü”Š# assert_eq!(Some(1), len("a")?);Áü¼Š%" assert_eq!(Some(2), len("(a)")?);ÁüæŠ)& assert_eq!(Some(2), len("(a)|(b)")?);Áü”‹/, assert_eq!(Some(3), len("(a)(b)|(c)(d)")?);ÁüÈ‹$! assert_eq!(None, len("(a)|b")?);Áüñ‹$! assert_eq!(None, len("a|(b)")?);ÁüšŒ# assert_eq!(None, len("(b)*")?);ÁüÂŒ&# assert_eq!(Some(2), len("(b)+")?);ÁíŒ�üõŒ.áß.<¨�þ×.´��ü¼� „®=á��üé�GD This property extends to regexes with multiple patterns as well. InÁüµŽIF order for their to be a static number of capture groups in this case,Áüƒ�30 every pattern must have the same static number.Á»��<Ã�þ×.üÏ�=îõ.‘��ü™�$‚Ÿ;Â��ÔÊ�€°=üé�DA Regex::new_many(patterns).map(|re| re.static_captures_len())Á4²‘÷Ø.½‘�üÅ‘+( assert_eq!(Some(1), len(&["a", "b"])?);Áüõ‘/, assert_eq!(Some(2), len(&["(a)", "(b)"])?);Áü©’74 assert_eq!(Some(2), len(&["(a)|(b)", "(c)|(d)"])?);Áüå’<9 assert_eq!(Some(3), len(&["(a)(b)|(c)(d)", "(x)(y)"])?);Áü¦“*' assert_eq!(None, len(&["(a)", "b"])?);ÁüÕ“*' assert_eq!(None, len(&["a", "(b)"])?);Áü„”-* assert_eq!(None, len(&["(a)", "(b)*"])?);Áü¶”1. assert_eq!(Some(2), len(&["(a)+", "(b)+"])?);Áì”�üô”.áß.<§•þ×.œÈ•ÿ2 ÿ2ÞˆØÚBÿ¹ Ü•¹ ¾$Ý•,ñ–¾�¿�¿�¿¿¾öÆ ü¡¯&ü™—@= Return information about the capture groups in this `Regex`.ÁÞ—�üæ—GD A `GroupInfo` is an immutable object that can be cheaply cloned. ItÁü²˜GD is responsible for maintaining a mapping between the capture groupsÁüþ˜C@ in the concrete syntax of zero or more regex patterns and theirÁüÆ™JG internal representation used by some of the regex matchers. It is alsoÁü•šHE responsible for maintaining a mapping between the name of each groupÁüâš63 (if one exists) and its corresponding group index.Á�›�ü¥›KH A `GroupInfo` is ultimately what is used to build a [`Captures`] value,Áüõ›JG which is some mutable space where group offsets are stored as a resultÁ„Äœ of a search.ÁÙœ�lᜯÖ.óœ�üûœ?ñƒ=¿��<Ç�þ×.ÌÓ�ŽØ.¤ñ�í©<üŠž!ò„=ü°žž…=4Ôž÷Ø.ßž�üçžHã…=´Ÿ�ü¼ŸGÆ=üˆ +•‡=ü¸ 9ˇ=üö /�ˆ=üª¡=Ɉ=üì¡G‘‰=ü¸¢Gã‰=„£�üŒ£EŠ=üÖ£H’‹=ü£¤Hå‹=üð¤@¸Œ=üµ¥Aƒ�=üû¥3Ï�=ü³¦+�Ž=üã¦AÃŽ=ü©§3��=üá§9Í�=üŸ¨8‘�=ܨ�üä¨Já�=ü³©H¶‘=ü€ª.‰’=ü³ª=Â’=üõª1Š“=¤««Å“=ôÄ«ã“=¼ç«‹”=üƒ¬7­”=ü¿¬%ï”=üé¬(Ÿ•=ü–­:Ò•=üÕ­7—–=ü‘®6Ù–=Ì®�üÔ®.áß.<‡¯þ×.T¨¯€3 €3Þˆ €3ýÝBÿ¹ ³¯¹ À$´¯üα#üù¯@= Returns the configuration object used to build this `Regex`.Á¾°�üư>; If no configuration object was explicitly passed, then theÁü‰±2/ configuration returned represents the default.ÁTÕ±�3 �3Þˆ �3Å�Bÿ¹ à±¹ Á$á±üœÄ$üž²HE Returns true if this regex has a high chance of being "accelerated."Áë²�üó²JG The precise meaning of "accelerated" is specifically left unspecified,Áü³FC but the general meaning is that the search is a high likelihood ofÁü�´DA running faster than a character-at-a-time loop inside a standardÁŒÖ´ regex engine.Áì´�üô´IF When a regex is accelerated, it is only a *probabilistic* claim. ThatÁüµJG is, just because the regex is believed to be accelerated, that doesn'tÁü‘¶GD mean it will definitely execute searches very fast. Similarly, if aÁüݶHE regex is *not* accelerated, that is also a probabilistic claim. ThatÁüª·JG is, a regex for which `is_accelerated` returns `false` could still runÁüù·IF searches more quickly than a regex for which `is_accelerated` returnsÁ\Ǹ `true`.Á׸�ü߸C@ Whether a regex is marked as accelerated or not is dependent onÁü§¹KH implementations details that may change in a semver compatible release.Áü÷¹JG That is, a regex that is accelerated in a `x.y.1` release might not beÁüƺ%" accelerated in a `x.y.2` release.Áðº�üøºGD Basically, the value of acceleration boils down to a hedge: a hodgeÁüÄ»FC podge of internal heuristics combine to make a probabilistic guessÁü�¼IF that this regex search may run "fast." The value in knowing this fromÁüݼIF a caller's perspective is that it may act as a signal that no furtherÁü«½HE work should be done to accelerate a search. For example, a grep-likeÁüø½IF tool might try to do some extra work extracting literals from a regexÁüƾEB to create its own heuristic acceleration strategies. But it mightÁü�¿HE choose to defer to this crate's acceleration strategy if one exists.ÁüÝ¿IF This routine permits querying whether such a strategy is active for aÁ¬«À particular regex.ÁÅÀ�lÍÀ¯Ö.ßÀ�<çÀþ×.üóÀ$‚Ÿ;œÁ�ü¤Á96 // A simple literal is very likely to be accelerated.ÁüâÁ! let re = Regex::new(r"foo")?;ÁüˆÂ! assert!(re.is_accelerated());Á®Â�ü¶Â@= // A regex with no literals is likely to not be accelerated.Áüû  let re = Regex::new(r"\w")?;Áü Ã" assert!(!re.is_accelerated());ÁÇÃ�üÏÃ.áß.<‚Äþ×.t£Ä‚3 ‚3ÞˆBÿ¹ ²Ä¹ Â$³ÄüºÌ#üöÄMJ Return the total approximate heap memory, in bytes, used by this `Regex`.ÁÈÅ�üÐÅIF Note that currently, there is no high level configuration for settingÁüžÆHE a limit on the specific value returned by this routine. Instead, theÁüëÆGD following routines can be used to control heap memory at a bit of aÁ„·Ç lower level:ÁÌÇ�üÔÇGD * [`Config::nfa_size_limit`] controls how big _any_ of the NFAs areÁ” È allowed to be.Áü·ÈIF * [`Config::onepass_size_limit`] controls how big the one-pass DFA isÁ”…Éíð=üœÉIF * [`Config::hybrid_cache_capacity`] controls how much memory the lazyÁüêÉ?< DFA is permitted to allocate to store its transition table.Áü®ÊIF * [`Config::dfa_size_limit`] controls how big a fully compiled DFA isÁ”üÊíð=ü“ËIF * [`Config::dfa_state_limit`] controls the conditions under which theÁüáËFC meta regex engine will even attempt to build a fully compiled DFA.ÁdÁ̃3 ƒ3ÞˆBÿ¹ Î̹ Ã$Ï̤�ÍވņÅĪÍ,­Í„3 „3ÞˆÞˆBÿÄ ³ÍÄ Å$´Í<âÎÅ�Æ�Æ�ÆÆÅÆñ®ü®t�Òñ‰ÈÉÊËÌÍÏÐÒÔÕü³Ó=ÁÓê�3Ž3Å� �3 Ž3‰ôñ‰BÿÇ ÛÓǪªÉ4ÅÓ”œ$ÕÓüÄ×&4Ò×�3 �3ñ‰ �3Å�BÿÇ Ù×Ç«Í $Ú×ü�Ø0,�Ø�3 �3ñ‰ �3 óÇ BÿÇ £ØÇ Ê$¤ØüãØ4\ñØ‘3 ‘3ñ‰ ‘3óÇ BÿÇ ýØÇ‘Æ $þØüÁÙ)\ÏÙ’3 ’3ñ‰BÿÇ ÛÙÇ Ì$ÜÙü“Ú*d¡Ú“3 “3ñ‰BÿÇ ®ÚÇ Í$¯ÚàÚÍ�Î�Î�ÎÎÍÎÄÙ:Uÿü¢ÞAŒ°Þ”3•3–3 ”3ñ‰ •3Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa–3BÿÇ ÂÞÇÛï $ÃÞ–`püÉá5Ä×á—3 —3ñ‰BÿÇ ðáǰà $ñá¼�â$ âüŽå3´œå˜3 ˜3ñ‰BÿÇ ³åÇŽì $´å¼Ðå$ãåü½ê#ŒÀêÛ™3 ™3ñ‰BÿÇ ÒêÇúƒ $Óêüíñ2lðñÛš3›3œ3 š3ñ‰ ›3Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaœ3BÿÇ þñǨæ $ÿñ–`©yüý‚ æG׸Ø×Ø�‹ÙÚ‚ƒ†ƒüðƒ ü¤ƒ96 Returns the `Regex` value that created this iterator.Á,÷ƒ 3  3�‹ æGÞˆBÿÖ ýƒÖ ÙæG¸$þƒü—†+ü®„>; Returns the current `Input` associated with this iterator.Áñ„�üù„JG The `start` position on the given `Input` may change during iteration,ÁüÈ…<9 but all other values are guaranteed to remain invariant.Á,ž†Û Û�‹ ÛÑ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¸BÿÖ¤†Ö ÚæG¸$¬†#%üæ†-æGݸÞÝÞ�‹ßàâÅQÆQËQâàë†ï†Lš‡$Ÿ‡ÜÜ‹¢üÀ‡#$Ç¡3 ¡3�‹�´BÿÜ ȇÜ àæG¸$͇<¼ˆà�á�á�ááàšÿ ¼ÿˆ,‚‰�‹BÿÜÜ âæG¸2ƒ<÷Œâ�ã�ã�ããâ …üÊ�>æG叿æå�‹Ï�Ó�üó’$æGè¸éèé�Œêëø’ü’üê“ üž“9¥ƒ>,ñ“¥3 ¥3�Œ�…>Bÿç ÷“ç êæG¸$ø“ü‘–+ü¨”>ׄ>ë”�üó”J­…>ü•<‚†>,˜–ì ì�Œ ìö‡>Bÿçž–ç ëæG¸$¦–#%üà–1æGî¸ïîï�ŒðñóÅQÆQËQóñå–é–L˜—$�—íí˜ÛüÁ—&$Ä—¦3 ¦3�Œ‘–Bÿí É—í ñæG¸$Η<­™ñ�ò�ò�òòñÑ“¼ž›,¡›�ŒBÿíí óæG¸³�<��ó�ô�ô�ôôó÷�üâ�BæGö¸÷ö÷�Œç�ë�Ô—¢æGù¸úùú€�ûœ¢ ¢ü¡¤+ü¸¢>ׄ>û¢�üƒ£J­…>üÒ£<‚†>,¨¤ü ü€� üö‡>Bÿø®¤ø ûæG¸$¶¤#%üô¤'æGþ¸ÿÿþ€�€�ÅQÆQ�ù¤ý¤L¢¥$§¥ýýÅžü¹¥"$¼¥ª3 ª3€�­ãBÿý Á¥ý �æG¸$Æ¥ü©ª8æGƒ¸„ƒ„€�®ª²ªÜ�¯æG†¸‡†‡å�ˆ•¯™¯ü›±+ü²¯>ׄ>õ¯�üý¯J­…>ṵ̈<‚†>,¢±‰ ‰å� ‰ö‡>Bÿ…¨±… ˆæG¸$°±#%üî±(æG‹¸Œ‹Œå��Ž�ÅQÆQÊQŽ�ó±÷±L�²$¢²ŠŠÅžü´²"$·²®3 ®3å�­ãBÿŠ ¼²Š ŽæG¸$Á²üѶ-LÔ¶¯3 ¯3å�ØÚBÿŠ Þ¶Š �æG¸$ß¶ü¨·9æG‘¸’‘’å�­·±·TÇÊËŽ”•–üåÌüØÊ2/ Creates a new `Cache` for use with this regex.Á�Ë�ü—ËE“À9üáËIãÀ9ü¯Ì1·Á9ìÌ´3 ´3ވˎBÿ“ ôÌ“ ”é¾ðÌüà×#ü¬ÍJ²¡5üûÍ$ÝÂ9¤Î�ü¬ÎIF A cache reset permits potentially reusing memory already allocated inÁüúÎ(% this cache with a different `Regex`.Á§Ï�l¯Ï¯Ö.ÁÏ�üÉÏJ�ƒ9˜Ð�< Ðþ×.ü¬Ð=îõ.üîÐ4ý¯<§Ñ�ü¯Ñ!²„9üÕÑ!Ý„9ûÑ�üƒÒ'Šç/|¯Ò»ç/üÃÒ#Õç/üëÒ74 re1.search_with(&mut cache, &Input::new("Δ")),Á4§Ó×è/²Ó�üºÓHõè/ü‡ÔIÈé/üÕÔ2Ÿ†94ŒÕßê/ü—ÕJðê/|æÕÄë/´úÕÄÆ9|•Ö»ç/ü©Ö#—ì/üÑÖ85 re2.search_with(&mut cache, &Input::new("☃")),Á4Ž××è/™×�ü¡×.áß.<Ô×þ×.,ç×µ3¶3 µ3ËŽ ¶3ÞˆBÿ“ íד •$ò×é¾ø×ü…Ú#ü¸Ø;ú®1øØ�ü€ÙFͯ1üËÙ5ž°1dŒÚ·3 ·3ËŽBÿ“ ™Ú“ –$šÚ\…ìÅ�˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶½¾¿ÀÁ´Ðìü—ì41 Create a new configuration object for a `Regex`.Á×ìÅ�Bÿ—— ˜ü‡÷2üŽí*' Set the match semantics for a `Regex`.Á½í�üÅí63 The default value is [`MatchKind::LeftmostFirst`].Á€î�lˆî¯Ö.šî�<¢îþ×.ü®î85 use regex_automata::{meta::Regex, Match, MatchKind};Áëî�üóî;8 // By default, leftmost-first semantics are used, whichÁü³ï>; // disambiguates matches at the same position by selectingÁüöï74 // the one that corresponds earlier in the pattern.Áü²ð(% let re = Regex::new("sam|samwise")?;Áüßð?< assert_eq!(Some(Match::must(0, 0..3)), re.find("samwise"));Á£ñ�ü«ñ:7 // But with 'all' semantics, match priority is ignoredÁüêñ;8 // and all match states are included. When coupled withÁüªò96 // a leftmost search, the search will report the lastÁ´èò // possible match.Áìƒóúú8ü¥ó>¬Ë<üèó .build("sam|samwise")?;ÁüŒô?< assert_eq!(Some(Match::must(0, 0..7)), re.find("samwise"));ÁüÐô52 // Beware that this can lead to skipping matches!ÁüŠõ:7 // Usually 'all' is used for anchored reverse searchesÁüÉõ)& // only, or for overlapping searches.Áü÷õDA assert_eq!(Some(Match::must(0, 4..11)), re.find("sam samwise"));ÁÀö�üÈö.áß.<ûöþ×.TŽ÷Å�ù¦Å�Bÿ—— ™$™÷¦$Ÿ÷ü—‚,üù÷IF Toggles whether empty matches are permitted to occur between the codeÁüÇø'$ units of a UTF-8 encoded codepoint.Áóø�üûøJG This should generally be enabled when search a `&str` or anything thatÁüÊùIF you otherwise know is valid UTF-8. It should be disabled in all otherÁü˜úJG cases. Namely, if the haystack is not valid UTF-8 and this is enabled,Áüçú! then behavior is unspecified.Á�û�ü•û  By default, this is enabled.Áºû�lÂû¯Ö.Ôû�<Üûþ×.üèû-ïü:šü�ì¢ü let re = Regex::new("")?;ÁüÄü85 let got: Vec = re.find_iter("☃").collect();Áü�ýB? // Matches only occur at the beginning and end of the snowman.ÁÌÈý¨÷;ìæý Match::must(0, 0..0),Áìˆþ Match::must(0, 3..3),Á<ªþí¦9¶þ�ì¾þúú8üàþ5Ñ´;¤šÿ .build("")?;Áü³ÿ8—·>üðÿ+( // Matches now occur at every position!ÁÌ €¨÷;ì¾€´¸>ìà€ Match::must(0, 1..1),Áì‚� Match::must(0, 2..2),Áì¤�Û¸><Æ�í¦9Ò��üÚ�,) Ok::<(), Box>(())Á<‹‚þ×.Tž‚Å�Å�Bÿ—— š$©‚ꯂüò‰0ü‚ƒ;8 Toggles whether automatic prefilter support is enabled.Áƒ�üʃFC If this is disabled and [`Config::prefilter`] is not set, then theÁü•„EB meta regex engine will not use any prefilters. This can sometimesÁüß„EB be beneficial in cases where you know (or have measured) that theÁü©…85 prefilter leads to overall worse search performance.Áæ…�üî… óµ>“†�l›†¯Ö.­†�<µ†þ×.üÁ†=îõ.üƒ‡-ïü:µ‡�콇úú8ü߇96 .configure(Regex::config().auto_prefilter(false))Áô�ˆ .build(r"Bruce \w+")?;ÁüÀˆ)& let hay = "Hello Bruce Springsteen!";Áüîˆ:7 assert_eq!(Some(Match::must(0, 6..23)), re.find(hay));Á­‰�üµ‰,±»><æ‰þ×.tù‰Å�Å�Bÿ—— ›$ˆŠêŽŠüÈŸ8üÞŠ=: Overrides and sets the prefilter to use inside a `Regex`.Á ‹�ü¨‹EB This permits one to forcefully set a prefilter in cases where theÁüò‹FC caller knows better than whatever the automatic prefilter logic isÁ|½Œ capable of.ÁÑŒ�üÙŒHE By default, this is set to `None` and an automatic prefilter will beÁü¦�GD used if one could be built. (Assuming [`Config::auto_prefilter`] isÁüò�%" enabled, which it is by default.)ÁœŽ�l¤Ž¯Ö.¶Ž�ü¾ŽFC This example shows how to set your own prefilter. In the case of aÁü‰�EB pattern like `Bruce \w+`, the automatic prefilter is likely to beÁüÓ�GD constructed in a way that it will look for occurrences of `Bruce `.ÁüŸ�HE In most cases, this is the best choice. But in some cases, it may beÁüì�EB the case that running `memchr` on `B` is the best choice. One canÁü¶‘EB achieve that behavior by overriding the automatic prefilter logicÁü€’41 and providing a prefilter that just matches `B`.Á¹’�<Á’þ×.üÍ’=îõ.Ì�“ŽØ.¤­“í©<üÆ“#ø’6Ìî“ Match, MatchKind,Á4Œ”÷Ø.—”�üŸ”>; let pre = Prefilter::new(MatchKind::LeftmostFirst, &["B"])Áüâ” .expect("a prefilter");Á솕úú8ü¨•85 .configure(Regex::config().prefilter(Some(pre)))Áô啚Á>üˆ–)ÃÁ>ü¶–:÷Á>õ–�üý–.áß.<°—þ×.¼—�üÄ—B? # Example: incorrect prefilters can lead to incorrect results!Á‹˜�ü“˜DA Be warned that setting an incorrect prefilter can lead to missedÁüܘIF matches. So if you use this option, ensure your prefilter can _never_Áüª™JG report false negatives. (A false positive is, on the other hand, quiteÁüù™$! okay and generally unavoidable.)Á¢š�<ªšþ×.ü¶š=îõ.ÌøšŽØ.¤–›í©<ü¯›#ø’6Ì×›ÇÌ>4õ›÷Ø.€œ�üˆœ>; let pre = Prefilter::new(MatchKind::LeftmostFirst, &["Z"])ÁüËœÏÍ>ìïœúú8ü‘�8‡Î>ôÎ�šÁ>üñ�)ÃÁ>üŸž52 // Oops! No match found, but there should be one!ÁüÙž# assert_eq!(None, re.find(hay));Á�Ÿ�ü‰Ÿ.áß.<¼Ÿþ×.LÏŸÅ�ȹ Å�Bÿ—— œ$ÙŸѶߟüø¿Hü¸ FC Configures what kinds of groups are compiled as "capturing" in theÁ䃡 underlying regex engine.Á¤¡�ü¬¡IF This is set to [`WhichCaptures::All`] by default. Callers may wish toÁüú¡FC use [`WhichCaptures::Implicit`] in cases where one wants avoid theÁüÅ¢30 overhead of capture states for explicit groups.Áý¢�ü…£IF Note that another approach to avoiding the overhead of capture groupsÁüÓ£C@ is by using non-capturing groups in the regex pattern. That is,Áü›¤JG `(?:a)` instead of `(a)`. This option is useful when you can't controlÁüê¤KH the concrete syntax but know that you don't need the underlying captureÁüº¥JG states. For example, using `WhichCaptures::Implicit` will behave as ifÁü‰¦DA all explicit capturing groups in the pattern were non-capturing.ÁÒ¦�üÚ¦KH Setting this to `WhichCaptures::None` is usually not the right thing toÁüª§HE do. When no capture states are compiled, some regex engines (such asÁü÷§KH the `PikeVM`) won't be able to report match offsets. This will manifestÁüǨC@ as no match being found. Indeed, in order to enforce consistentÁü�©JG behavior, the meta regex engine will always report `None` for routinesÁüÞ©DA that return match offsets even if one of its regex engines couldÁü§ªGD service the request. This avoids "match or not" behavior from beingÁüóªJG influenced by user input (since user input can influence the selectionÁÌ« of the regex engine).Áà«�l諯Ö.ú«�ü‚¬JG This example demonstrates how the results of capture groups can changeÁüѬJG based on this option. First we show the default (all capture groups inÁü ­ the pattern are capturing):ÁÄ­�<Ì­þ×.üØ­30 use regex_automata::{meta::Regex, Match, Span};Á�®�ü˜®,) let re = Regex::new(r"foo([0-9]+)bar")?;ÁÔÉ® let hay = "foo123bar";Áè®�üð®(•Ï/ü�¯  re.captures(hay, &mut caps);Áü¯:7 assert_eq!(Some(Span::from(0..9)), caps.get_group(0));Áü�°:7 assert_eq!(Some(Span::from(3..6)), caps.get_group(1));ÁÀ°�üȰ,±»><ù°þ×.…±�ü�±FC And now we show the behavior when we only include implicit captureÁüرJG groups. In this case, we can only find the overall match span, but theÁü§²JG spans of any other explicit group don't exist because they are treatedÁüö²IF as non-capturing. (In effect, when `WhichCaptures::Implicit` is used,ÁüijKH there is no real point in using [`Regex::captures`] since it will neverÁü”´=: be able to report more information than [`Regex::find`].)ÁÖ´�<Þ´þ×.Ìê´ŽØ.¤ˆµí©<ü¡µ%" nfa::thompson::WhichCaptures,Át˵Ñ·/lÞµ Span,Á4ðµ÷Ø.ûµ�샶úú8ü¥¶KH .configure(Regex::config().which_captures(WhichCaptures::Implicit))Áüõ¶# .build(r"foo([0-9]+)bar")?;ÁÔ�·íå>¼·�üÄ·(•Ï/üñ· ®æ>ü–¸:Ùæ>üÕ¸(% assert_eq!(None, caps.get_group(1));Á‚¹�üй,±»><»¹þ×.ǹ�üϹ-* # Example: strange `Regex::find` behaviorÁ�º�ü‰ºGD As noted above, when using [`WhichCaptures::None`], this means thatÁüÕºEB `Regex::is_match` could return `true` while `Regex::find` returnsÁ\Ÿ» `None`:Á¯»�<·»þ×.ÌûŽØ.¤á»í©<üú»%¾ì>t¤¼ Input,Át·¼Ñ·/lʼûì>4ܼ÷Ø.ç¼�ìï¼úú8ü‘½GD .configure(Regex::config().which_captures(WhichCaptures::None))Áüݽ#’î>Ô…¾íå>¤¾�ô¬¾ assert!(re.is_match(hay));ÁüϾ# assert_eq!(re.find(hay), None);Áü÷¾74 assert_eq!(re.search_half(&Input::new(hay)), None);Á³¿�ü»¿,±»><ì¿þ×.tÿ¿Å�¼«Å�Bÿ—— �$’À£dt˜Àü�Ó;ü�ÁJG Sets the size limit, in bytes, to enforce on the construction of everyÁüÞÁ'$ NFA build by the meta regex engine.ÁŠÂ�ü’ÂGD Setting it to `None` disables the limit. This is not recommended ifÁüÞÂ(% you're compiling untrusted patterns.Á‹Ã�ü“ÃFC Note that this limit is applied to _each_ NFA built, and if any ofÁüÞÃGD them exceed the limit, then construction will fail. This limit doesÁüªÄKH _not_ correspond to the total memory used by all NFAs in the meta regexÁ\úÄ engine.ÁŠÅ�ü’ÅHE This defaults to some reasonable number that permits most reasonableÁlßÅ patterns.ÁñÅ�lùůÖ.‹Æ�<“Æþ×.üŸÆ=îõ.üáÆ$‚Ÿ;ŠÇ�ü’Ç!¾Ÿ;ü¸ÇFêŸ;üƒÈI» ;¼ÑÈŽ¡;ìíȯ¡;�É�ü—ÉFC // But notice that building such a regex with the exact same limitÁüâÉGD // can succeed depending on other aspects of the configuration. ForÁü®ÊIF // example, a single *forward* NFA will (at time of writing) fit intoÁüüÊHE // the 20KB limit, but a *reverse* NFA of the same pattern will not.ÁüÉËIF // So if one configures a meta regex such that a reverse NFA is neverÁü—ÌJG // needed and thus never built, then the 20KB limit will be enough forÁÔæÌ // a pattern like \pL!Áü…Í!¾Ÿ;ü«Í" .configure(Regex::config()ÁüÒÍ/, .nfa_size_limit(Some(20 * (1<<10)))Áü†ÎJG // The DFAs are the only thing that (currently) need a reverseÁüÕÎGD // NFA. So if both are disabled, the meta regex engine willÁü¡ÏIF // skip building the reverse NFA. Note that this isn't an APIÁüïÏJG // guarantee. A future semver compatible version may introduceÁü¾Ð/, // new use cases for a reverse NFA.ÁÔòÐ .hybrid(false)Á¼‘Ñ .dfa(false)ÁL­ÑÑØ7ü»ÑI» ;¼‰ÒŽ¡;ä¥Ò assert!(result.is_ok());ÁÆÒ�üÎÒ.áß.<�Óþ×.t”ÓÅ�ØÚÅ�Bÿ—— ž$£Óª¯,©ÓüôÝ?ü�Ô85 Sets the size limit, in bytes, for the one-pass DFA.ÁÊÔ�üÒÔC@ Setting it to `None` disables the limit. Disabling the limit isÁüšÕGD strongly discouraged when compiling untrusted patterns. Even if theÁüæÕKH patterns are trusted, it still may not be a good idea, since a one-passÁü¶ÖGD DFA can use a lot of memory. With that said, as the size of a regexÁü‚×DA increases, the likelihood of it being one-pass likely decreases.ÁË×�üÓ×Háú>´ Ø one-pass patterns.Á»Ø�lÃØ¯Ö.ÕØ�üÝØFC This shows how to set the one-pass DFA size limit. Note that sinceÁü¨ÙEB a one-pass DFA is an optional component of the meta regex engine,ÁüòÙHE this size limit only impacts what is built internally and will neverÁü¿Ú63 determine whether a `Regex` itself fails to build.ÁúÚ�<‚Ûþ×.üŽÛ=îõ.üÐÛ$‚Ÿ;ùÛ�ü�Ü!¾Ÿ;ü§ÜIF .configure(Regex::config().onepass_size_limit(Some(2 * (1<<20))))ÁÔõÜ .build(r"\pL{5}");Áä”݈†?üµÝ.áß.<èÝþ×.”ûÝÅ�ØÚÅ�Bÿ—— Ÿ$ŽÞª¯,”Þü¥í:üüÞ74 Set the cache capacity, in bytes, for the lazy DFA.Á¸ß�üÀßHE The cache capacity of the lazy DFA determines approximately how muchÁü�àHE heap memory it is allowed to use to store its state transitions. TheÁüÚàIF state transitions are computed at search time, and if the cache fillsÁü¨áGD up it, it is cleared. At this point, any previously generated stateÁüôáFC transitions are lost and are re-generated if they're needed again.Á¿â�üÇâHE This sort of cache filling and clearing works quite well _so long asÁü”ãKH cache clearing happens infrequently_. If it happens too often, then theÁüäãGD meta regex engine will stop using the lazy DFA and switch over to aÁܰä different regex engine.ÁÐä�üØäHE In cases where the cache is cleared too often, it may be possible toÁü¥åGD give the cache more space and reduce (or eliminate) how often it isÁüñåKH cleared. Similarly, sometimes a regex is so big that the lazy DFA isn'tÁüÁæ74 used at all if its cache capacity isn't big enough.Áýæ�ü…çFC The capacity set here is a _limit_ on how much memory is used. TheÁüÐç85 actual memory used is only allocated as it's needed.Á�è�ü•èKH Determining the right value for this is a little tricky and will likelyÁüåèKH required some profiling. Enabling the `logging` feature and setting theÁüµéHE log level to `trace` will also tell you how often the cache is beingÁd‚ê´»5“ê�l›ê¯Ö.­ê�<µêþ×.üÁê=îõ.üƒë$‚Ÿ;¬ë�ü´ë!¾Ÿ;üÚëGD .configure(Regex::config().hybrid_cache_capacity(20 * (1<<20)))ÁÔ¦ìÓ�?äÅ숆?üæì.áß.<™íþ×.¬¬íÅ�Å�Bÿ——  $Âíª¯,Èíüûþ;ü«îC@ Sets the size limit, in bytes, for heap memory used for a fullyÁŒóî compiled DFA.Á‰ï�ü‘ïGD **NOTE:** If you increase this, you'll likely also need to increaseÁüÝï  [`Config::dfa_state_limit`].Á‚ð�üŠðGD In contrast to the lazy DFA, building a full DFA requires computingÁüÖðGD all of its state transitions up front. This can be a very expensiveÁü¢ñFC process, and runs in worst case `2^n` time and space (where `n` isÁüíñGD proportional to the size of the regex). However, a full DFA unlocksÁü¹ò/, some additional optimization opportunities.Áíò�üõòJG Because full DFAs can be so expensive, the default limits for them areÁüÄóIF incredibly small. Generally speaking, if your regex is moderately bigÁü’ôIF or if you're using Unicode features (`\w` is Unicode-aware by defaultÁüàôKH for example), then you can expect that the meta regex engine won't evenÁü°õ" attempt to build a DFA for it.Á×õ�üßõGD If this and [`Config::dfa_state_limit`] are set to `None`, then theÁü«öGD meta regex will not use any sort of limits when deciding whether toÁü÷öB? build a DFA. This in turn makes construction of a `Regex` takeÁü¾÷IF worst case exponential time and space. Even short patterns can resultÁüŒøKH in huge space blow ups. So it is strongly recommended to keep some kindÁŒÜø of limit set!Áòø�üúøIF The default is set to a small number that permits some simple regexesÁüÈù1. to get compiled into DFAs in reasonable time.Áþù�l†ú¯Ö.˜ú�< úþ×.ü¬ú=îõ.üîú$‚Ÿ;—û�üŸû!¾Ÿ;üÅû1. // 100MB is much bigger than the default.Áüûû"¨�?ü¢ü0- .dfa_size_limit(Some(100 * (1<<20)))Áü×ü>; // We don't care about size too much here, so justÁüšý52 // remove the NFA state limit altogether.ÁüÔý# .dfa_state_limit(None))ÁÔüýÓ�?ä›þˆ†?ü¼þ.áß.<ïþþ×.t‚ÿÅ�ØÚÅ�Bÿ—— ¡$‘ÿª¯,—ÿüà‰<üûÿHE Sets a limit on the total number of NFA states, beyond which, a fullÁüÈ€(% DFA is not attempted to be compiled.Áõ€�üý€HE This limit works in concert with [`Config::dfa_size_limit`]. Namely,ÁüÊ�KH where as `Config::dfa_size_limit` is applied by attempting to constructÁüš‚KH a DFA, this limit is used to avoid the attempt in the first place. ThisÁüê‚JG is useful to avoid hefty initialization costs associated with buildingÁü¹ƒKH a DFA for cases where it is obvious the DFA will ultimately be too big.Á‰„�ü‘„30 By default, this is set to a very small number.ÁÉ„�lÑ„¯Ö.ã„�<ë„þ×.ü÷„=îõ.ü¹…$‚Ÿ;â…�üê…!¾Ÿ;ü�†"¨�?ü·†B? // Sometimes the default state limit rejects DFAs evenÁüþ†DA // if they would fit in the size limit. Here, we disableÁüLJEB // the check on the number of NFA states and just rely onÁô‘ˆ // the size limit.Áü´ˆ#̯?ü܈ .build(r"(?-u)\w{30}");Á䀉ˆ†?ü¡‰.áß.<Ô‰þ×.|ç‰Å�ØÚÅ�Bÿ—— ¢$÷‰ª¯,ý‰ü¤”.üâŠGD Whether to attempt to shrink the size of the alphabet for the regexÁü®‹FC pattern or not. When enabled, the alphabet is shrunk into a set ofÁüù‹GD equivalence classes, where every byte in the same equivalence classÁüÅŒ52 cannot discriminate between a match or non-match.ÁÿŒ�ü‡�G¹ë.üÓ�HE does not yield any speed advantages. Indeed, disabling it can resultÁü ŽEB in much higher memory usage. Disabling byte classes is useful forÁüêŽJG debugging the actual generated transitions because it lets one see theÁü¹�KH transitions defined on actual bytes instead of the equivalence classes.Á‰��ü‘�IËá.üß�74 one is debugging the meta regex engine's internals.Á›‘�l£‘¯Ö.µ‘�<½‘þ×.üÉ‘-ïü:û‘�샒úú8ü¥’74 .configure(Regex::config().byte_classes(false))ÁÜá’�‘7Ì�“ let hay = "!!quux!!";ÁüŸ“96 assert_eq!(Some(Match::must(0, 2..6)), re.find(hay));ÁÝ“�üå“.áß.<˜”þ×.d«”Å�Å�Bÿ—— £$¸”ê¾”üÒž0ü“•DA Set the line terminator to be used by the `^` and `$` anchors inÁ¤Ü• multi-line mode.Áõ•�üý•A> This option has no effect when CRLF mode is enabled. That is,ÁüÖIF regardless of this setting, `(?Rm:^)` and `(?Rm:$)` will always treatÁü‘—JG `\r` and `\n` as line terminators (and will never match between a `\r`Á„à— and a `\n`).Áõ—�üý—,) By default, `\n` is the line terminator.Á®˜�ü¶˜FC **Warning**: This does not change the behavior of `.`. To do that,Áü�™.+ you'll need to configure the syntax optionÁü´™UR [`syntax::Config::line_terminator`](crate::util::syntax::Config::line_terminator)ÁüŽšB? in addition to this. Otherwise, `.` will continue to match anyÁôÕš character other than `\n`.Áøš�l€›¯Ö.’›�<š›þ×.ü¦›;Û˜;æ›�ìî›úú8ü�œ7�¥;üÌœ<Ñ¥;Ô��—¦;ä¬�»¦;üÍ�9â¦;‹ž�ü“ž.áß.<Æžþ×.|ÙžÅ�Å�Bÿ—— ¤$éž—»$ïžüà¢5üÇŸFC Sets the capacity used to manage a pool of [`Cache`] values in theÁü’ " higher level convenience APIs.Á¹ �üÁ HE When not configured explicitly, a reasonable default is selected. ItÁüŽ¡JG is rarely expected that a number large than the number of logical CPUsÁüÝ¡IF makes sense as a value. A smaller number could result in slowdowns ifÁü«¢0- many regex queries are run under contention.Álç¢Å�Å�Bÿ—— ¥$õ¢ïŒDû¢üœ¨(üÜ£KH Toggle whether the hybrid NFA/DFA (also known as the "lazy DFA") shouldÁü¬¤2/ be available for use by the meta regex engine.Áã¤�üë¤B? Enabling this does not necessarily mean that the lazy DFA willÁü²¥IF definitely be used. It just means that it will be _available_ for useÁü€¦63 if the meta regex engine thinks it will be useful.Á»¦�üæGD When the `hybrid` crate feature is enabled, then this is enabled byÁü�§FC default. Otherwise, if the crate feature is disabled, then this isÁüÚ§=: always disabled, regardless of its setting by the caller.Á4£¨Å�Å�Bÿ—— ¦$ª¨ê°¨üž­%üÿ¨JG Toggle whether a fully compiled DFA should be available for use by theÁ´Î© meta regex engine.Áé©�üñ©IF Enabling this does not necessarily mean that a DFA will definitely beÁü¿ªGD used. It just means that it will be _available_ for use if the metaÁü‹«*' regex engine thinks it will be useful.Áº«�ü«JG When the `dfa-build` crate feature is enabled, then this is enabled byÁü‘¬F´Ô?üܬ=…Õ?¥­Å�Å�Bÿ—— §$©­ê¯­ü¼³)üû­IF Toggle whether a one-pass DFA should be available for use by the metaÁŒÉ®øÛ=ß®�üç®DA Enabling this does not necessarily mean that a one-pass DFA willÁü°¯EB definitely be used. It just means that it will be _available_ forÁüú¯EB use if the meta regex engine thinks it will be useful. (Indeed, aÁüİEB one-pass DFA can only be used when the regex is one-pass. See theÁüޱC@ [`dfa::onepass`](crate::dfa::onepass) module for more details.)ÁÖ±�üÞ±IF When the `dfa-onepass` crate feature is enabled, then this is enabledÁü¬²IF by default. Otherwise, if the crate feature is disabled, then this isÁüú²=…Õ?<óÅ�Å�Bÿ—— ¨$˳êѳüã¸+ü¡´JG Toggle whether a bounded backtracking regex engine should be availableÁüð´%" for use by the meta regex engine.Ášµ�ü¢µKH Enabling this does not necessarily mean that a bounded backtracker willÁüòµIÀÒ?üÀ¶6”Ó?û¶�üƒ·KH When the `nfa-backtrack` crate feature is enabled, then this is enabledÁüÓ·I¥ß?ü¡¸=…Õ?Lê¸Å�Å�Bÿ—— ©$ô¸êú¸üüº)ü̹;8 Returns the match kind on this configuration, as set byÁÜŒº [`Config::match_kind`].Á¬º�ü´ºC@ If it was not explicitly set, then a default value is returned.Átƒ»¼3 ¼3Å�ù¦Bÿ— ’»— ª$“»ü´½$üï»IF Returns whether empty matches must fall on valid UTF-8 boundaries, asÁü½¼" set by [`Config::utf8_empty`].Áä¼�üì¼C¥å?t»½½3 ½3Å�Bÿ— ʽ— «$˽üÆ¿(ü޾?< Returns whether automatic prefilters are enabled, as set byÁüÒ¾ [`Config::auto_prefilter`].Áö¾�üþ¾C¥å?”Í¿¾3 ¾3Å�Bÿ— à¿— ¬$á¿üÌÁ1ü¡À74 Returns a manually set prefilter, if one was set byÁÔÝÀ [`Config::prefilter`].ÁüÀ�ü„ÁC¥å?lÓÁ¿3 ¿3Å�řǙș­É™Ê™àË™óG*¤�R{9  ¿3äüBÿ— áÁ— ­$âÁüèÃ1ü¿Â0- Returns the capture configuration, as set byÁüô [`Config::which_captures`].Á˜Ã�ü ÃC¥å?”ïÃÀ3 À3Å�¼«Bÿ— ‚Ä— ®$ƒÄü÷Å1üáÄA> Returns NFA size limit, as set by [`Config::nfa_size_limit`].Á§Å�ü¯ÅC¥å?”þÅÁ3 Á3Å�ØÚBÿ— ‘Æ— ¯$’Æü�È5üòÆ.+ Returns one-pass DFA size limit, as set byÁü¥Ç# [`Config::onepass_size_limit`].ÁÍÇ�üÕÇC¥å?´¤ÈÂ3 Â3Å�ØÚBÿ— »È— °$¼ÈüÓÊ0üŸÉ41 Returns hybrid NFA/DFA cache capacity, as set byÁüØÉ&# [`Config::hybrid_cache_capacity`].ÁƒÊ�ü‹ÊC¥å?ÌÚÊÃ3 Ã3Å�Bÿ— ôÊ— ±$õÊüãÌ1üÍËA> Returns DFA size limit, as set by [`Config::dfa_size_limit`].Á“Ì�ü›ÌC¥å?”êÌÄ3 Ä3Å�ØÚBÿ— ýÌ— ²$þÌüûØ2ü°×JG Returns DFA size limit in terms of the number of states in the NFA, asÁüÿ×'$ set by [`Config::dfa_state_limit`].Á«Ø�ü³ØC¥å?œ‚ÙÅ3 Å3Å�ØÚBÿ— –Ù— ³$—ÙüÝÛ&ü¯Ú74 Returns whether byte classes are enabled, as set byÁìëÚ [`Config::byte_classes`].Á�Û�ü•ÛC¥å?„äÛÆ3 Æ3Å�Bÿ— õÛ— ´$öÛüöÝ'ü»ÜA> Returns the line terminator for this configuration, as set byÁü�Ý  [`Config::line_terminator`].Á¦Ý�ü®ÝC¥å?œýÝÇ3 Ç3Å�Bÿ— ‘Þ— µ$’Þü„à(üÙÞ30 Returns the configured pool capacity, as set byÁô‘ß [`Config::pool_capacity`].Á´ß�ü¼ßC¥å?Œ‹àÈ3 È3Å�Bÿ— �à—’°$žàü’â"¬˜âÛåâ¶�¸�¸�¸¸¶¸Uÿ¼°ã$ÃãüÚã)¬áãÛ  ¡�Ѥóž ö»ûÓWb;ÉBÿÃÅ�äº�»�»�»»º»ãý?ëäº�¼�¼�¼¼º¼¤Ú#üÃè üˆçJG Returns whether the hybrid NFA/DFA regex engine may be used, as set byÁ¼×ç [`Config::hybrid`].Áóç�üûçC¥å?TÊèÉ3 É3Å�Bÿ— Õè— ½$ÖèìËëüžê?< Returns whether the DFA regex engine may be used, as set byÁ¤âê [`Config::dfa`].Áûê�üƒëC¥å?<ÒëÊ3 Ê3Å�Bÿ— Úë— ¾$Ûëüàî!ü¦íHE Returns whether the one-pass DFA regex engine may be used, as set byÁÄóí [`Config::onepass`].Á�î�ü˜îC¥å?\çîË3 Ë3Å�Bÿ— óî— ¿$ôîü‹ò#üÇðIF Returns whether the bounded backtracking regex engine may be used, asÁü•ñ! set by [`Config::backtrack`].Á»ñ�üÃñC¥å?l’òÌ3 Ì3Å�Bÿ—  ò— À$¡òü¦÷;”´÷Í3 Í3Å�±ªBÿ— Ç÷— Á$È÷üçü3LõüÎ3 Î3Å�Å�Å�Bÿ— ÿü— Â$€ý¥ †ýòþÂ�Ã�Ã�ÃÃÂÃøœ8äÍ dò¢Ó‘ÅÆÇÌÍÑҼѣü…£GD Creates a new builder for configuring and constructing a [`Regex`].ÁØ£Ó‘BÿÄÄ ÅüÒª?ü§¥2/ Builds a `Regex` from a single pattern string.ÁÞ¥�üæ¥K¯ú:ü¶¦/„û:ê¦�lò¦¯Ö.„§�üŒ§74 This example shows how to configure syntax options.Áȧ�<Чþ×.üܧ;Û˜;œ¨�줨úú8üƨB? .syntax(syntax::Config::new().crlf(true).multi_line(true))ÁÔ�©—¦;䬩ãý:üÍ©9‰þ:‹ª�ü“ª.áß.<ƪþ×.,ÙªÓ3Ô3 Ó3Ó‘ Ô3„ã BÿÄ ߪÄ Æ$àªîN<æªü”µküë/, Builds a `Regex` from many pattern strings.Á÷«�üÿ«K«€;üϬ9€�;�­�ü•­7ד;Ñ­�üÙ­C¤”;ä¡®ð”;®�<Ê®þ×.üÖ®1…±:Œ¯�ô”¯ let err = Regex::builder()Áü·¯1. .build_many(&["a", "b", r"\p{Foo}", "c"])Á´í¯¢ø.üˆ°8Ÿ²:<Űþ×.Ѱ�üÙ°%þ•;ƒ±�ü‹±E¹–;üÕ±Gˆ—;ü¡²GÙ—;|í²©˜;�³�<‰³þ×.ü•³;Û˜;Õ³�ìݳúú8üÿ³" .build_many::<&str>(&[])?;Áü¦´"ã™;Í´�üÕ´.áß.<ˆµþ×.T›µÕ3Ö3 Õ3Ó‘ Ö3©ò„ã BÿÄŒÈÈ ¾µÄ¹Ž/ ¦µÊŽ/T©µ’â $¿µ¨ JÈ"$ü޶)„§¶,»¾Ç�Ê�Ê�ÊÊÇåü,ûÀÇ�Ë�Ë�ËËÇljü£ÍDü÷Á74 Builds a `Regex` directly from an `Hir` expression.Á³Â�ü»ÂHE This is useful if you needed to parse a pattern string into an `Hir`ÁüˆÃIF for other reasons (such as analysis or transformations). This routineÁüÖÃIF permits building a `Regex` directly from the `Hir` expression insteadÁü¤Ä;8 of first converting the `Hir` back to a pattern string.ÁäÄ�üìÄGD When using this method, any options set via [`Builder::syntax`] areÁü¸ÅIF ignored. Namely, the syntax options only apply when parsing a patternÁü†Æ&# string, which isn't relevant here.Á±Æ�ü¹ÆHE If there was a problem building the underlying regex matcher for theÁü†Ç+( given `Hir`, then an error is returned.Á¶Ç�l¾Ç¯Ö.ÐÇ�üØÇIF This example shows how one can hand-construct an `Hir` expression andÁü¦È;8 build a regex from it without doing any parsing at all.ÁæÈ�<îÈþ×.LúÈ use {ÁüˆÉ-* regex_automata::{meta::Regex, Match},ÁüºÉ'$ regex_syntax::hir::{Hir, Look},Á4æÉ÷Ø.ñÉ�ŒùÉ // (?Rm)^foo$Áü�Ê let hir = Hir::concat(vec![Áü³Ê# Hir::look(Look::StartCRLF),ÁüÛÊ'$ Hir::literal("foo".as_bytes()),Áü‡Ë! Hir::look(Look::EndCRLF),Á<­Ëí¦9ì¹Ëúú8üÛË .build_from_hir(&hir)?;ÁäÿËãý:ü Ì9‰þ:ÞÌ�üæÌ,±»><—Íþ×.tªÍ×3Ø3 ×3Ó‘ Ø3‰ô„ã BÿÄ ¹ÍÄ Ì$ºÍ¤OÀÍüÔßqüžÎ:7 Builds a `Regex` directly from many `Hir` expressions.ÁÝÎ�üåÎDA This is useful if you needed to parse pattern strings into `Hir`Áü®ÏHE expressions for other reasons (such as analysis or transformations).ÁüûÏC@ This routine permits building a `Regex` directly from the `Hir`ÁüÃÐIF expressions instead of first converting the `Hir` expressions back toÁ¤‘Ñ pattern strings.ÁªÑ�ü²ÑG´™@üþÑI†š@üÌÒ&Úš@÷Ò�üÿÒH˜›@üÌÓ74 given `Hir` expressions, then an error is returned.ÁˆÔ�ü�ÔEB Note that unlike [`Builder::build_many`], this can only fail as aÁüÚÔEB result of building the underlying matcher. In that case, there isÁü¤ÕGD no single `Hir` expression that can be isolated as a reason for theÁüðÕKH failure. So if this routine fails, it's not possible to determine whichÁüÀÖ(% `Hir` expression caused the failure.ÁíÖ�lõÖ¯Ö.‡×�ü�×@= This example shows how one can hand-construct multiple `Hir`ÁüÔ×DA expressions and build a single regex from them without doing anyÁœ�Ø parsing at all.ÁµØ�<½Øþ×.LÉØý�@üר-‘ž@ü‰Ù'Éž@4µÙ÷Ø.ÀÙ�ŒÈÙ•Ÿ@üÞÙ  let hir1 = Hir::concat(vec![ÁüƒÚ#ÛŸ@ü«Ú'‰ @ü×Ú!» @<ýÚí¦9Œ‰Û // (?Rm)^bar$ÁüŸÛ  let hir2 = Hir::concat(vec![ÁüÄÛ#ÛŸ@üìÛ'$ Hir::literal("bar".as_bytes()),Áü˜Ü!» @<¾Üí¦9ìÊÜúú8üìÜ/, .build_many_from_hir(&[&hir1, &hir2])?;Áü Ý let hay = "\r\nfoo\r\nbar";ÁüÄÝ63 let got: Vec = re.find_iter(hay).collect();ÁÄÿÝ�°3ìœÞ Match::must(0, 2..5),Áô¾Þ Match::must(1, 7..10),Á4áÞó°3ôìÞ±Ä2�ß�ü—ß,±»><Èßþ×.œÛßÙ3Ú3 Ù3Ó‘ Ú3�·„ã BÿÄ„ÎÎ ˆàÄþÆ�¦ ïßÍ�¦‰ô\òß Í�¦$‰à”œÛ46,ÐâÍ�Ï�Ï�ÏÏÍœ§<ÃäÍ�Ð�Ð�ÐÐÍ ¯üŠñ;üƒæ(% Configure the behavior of a `Regex`.Á°æ�ü¸æJG This configuration controls non-syntax options related to the behaviorÁü‡çKH of a `Regex`. This includes things like whether empty matches can splitÁü×çHE a codepoint, prefilters, line terminators and a long list of optionsÁü¤èJG for configuring which regex engines the meta regex engine will be ableÁ´óè to use internally.ÁŽé�l–é¯Ö.¨é�ü°éHE This example shows how to disable UTF-8 empty mode. This will permitÁüýéEB empty matches to occur between the UTF-8 encoding of a codepoint.ÁÇê�<Ïêþ×.üÛê-ïü:�ë�ì•ëï¶>ü·ë8—·>üôëBÚ·>Ì»ì¨÷;ìÙì´¸>ìûìÛ¸><�íí¦9©í�ì±íúú8üÓí5Ñ´;¤�>ü¦î8—·>üãî+è¹>Ì“ï¨÷;ì±ï´¸>ìÓﹺ>ìõïàº>ì—ðÛ¸><¹ðí¦9Åð�üÍð,±»><þðþ×.L‘ñÛ3 Û3Ó‘Å�ǽ@BÿÄ ›ñÄ Ñ$ ñÉ4¦ñü‚ødü•òDA Configure the syntax options when parsing a pattern string whileÁ¼Þò building a `Regex`.Áúò�ü‚óQN These options _only_ apply when [`Builder::build`] or [`Builder::build_many`]ÁüØóEB are used. The other build methods accept `Hir` values, which haveÁÄ¢ô already been parsed.Á¿ô�lÇô¯Ö.Ùô�üáô;8 This example shows how to enable case insensitive mode.Á¡õ�<©õþ×.üµõ;Û˜;õõ�ìýõúú8üŸö=: .syntax(syntax::Config::new().case_insensitive(true))Á¼áö .build(r"δ")?;Áüýö;8 assert_eq!(Some(Match::must(0, 0..2)), re.find(r"Δ"));Á½÷�üÅ÷,±»><ö÷þ×.4‰øÜ3 Ü3Ó‘Ý’ƒÄ@BÿÄ ™øÄ Ò$žøÉ4¬øŒ´6l¸6êàäåç×üï!…CÓÔ¤O$’!ãÓÖÐ$¦!¼Ó؈ð<¬!ŸÓÙ“óº!¶ÓÚ™Õ:<¿!ÀÓÛ¹R4Þ!¹ÓÝé›L÷!ü(ÓÞÓ¿L‚!º-Óß|ã!ÆŒù!·‡!üù*!­<œ!�Ÿ‹�y{,Ð!dØ!pÔæ!`LNü»`!¤É!êÝ3Þ3 Ý3‰ô Þ3ôþ%Bÿ ò! à concat_prefixÁlã!÷ÉDü!,Š!à�á�á�ááàáÏå:œ¶)!¬’ãüÐ):!Þ)!â3ã3 â3 ã3‰ôřǙș­É™Ê™àË™óG*¤�R{9 ¬’Bÿâ è)!â 㔜$â)!üõCJ!¼øC!Óä3 ä3‰ôřǙș­É™Ê™àË™óG*¤�R{9 äü¢ÂBÿ •D! ä¤O�D!üÂR0!TÅR!Óå3 å3‰ôřǙș­É™Ê™àË™óG*¤�R{9 ÅõBÿ ÙR! å¤OÔR!˜Y!å�æ�æ�ææåæ�Ø:‰ôUÿäì`!<ï`!Óæ3 æ3‰ô‰ôBÿ ü`! ç¤O÷`!íe!ç�è�è�èèçèóÌ@Ýf!ç�é�é�ééçéóÌ@”Ç6tË6êòóôõüN…Cêëˆðœž/üÜH¤êêç3è3é3 ç3 è3‰ô é3ÈšBÿ … ò”œ$ÿsuffixÁ4Žü³@¤¶êê3ë3 ê3‰ô ë3ȚřǙș­É™Ê™àË™óG*¤�R{9 ‰ôBÿ Ð ó¤OË®Ð@4Öüûq¼þêì3í3 ì3‰ô í3ȚřǙș­É™Ê™àË™óG*¤�R{9 ‰ôBÿ   ô¤O›®Ð@4ª suffix_cursorÁl½üü €üÿ êî3ï3 î3��Ôñ‘ôï’maxÁ“greedyÁ”¤T¬5²@%] ï3Èš´Ó@Bÿ ©! õrepÁ¤!®Ð@4º!¦Ó@lÍ!,À%õ�ö�ö�ööõöUÿT’6Ó� ¬å6Óª+”ü6üä+6üÛ664–6êýÿ–Ât´è÷ùáºLÄé,÷ú—,ÏÑ,÷ûÛÀTÖÌ-÷ü,ŸܧdPR<>')ü°$ÄÓª+”›$Ô•$Ô¾$ð3ñ3ò3ó3 ð3ïò ñ3ûó ò3Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaó3Œ—Bÿ ã$ã¹ÒÞ$óA,�%–`,¬%ç'ý�þ�þ�þþýþíù9ûù9üº;ÞÓª+”ð:Ôê:t½;÷ô3õ3ö3÷3ø3ù3 ô3ïò õ3ûó ö3Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa÷3 ø3°ÿ ù3ÄÜÃÓBÿ Ö; ÿÒÑ;óA,ô;–`,Ÿ< Ø¶<†¸à<Õ>ÿ�€�€�€€ÿ€íù9ûù9ýAÿ�������ÿ�íù9±Ñ dž6D¢6곿¢ Ýçó÷üq,Ÿg‚„q¢g‚„Üî:l(–š‚†þî:T7•š‚‡p\¾‚‰formatÁ4a‚ŠKo„K‚‹Ð<޼‚�“ó—¶‚Ž�®TÇÉ‚’‹ÁTÓÚ‚“–Âtßè‚”áÁœïã‚•â«,•¬‚—ŸÃLœö‚˜ùjl°Ó‚™Çlt¿ê‚šÒyDÏ£ ‚›±$ô± ‚�ŒÞlú÷!‚ž”䮉¬#‚Ÿ�œãD®±&‚¢´…L¸Á&‚£Œ–\Ò­(‚¤þ9$󱂦é›Lùü(‚§õïT„Ä‚¨ñ�\¦ž)‚ª¦¡L³Ù)‚«žDЧ-‚­áºLÚé,‚®—,åÑ,‚¯ÕÛ,ìú,‚°Ó¿Lóº-‚±̼Tþ‹-‚²$Tÿü!ÞáÎÑ,L\TƯ²Li¥Œz—š‡Š,¢Œ¢ü¢"„‡twdgTWü¢pIL9<*- ü¢ÏDéô÷àãü¢õü¢‰ØÛÈˌ̼ü¢Î°L硤‘”ü¢�‡Šwzü¢«mp]`NQ>A.1!ü� YD¡ ê³³£Ø1ü� ¦¶Ø1,¯ ýÆÅ�($· ÿ Å�($¾ –šÅ�(lÅ •šÅ�(TÕ Å�(<â ³£Ø1r¶Ø1n®ç@c¿ç@YÏç@Nàç@Cñç@>£Ø1œ¶Ø1˜®ç@�¿ç@ƒÏç@xàç@mñç@h´µ¶·¸¹º»¼½¾´µ¶·¸¹º»¼½¾ ´»·¾º¶½¹µ¼¸üˆ $$‹ êú3 ú3Å�(¾Á¤ÏÃóÄÅÅÏÆóÀ9cgˆ¸†MBÿ³ � ³ ´Å�($‘ ü² #Tµ êû3 û3Å�( û3ýÝBÿ³ À ³ µÅ�($Á üÛ dÞ êü3 ü3Å�(ËŽBÿ³ ë ³ ¶Å�($ì ü�)\„êý3þ3 ý3Å�( þ3ËŽBÿ³ �³ ·Å�($‘óA,—ü°!t³êÿ3 ÿ3Å�(Bÿ³ ³ ¸Å�($Ãü× dÚê€4 €4Å�(Bÿ³ ç³ ¹Å�($èüýH4€ê�4‚4ƒ4„4 �4Å�( ‚4ËŽ ƒ4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa„4�´Bÿ³ ‡³ ºÅ�($ˆóA,Ž–`,¡üËp\Îê…4†4‡4ˆ4 …4Å�( †4ËŽ ‡4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaˆ4ÄÜBÿ³ ã³ »Å�($äóA,ò–`,�üÁADÄê‰4Š4‹4Œ4 ‰4Å�( Š4ËŽ ‹4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaŒ4Bÿ³ ͳ ¼Å�($ÎóA,Ô–`,çüˆœd‹ê�4Ž4�4�4‘4 �4Å�( Ž4ËŽ �4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa�4 ‘4ü¦ܧBÿ³ ¡³ ½Å�($¢óA,°–`,Ë©&,æüªŠÌ­ê’4“4”4•4–4 ’4Å�( “4ËŽ ”4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa•4 –4¡£Bÿ³ г ¾Å�($ÑóA,ß–`,ú˜¢ 4•ü¸fÆê—4˜4™4 —4ñ‰ ˜4 ™4‰ôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�³�þ©„Bÿ ÕÀ«†Ã$Ï”œ$åLü.¿�À�À�ÀÀ¿Àíþ%ÿþ%Ô÷<ŒÂ¹Ž/ ü<ĵ“Tÿ<ù’Ãü˜=#›=‚µ“àù@BÿÁÁ õ“ѶŸ=d’BÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ÅÆüªHol­H‚ž4Ÿ4 ž4ñ‰ Ÿ4��&řǙș­É™Ê™àË™óG*¤�R{9 àù@BÿÄ ÊHÄ Å†Ã$ÄH€ñDÞHüƒjq̆j‚ 4¡4¢4  4ñ‰ ¡4 ¢4‰ôâý@BÿÄ ¯jÄ Æ†Ã$©j”œ$Ãjüƒk#\›küôy'ŒÉɹŽ/ ùyÛû@Tüyù’ÊËÌÍÎÏÐÓÕÖ×´µ¶·¸¹º»¼½¾ ÎÊÕÍÐÌ×ÓÏËÖ‰‹ü¢z#$¥zê£4 £4ù’úé@BÿÈ ªzÈ Êµ“$«züÉ{"TÌ{ê¤4 ¤4ù’ ¤4ýÝBÿÈ ×{È Ëµ“$Ø{ü’|d•|ê¥4 ¥4ù’ËŽBÿÈ ¢|È Ìµ“$£|üµ)\¸ê¦4§4 ¦4ù’ §4ËŽBÿÈ ÄÈ Íµ“$ÅðØZìüç têê¨4 ¨4ù’BÿÈ ùÈ Îµ“$úü°€d³€ê©4 ©4ù’BÿÈ À€È ϵ“$Á€ü¶�H4¹�êª4«4¬4­4 ª4ù’ «4ËŽ ¬4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa­4�´BÿÈ À�È Ðµ“$Á�ðØûð–`ñ$ïƒÐ�Ñ�Ñ�ÑÑÐûß$ø„Ð�Ò�Ò�ÒÒЇâüâ…o\å…ê®4¯4°4±4 ®4ù’ ¯4ËŽ °4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa±4ÄÜBÿÈ ú…È Óµ“$û…óA{ô–`†ôú†Ó�Ô�Ô�ÔÔÓýèüè‡@Dë‡ê²4³4´4µ4 ²4ù’ ³4ËŽ ´4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaµ4BÿÈ ô‡È Õµ“$õ‡óA½ö–`Èöü›‰›dž‰ê¶4·4¸4¹4º4 ¶4ù’ ·4ËŽ ¸4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¹4 º4ü¦ܧBÿÈ ´‰È Öµ“$µ‰óAèú–`óú©&þúü•�‰̘�ê»4¼4½4¾4¿4 »4ù’ ¼4ËŽ ½4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¾4 ¿4¡£BÿÈ »�È ×µ“$¼�óAþ–`!þ˜¢ ,þL¬‘Ø“ÙÚÛÜÝÞßü¼‘y¿‘‚Ã4Ä4ñ‰ȹ Ã4 Ä4‰ôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwØ“©„BÿØ ‹’Ø Ù†Ã$Ì‘Ѷå‘”œ$…’üÇ´’”Ê´‚Å4Æ4Ç4È4 Å4Ø“ Æ4ËŽ Ç4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÈ4ï�BÿØ æ´ØÂÆ$ç´óAO–`Züð¸mló¸‚É4Ê4Ë4Ì4 É4Ø“ Ê4ËŽ Ë4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÌ4�´BÿØ йØ›£$‹¹óA,™¹–`,´¹üáÃv”äÂÍ4Î4Ï4Ð4 Í4Ø“ Î4ËŽ Ï4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÐ4ÄÜBÿØ €ÄØ�­$�ÄóA,�Ä–`,ªÄüúÇ¢œýÇ‚Ñ4Ò4Ó4Ô4Õ4 Ñ4Ø“ Ò4ËŽ Ó4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÔ4 Õ4ü¦ܧBÿØ šÈØýÅ$›ÈóA,©È–`,ÄÈ©&,ßÈü¥ÏG|¨Ï‚Ö4×4Ø4Ù4 Ö4Ø“ ×4ËŽ Ø4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÙ4BÿØ ¸ÏØõ·$¹ÏóA,¿Ï–`,ÒÏüîÕ<ÄñÕ‚Ú4 Ú4Ø“BÿØ ŠÖØóÀ$‹ÖìÊL‘Ö´ôÖØ“áâãäåçêëìíî´µ¶·¸¹º»¼½¾ äëçãêîâíåáìü‘×#$”×êÛ4 Û4Ø“úé@Bÿà ™×à á$š×ü™Ø"TœØêÜ4 Ü4Ø“ Ü4ýÝBÿà §Øà â$¨Øü Ùd£ÙêÝ4 Ý4ؓˎBÿà °Ùà ã$±ÙüçÜ(\êÜêÞ4ß4 Þ4Ø“ ß4ËŽBÿà öÜà ä$÷ÜóASüÍÞ tÐÞêà4 à4Ø“Bÿà ßÞà å$àÞ,˜ßå�æ�æ�ææåæÿÄUÿü¸ßd»ßêá4 á4Ø“Bÿà Èßà ç$Éß,¥àç�è�è�èèçèÖ£AUÿ,’áç�é�é�ééçé�ùUÿüÀâG4Ãâêâ4ã4ä4å4 â4Ø“ ã4ËŽ ä4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaå4�´Bÿà Êâà ê$ËâóA¬–`·ü±ëo\´ëêæ4ç4è4é4 æ4Ø“ ç4ËŽ è4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaé4ÄÜBÿà Éëà ë$ÊëóA³–`¾ü‹õ@DŽõêê4ë4ì4í4 ê4Ø“ ë4ËŽ ì4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaí4Bÿà —õà ì$˜õóAB–`Müûý›dþýêî4ï4ð4ñ4ò4 î4Ø“ ï4ËŽ ð4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õañ4 ò4ü¦ܧBÿà ”þà í$•þóA<'–`G'©&R'üЕ‰ÌÓ•êó4ô4õ4ö4÷4 ó4Ø“ ô4ËŽ õ4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaö4 ÷4¡£Bÿà ö•à î$÷•óA¨-–`³-˜¢ ¾-¤° ý”ðñüË 3Π‚Ø“ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwý”Ø“Bÿïï ðû$Ò ü�®˜ä“®‚û4ü4ý4þ4 û4ý” ü4ËŽ ý4Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaþ4è²Bÿï ¹®ïóð$º®óAÇ3–`Ò3üºº!ý”óôõö÷øùúûüý´µ¶·¸¹º»¼½¾ úöýùõüøôû÷óüâº#$åºêÿ4 ÿ4ý”úé@Bÿò êºò ó$ëºüö»"Tù»ê€5 €5ý” €5ýÝBÿò „¼ò ô$…¼üþ¼d�½ê�5 �5ý”ËŽBÿò ޽ò õ$�½ü…¾(\ˆ¾ê‚5ƒ5 ‚5ý” ƒ5ËŽBÿò ”¾ò ö$•¾óAØ6üá¾ tä¾ê„5 „5ý”Bÿò ó¾ò ÷$ô¾üÛÀdÞÀê…5 …5ý”Bÿò ëÀò ø$ìÀüâÁG4åÁê†5‡5ˆ5‰5 †5ý” ‡5ËŽ ˆ5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa‰5�´Bÿò ìÁò ù$íÁóA‡:–`’:üàÆo\ãÆêŠ5‹5Œ5�5 Š5ý” ‹5ËŽ Œ5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa�5ÄÜBÿò øÆò ú$ùÆóA×>–`â>ü²Ï@DµÏêŽ5�5�5‘5 Ž5ý” �5ËŽ �5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa‘5Bÿò ¾Ïò û$¿ÏóA6B–`ABüÚÓ›dÝÓê’5“5”5•5–5 ’5ý” “5ËŽ ”5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa•5 –5ü¦ܧBÿò óÓò ü$ôÓóAAI–`LI©&WIüð݉ÌóÝê—5˜5™5š5›5 —5ý” ˜5ËŽ ™5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaš5 ›5¡£Bÿò –Þò ý$—ÞóAJL–`UL˜¢ `L”¿â¾•ÿ� ‚ ƒ üØâ@Û₟5 5Ø“ Ÿ5  5‰ôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¾•Ø“Bÿþ ñâþ ÿû$ß├$ëâëöÿ�€ �€ �€ € ÿ€ Ó£Aüñ†�¬ô†‚¡5¢5£5¤5 ¡5¾• ¢5ËŽ £5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¤5û¢Bÿþ “‡þŠÅ$”‡óAžT–`©Tüš��œ��‚¥5¦5§5¨5 ¥5¾• ¦5ËŽ §5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¨5è²Bÿþ º�þÃË$»�óAæY–`ñYüÁ•­ÜÄ•‚©5ª5«5¬5 ©5¾• ª5ËŽ «5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¬5û¢Bÿþ é•þ´¢$ê•óAä]–`ï]Þ¬ù]ü­�¾•… † ‡ ˆ ‰ Š ‹ Œ � Ž � ´µ¶·¸¹º»¼½¾ ‰ … Œ ˆ � ‹ ‡ Ž Š † � üÓ�#$Ö�ê­5 ­5¾•úé@Bÿ„  Û�„ … $Ü�üåž"Tèžê®5 ®5¾• ®5ýÝBÿ„  óž„ † $ôžüíŸdðŸê¯5 ¯5¾•ËŽBÿ„  ýŸ„ ‡ $þŸüô (\÷ ê°5±5 °5¾• ±5ËŽBÿ„  ƒ¡„ ˆ $„¡óAï`üС tÓ¡ê²5 ²5¾•Bÿ„  â¡„ ‰ $ã¡ü™¢dœ¢ê³5 ³5¾•Bÿ„  ©¢„ Š $ª¢üº£G4½£ê´5µ5¶5·5 ´5¾• µ5ËŽ ¶5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa·5�´Bÿ„  Ä£„ ‹ $Å£óAJh–`Uhü�±o\„±ê¸5¹5º5»5 ¸5¾• ¹5ËŽ º5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa»5ÄÜBÿ„  ™±„ Œ $š±óAq–`qüÌÃ@DÏÃê¼5½5¾5¿5 ¼5¾• ½5ËŽ ¾5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¿5Bÿ„  ØÃ„ � $ÙÃóAv–`vüóÉ›döÉêÀ5Á5Â5Ã5Ä5 À5¾• Á5ËŽ Â5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÃ5 Ä5ü¦ܧBÿ„  ŒÊ„ Ž $�ÊóAø}–`~©&~ü¥×‰̨×êÅ5Æ5Ç5È5É5 Å5¾• Æ5ËŽ Ç5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÈ5 É5¡£Bÿ„  Ëׄ � $Ì×óAO�–`Z�˜¢ e�Œ¤ÚŒ–‘ “ ” • ü¼Ú?¿Ú‚Í5Î5Ø“ Í5 Î5‰ôÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŒ–Ø“Bÿ�  ÕÚ� ‘ û$ÃÚ”œ$ÏÚÿï‘ �’ �’ �’ ’ ‘ ’ Ó£Aü愃|é„‚Ï5Ð5Ñ5Ò5 Ï5Œ– Ð5ËŽ Ñ5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÒ5À’Bÿ�  ‚…� ýÅ$ƒ…óA‘–`‘üË™�ÔΙ‚Ó5Ô5Õ5Ö5 Ó5Œ– Ô5ËŽ Õ5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÖ5Œ—Bÿ�  ò™� Ê–$ó™óAP˜–`[˜ü‹ ­ÜŽ ‚×5Ø5Ù5Ú5 ×5Œ– Ø5ËŽ Ù5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÚ5û¢Bÿ�  ³ � å�$´ óAPœ–`[œÞ¬eœô¬¨Œ–— ˜ ™ š › œ � ž Ÿ   ¡ ´µ¶·¸¹º»¼½¾ Ÿ › — ž š ¡ � ™   œ ˜ üѨ#$Ô¨êÛ5 Û5Œ–úé@Bÿ–  Ù¨– — $Ú¨üâ©"Tå©êÜ5 Ü5Œ– Ü5ýÝBÿ–  ð©– ˜ $ñ©üêªdíªêÝ5 Ý5Œ–ËŽBÿ–  úª– ™ $ûªüƬ(\ɬêÞ5ß5 Þ5Œ– ß5ËŽBÿ–  Õ¬– š $Ö¬óAD¡üÏ­ tÒ­êà5 à5Œ–Bÿ–  á­– › $â­ü�®d ®êá5 á5Œ–Bÿ–  ­®– œ $®®üž°G4¡°êâ5ã5ä5å5 â5Œ– ã5ËŽ ä5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaå5�´Bÿ–  ¨°– � $©°óAN¤–`Y¤üåµo\èµêæ5ç5è5é5 æ5Œ– ç5ËŽ è5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaé5ÄÜBÿ–  ýµ– ž $þµóA©–`©ü¬¼@D¯¼êê5ë5ì5í5 ê5Œ– ë5ËŽ ì5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaí5Bÿ–  ¸¼– Ÿ $¹¼óA&­–`1­ü�›d Âêî5ï5ð5ñ5ò5 î5Œ– ï5ËŽ ð5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õañ5 ò5ü¦ܧBÿ–  ¶Â–   $·ÂóAµ–`&µ©&1µü³Î‰̶Îêó5ô5õ5ö5÷5 ó5Œ– ô5ËŽ õ5Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaö5 ÷5¡£Bÿ–  ÙΖ ¡ $ÚÎóAk¸–`v¸˜¢ �¸üÏÔCœÒÔ‚ø5‹¢ ø5ü¦Bÿ ÷ÔÍãɻ©&Ô»d¬6D°6ê„ … ‰ Š Ž � • – š › Ÿ   ¦ § « ¬ ° ± · ¸ ¼ ½ Á Â È É Í Î Ò Ó × Ø Ü Ý ã ä è é üÇ …C£ ¤ �®Tö É£ ¨ ‹ÁT‚ Ú£ © –ÂtŽ è£ ª ŸÃL® ö£ « ˆ¦4Ô Å£ ­ ä®Ü ¬#£ ® �é›Lø ü(£ ° ñ�\� ž)£ ± áºL¡ é,£ ² —,¬ Ñ,£ ³ ÕÛ,³ ú,£ ´ Ó¿Lº º-£ µ ¦¡LÅ Ù)£ ¶ ̼TÐ ‹-£ · ë<¾ £ ¸ ª+4í ô£ ¹ ÿeL± ² £ º |» �,Ñ ŒÑ üÑ " —š‡Šwz„§ küÑ € ^aNQüÑ ™ ¤í D¼ƒ 5"%ýÿèêÓÕ¾Àœ² Óù.¼” üŽ Ãlæ Óª+”Í ÔÇ Èü› Ó nfa-backtrackÁÌû üõ! Û\÷ ÿ–¼ ½ ¾ ü‰ƒ — ü5ý5 ü5ñ‰ȹ ý5�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwÿ–©„Bÿ»  ª » ¼ †Ã$¤ Ѷ¾ ß'Þ üÐ0 dÞ þ5 þ5ÿ–ó—Bÿ»  ë » ˆ—$ì üã) ñ ÿ5 ÿ5ÿ– ÿ5¹—Bÿ»  õ » ²Ú$ö Œê ¹—À Á  à ü‚‰ � ƒ6„6 ƒ6ñ‰ȹ „6�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¹—©„Bÿ¿  £ ¿ À †Ã$� Ѷ· ß'× ü½p DË …6†6‡6ˆ6 …6¹— †6ó— ‡6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaˆ6Bÿ¿  Ý ¿ Á $Þ óA,ì –`,� ü¯¬ d½ ‰6Š6‹6Œ6�6 ‰6¹— Š6ó— ‹6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaŒ6 �6ü¦ܧBÿ¿  Ó ¿  $Ô óA,â –`,ƒ ©&,ž üàš Ìî Ž6�6�6‘6’6 Ž6¹— �6ó— �6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa‘6 ’6¡£Bÿ¿  ‘ ¿ ôÚ$’ óAeÀ–`oÀ˜¢ yÀ„¡ ó—Å Æ Ç É ü¸# $Æ ó—BÿÄ Ä ‘Õüƒ 0 ,‘ —6˜6 —6ó— ˜6ÿ–BÿÄ  — Ä çœ$œ Ö<¢ üý * d‹! ™6 ™6ó—BÿÄ  ˜! Ä Ç $™! Ì! Ç �È �È �È È Ç È ›�Uÿüí!< ð! £ š6›6 š6ó— ›6ðÄ š6±ÇBÿÄ  ô! Ä Ó€$ù! vmÁÿ! Î" É �Ê �Ê �Ê Ê É Ê ±ÇUÿÌÿ¼Ç# ¸˜Ì Í Î üå#� ó# Ÿ6 6 Ÿ6ñ‰ȹ  6�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¸˜©„BÿË  †$ Ë Ì †Ã$€$ Ѷš$ ß'º$ üÐ%< dÞ% ¡6 ¡6¸˜¬™BÿË  ë% Ë É—$ì% üû&g ‰' ¢6£6¤6 ¢6¸˜ £6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¤6řǙș­É™Ê™àË™óG*¤�R{9  ¢6ò˜BÿË  –' Ë Î $—' –`,¥' ì¬2 ò˜Ð Ñ Ò Ó üÐ2� Þ2 ¨6©6 ¨6ñ‰ȹ ©6�»ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŸ‡©„BÿÏ  ñ2 Ï Ð †Ã$ë2 Ѷ…3 ß'¥3 üÔ:| Dâ: ª6«6¬6­6 ª6ò˜ «6¬™ ¬6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa­6BÿÏ  ô: Ï Ñ $õ: óA,ƒ; –`,°; üÂ@¸ dÐ@ ®6¯6°6±6²6 ®6ò˜ ¯6¬™ °6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa±6 ²6ü¦ܧBÿÏ  æ@ Ï Ò $ç@ óA,õ@ –`,¢A ©&,½A üïF# „òF £ ³6 ³6ò˜BÿÏ  ƒG Ï Ó $„G ä›K ¬™Õ Ö × Ù ü¾K/ $ÌK ¬™BÿÔ Ô µÕüÎM< ,ÜM ¸6¹6 ¸6¬™ ¹6¸˜BÿÔ  âM Ô Ã�$çM Ö<íM ü�O* d«O º6 º6¬™BÿÔ  ¸O Ô × $¹O ¤P × �Ø �Ø �Ø Ø × Ø ý±UÿüÆQe ÓŽ÷A̦Q ü Q! ÉQ £ »6¼6 »6¬™ ¼6«¡ »6ì£BÿÔ  ÖQ Ô Ù $ÛQ bbÁéQ ÐR Ù �Ú �Ú �Ú Ú Ù Ú ì£Uÿ‹‹d³S ñ™Ü Ý Þ ß üÆS9 ÔS À6Á6 À6ñ‰ Á6�»ñ™BÿÛ  ÞS Û Ü †Ã$ØS ß'êS ü¼T1 dÊT Â6 Â6ñ™åšBÿÛ  ×T Û Š˜$ØT üÔUE âU Ã6Ä6Å6 Ã6ñ™ Ä6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÅ6řǙș­É™Ê™àË™óG*¤�R{9  Ã6«šBÿÛ  æU Û éÁ$çU –` ËüûW* d‰X Æ6 Æ6ñ™BÿÛ  –X Û ß $—X ÊX ß �à �à �à à ß à ¢ÅUÿ”þY «šâ ã ä å ü—ZG ¥Z Ê6Ë6 Ê6ñ‰ Ë6�»‹�Bÿá  ¯Z á â †Ã$©Z ß'»Z üÛk­ dék Ì6Í6Î6Ï6Ð6 Ì6«š Í6åš Î6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÏ6 Ð6ü¦ܧBÿá  ÿk á ã $€l óA,Žl –`,°l ©&,Ël ü¿q* dÍq Ñ6 Ñ6«šBÿá  Úq á ä $Ûq Ìït <òt £ Ò6 Ò6«š Ò6�»Bÿá  út á �•$ût Œóx åšç è ê ë ü‹y$ $™y åšBÿæ æ ×Õüöz4 „{ ×6 ×6ñ™åšBÿæ  ‘{ æ è Ö<ˆ{ �| è �é �é �é é è é Â�B�ëUÿü›}1 ,©} Ø6Ù6 Ø6åš Ù6ñ™Bÿæ  ¯} æ Ÿž$´} Ö<º} üç~* dõ~ Ú6 Ú6åšBÿæ  ‚ æ ë $ƒ ì ë �ì �ì �ì ì ë ì ñ�Uÿ\¦� ª›î ï ð ñ ò ô¸� $Æ� ª›Bÿí í î üù�… ‡‚ Þ6ß6à6 Þ6ñ‰ȹ ß6�» à6�»ª›Bÿí  š‚ í ï †Ã$”‚ Ѷ®‚ ß'΂ ˆË4á‚ üƃ0 dÔƒ á6 á6ª›žœBÿí  áƒ í ˘$⃠üÜ„E ê„ â6ã6ä6 â6ª› ã6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaä6řǙș­É™Ê™àË™óG*¤�R{9  â6ä›Bÿí  î„ í °Ž$ï„ æ¯Òüë…$ <ù… å6 å6ª›Bÿí  �† í ò $‚† ŒÆ‡ ä›ô õ ÷ ù ú ü ý üÞ‡“ ì‡ é6ê6ë6 é6ñ‰ȹ ê6�» ë6�»›¡Bÿó  ÿ‡ ó ô †Ã$ù‡ Ѷ“ˆ ß'³ˆ ˆË4ƈ ü˜¢“ T¦¢ ì6í6î6ï6 ì6ä› í6žœ î6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaï6��Bÿó  º¢ ó ·�$»¢ óAbÖ–`mÖ¤ õ �ö �ö �ö ö õ ߬üú¦  œˆ§ ð6ñ6ò6ó6 ð6ä› ñ6žœ ò6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaó6è²Bÿó  ¥§ ó ¦¯$¦§ óAËÙ–`ÖÙú© ÷ �ø �ø �ø ø ÷ Ƴü²¬® ÔÀ¬ ô6õ6ö6÷6 ô6ä› õ6žœ ö6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa÷6Œ—Bÿó  ä¬ ó è¯$å¬ óAÛÜ–`æÜü�²  œ«² ø6ù6ú6û6 ø6ä› ù6žœ ú6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaû6è²Bÿó  Ȳ ó Îæ$ɲ óAšß–`¥ß�µ ú �û �û �û û ú •¿üÕ·¾ Üã· ü6ý6þ6ÿ6 ü6ä› ý6žœ þ6Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÿ6û¢Bÿó  ˆ¸ ó ôº$‰¸ óA¯â–`ºâÞ¬Äâü±½¼ 쿽 €7�7‚7ƒ7„7 €7ä› �7žœ ‚7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaƒ7 „7¡£èÜBÿó  æ½ ó ŽÙ$ç½ óAŽå–`™å˜¢ ¤åõÀ ý �þ �þ �þ þ ý ŠË„’Ä žœ€ � ƒ „ ü©Ä# $·Ä žœBÿÿ ÿ ùÕü‡Æ2 •Æ ‰7 ‰7ª›žœBÿÿ  ¢Æ ÿ � Ö<™Æ ˜Ç � �‚ �‚ �‚ ‚ � ‚ †��ƒUÿüžÈ0 ,¬È Š7‹7 Š7žœ ‹7ª›Bÿÿ  ²È ÿ ûž$·È Ö<½È üäÉ* dòÉ Œ7 Œ7žœBÿÿ  ÿÉ ÿ „ $€Ê äÊ „ �… �… �… … „ … ­¨ UÿD“Ì ãœ‡ ˆ ‰ Š ‹ Ü¢Ì $°Ì ãœBÿ† † ‡ üÝÌ‚ ëÌ �7‘7’7 �7ñ‰ȹ ‘7�» ’7�»ãœBÿ†  þÌ † ˆ †Ã$øÌ Ѷ’Í ß'²Í ˆË4ÅÍ üÚÎB èÎ “7”7•7 “7㜠”7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa•7řǙș­É™Ê™àË™óG*¤�R{9  “7��Bÿ†  ìÎ † ÷‹$íÎ æ¨ëüæÏ$ <ôÏ –7 –7ãœBÿ†  üÏ † Š $ýÏ ü±Ð* d¿Ð —7 —7ãœBÿ†  ÌÐ † ‹ $ÍÐ €Ñ ‹ �Œ �Œ �Œ Œ ‹ Œ ÍŒUÿt±Ò ��Ž � � ‘ ’ “ ” • üÆÒ� ÔÒ ›7œ7�7 ›7ñ‰ȹ œ7�» �7�»”ÓBÿ�  çÒ � Ž †Ã$áÒ ѶûÒ ß'›Ó ˆË4®Ó üÎòr TÜò ž7Ÿ7 7 ž7�� Ÿ7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa 7��Bÿ�  ðò � çŒ$ñò –`îüÛö œéö ¡7¢7£7 ¡7�� ¢7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa£7è²Bÿ�  †÷ �  ¬$‡÷ –`µîüªû� Ô¸û ¤7¥7¦7 ¤7�� ¥7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¦7Œ—Bÿ�  Üû � ã­$Ýû –`\ïü„€ œ’€ §7¨7©7 §7�� ¨7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa©7è²Bÿ�  ¯€ � ää$°€ –`ðüÔ„� Üâ„ ª7«7¬7 ª7�� «7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¬7û¢Bÿ�  ‡… � ç¸$ˆ… –`ªðÞ¬´ðü¾‰› ì̉ ­7®7¯7°7 ­7�� ®7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¯7 °7¡£èÜBÿ�  ó‰ � âÖ$ô‰ –`hñ˜¢ sñüºŽ* dÈŽ ±7 ±7��Bÿ�  ÕŽ � • $ÖŽ ”§’ ×�— ˜ ™ š üÀ’% $Î’ ×�Bÿ– – — ü�“B �“ µ7¶7 µ7ñ‰ ¶7�»×�Bÿ–  §“ – ˜ †Ã$¡“ ˆË4³“ ü�”7 d«” ·7 ·7×�ËžBÿ–  ¸” – ²¿$¹” üÁ•c Ï• ¸7¹7º7 ¸7×� ¹7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaº7řǙș­É™Ê™àË™óG*¤�R{9  ¸7‘žBÿ–  Ü• – ¾¶$Ý• æ€ôÄ�˜ ‘žœ � ü ˜g ®˜ ¾7¿7 ¾7ñ‰ ¿7�»ìäBÿ›  Á˜ › œ †Ã$»˜ ˆË4Õ˜ üø¤Å ܆¥ À7Á7Â7Ã7 À7‘ž Á7Ëž Â7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÃ7û¢Bÿ›  «¥ › ß·$¬¥ óAû÷–`øÞ¬ø¼Ö« ËžŸ   ¢ £ üô«* $‚¬ ËžBÿž ž �Öüç­@ õ­ È7 È7×�ËžBÿž  ‚® ž   Ö<ù­ �¯   �¡ �¡ �¡ ¡   ¡ ‘·ûóUÿüš°7 ,¨° É7Ê7 É7Ëž Ê7×�Bÿž  ®° ž ìÂ$³° Ö<¹° üç±* dõ± Ë7 Ë7ËžBÿž  ‚² ž £ $ƒ² ç² £ �¤ �¤ �¤ ¤ £ ¤ Ù° Uÿ|¤´ �Ÿ¦ § ¨ © ª üº´" $È´ �ŸBÿ¥ ¥ ¦ üƒµ? ‘µ Ï7Ð7 Ï7ñ‰ Ð7�»�ŸBÿ¥  ›µ ¥ § †Ã$•µ ˆË4§µ üÁ¶I ϶ Ñ7Ò7Ó7 Ñ7�Ÿ Ò7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÓ7řǙș­É™Ê™àË™óG*¤�R{9  Ñ7ÊŸBÿ¥  Ó¶ ¥ Ç´$Ô¶ æ”ýüÔ·$ <â· Ô7 Ô7�ŸBÿ¥  ê· ¥ © $ë· üŸ¸* d­¸ Õ7 Õ7�ŸBÿ¥  º¸ ¥ ª $»¸ î¸ ª �« �« �« « ª « šµUÿ¬®º ÊŸ­ ® ¯ üʺd غ Ù7Ú7 Ù7ñ‰ Ú7�»€÷Bÿ¬  ëº ¬ ­ †Ã$åº ˆË4ÿº ü‡Ð� ܕРÛ7Ü7Ý7 Û7ÊŸ Ü7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÝ7û¢Bÿ¬  ºÐ ¬ ѵ$»Ð –`úÿÞ¬üÚÔ* dèÔ Þ7 Þ7ÊŸBÿ¬  õÔ ¬ ¯ $öÔ \ìï2üÔ9Ï Provides non-deterministic finite automata (NFA) and regex engines that use them. While NFAs and DFAs (deterministic finite automata) have equivalent *theoretical* power, their usage in practice tends to result in different engineering trade offs. While this isn't meant to be a comprehensive treatment of the topic, here are a few key trade offs that are, at minimum, true for this crate: * NFAs tend to be represented sparsely where as DFAs are represented densely. Sparse representations use less memory, but are slower to traverse. Conversely, dense representations use more memory, but are faster to traverse. (Sometimes these lines are blurred. For example, an `NFA` might choose to represent a particular state in a dense fashion, and a DFA can be built using a sparse representation via [`sparse::DFA`](crate::dfa::sparse::DFA). * NFAs have epsilon transitions and DFAs don't. In practice, this means that handling a single byte in a haystack with an NFA at search time may require visiting multiple NFA states. In a DFA, each byte only requires visiting a single state. Stated differently, NFAs require a variable number of CPU instructions to process one byte in a haystack where as a DFA uses a constant number of CPU instructions to process one byte. * NFAs are generally easier to amend with secondary storage. For example, the [`thompson::pikevm::PikeVM`] uses an NFA to match, but also uses additional memory beyond the model of a finite state machine to track offsets for matching capturing groups. Conversely, the most a DFA can do is report the offset (and pattern ID) at which a match occurred. This is generally why we also compile DFAs in reverse, so that we can run them after finding the end of a match to also find the start of a match. * NFAs take worst case linear time to build, but DFAs take worst case exponential time to build. The [hybrid NFA/DFA](crate::hybrid) mitigates this challenge for DFAs in many practical cases. There are likely other differences, but the bottom line is that NFAs tend to be more memory efficient and give easier opportunities for increasing expressive power, where as DFAs are faster to search with. # Why only a Thompson NFA? Currently, the only kind of NFA we support in this crate is a [Thompson NFA](https://en.wikipedia.org/wiki/Thompson%27s_construction). This refers to a specific construction algorithm that takes the syntax of a regex pattern and converts it to an NFA. Specifically, it makes gratuitous use of epsilon transitions in order to keep its structure simple. In exchange, its construction time is linear in the size of the regex. A Thompson NFA also makes the guarantee that given any state and a character in a haystack, there is at most one transition defined for it. (Although there may be many epsilon transitions.) It's possible that other types of NFAs will be added in the future, such as a [Glushkov NFA](https://en.wikipedia.org/wiki/Glushkov%27s_construction_algorithm). But currently, this crate only provides a Thompson NFA. ÁÓ nfa-thompsonÁÄÑï2üËï 2ôï2± „÷9üÛ:Ö Defines a Thompson NFA and provides the [`PikeVM`](pikevm::PikeVM) and [`BoundedBacktracker`](backtrack::BoundedBacktracker) regex engines. A Thompson NFA (non-deterministic finite automaton) is arguably _the_ central data type in this library. It is the result of what is commonly referred to as "regex compilation." That is, turning a regex pattern from its concrete syntax string into something that can run a search looks roughly like this: * A `&str` is parsed into a [`regex-syntax::ast::Ast`](regex_syntax::ast::Ast). * An `Ast` is translated into a [`regex-syntax::hir::Hir`](regex_syntax::hir::Hir). * An `Hir` is compiled into a [`NFA`]. * The `NFA` is then used to build one of a few different regex engines: * An `NFA` is used directly in the `PikeVM` and `BoundedBacktracker` engines. * An `NFA` is used by a [hybrid NFA/DFA](crate::hybrid) to build out a DFA's transition table at search time. * An `NFA`, assuming it is one-pass, is used to build a full [one-pass DFA](crate::dfa::onepass) ahead of time. * An `NFA` is used to build a [full DFA](crate::dfa) ahead of time. The [`meta`](crate::meta) regex engine makes all of these choices for you based on various criteria. However, if you have a lower level use case, _you_ can build any of the above regex engines and use them directly. But you must start here by building an `NFA`. # Details It is perhaps worth expanding a bit more on what it means to go through the `&str`->`Ast`->`Hir`->`NFA` process. * Parsing a string into an `Ast` gives it a structured representation. Crucially, the size and amount of work done in this step is proportional to the size of the original string. No optimization or Unicode handling is done at this point. This means that parsing into an `Ast` has very predictable costs. Moreover, an `Ast` can be round-tripped back to its original pattern string as written. * Translating an `Ast` into an `Hir` is a process by which the structured representation is simplified down to its most fundamental components. Translation deals with flags such as case insensitivity by converting things like `(?i:a)` to `[Aa]`. Translation is also where Unicode tables are consulted to resolve things like `\p{Emoji}` and `\p{Greek}`. It also flattens each character class, regardless of how deeply nested it is, into a single sequence of non-overlapping ranges. All the various literal forms are thrown out in favor of one common representation. Overall, the `Hir` is small enough to fit into your head and makes analysis and other tasks much simpler. * Compiling an `Hir` into an `NFA` formulates the regex into a finite state machine whose transitions are defined over bytes. For example, an `Hir` might have a Unicode character class corresponding to a sequence of ranges defined in terms of `char`. Compilation is then responsible for turning those ranges into a UTF-8 automaton. That is, an automaton that matches the UTF-8 encoding of just the codepoints specified by those ranges. Otherwise, the main job of an `NFA` is to serve as a byte-code of sorts for a virtual machine. It can be seen as a sequence of instructions for how to match a regex. ÁÓˆ€CÄÜ9üÖ 9Dÿ9² ¯ é ó ‰ ³ Î ÅÊ“¨<¥:Ú!ˆ�®T¹:µ"‰’ï„Ø:ï#‹Øð\ê:Š$Œ·îŒ÷:ä#�´Ù,Š:Ã#Ž—¬T‘:ú#�䮥:¬#�÷ÞDâ:„"’ç4ì:ê!“ŒÞlô:÷!”Œÿ:ü€ û An NFA backed bounded backtracker for executing regex searches with capturing groups. This module provides a [`BoundedBacktracker`] that works by simulating an NFA using the classical backtracking algorithm with a twist: it avoids redoing work that it has done before and thereby avoids worst case exponential time. In exchange, it can only be used on "short" haystacks. Its advantage is that is can be faster than the [`PikeVM`](thompson::pikevm::PikeVM) in many cases because it does less book-keeping. ÁÓŽ÷AÌã:üÝ!:L‡:Í ® í ö ý „!‘!ž!¥!°!–Ž Ð=² ´ –² ´ ü˜ …C² µ ±$À ± ² ¸ �®TÆ µ"² ¹ ‰´Ù,Ò Ã#² º Žä®Ù ¬#² » �œãDý ±&² ½ Ø$,� ÿ² ¾ �$– «² ¿ é›L¯ ü(² À ñ�\Ï ž)²  ¦¡LÜ Ù)² à öžTç ±)² Ä µ¢<ó î)² Å žDŽ §-² Ç áºL˜ é,² È —,£ Ñ,² É ÕÛ,ª ú,² Ê ÛÀT± Ì-² Ë ú¹$½ Ú,² Ì ,† ÒÕD“ ´,£ Ô£ ªDµ ›ž‡Šsvü£D ”ó hVYGJ¤¤ ;ü£© .1!þü£è óõáãÐÒ¾À¬®šœüë B üÏ@ = Returns the minimum visited capacity for the given haystack.Á� �ü”M J This function can be used as the argument to [`Config::visited_capacity`]ÁüâJ G in order to guarantee that a backtracking search for the given `input`Áü­L I won't return an error when using a [`BoundedBacktracker`] built from theÁ„ú given `NFA`.Á‹ �ü� O L This routine exists primarily as a way to test that the bounded backtrackerÁüß M J works correctly when its capacity is set to the smallest possible amount.Áü­ O L Still, it may be useful in cases where you know you want to use the boundedÁüý H E backtracker for a specific input, and just need to know what visitedÁüÆ ( % capacity to provide to make it work.Áï �üó N K Be warned that this number could be quite large as it is multiplicative inÁü ( % the size the given NFA and haystack.Á¤ò ß7à7á7 ß7�» à7Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaá7Bÿ Œ Í ß'‡ –`,’ \² „ Ï Ð Ñ Ò Ó Õ ´ö üÄ- * Return a new default regex configuration.Áý „ BÿÎ Î Ï ü±$< ü´A ž‡6ú �ü‚F ÷‡6üÍG Ȉ6ü™F š‰6üäH ë‰6t± ½Š6Ä �üÌI ãŠ6üšC ·‹6üâH …Œ6ü¯G ØŒ6üûH ª�6|È ü�6Ü �üä# ø‘6Œ �l” ¯Ö.¦ �<® þ×.̺ ŽØ.üØ5 2 nfa::thompson::backtrack::BoundedBacktracker,Áü’# ø’6üº  Input, Match, MatchKind,Á4ß ÷Ø.ê �üòH ð“6ü¿* ' let re = BoundedBacktracker::builder()Áüî? < .configure(BoundedBacktracker::config().prefilter(pre))Áü²$ Œ•6üÛ& äÎ/ü†. Ê•6|¹ »ç/üÍ$ ! Some(Match::must(0, 5..11)),Áüö( % re.try_find(&mut cache, input)?,Á4£ ×è/® �ü¶. áß.<é þ×.õ �üýF À—6dÈ �˜6Ù �<á þ×.Ìí ŽØ.ü‹5 ͰCüÅ# ø’6üí$ ¦“64– ÷Ø.¡ �ü© H —™6üö * ë±Cü¥!? Ÿ²Cüé!$ Œ•6ü’"& äÎ/ü½". Ê•6üð": 7 // No match reported even though there clearly is one!Áü¯#6 3 assert_eq!(None, re.try_find(&mut cache, input)?);Áê# �üò#. áß.<¥$ þ×.L¸$ „ ȹ „ BÿÎ Î Ð $Æ$ ѶÌ$ üã6< ü¦%8 5 Set the visited capacity used to bound backtracking.Áã% �üë%K H The visited capacity represents the amount of heap memory (in bytes) toÁü»&H E allocate toward tracking which parts of the backtracking search haveÁüˆ'I F been done before. The heap memory needed for any particular search isÁüÖ'F C proportional to `haystack.len() * nfa.states().len()`, which an beÁü¡(J G quite large. Therefore, the bounded backtracker is typically only ableÁüð(  to run on shorter haystacks.Á•) �ü�)E B For a given regex, increasing the visited capacity means that theÁüç)B ? maximum haystack length that can be searched is increased. TheÁü®*I F [`BoundedBacktracker::max_haystack_len`] method returns that maximum.Áü* �ü„+E B The default capacity is a reasonable but empirically chosen size.ÁÎ+ �lÖ+ ¯Ö.è+ �üð+J G As with other regex engines, Unicode is what tends to make the boundedÁü¿,G D backtracker less useful by making the maximum haystack length quiteÁü‹-K H small. If necessary, increasing the visited capacity using this routineÁüÛ-G D will increase the maximum haystack length at the cost of using moreÁ\§.  memory.Á·. �ü¿.D A Note though that the specific maximum values here are not an APIÁüˆ/H E guarantee. The default visited capacity is subject to change and notÁ´Õ/  covered by semver.Áð/ �<ø/ þ×.ü„0= îõ.üÆ0E B use regex_automata::nfa::thompson::backtrack::BoundedBacktracker;Á�1 �ü˜1G D // Unicode inflates the size of the underlying NFA quite a bit, andÁüä1I F // thus means that the backtracker can only handle smaller haystacks,Áü²2< 9 // assuming that the visited capacity remains unchanged.Áüó2. + let re = BoundedBacktracker::new(r"\w+")?;Áü¦3, ) assert!(re.max_haystack_len() <= 7_000);Áü×3K H // But we can increase the visited capacity to handle bigger haystacks!Áü§4* ë±CüÖ4H E .configure(BoundedBacktracker::config().visited_capacity(1<<20))ÁÄ£5  .build(r"\w+")?;ÁüÀ5- * assert!(re.max_haystack_len() >= 25_000);Áüò5- * assert!(re.max_haystack_len() <= 28_000);Áü¤6. áß.<×6 þ×.„ê6 „ „ BÿÎ Î Ñ $ÿ6 ïŒD…7 ü²81 üê7C �ú7l¹8 æ7 æ7„ Å™Ç™È™­É™Ê™àË™óG*¤�R{9  æ7äüBÿÎ  Ç8 Î Ò $È8 üÆ:+ ü¥9, ) Returns the configured visited capacity.ÁÖ9 �üÞ9F C Note that the actual capacity used may be slightly bigger than theÁÄ©:  configured capacity.Á¤Í: ç7 ç7„ BÿÎ  â: Î Þ¢$ã: ¤ü: <‚; ² üè=3 Lö= è7 è7„ „ „ BÿÎ  €> Î Õ $�> ¥ ‡> Î> Õ �Ö �Ö �Ö Ö Õ Ö øœ8›ƒdÇQ Þ Ø Ù Ú Ü Ý Þ ß ¼ªR üÚQK H Create a new BoundedBacktracker builder with its default configuration.Á±R Þ Bÿ× × Ø ü²Uc üêS8 5 Build a `BoundedBacktracker` from the given pattern.Á§T �ü¯TJ ž‰/„þT ñ‰/Óí”™U Ô“U ,¹U í7î7 í7Þ  î7«”Bÿ×  ÈU × Ù $ÉU îN<×U ü¤Wx üÇV9 6 Build a `BoundedBacktracker` from the given patterns.ÁÓ픋W Ô…W T«W ï7ð7 ï7Þ  ð7©ò«”Bÿ× ŒÛ Û  ÎW × ¹Ž/ ¶W ÊŽ/T¹W úž$ÏW ¨ Ú !ü‹[g ü‚Y7 4 Build a `BoundedBacktracker` directly from its NFA.Á¾Y �üÆYK H Note that when using this method, any configuration that applies to theÁü–ZK H construction of the NFA itself will of course be ignored, since the NFAÁüæZ  given here is already built.Át’[ ñ7 ñ7Þ �»«”Bÿ×  ª[ × ‹“$«[ ß'¹[ üã]; ü‡]F C Apply the given `BoundedBacktracker` configuration options to thisÁdÒ] builder.ÁLê] ò7 ò7Þ „ àÙCBÿ×  ô] × Ý $ù] É4ÿ] üàad üî^7 ‘–/üª_4 Ó–/ã_ �üë_J Ÿ—/tº` ó—/Í` �üÕ`F C These settings only apply when constructing a `BoundedBacktracker`Áä a  directly from a pattern.ÁÓí”Ça ÔÁa 4ça ó7 ó7Þ Ý’—ÜCBÿ×  ÷a × Þ $üa É4Šb ü–fD ü…c= ÿ™/üÇc< Çš/ˆd �ü�dG D This permits setting things like if additional time should be spentÁüÜd"  shrinking the size of the NFA.Áƒe �ü‹eF úÙCäÖe ÉÚCÓí”ýe Ô÷e D�f ô7 ô7Þ ±ªÖÞCBÿ×  ¦f × ß $«f É4±f ¼ó† «¡á â ä å æ ç è é ê ë ì í î ï ü’�C ü‘‡J ¸¨/üà‡2 / return the corresponding `BoundedBacktracker`.Á—ˆ �üŸˆH Ï©/üìˆ ¢ª/�‰ �l˜‰ ¯Ö.ª‰ �<²‰ þ×.̾‰ ŽØ.ü܉5 ͰCt–Š Ñ·/4©Š ÷Ø.´Š �ü¼Š6 3 let re = BoundedBacktracker::new("foo[0-9]+bar")?;Áü÷Š& äÎ/|¢‹ »ç/ü¶‹( % Some(Ok(Match::must(0, 3..14))),Áüã‹A > re.try_find_iter(&mut cache, "zzzfoo12345barzzz").next(),Á4©Œ ×è/ü´Œ. áß.<çŒ þ×.Óí”ùŒ ÔóŒ ™� ù7 ù7«”Bÿà  ¦� à á îN<�� ü˜–g ü˜ŽI ÿ­/üæŽ8 Ó®/£� �l«� ¯Ö.½� �<Å� þ×.ÌÑ� ŽØ.üï�5 ͰCt©� Ñ·/4¼� ÷Ø.Ç� �üÏ�B ? let re = BoundedBacktracker::new_many(&["[a-z]+", "[0-9]+"])?;Áü–‘& äÎ/Á‘ �üÉ‘G D let mut it = re.try_find_iter(&mut cache, "abc 1 foo 4567 0 quux");Áü•’: 7 assert_eq!(Some(Ok(Match::must(0, 0..3))), it.next());ÁüÔ’: 7 assert_eq!(Some(Ok(Match::must(1, 4..5))), it.next());Áü““: 7 assert_eq!(Some(Ok(Match::must(0, 6..9))), it.next());ÁüÒ“< 9 assert_eq!(Some(Ok(Match::must(1, 10..14))), it.next());Áü“”< 9 assert_eq!(Some(Ok(Match::must(1, 15..16))), it.next());ÁüÔ”< 9 assert_eq!(Some(Ok(Match::must(0, 17..21))), it.next());Áü•• ƒ÷8üº•. áß.<í• þ×.Óí”ÿ• Ôù• DŸ– ú7 ú7©ò«”Bÿà Œã ã  Ê– à ¹Ž/ ¨– ÊŽ/T«– â µ“¨ | "üê G lÈ— ¯Ö.Ú— �üâ—E ĵ/ü¬˜G D compile an NFA from it and build a BoundedBacktracker from the NFA.Áø˜ �<€™ þ×.ÌŒ™ ŽØ.üª™< 9 nfa::thompson::{NFA, backtrack::BoundedBacktracker},Átë™ Ñ·/4þ™ ÷Ø.ü‰šE ø·/Óš �üÛš; Õ¸/ü››) ›¹/üÉ›) Ϲ/ü÷›) ƒº/ü¥œ) ·º/LÓœ êº/ᜠ�üéœ; ‹»/ü©�F Ñ»/ô� �üü�4 1 let re = BoundedBacktracker::new_from_nfa(nfa)?;ÁüµžJ ¶Ú.ü„Ÿ. + let expected = Some(Match::must(0, 3..4));Áü·Ÿ7 4 re.try_captures(&mut cache, "!@#A#@!", &mut caps)?;ÁüóŸ+ Þ½/£  �ü« . áß.<Þ  þ×.dñ  �»«”Bÿà à ä ß'þ  üÙ¦? üù¡? < Create a new `BoundedBacktracker` that matches every input.Á½¢ �lÅ¢ ¯Ö.×¢ �<ߢ þ×.Ìë¢ ŽØ.ü‰£5 ͰCtã Ñ·/4Ö£ ÷Ø.ᣠ�üé£1 . let re = BoundedBacktracker::always_match()?;ÁüŸ¤& äÎ/ʤ �üÒ¤2 / let expected = Some(Ok(Match::must(0, 0..0)));Áü‰¥B ? assert_eq!(expected, re.try_find_iter(&mut cache, "").next());ÁüÐ¥E B assert_eq!(expected, re.try_find_iter(&mut cache, "foo").next());Áüš¦. áß.<ͦ þ×.dঠ«”Bÿà à å üý«> ü…¨C @ Create a new `BoundedBacktracker` that never matches any input.Áͨ �lÕ¨ ¯Ö.ç¨ �<ï¨ þ×.üû¨E ñÃCÅ© �üÍ©0 - let re = BoundedBacktracker::never_match()?;Áü‚ª& äÎ/­ª �üµª> ; assert_eq!(None, re.try_find_iter(&mut cache, "").next());ÁüøªA > assert_eq!(None, re.try_find_iter(&mut cache, "foo").next());Áü¾«. áß.<ñ« þ×.\„¬ «”Bÿà à æ Ì�¹ ü§­> ; Return a default configuration for a `BoundedBacktracker`.Áê­ �üò­I ãÇ/üÀ®E B type when customizing the construction of a `BoundedBacktracker`.ÁН �l’¯ ¯Ö.¤¯ �ü¬¯D A This example shows how to disable UTF-8 mode. When UTF-8 mode isÁüõ¯D A disabled, zero-width matches that split a codepoint are allowed.Áü¾°& # Otherwise they are never reported.Áé° �üñ°G D In the code below, notice that `""` is permitted to match positionsÁü½±+ ( that split the encoding of a codepoint.Áí± �<õ± þ×.Ì�² ŽØ.üŸ²= : nfa::thompson::{self, backtrack::BoundedBacktracker},Átá² Ñ·/4ô² ÷Ø.ÿ² �ü‡³* ë±Cü¶³6 ¿Ö/¬ñ³ å¦3ü‹´& äÎ/¶´ �ܾ´  let haystack = "a☃z";ÁüÞ´8 5 let mut it = re.try_find_iter(&mut cache, haystack);Áü›µ: 7 assert_eq!(Some(Ok(Match::must(0, 0..0))), it.next());ÁüÚµ: 7 assert_eq!(Some(Ok(Match::must(0, 1..1))), it.next());Áü™¶: 7 assert_eq!(Some(Ok(Match::must(0, 2..2))), it.next());Áüض: 7 assert_eq!(Some(Ok(Match::must(0, 3..3))), it.next());Áü—·: 7 assert_eq!(Some(Ok(Match::must(0, 4..4))), it.next());ÁüÖ·: 7 assert_eq!(Some(Ok(Match::must(0, 5..5))), it.next());Áü•¸ ƒ÷8º¸ �ü¸. áß.<õ¸ þ×.4ˆ¹ „ Bÿà à ç ÜÇ ü¾¹: 7 Return a builder for configuring the construction of aÁÌý¹  `BoundedBacktracker`.Á›º �ü£º@ ÔÒ/üèº% ŸÓ/’» �lš» ¯Ö.¬» �ü´»C µÀ2|ü» Êù8�¼ �<˜¼ þ×.ü¤¼= îõ.Ìæ¼ ŽØ.ü„½= §þC¬Æ½ «Õ/tའѷ/4ó½ ÷Ø.þ½ �ü†¾* ë±Cüµ¾2 ‚Ö/üì¾6 ¿Ö/ü§¿& €×/üÒ¿J ¶Ú.¡À �ü©À4 åû8üâÀ. £ü8ü•Á6 3 re.try_captures(&mut cache, haystack, &mut caps)?;ÁüÐÁ+ Þ½/€Â �üˆÂ. áß.<»Â þ×.<ΠޠBÿà à Êžü½Å# ü‡Ã& # Create a new cache for this regex.Á²Ã �üºÃ@ ¢ß/üÿÃE B regex. If you want to reuse the cache for another regex, then youÁüÉÄA > must call [`Cache::reset`] with that regex (or, equivalently,Áü�Å) & [`BoundedBacktracker::reset_cache`]).ÁdÄÅ û7 û7«¡ì£Bÿà  ÑÅ à é $ÒÅ ü·Ê) ü‡ÆG ìÙ/üÓÆ; 8 valid for the search APIs on this `BoundedBacktracker`.Á“Ç �ü›ÇI F A `Captures` value created for a specific `BoundedBacktracker` cannotÁüéÇ0 - be used with any other `BoundedBacktracker`.ÁžÈ �ü¦ÈA ùÛ/üìÈD ÅÜ/üµÉE B constructors that permit the `BoundedBacktracker` to do less workÁüÿÉ3 0 during a search, and thus might make it faster.Á|¾Ê ü7 ü7«¡˜ÛBÿà  ÎÊ à ¨Û$ÏÊ üõÖ, ü©ËI ýá/ü÷ËC @ this `BoundedBacktracker` (and only this `BoundedBacktracker`).Á¿Ì �üÇÌH Šã/ü”Í* ' with a different `BoundedBacktracker`.ÁÃÍ �lËÍ ¯Ö.ÝÍ �üåÍA > This shows how to re-purpose a cache for use with a differentÁ̫Πœ…DÉÎ �<ÑÎ þ×.üÝÎ= îõ.ÌŸÏ ŽØ.ü½Ï5 ͰCt÷Ï Ñ·/4ŠÐ ÷Ø.•Ð �ü�Ð. + let re1 = BoundedBacktracker::new(r"\w")?;ÁüÐÐ. + let re2 = BoundedBacktracker::new(r"\W")?;ÁƒÑ �ü‹Ñ' Šç/|·Ñ »ç/üËÑ' $ Some(Ok(Match::must(0, 0..2))),Áü÷Ñ3 0 re1.try_find_iter(&mut cache, "Δ").next(),Á4¯Ò ×è/ºÒ �üÂÒH õè/ü�ÓI Èé/üÝÓ? < // it with the BoundedBacktracker we'd like to use it with.Á4¡Ô ßê/ü¬ÔJ ðê/|ûÔ Äë/´�Õ ÄÆ9|ªÕ »ç/ü¾Õ' $ Some(Ok(Match::must(0, 0..3))),ÁüêÕ4 1 re2.try_find_iter(&mut cache, "☃").next(),Á4£Ö ×è/®Ö �ü¶Ö. áß.<éÖ þ×.\üÖ ý7þ7 ý7«¡ þ7ì£Bÿà  ˆ× à ë $‰× óA,�× ü�â" üÊ×; 8 Returns the total number of patterns compiled into thisÁÌŠØ œ…D¨Ø �ü°ØI F In the case of a `BoundedBacktracker` that contains no patterns, thisÁ„þØ returns `0`.Á“Ù �l›Ù ¯Ö.­Ù �üµÙI F This example shows the pattern length for a `BoundedBacktracker` thatÁ”ƒÚ  never matches:ÁšÚ �<¢Ú þ×.ü®ÚE ñÃCøÚ �ü€Û0 ûöCüµÛ$ ! assert_eq!(re.pattern_len(), 0);ÁüÞÛ. áß.<‘Ü þ×.�Ü �ü¥ÜH E And another example for a `BoundedBacktracker` that matches at everyÁlòÜ position:Á„Ý �<ŒÝ þ×.ü˜ÝE ñÃCâÝ �üêÝ1 ÒòCü Þ$ ! assert_eq!(re.pattern_len(), 1);ÁüÉÞ. áß.<üÞ þ×.ˆß �ü�ßJ G And finally, a `BoundedBacktracker` that was constructed from multipleÁlßß patterns:Áñß �<ùß þ×.ü…àE ñÃCÏà �ü×àL I let re = BoundedBacktracker::new_many(&["[0-9]+", "[a-z]+", "[A-Z]+"])?;Áü¨á$ ! assert_eq!(re.pattern_len(), 3);ÁüÑá. áß.<„â þ×.\—â ÿ7 ÿ7«¡Bÿà  £â à ì $¤â ü¦ã# üßâ4 1 Return the config for this `BoundedBacktracker`.ÁT­ã €8 €8«¡ €8„ Bÿà  ¸ã à ¯¢$¹ã ì­ä üìã. Øï/<´ä �8 �8«¡ �8�»Bÿà  ¼ä à Ž°$½ä üýö' üêäF C Returns the maximum haystack length supported by this backtracker.Áµå �ü½åK H This routine is a function of both [`Config::visited_capacity`] and theÁü�æ+ ( internal size of the backtracker's NFA.Á½æ �lÅæ ¯Ö.׿ �üßæI F This example shows how the maximum haystack length can vary dependingÁü­çJ G on the size of the regex itself. Note though that the specific maximumÁüüçI F values here are not an API guarantee. The default visited capacity isÁüÊè0 - subject to change and not covered by semver.Áÿè �<‡é þ×.ü“é= îõ.ÌÕé ŽØ.üóé5 ͰCÔ­ê  Match, MatchError,Á4Ìê ÷Ø.×ê �üßê8 5 // If you're only using ASCII, you get a big budget.Áüœë3 0 let re = BoundedBacktracker::new(r"(?-u)\w+")?;ÁüÔë& äÎ/üÿë/ , assert_eq!(re.max_haystack_len(), 299_592);Áü³ì!  // Things work up to the max.ÁüÙì+ ( let mut haystack = "a".repeat(299_592);Áü‰í8 5 let expected = Some(Ok(Match::must(0, 0..299_592)));ÁüÆíI F assert_eq!(expected, re.try_find_iter(&mut cache, &haystack).next());Áü”îH E // But you'll get an error if you provide a haystack that's too big.ÁüáîD A // Notice that we use the 'try_find_iter' routine instead, whichÁüªï9 6 // yields Result instead of Match.Á¼èï  haystack.push('a');Áü„ðE B let expected = Some(Err(MatchError::haystack_too_long(299_593)));ÁüÎðI Ú­Dœñ �ü¤ñG ÌÄCüðñI �ÅCü¾ò< ðÅCüÿò. ¶ÆCü²ó, îÆCüãóK ¤ÇCü³ô* ë±CüâôH ‡ÈCįõ ØÈCüÌõ- úÈCüþõ- ±ÉCü°ö. áß.<ãö þ×.„„÷ ‚8 ‚8«¡Bÿà  •÷ à ï $–÷ ¼´ü «¡ñ õ ø û € üÐ�Š üÒüF ð‰9�ý �ü¥ýE B In the case of a backtracking regex engine, and unlike most otherÁüïýK H regex engines in this crate, short circuiting isn't practical. However,Áü¿þI F this routine may still be faster because it instructs backtracking toÁü�ÿ+ ( not keep track of any capturing groups.Á½ÿ �dÅÿ ¯Ö0Öÿ �üÞÿG D This routine only errors if the search could not complete. For thisÁüª€H E backtracking regex engine, this only occurs when the haystack lengthÁü÷€5 2 exceeds [`BoundedBacktracker::max_haystack_len`].Á±� �ü¹�F C When a search cannot complete, callers cannot know whether a matchÁ”„‚ ÜØ0›‚ �l£‚ ¯Ö.µ‚ �<½‚ þ×.üÉ‚E ñÃC“ƒ �ü›ƒ6 ÓàCüÖƒ& äÎ/�„ �ü‰„9 6 assert!(re.try_is_match(&mut cache, "foo12345bar")?);ÁüÇ„5 2 assert!(!re.try_is_match(&mut cache, "foobar")?);Áü�…. áß.<´… þ×.À… �üÈ…+ Ÿ§0ø… �ü€†G ¢®;ü̆E ô®;t–‡ ‡©0©‡ �<±‡ þ×.̽‡ ŽØ.üÛ‡5 ͰCt•ˆ ³ò>4¨ˆ ÷Ø.³ˆ �ü»ˆ, ) let re = BoundedBacktracker::new("a*")?;Áüìˆ& äÎ/—‰ �üŸ‰I F assert!(!re.try_is_match(&mut cache, Input::new("☃").span(1..2))?);Áüí‰. áß.< Š þ×.¬Š �ü´ŠE «0üþŠI ’¬0ôÌ‹ å¬0ï‹ �<÷‹ þ×.̃Œ ŽØ.ü¡Œ< 9 nfa::thompson::{backtrack::BoundedBacktracker, NFA},Át⌠³ò>4õŒ ÷Ø.€� �üˆ�* ë±Cü·�, –®0´è� Ì®0üƒŽ& äÎ/®Ž �ü¶ŽH E assert!(re.try_is_match(&mut cache, Input::new("☃").span(1..2))?);Áüƒ�. áß.<¶� þ×.d×� ƒ8„8 ƒ8«¡ „8죯¢¼«Bÿð ¸ò …ó ò ó  …� ð Ú±0 è� ì±0|ë� ñ ¸¯¢$†� óAª–`µä� <>,È‘ ñ �ô �ô �ô ô ñ Ъü­š� üè‘K H Executes a leftmost forward search and returns a `Match` if one exists.Á¸’ �üÀ’= : This routine only includes the overall match span. To getÁü‚“? < access to the individual spans of each capturing group, useÁüÆ“) & [`BoundedBacktracker::try_captures`].Áô“ �dü“ ¯Ö0�” �ü•”G ѶDüá”H £·Dü®•5 ö·Dè• �üð•F øD”»– ÜØ0Ò– �lÚ– ¯Ö.ì– �<ô– þ×.Ì€— ŽØ.üž—5 ͰCtØ— Ñ·/4ë— ÷Ø.ö— �üþ—3 0 let re = BoundedBacktracker::new("foo[0-9]+")?;Áü¶˜& äÎ/üá˜( ‘¾0üŽ™E B assert_eq!(Some(expected), re.try_find(&mut cache, "foo12345")?);ÁØ™ �üà™. áß.<“š þ×.D´š …8†8 …8«¡ †8죯¢æù Bÿð ¸ö …÷ ÷ ö  Þš ð Ú±0 Áš ì±0|Äš õ ¸¯¢$ßš óAÄ#–`Ï#½š <>üö¯¥ ü¶¥H ªÁ;üƒ¦F ýÁ;üΦK ÎÂ;´ž§ £Ã;¹§ �dÁ§ ¯Ö0Ò§ �üÚ§G ѶDü¦¨H £·Düó¨5 ö·D­© �üµ©F øD”€ª ÜØ0—ª �lŸª ¯Ö.±ª �<¹ª þ×.ÌŪ ŽØ.üãª5 ͰCl�« ûì>4¯« ÷Ø.º« �ü«% " let re = BoundedBacktracker::new(Áüì«. + r"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",Á<Ÿ¬ ÞÌ0ü«¬J ¶Ú.ú¬ �ü‚­: 7 re.try_captures(&mut cache, "2010-03-14", &mut caps)?;ÁìÁ­ ØÅ;üã­: €Æ;ü¢®: ÅÆ;üá®; ŠÇ;¡¯ �ü©¯. áß.<ܯ þ×.dý¯ ‡8ˆ8‰8 ‡8«¡ ˆ8죯¢ ‰8˜ÛÃÓBÿð ¸ù …ú ù ú  «° ð Ú±0 ް ì±0|‘° ø ¸¯¢$¬° óA)–`&)ɾ1)а EGü¸¹› üݱH ­�9üª²J ÿ�9ù² �ü�³H E If the regex engine returns an error at any point, then the iteratorÁÔγ  will yield that error.Áí³ �lõ³ ¯Ö.‡´ �<�´ þ×.Ì›´ ŽØ.ü¹´5 ͰCÔó´ «ªD4’µ ÷Ø.�µ �ü¥µ3 „ÈDüݵ& äÎ/ˆ¶ �ü�¶# Ô¤9ü¸¶3 0 let result: Result, MatchError> = reÁüð¶( % .try_find_iter(&mut cache, text)Áœ�· ±×;Ôµ·  let matches = result?;ÁìÔ· Ñ¥9ìö· ÷¥9ô˜¸ �¦9ü»¸ Ŧ9<߸ í¦9üë¸. áß.<ž¹ þ×.l¿¹ ü ý  ü «¡ ý 죯¢„!„!ÜÕˆ!é¾² ‰!óA² Š!ɾ² ‹!Û˲ ¶ÞÒräñ±ü ý ¸Bÿð ¸þ …ÿ þ ÿ ͹ ð Ú±0 Ù¹ ì±0|ܹ û ¸¯¢$ú¹ óA,–` ,CEѹ Õ¹ GIü©È£ ü•¼I ŽÏ;üã¼7 âÏ;Ÿ½ �ü§½J G This yields the same matches as [`BoundedBacktracker::try_find_iter`],Áüö½I F but it includes the spans of all capturing groups that participate inÁ|ľ each match.Áؾ �üà¾H ­ÒDÔ­¿ ÿÒDÌ¿ �üÔ¿J âÑ;ü£ÀJ ·Ò;üòÀJ ŒÓ;üÁÁ% áÓ;ëÁ �lóÁ ¯Ö.… �<� þ×.Ì™Â ŽØ.ü·Â5 ͰClñ ûì>4ƒÃ ÷Ø.ŽÃ �ü–Ã@ = let re = BoundedBacktracker::new("foo(?P[0-9]+)")?;ÁüÛÃ& äÎ/†Ä �üŽÄ# Ô¤9ܶÄ  let mut spans = vec![];ÁüÖÄ: 7 for result in re.try_captures_iter(&mut cache, text) {ÁܕŠ let caps = result?;ÁüµÅK ’Ö;ü…Æ? < spans.push(caps.get_group_by_name("numbers").unwrap());Á,ÉÆ ¶¯3ÜÓÆ  assert_eq!(spans, vec![ÁÌóÆ Ü×;Ô‘Ç ÿ×;ܰÇ £Ø;<ÐÇ í¦9üÜÇ. áß.<�È þ×.Œ°È � ‚  � «¡ ‚ 죯¢‘!‘!ÒÖ•!é¾² –!óA² —!ɾ² ˜!Û˲ êNJ&­�|4� ‚ ¸Bÿ𠸃 …„ ƒ „ ÂÈ ð Ú±0 ÎÈ ì±0|ÑÈ € ¸¯¢$ïÈ óAÕ.–`à.CEÆÈ ÊÈ GI¼ðÊ «¡† ‡ Œ � � ‘ üÌé” üŽËH ªÁ;üÛËF ýÁ;ü¦ÌK ÎÂ;´öÌ £Ã;‘Í �ü™ÍG D This is like [`BoundedBacktracker::try_captures`], but it accepts aÁüåÍ2 / concrete `&Input` instead of an `Into`.ÁœÎ �d¤Î ¯Ö0µÎ �ü½ÎG ѶDü‰ÏH £·DüÖÏ5 ö·D�Ð �ü˜ÐF øD”ãÐ ÜØ0úÐ �ü‚Ñ& †Ù0­Ñ �üµÑD A This example shows how to build a multi bounded backtracker thatÁüþÑ, ) permits searching for specific patterns.Á¯Ò �<·Ò þ×.ÌÃÒ ŽØ.üáÒ5 ͰCü›Ó* ' Anchored, Input, Match, PatternID,Á4ÊÓ ÷Ø.ÕÓ �üÝÓ, ) let re = BoundedBacktracker::new_many(&[Á´ŽÔ  "[a-z0-9]{6}",ÁÜ©Ô  "[a-z][a-z0-9]{5}",ÁDÉÔ ¯ƒ1üÖÔJ ¶Ú.ä¥Õ –€3ÆÕ �üÎÕC Ê€3ü–ÖK ˜�3üæÖG î�3„²× ¿‚3üÇ×. �¬<üú×A > re.try_search(&mut cache, &Input::new(haystack), &mut caps)?;ÁüÀØ+ Þ½/ðØ �üøØJ ÿƒ3üÇÙ" Ô„3üîÙ. Ç­<ü¡Ú$ »…3üÊÚ9 ê…3üˆÛ2 ÍÜ.ü¿Û+ Þ½/ïÛ �ü÷Û. áß.<ªÜ þ×.¶Ü �ü¾Ü0 šä0óÜ �üûÜG âä0üÇÝ; ´å0‡Þ �<�Þ þ×.ü›Þ= îõ.ÌÝÞ ŽØ.üûÞ5 ͰC¬µß  Match, Input,Á4Ïß ÷Ø.Úß �üâß7 4 let re = BoundedBacktracker::new(r"\b[0-9]{3}\b")?;ÁüžàJ ¶Ú.üíà òè0‘á �ü™áE ©é0üãáF ùé0ü®âI Êê0üüâE žë0tÆã íë0üÙã. †ì0üŒäH E re.try_search(&mut cache, &Input::new(&haystack[3..6]), &mut caps)?;ÁüÙä+ Þ½/‰å �ü‘åK ¹í0üáåH �î0ü®æF âî0üùæC ³ï0ÄÁç €ð0”Þç  re.try_search(ÁüõçA > &mut cache, &Input::new(haystack).range(3..6), &mut caps,Á<»è ÞÌ0üÇè+ Þ½/÷è �üÿè. áß.<²é þ×.TÓé Š8‹8Œ8�8Ž8 Š8«¡ ‹8ì£ Œ8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa�8 Ž8˜ÛÃÓBÿ…  çé … ®Ò$èé óA­1–`¸1ɾÃ1ü›…· ü†ìH ªÁ;üÓìF ­¶<üžíK þ¶<üîíK Ô·<ü¾îK H then `None` is returned and the contents of all `slots` is unspecified.ÁŽï �ü–ïI F This is like [`BoundedBacktracker::try_search`], but it accepts a rawÁüäïI F slots slice instead of a `Captures` value. This is useful in contextsÁü²ð: 7 where you don't want or need to allocate a `Captures`.Áñð �üùðK ö÷0üÉñF Ìø0ü”òK �ù0üäò6 óù0Ÿó �ü§óC Áú0”ïó Žû0ü†ôA > [`pattern_len() * 2`](crate::nfa::thompson::NFA::pattern_len)ÁüÌôK öû0dœõ ûœ/”­õ Žû0üÄõK èü0ü”öF ¾ý0dßö ûœ/ðö �døö ¯Ö0‰÷ �ü‘÷G ѶDüÝ÷H £·Düªø5 ö·Däø �üìøF øD”·ù ÜØ0Îù �lÖù ¯Ö.èù �üðùA þÿ0ü¶úJ Ê€1ü…û) Ÿ�1³û �<»û þ×.üÇû= îõ.̉ü ŽØ.ü§ü5 ͰCÌáü  PatternID, Input,Á4ÿü ÷Ø.Šý �ü’ý, ÙèD„Ãý ˜¾<|Øý ²¾<Dìý ¯ƒ1üùý& äÎ/ü¤þ% Ú¾<Îþ �üÖþD £„1üŸÿG ò„1äëÿ Ã…1ôŒ€ é…1ü¯€C ’†1ü÷€. à†1ª� �ü²�K ¦‡1ü‚‚I ü‡1¤Ð‚ ψ1üé‚1 îˆ1üŸƒ" ª‰1üƃ< ôÀ<ü‡„: »Á<Æ„ �ü΄. áß.<�… þ×.„¢… �8�8‘8’8“8 �8«¡ �8ì£ ‘8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa’8 “8ü¦ÀªBÿ…  ¼… … þ©$½… óA>–`>©&>$¬ˆ ‡ �ˆ �ˆ �ˆ ˆ ‡ ýé$ÙŠ ‡ �‰ �‰ �‰ ‰ ‡ ªî$ŒŽ ‡ �Š �Š �Š Š ‡ ãô$ô� ‡ �‹ �‹ �‹ ‹ ‡ €úüÔ“· ¤×“ ² ”8•8–8—8˜8 ”8«¡ •8ì£ –8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa—8 ˜8ü¦õÛBÿ…  õ“ … ¿è$ö“ óA,„” –`,Ÿ” ©&,º” <Û— Œ �� �� �� � Œ � ¬á‹‹£¬ú¦$À˜ Œ �Ž �Ž �Ž Ž Œ Ž †ëü¿œ­ Tœ ² ™8š8›8œ8�8 ™8«¡ š8ì£ ›8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaœ8 �8ü¦õÛBÿ…  Öœ … � $ל óA,åœ –`,€� ©&,›� üò³Æ Lõ³ ² ž8Ÿ8 8¡8¢8 ž8«¡ Ÿ8ì£  8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¡8Ç ¢8ü¦ÄÜBÿ…  ˆ´ … � $‰´ óA,—´ –`,²´ ™´Í´ €Î Dà´ ©&,û´ ü£¾Ä $¦¾ ² £8¤8¥8¦8§8 £8«¡ ¤8ì£ ¥8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¦8Ç §8ü¦ÄÜBÿ…  ´¾ … ‘ $µ¾ óA,þ –`,Þ¾  Øý¾ ™´—¿ ©&,ª¿ ,½Õ ‘ �’ �’ �’ ’ ‘ ’ ¶û»¤Uÿûù9üÙá8 æG” Ì3• ¸– • ” – ø¡— ˜ ÅQÆQ˜ Þá âá æá L˜â $�â “ “ è’üÒâ7 $Õâ «8 «8ø¡£’Bÿ“  Úâ “ ˜ æGÌ3¸$ßâ <Êä ˜ �™ �™ �™ ™ ˜ �‘ü·ë< æG› Ì3œ ¸� � › œ ò¢ž Ÿ ÅQÆQŸ ¼ë Àë Äë Lúë $ÿë š š º£ü·ì: $ºì ¯8 ¯8ò¢õ¢Bÿš  ¿ì š Ÿ æGÌ3¸$Äì <Ëî Ÿ �  �  �    Ÿ ô Töú 죢 £ ¤ ¥ ü®þ, ü‡û. + Create a new [`BoundedBacktracker`] cache.Áºû �üÂû> Ĥ1ü…üE B [`BoundedBacktracker::create_cache`], as it does not require alsoÁüÏü  importing the `Cache` type.Áóü �üûü= : If you want to reuse the returned `Cache` with some otherÁü½ýF C `BoundedBacktracker`, then you must call [`Cache::reset`] with theÁüˆþ!  desired `BoundedBacktracker`.Áµþ ´8 ´8«¡ì£Bÿ¡  ½þ ¡ ¢ é¾¹þ üÈŠ0 ü£ÿJ G Reset this cache such that it can be used for searching with differentÁÜòÿ  [`BoundedBacktracker`].Á’€ �üš€H Šã/üç€* Æ‘D–� �lž� ¯Ö.°� �ü¸�A £’DÌþ� œ…Dœ‚ �<¤‚ þ×.ü°‚= îõ.Ìò‚ ŽØ.ü�ƒ5 ͰCtʃ Ñ·/4݃ ÷Ø.èƒ �üðƒ. í“Dü£„. ¦”DÖ„ �üÞ„' Šç/|Š… »ç/üž…' ‰•DüÊ…3 »•D4‚† ×è/�† �ü•†H õè/üâ†I Èé/ü°‡? ²–D4ô‡ ßê/üÿ‡J ðê/|Έ Äë/´âˆ ÄÆ9|ýˆ »ç/ü‘‰' ×Dü½‰4 õ—D4ö‰ ×è/�Š �ü‰Š. áß.<¼Š þ×.,ÏŠ µ8¶8 µ8ì£ ¶8«¡Bÿ¡  ÕŠ ¡ £ $ÚŠ é¾àŠ üóŒ# ü¦‹; ú®1æ‹ �üî‹F ͯ1ü¹Œ5 ž°1dúŒ ·8 ·8ì£Bÿ¡  ‡� ¡ ¤ $ˆ� üû’ dþ’ ² ¸8¹8º8»8 ¸8ì£ ¹8«¡ º8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa»8ÃÓBÿ¡  ”“ ¡ ¥ $™“ é¾§“ –`,È“ dŒ¨ °¥§ ¨ © ª « ­ ¼È¨ TΨ ² ¦ ¦ üĪ* Ǫ ² Ä8 Ä8«¡°¥Bÿ¦  Ϫ ¦ ¨ é¾˪ ü•­5 4˜­ ² Å8 Å8°¥ÇBÿ¦  Ÿ­ ¦ © $¤­  Øª­ ™´¸­ üš±+ ,�± ² Æ8Ç8 Æ8°¥ Ç8«¡Bÿ¦  £± ¦ ª $¨±  ®± ü•´ d˜´ ² È8É8Ê8Ë8 È8°¥ É8«¡ Ê8Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaË8ÃÓBÿ¦  ®´ ¦ « $³´ é¾Á´ –`,â´ ϶ « �¬ �¬ �¬ ¬ « ¬ Û†Uÿûù9ü†¿ d‰¿ ² Ì8 Ì8°¥Bÿ¦  –¿ ¦ ­ $—¿ ü À, D£À ² Bÿ¯£¹¬À rhsÁ¸À \’:<–:± ·!Ú!˜  ô¯ ° K" „K¯ ² –' Ð=¯ ³ –¯ ³ ü1 …C¯ ´ �®Ti µ"¯ · ß'$ƒ Î ¯ ¹ ·îŒ‰ ä#¯ º —¬Tœ ú#¯ » 䮨 ¬#¯ ¼ ‘Ú$Ð Ø'¯ ¿ Œ–\Ö ­(¯ À ‚ö„ù ž¯  ¦¡L‹ Ù)¯ à öžT– ±)¯ Ä µ¢<¢ î)¯ Å L R, L H7:D, ,< Ô< Œb ü ; can be quite useful in the construction process of an NFA.Á³÷ �d»÷ ¯Ö0Ì÷ �üÔ÷K H This returns an error if the state identifier space is exhausted, or ifÁü¤ø5 2 the configured heap size limit has been exceeded.ÁLåø à8 à8�©Þ¦BÿÉ  ïø É Ò $ôø ü‚€k äÝù  Add a "union" NFA state.Áþù �ü†úH E A "union" NFA state that contains zero or more unconditional epsilonÁüÓúC @ transitions to other NFA states. The order of these transitionsÁü›ûJ G reflects a priority order where earlier transitions are preferred overÁ´êû  later transitions.Á…ü �ü�üK H Callers may provide an empty set of alternates to this method call, andÁüÝüJ G then later add transitions via `patch`. At final build time, a "union"Áü¬ýJ G state with no alternates is converted to a "fail" state, and a "union"ÁüûýH E state with exactly one alternate is treated as if it were an "empty"ÁTÈþ Ʋ8×þ �dßþ ¯Ö0ðþ �üøþK ÚÖEüÈÿ5 °×EL‰€ á8 á8�©•öÞ¦BÿÉ  œ€ É Ó $¡€ ˜ÛT¯€ ü‰‰s ü©�$ ! Add a "reverse union" NFA state.ÁÒ� �üÚ�K H A "reverse union" NFA state contains zero or more unconditional epsilonÁüª‚C ÏÙEüò‚C @ reflects a priority order where later transitions are preferredÁüºƒE B over earlier transitions. This is an inverted priority order whenÁü„„J G compared to `add_union`. This is useful, for example, for implementingÁüÓ„$ ! non-greedy repetition operators.Áü„ �ü„…K ŸÛEüÔ…K H then later add transitions via `patch`. At final build time, a "reverseÁü¤†I F union" state with no alternates is converted to a "fail" state, and aÁüò†H E "reverse union" state with exactly one alternate is treated as if itÁÔ¿‡  were an "empty" state.ÁÞ‡ �dæ‡ ¯Ö0÷‡ �üÿ‡K ÚÖEüψ5 °×EŒ�‰ â8 â8�©•öÞ¦BÿÉ  «‰ É Ô $°‰ ˜ÛT¾‰ üä�d 俊  Add a "range" NFA state.ÁàŠ �üèŠJ G A "range" NFA state is a state with one outgoing transition to anotherÁü·‹J G state, where that transition may only be followed if the current inputÁü†Œ. + byte falls between a range of bytes given.Á¹Œ �dÁŒ ¯Ö0ÒŒ �üÚŒK ÚÖEüª�5 °×ELë� ã8 ã8�©ÝÁÞ¦BÿÉ  þ� É Õ $ƒŽ ž²,‘Ž üñšp ìƒ�  Add a "sparse" NFA state.Á¥� �ü­�J G A "sparse" NFA state contains zero or more outgoing transitions, whereÁüü�I F the transition to be followed (if any) is chosen based on whether theÁüÊ�E B current input byte falls in the range of one such transition. TheÁü”‘J G transitions given *must* be non-overlapping and in ascending order. (AÁüã‘H E "sparse" state with no transitions is equivalent to a "fail" state.)Á°’ �ü¸’H E A "sparse" state is like adding a "union" state and pointing it at aÁü…“F C bunch of "range" states, except that the different alternates haveÁœÐ“  equal priority.Áè“ �üð“H E Note that a "sparse" state is the only state that cannot be patched.Áü½”H E This is because a "sparse" state has many transitions, each of whichÁüŠ•B ? may point to a different NFA state. Moreover, adding more suchÁüÑ•G D transitions requires more than just an NFA state ID to point to. ItÁü�–H E also requires a byte range. The `patch` routine does not support theÁüê–H E additional information required. Therefore, callers must ensure thatÁü·—J G all outgoing transitions for this state are included when `add_sparse`Áü†˜1 . is called. There is no way to add more later.Á¼˜ �dĘ ¯Ö0Õ˜ �üݘK ÚÖEü­™5 °×Eç™ �dï™ ”Ÿ0€š �üˆšH E This routine _may_ panic if the transitions given overlap or are notÁ¼Õš  in ascending order.ÁTøš ä8 ä8�©‹ÎÞ¦BÿÉ  Œ› É Ö $‘› þÙ\Ÿ› üá s ÜŸœ  Add a "look" NFA state.Á¿œ �üÇœ> ; A "look" NFA state corresponds to a state with exactly oneÁüŠ�E B *conditional* epsilon transition to another NFA state. Namely, itÁüÔ�F C represents one of a small set of simplistic look-around operators.ÁŸž �ü§žI F Callers may provide a "dummy" state ID (typically [`StateID::ZERO`]),Áüõž< 9 and then change it later with [`patch`](Builder::patch).Á¶Ÿ �d¾Ÿ ¯Ö0ÏŸ �üןK ÚÖEü§ 5 °×EDè  å8 å8�©ÇôíÞ¦BÿÉ  ú  É × $ÿ  ¥ $�¡ ¢Ô$¤¡ ü¤Ý¢ ü�¢$ ! Add a "start capture" NFA state.Á¸¢ �üÀ¢G D A "start capture" NFA state corresponds to a state with exactly oneÁüŒ£F C outgoing unconditional epsilon transition to another state. UnlikeÁü×£C @ "empty" states, a "start capture" state also carries with it anÁüŸ¤H E instruction for saving the current position of input to a particularÁüì¤G D location in memory. NFA simulations, like the Pike VM, may use thisÁü¸¥F C information to report the match locations of capturing groups in aÁ”ƒ¦  regex pattern.Áš¦ �ü¢¦H E If the corresponding capturing group has a name, then callers shouldÁ¤ï¦  include it here.Áˆ§ �ü�§I ·ùEüÞ§< ‹úEŸ¨ �ü§¨J G Note that unlike `start_pattern`/`finish_pattern`, capturing start andÁüö¨H E end states may be interleaved. Indeed, it is typical for many "startÁüéG D capture" NFA states to appear before the first "end capture" state.Á�ª �d—ª ¯Ö0¨ª �ü°ªK ÚÖEü€«D A the configured heap size limit has been exceeded or if the givenÁüÉ«$ ! capture index overflows `usize`.Áò« �üú«E B While the above are the only conditions in which this routine canÁüĬI F currently return an error, it is possible to call this method with anÁü’­I F inputs that results in the final `build()` step failing to produce anÁüà­H E NFA. For example, if one adds two distinct capturing groups with theÁü­®H E same name, then that will result in `build()` failing with an error.Áú® �ü‚¯D A See the [`GroupInfo`](crate::util::captures::GroupInfo) type forÁü˯A > more information on what qualifies as valid capturing groups.Á‘° �l™° ¯Ö.«° �ü³°J G This example shows that an error occurs when one tries to add multipleÁü‚±< 9 capturing groups with the same name to the same pattern.Áñ �<˱ þ×.Ì×± ŽØ.üõ±  nfa::thompson::Builder,Áü™²"  util::primitives::StateID,Á4À² ÷Ø.˲ �üÓ²1 . let name = Some(std::sync::Arc::from("foo"));Áü‰³% " let mut builder = Builder::new();Áì³³  builder.start_pattern()?;ÁüÕ³2 / // 0th capture group should always be unnamed.ÁüŒ´C @ let start = builder.add_capture_start(StateID::ZERO, 0, None)?;ÁLÔ´  // OKÁüâ´? < builder.add_capture_start(StateID::ZERO, 1, name.clone())?;Áü¦µG D // This is not OK, but 'add_capture_start' still succeeds. We don'tÁüòµG D // get an error until we call 'build' below. Without this call, theÁü¾¶+ ( // call to 'build' below would succeed.Áüî¶? < builder.add_capture_start(StateID::ZERO, 2, name.clone())?;Áü²·9 6 // Finish our pattern so we can try to build the NFA.Áüð·# builder.finish_pattern(start)?;Áü˜¸- * let result = builder.build(start, start);Áìʸ ¯¡;ì¸ �üô¸. áß.<§¹ þ×.³¹ �ü»¹C @ However, adding multiple capturing groups with the same name toÁôƒº  distinct patterns is okay:Á¦º �<®º þ×.¼ºº  use std::sync::Arc;ÁÖº �ÌÞº ŽØ.üüº= : nfa::thompson::{pikevm::PikeVM, Builder, Transition},Á|¾» util::{ÁüÒ»  captures::Captures,Áüö»- * primitives::{PatternID, StateID},ÁT¨¼  },Ál·¼ ûì>4ɼ ÷Ø.Ô¼ �üܼG D // Hand-compile the patterns '(?P[a-z])' and '(?P[A-Z])'.Áü¨½% ��FüÒ½F C // We compile them to support an unanchored search, which requiresÁü�¾K H // adding an implicit '(?s-u:.)*?' prefix before adding either pattern.Áüí¾? < let unanchored_prefix = builder.add_union_reverse(vec![])?;Áü±¿, ) let any = builder.add_range(Transition {Áüâ¿: 7 start: b'\x00', end: b'\xFF', next: StateID::ZERO,ÁD¡À  })?;Áü®À+ ( builder.patch(unanchored_prefix, any)?;ÁüÞÀ+ ( builder.patch(any, unanchored_prefix)?;ÁŽÁ �ü–ÁF C // Compile an alternation that permits matching multiple patterns.ÁüáÁ) & let alt = builder.add_union(vec![])?;Áü�Â+ ( builder.patch(unanchored_prefix, alt)?;Á¿Â �üÇÂ!  // Compile '(?P[a-z]+)'.Áìí Ì�Fü�ÃD A let start0 = builder.add_capture_start(StateID::ZERO, 0, None)?;ÁüØÃ5 2 // N.B. 0th capture group must always be unnamed.Áü’Ä/ , let foo_start0 = builder.add_capture_start(ÁüÆÄ1 . StateID::ZERO, 1, Some(Arc::from("foo")),Á<üÄ ÞÌ0üˆÅ2 / let lowercase = builder.add_range(Transition {Áü¿Å4 1 start: b'a', end: b'z', next: StateID::ZERO,ÁDøÅ ‰›Fü…Æ> ; let foo_end0 = builder.add_capture_end(StateID::ZERO, 1)?;ÁüÈÆ: 7 let end0 = builder.add_capture_end(StateID::ZERO, 0)?;Áü‡Ç& # let match0 = builder.add_match()?;Áü²Ç' $ builder.patch(start0, foo_start0)?;ÁüÞÇ* ' builder.patch(foo_start0, lowercase)?;Áü�È( % builder.patch(lowercase, foo_end0)?;ÁüºÈ# builder.patch(foo_end0, end0)?;ÁüâÈ!  builder.patch(end0, match0)?;ÁüˆÉ$ ! builder.finish_pattern(start0)?;Á±É �ü¹É!  // Compile '(?P[A-Z]+)'.ÁìßÉ Ì�Fü�ÊD A let start1 = builder.add_capture_start(StateID::ZERO, 0, None)?;ÁüÊÊ5 æžFü„Ë/ , let foo_start1 = builder.add_capture_start(Áü¸Ë1 àŸF<îË ÞÌ0üúË2 / let uppercase = builder.add_range(Transition {Áü±Ì4 1 start: b'A', end: b'Z', next: StateID::ZERO,ÁDêÌ ‰›Fü÷Ì> ; let foo_end1 = builder.add_capture_end(StateID::ZERO, 1)?;ÁüºÍ: 7 let end1 = builder.add_capture_end(StateID::ZERO, 0)?;ÁüùÍ& # let match1 = builder.add_match()?;Áü¤Î' $ builder.patch(start1, foo_start1)?;ÁüÐÎ* ' builder.patch(foo_start1, uppercase)?;ÁüÿÎ( % builder.patch(uppercase, foo_end1)?;Áü¬Ï# builder.patch(foo_end1, end1)?;ÁüÔÏ!  builder.patch(end1, match1)?;ÁüúÏ$ ! builder.finish_pattern(start1)?;Á£Ð �ü«ÐE B // Now add the patterns to our alternation that we started above.ÁüõÐ  builder.patch(alt, start0)?;ÁüšÑ  builder.patch(alt, start1)?;Á¿Ñ �üÇÑI F // Finally build the NFA. The first argument is the anchored startingÁü•ÒA > // state (the pattern alternation) where as the second is theÁüÛÒ9 6 // unanchored starting state (the unanchored prefix).Áü™Ó5 2 let nfa = builder.build(alt, unanchored_prefix)?;ÁÓÓ �üÛÓD A // Now build a Pike VM from our NFA and access the 'foo' captureÁü¤ÔE B // group regardless of which pattern matched, since it is definedÁÌîÔ  // for both patterns.ÁüŒÕ( % let vm = PikeVM::new_from_nfa(nfa)?;Áü¹Õ& # let mut cache = vm.create_cache();ÁìäÕ  let caps: Vec =Áü†Ö< 9 vm.captures_iter(&mut cache, "0123aAaAA").collect();ÁôÇÖ  assert_eq!(5, caps.len());ÁêÖ �üòÖ< 9 assert_eq!(Some(PatternID::must(0)), caps[0].pattern());Áü³×I F assert_eq!(Some(Span::from(4..5)), caps[0].get_group_by_name("foo"));Á�Ø �ü‰Ø< 9 assert_eq!(Some(PatternID::must(1)), caps[1].pattern());ÁüÊØI F assert_eq!(Some(Span::from(5..6)), caps[1].get_group_by_name("foo"));Á˜Ù �ü Ù< 9 assert_eq!(Some(PatternID::must(0)), caps[2].pattern());ÁüáÙI F assert_eq!(Some(Span::from(6..7)), caps[2].get_group_by_name("foo"));Á¯Ú �ü·Ú< 9 assert_eq!(Some(PatternID::must(1)), caps[3].pattern());ÁüøÚI F assert_eq!(Some(Span::from(7..8)), caps[3].get_group_by_name("foo"));ÁÆÛ �üÎÛ< 9 assert_eq!(Some(PatternID::must(1)), caps[4].pattern());Áü�ÜI F assert_eq!(Some(Span::from(8..9)), caps[4].get_group_by_name("foo"));ÁÝÜ �üåÜ. áß.<˜Ý þ×.Œ«Ý æ8 æ8�©ÇÙ™Þ¦BÿÉ  ÆÝ É Ø $ËÝ ¥ $ÙÝ ÊÚ\ðÝ ‚ $ŠÞ ü½÷€ üÆê"  Add a "end capture" NFA state.Áíê �üõêE B A "end capture" NFA state corresponds to a state with exactly oneÁü¿ëF ™ýEüŠìA > "empty" states, a "end capture" state also carries with it anÁüÐìH ¸þEü�íG ‹ÿEüéíF ÝÿE´î �ü¼îI ·ùEüŠï< ‹úEËï �üÓïJ €‚Fü¢ðH Õ‚FüïðG ¨ƒF»ñ �dÃñ ¯Ö0Ôñ �üÜñK ÚÖEü¬òD ±„Füõò$ €…Fžó �ü¦óE ¼…FüðóI Œ†Fü¾ôI à†FüŒõH ´‡FüÙõH ‡ˆF¦ö �ü®öD çˆFü÷öA ¶‰F|Ä÷ ç8 ç8�©ÇÞ¦BÿÉ  Ý÷ É Ù $â÷ ¥ $ð÷ ÊÚ\‡ø ü‡ÿ9 ä¯û  Adds a "fail" NFA state.ÁÐû �üØûI F A "fail" state is simply a state that has no outgoing transitions. ItÁü¦üF C acts as a way to cause a search to stop without reporting a match.ÁüñüI F For example, one way to represent an NFA with zero patterns is with aÁÄ¿ý  single "fail" state.ÁÜý �däý ¯Ö0õý �üýýK ÚÖEüÍþ5 °×EDŽÿ è8 è8�©Þ¦BÿÉ  —ÿ É Ú $œÿ üÛ…: ììÿ  Adds a "match" NFA state.ÁŽ€ �ü–€C @ A "match" state has no outgoing transitions (just like a "fail"ÁüÞ€F C state), but it has special significance in that if a search entersÁü©�J G this state, then a match has been found. The match state that is addedÁüø�H E automatically has the current pattern ID associated with it. This isÁüÅ‚: 7 used to report the matching pattern ID at search time.Á„ƒ �dŒƒ ¯Ö0�ƒ �ü¥ƒK ÚÖEüõƒ5 °×E¯„ �d·„ ”Ÿ0È„ �üЄC @ This must be called after a `start_pattern` call but before theÁü˜…> ; corresponding `finish_pattern` call. Otherwise, it panics.ÁLâ… é8 é8�©Þ¦BÿÉ  ì… É Û $ñ… üìˆ> ïˆ ¯ ê8 ê8�©þ¥Þ¦BÿÉ  óˆ É Ü $øˆ ƒ,þˆ ó‰ Ü �Ý �Ý �Ý Ý Ü Ý è§/×°Uÿ²žüæ’l üº‹/ , Add a transition from one state to another.Áî‹ �üö‹E B This routine is called "patch" since it is very common to add theÁüÀŒJ G states you want, typically with "dummy" state ID transitions, and thenÁü��I F "patch" in the real state IDs later. This is because you don't alwaysÁüÝ�E B know all of the necessary state IDs to add because they might notÁt§Ž exist yet.ÁºŽ �dÂŽ ¯Ö0ÓŽ �üÛŽH E This may error if patching leads to an increase in heap usage beyondÁü¨�I F the configured size limit. Heap usage only grows when patching adds aÁüö�7 4 new transition (as in the case of a "union" state).Á²� �dº� ”Ÿ0Ë� �üÓ�H E This panics if `from` corresponds to a "sparse" state. When "sparse"Áü ‘K H states are added, there is no way to patch them after-the-fact. (If youÁüð‘I F have a use case where this would be helpful, please file an issue. ItÁü¾’# will likely require a new API.)Á,í’ ë8 ë8�©ÇǧõBÿÉ  ü’ É Þ $�“ ”$�“ Š˜1¦“ üŠ­% ü¢�I F Set whether the NFA produced by this builder should only match UTF-8.Áð� �üø�; 8 This should be set when both of the following are true:Á¸ž �üÀžI F 1. The caller guarantees that the NFA created by this build will onlyÁüŽŸ= : report non-empty matches with spans that are valid UTF-8.ÁüПI F 2. The caller desires regex engines using this NFA to avoid reportingÁüž J G empty matches with a span that splits a valid UTF-8 encoded codepoint.Áí  �üõ E B Property (1) is not checked. Instead, this requires the caller toÁü¿¡H E promise that it is true. Property (2) corresponds to the behavior ofÁüŒ¢F C regex engines using the NFA created by this builder. Namely, thereÁü×¢G D is no way in the NFA's graph itself to say that empty matches foundÁü££H E by, for example, the regex `a*` will fall on valid UTF-8 boundaries.Áüð£K H Instead, this option is used to communicate the UTF-8 semantic to regexÁüÀ¤I F engines that will typically implement it as a post-processing step byÁüŽ¥D A filtering out empty matches that don't fall on UTF-8 boundaries.Á×¥ �üߥ: 7 If you're building an NFA from an HIR (and not using aÁüž¦I F [`thompson::Compiler`](crate::nfa::thompson::Compiler)), then you canÁüì¦G D use the [`syntax::Config::utf8`](crate::util::syntax::Config::utf8)Áü¸§J G option to guarantee that if the HIR detects a non-empty match, then itÁü‡¨$ ! is guaranteed to be valid UTF-8.Á°¨ �ü¸¨G D Note that property (2) does *not* specify the behavior of executingÁü„©H E a search on a haystack that is not valid UTF-8. Therefore, if you'reÁüÑ©E B *not* running this NFA on strings that are guaranteed to be validÁü›ªB ? UTF-8, you almost certainly do not want to enable this option.ÁüâªJ G Similarly, if you are running the NFA on strings that *are* guaranteedÁü±«K H to be valid UTF-8, then you almost certainly want to enable this optionÁü�¬J G unless you can guarantee that your NFA will never produce a zero-widthÁTЬ  match.Á߬ �ôç¬  It is disabled by default.ÁD‘­ ì8 ì8�©BÿÉ  š­ É ˜ï$Ÿ­ ꥭ ôí® üÖ­; 8 Returns whether UTF-8 mode is enabled for this builder.Á–® �üž®J G See [`Builder::set_utf8`] for more details about what "UTF-8 mode" is.ÁDô® í8 í8�©BÿÉ  ý® É à $þ® üù²( ü«¯F C Sets whether the NFA produced by this builder should be matched inÁüö¯F C reverse or not. Generally speaking, when enabled, the NFA producedÁüÁ°K H should be matched by moving backwards through a haystack, from a higherÁü‘±- * memory address to a lower memory address.Áñ �ü˱2 / See also [`NFA::is_reverse`] for more details.Á‚² �üвH E This is disabled by default, which means NFAs are by default matchedÁìײ  in the forward direction.Á\€³ î8 î8�©BÿÉ  Œ³ É ˆñ$‘³ ê—³ üñ´! ü˳= : Returns whether reverse mode is enabled for this builder.Á�´ �ü•´K H See [`Builder::set_reverse`] for more details about what "reverse mode"Á<å´  is.Á\ø´ ï8 ï8�©BÿÉ  „µ É â $…µ ü�¸2 üµµK H Sets the look-around matcher that should be used for the resulting NFA.Á…¶ �ü�¶B ? A look-around matcher can be used to configure how look-aroundÁüÔ¶> ; assertions are matched. For example, a matcher might carryÁü—·H E configuration that changes the line terminator used for `(?m:^)` andÁÄä·  `(?m:$)` assertions.Á„ˆ¸ ð8 ð8�©‚óBÿÉ  ™¸ É ûò$ž¸ £ ¤¸ ü‡º. üà¸: 7 Returns the look-around matcher used for this builder.ÁŸ¹ �ü§¹I F If a matcher was not explicitly set, then `LookMatcher::default()` isÁlõ¹ Ôò.„Žº ñ8 ñ8�© ñ8‚óBÿÉ  Ÿº É ä $ º üù¼g üÞº' $ Set the size limit on this builder.ÁŠ» �ü’»G D Setting the size limit will also check whether the NFA built so farÁüÞ»E B fits within the given size limit. If it doesn't, then an error isÁl¨¼ Ôò.º¼ �ü¼2 / By default, there is no configured size limit.Át€½ ò8 ò8�©ØÚ§õBÿÉ  ˜½ É ïô$�½ ª¯,«½ üË¿- ü¯¾/ , Return the currently configured size limit.Áã¾ �üë¾G D By default, this returns `None`, which corresponds to no configuredÁ|·¿ size limit.ÁtÒ¿ ó8 ó8�©ØÚBÿÉ  á¿ É æ $â¿ ü›Ã# üžÀI F Returns the heap memory usage, in bytes, used by the NFA states addedÁ\ìÀ  so far.ÁüÀ �ü„ÁH E Note that this is an approximation of how big the final NFA will be.ÁüÑÁF C In practice, the final NFA will likely be a bit smaller because ofÁüœÂE B its simpler state representation. (For example, using things likeÁüæÂ0 - `Box<[StateID]>` instead of `Vec`.)Ád¢Ã ô8 ô8�©BÿÉ  ¯Ã É ç $°Ã ü•Ä4 „˜Ä ¯ õ8 õ8�©§õBÿÉ  ©Ä É è $ªÄ dº:Ó픥:ÔŸ:D¾:± ê!÷!„"�"˜" "§"®"Y4 Íé ë Í „Ké î –C Ð=é ï –é ï üM …Cé ð ¤O$r ãé ó “óx ¶é ô „¡L‰ ßé ö Utf8SequencesÁl” ïé ÷ ææl¨ ñé ø “¨<î Ú!é û �®T† µ"é ü ôä\¨ Õ"é ý ¦çtà ù"é ÿ �élÓ “#é € Èèlâ ‹#é � —¬T€ ú#é ƒ 䮌 ¬#é „ ëöL¦ ä$é … ‘Ú$Ó Ø'é ˆ Œ–\Ù ­(é ‰ ¦¡Lü Ù)é ‹ µ¢<‡ î)é Œ $ t l ,0 L8 öåèDH ÇdX ¼X ¼l ­°üX. ¢¥†‰vy,¿ Ô¿ „å rŒÿ cÌš Tü¿� GJ7:'*ü¿¾   ¬š ü¿� ü¿‘ úüèêü¿º ÜÞÊÌ\Œ ±ªŽ � � ‘ ’ “ ” • – — ˜ ™ š › œ � ž ´à üž= : Return a new default Thompson NFA compiler configuration.Áç ±ªBÿ� � £Ý ü¡.* üž6 3 Whether to enable UTF-8 mode during search or not.ÁÙ �üáF C A regex engine is said to be in UTF-8 mode when it guarantees thatÁü¬ I F all matches returned by it have spans consisting of only valid UTF-8.Áüú B ? That is, it is impossible for a match span to be returned thatÁüÁ   contains any invalid UTF-8.Áå �üí 0 - UTF-8 mode generally consists of two things:Á¢ �üª H E 1. Whether the NFA's states are constructed such that all paths to aÁü÷ I F match state that consume at least one byte always correspond to validÁTÅ  UTF-8.ÁüÔ I F 2. Whether all paths to a match state that do _not_ consume any bytesÁü¢ 7 4 should always correspond to valid UTF-8 boundaries.ÁÞ �üæ : 7 (1) is a guarantee made by whoever constructs the NFA.Áü¥< 9 If you're parsing a regex from its concrete syntax, thenÁüæH E [`syntax::Config::utf8`](crate::util::syntax::Config::utf8) can makeÁü³I F this guarantee for you. It does it by returning an error if the regexÁü�K H pattern could every report a non-empty match span that contains invalidÁüÑK H UTF-8. So long as `syntax::Config::utf8` mode is enabled and your regexÁü¡J G successfully parses, then you're guaranteed that the corresponding NFAÁüðG D will only ever report non-empty match spans containing valid UTF-8.Á¼ �üÄH E (2) is a trickier guarantee because it cannot be enforced by the NFAÁü‘I F state graph itself. Consider, for example, the regex `a*`. It matchesÁüßH E the empty strings in `☃` at positions `0`, `1`, `2` and `3`, whereÁü¬I F positions `1` and `2` occur within the UTF-8 encoding of a codepoint,ÁüúD A and thus correspond to invalid UTF-8 boundaries. Therefore, thisÁüÃE B guarantee must be made at a higher level than the NFA state graphÁü�I F itself. This crate deals with this case in each regex engine. Namely,ÁüÛF C when a zero-width match that splits a codepoint is found and UTF-8Áü¦H E mode enabled, then it is ignored and the engine moves on looking forÁœó  the next match.Á‹ �ü“F C Thus, UTF-8 mode is both a promise that the NFA built only reportsÁüÞI F non-empty matches that are valid UTF-8, and an *instruction* to regexÁü¬F C engines that empty matches that split codepoints should be banned.Á÷ �üÿK H Because UTF-8 mode is fundamentally about avoiding invalid UTF-8 spans,ÁüÏK H it only makes sense to enable this option when you *know* your haystackÁüŸD A is valid UTF-8. (For example, a `&str`.) Enabling UTF-8 mode andÁüèK H searching a haystack that contains invalid UTF-8 leads to **unspecifiedÁ|¸ behavior**.ÁÌ �üÔG D Therefore, it may make sense to enable `syntax::Config::utf8` whileÁü K H simultaneously *disabling* this option. That would ensure all non-emptyÁüðK H match spans are valid UTF-8, but that empty match spans may still splitÁüÀA > a codepoint or match at other places that aren't valid UTF-8.Á† �üŽF C In general, this mode is only relevant if your regex can match theÁüÙ% " empty string. Most regexes don't.Áƒ �ü‹   This is enabled by default.Á¯ �l· ¯Ö.É �üÑ I F This example shows how UTF-8 mode can impact the match spans that mayÁüŸ!!  be reported in certain cases.ÁÅ! �<Í! þ×.ÌÙ! ŽØ.ü÷!. + nfa::thompson::{self, pikevm::PikeVM},Á¬ª" ßíD4Ä" ÷Ø.Ï" �ô×"  let re = PikeVM::new("")?;Áüú"J ¶Ú.É# �üÑ#( % // UTF-8 mode is enabled by default.Áüþ#& Þ§3ü©$- * re.search(&mut cache, &input, &mut caps);ÁüÛ$= : assert_eq!(Some(Match::must(0, 0..0)), caps.get_match());Á�% �ü¥%D A // Even though an empty regex matches at 1..1, our next match isÁüî%G D // 3..3 because 1..1 and 2..2 split the snowman codepoint (which isÁ̺&  // three bytes long).Á¼Ø&  input.set_start(1);Áüô&- …¥Gü¦'= : assert_eq!(Some(Match::must(0, 3..3)), caps.get_match());Áè' �üð'H E // But if we disable UTF-8, then we'll get matches at 1..1 and 2..2:Áô½(  let re = PikeVM::builder()Áüà(6 ¿Ö/¤›) º¹>ü´)- …¥Güæ)= : assert_eq!(Some(Match::must(0, 1..1)), caps.get_match());Á¨* �¼°*  input.set_start(2);ÁüÌ*- …¥Güþ*= : assert_eq!(Some(Match::must(0, 2..2)), caps.get_match());ÁÀ+ �¼È+  input.set_start(3);Áüä+- …¥Gü–,= þ§GØ, �¼à,  input.set_start(4);Áüü,- …¥Gü®-' ¤ß.Ú- �üâ-. áß.<•. þ×.$¨. ±ª±ªBÿ� � � $±. ê·. ü›=- ¤…/  Reverse the NFA.Áž/ �ü¦/D A A NFA reversal is performed by reversing all of the concatenatedÁüï/F C sub-expressions in the original pattern, recursively. (Look aroundÁüº0H E operators are also inverted.) The resulting NFA can be used to matchÁü‡1J G the pattern starting from the end of a string instead of the beginningÁ„Ö1 of a string.Áë1 �üó1I F Reversing the NFA is useful for building a reverse DFA, which is mostÁüÁ2I F useful for finding the start of a match after its ending position hasÁü�3F C been found. NFA execution engines typically do not work on reverseÁüÚ3K H NFAs. For example, currently, the Pike VM reports the starting locationÁüª4% " of matches without a reverse NFA.ÁÔ4 �üÜ4; 8 Currently, enabling this setting requires disabling theÁüœ5I F [`captures`](Config::captures) setting. If both are enabled, then theÁüê5K H compiler will return an error. It is expected that this limitation willÁäº6  be lifted in the future.ÁÛ6 �üã6 ¦Ñ6ˆ7 �l�7 ¯Ö.¢7 �üª7J G This example shows how to build a DFA from a reverse NFA, and then useÁüù7  the DFA to search backwards.Áž8 �<¦8 þ×.̲8 ŽØ.üÐ8  dfa::{self, Automaton},Áüô8, ) nfa::thompson::{NFA, WhichCaptures},ÁÌ¥9 ¼›34Ã9 ÷Ø.Î9 �üÖ9( % let dfa = dfa::dense::Builder::new()Áüƒ:  .thompson(NFA::config()Áü§:0 - .which_captures(WhichCaptures::None)ÁÔÜ:  .reverse(true)ÁLû: ÑØ7ì‰;  .build("baz[0-9]+")?;Áü«;/ ÷Œ3|ß; »ç/Œó;  expected,Áü‰<; 8 dfa.try_search_rev(&Input::new("foobaz12345bar"))?,Á4É< ×è/Ô< �üÜ<. áß.<�= þ×.<¢= ±ª±ªBÿ� � ϵ $®= ê´= üäK? ü…>J G Sets an approximate size limit on the total heap used by the NFA beingÁlÔ> compiled.Áæ> �üî>I F This permits imposing constraints on the size of a compiled NFA. ThisÁü¼?J G may be useful in contexts where the regex pattern is untrusted and oneÁü‹@) & wants to avoid using too much memory.Á¹@ �üÁ@@ = This size limit does not apply to auxiliary heap used duringÁü†A2 / compilation that is not part of the built NFA.Á½A �üÅAH E Note that this size limit is applied during compilation in order forÁü’BD A the limit to prevent too much heap from being used. However, theÁüÛBE B implementation may use an intermediate NFA representation that isÁü¥CH E otherwise slightly bigger than the final public form. Since the sizeÁüòCH E limit may be applied to an intermediate representation, there is notÁü¿DJ G necessarily a precise correspondence between the configured size limitÁüŽE( % and the heap usage of the final NFA.Á»E �üÃE& # There is no size limit by default.ÁîE �löE ¯Ö.ˆF �ü�FG D This example demonstrates how Unicode mode can greatly increase theÁ¤ÜF  size of the NFA.ÁõF �<ýF þ×.ü‰G= îõ.üËG+ ( use regex_automata::nfa::thompson::NFA;ÁûG �ÔƒH  // 300KB isn't enough!Áœ¢H  NFA::compiler()ÁüºH? < .configure(NFA::config().nfa_size_limit(Some(300_000)))ÁÌþH €ø.´œI ¢ø.·I �ü¿I!  // ... but 500KB probably is.ÁìåI „‘/ü‡J? < .configure(NFA::config().nfa_size_limit(Some(500_000)))ÁÜËJ œú.ëJ �üóJ% " assert_eq!(nfa.pattern_len(), 1);Á�K �ü¥K. áß.<ØK þ×.tëK ±ªØÚ±ªBÿ� � ‘ $þK öÆ,„L ü�^, üéLI F Apply best effort heuristics to shrink the NFA at the expense of moreÁ„·M time/memory.ÁÌM �üÔMI F Generally speaking, if one is using an NFA to compile a DFA, then theÁü¢NJ G extra time used to shrink the NFA will be more than made up for duringÁüñNJ G DFA construction (potentially by a lot). In other words, enabling thisÁüÀOK H can substantially decrease the overall amount of time it takes to buildÁT�P  a DFA.ÁŸP �ü§PG D A reason to keep this disabled is if you want to compile an NFA andÁüóPI F start using it as quickly as possible without needing to build a DFA,ÁüÁQI F and you don't mind using a bit of extra memory for the NFA. e.g., forÁü�R( % an NFA simulation or for a lazy DFA.Á¼R �üÄRC @ NFA shrinking is currently most useful when compiling a reverseÁüŒSF C NFA with large Unicode character classes. In particular, it tradesÁü×SK H additional CPU time during NFA compilation in favor of generating fewerÁ|§T NFA states.Á»T �üÃTE B This is disabled by default because it can increase compile timesÁü�U2 / quite a bit if you aren't building a full DFA.ÁÄU �lÌU ¯Ö.ÞU �üæUG D This example shows that NFA shrinking can lead to substantial spaceÁü²VJ G savings in some cases. Notice that, as noted above, we build a reverseÁü�W? < DFA and use a pattern with a large Unicode character class.ÁÅW �<ÍW þ×.üÙW= îõ.ü›X< 9 use regex_automata::nfa::thompson::{NFA, WhichCaptures};ÁÜX �üäXG D // Currently we have to disable captures when enabling reverse NFA.Áô°Y  let config = NFA::config()ÁüÓY, ) .which_captures(WhichCaptures::None)Á¼„Z  .reverse(true);Áü Z$ ! let not_shrunk = NFA::compiler()ÁüÉZ0 - .configure(config.clone().shrink(false))Á¼þZ  .build(r"\w")?;Áüš[  let shrunk = NFA::compiler()Áü¿[/ , .configure(config.clone().shrink(true))Á¼ó[ ÙÙG�\ �ü—\K H // While a specific shrink factor is not guaranteed, the savings can beÁüç\"  // considerable in some cases.ÁüŽ]C @ assert!(shrunk.states().len() * 2 < not_shrunk.states().len());ÁÖ] �üÞ]. áß.<‘^ þ×.4¤^ ±ª±ªBÿ� � ’ $¯^ êµ^ ü›i* ü…_3 0 Whether to include 'Capture' states in the NFA.Á½_ �üÅ_; Õ³Gü…`G D [`reverse`](Config::reverse) setting. If both are enabled, then theÁüÑ`K í´Gä¡a ÁµGÂa �üÊa ´¡Gîa �löa ¯Ö.ˆb �ü�bH E This example demonstrates that some regex engines, like the Pike VM,ÁüÝbE B require capturing states to be present in the NFA to report matchÁd§c offsets.Á¸c �üÀcF C (Note that since this method is deprecated, the example below usesÁü‹d: 7 [`Config::which_captures`] to disable capture states.)ÁÊd �<Òd þ×.üÞd( % use regex_automata::nfa::thompson::{Á¼‹e  pikevm::PikeVM,Ád§e NFA,Á´¸e  WhichCaptures,Á4Óe ÷Ø.Þe �ôæe ¢©Gü‰fD A .thompson(NFA::config().which_captures(WhichCaptures::None))ÁÜÒf �‘7üòf& äÎ/�g �ü¥g, ) assert!(re.is_match(&mut cache, "abc"));ÁüÖg1 . assert_eq!(None, re.find(&mut cache, "abc"));ÁŒh �ü”h. áß.<Çh þ×.0.3.5Áuse which_captures insteadÁäøh üÓhC D¢i ÙåGâåG-±ª±ªBÿ� � “ $«i ê±i üï{H üÓj= : Configures what kinds of capture groups are compiled intoÁü•kH E [`State::Capture`](crate::nfa::thompson::State::Capture) states in aÁŒâk  Thompson NFA.Áøk �ü€lK H Currently, using any option except for [`WhichCaptures::None`] requiresÁüÐlC @ disabling the [`reverse`](Config::reverse) setting. If both areÁü˜mH E enabled, then the compiler will return an error. It is expected thatÁüåm1 . this limitation will be lifted in the future.Á›n �ü£nI ¬×>üñnF €Ø>ü¼oG D overhead of capture states for explicit groups. Usually this occursÁüˆpG D when one wants to use the `PikeVM` only for determining the overallÁüÔpE B match. Otherwise, the `PikeVM` could use much more memory than isÁtžq necessary.Á±q �l¹q ¯Ö.Ëq �üÓqH ¸ßGü rE ŠàGdêr ØàGûr �<ƒs þ×.ü�s( §âG¼¼s ØâGdØs øâG´és �ãG4„t ÷Ø.�t �ô—t ¢©GüºtD ÓãG܃u �‘7ü£u& äÎ/Îu �üÖu, ÈäGü‡v1 þäG½v �üÅv. áß.<øv þ×.„w �üŒw0 - The same applies to the bounded backtracker:ÁÁw �<Éw þ×.üÕw( §âGü‚x& # backtrack::BoundedBacktracker,Ád­x øâG´¾x �ãG4Ùx ÷Ø.äx �üìx* ë±Cü›yD ÓãGÜäy �‘7ü„z& äÎ/¯z �ü·z1 . assert!(re.try_is_match(&mut cache, "abc")?);Áüíz6 3 assert_eq!(None, re.try_find(&mut cache, "abc")?);Á¨{ �ü°{. áß.<ã{ þ×.tö{ ±ª¼«±ªBÿ� � ÜÝ $‰| £dt�| üÔ‡7 ü†}C @ Sets the look-around matcher that should be used with this NFA.ÁÎ} �üÖ}I F A look-around matcher determines how to match look-around assertions.Áü¤~E B In particular, some assertions are configurable. For example, theÁüî~K H `(?m:^)` and `(?m:$)` assertions can have their line terminator changedÁü¾/ , from the default of `\n` to any other byte.Áò �lú ¯Ö.Œ€ �ü”€K H This shows how to change the line terminator for multi-line assertions.Áä€ �<ì€ þ×.Ìø€ ŽØ.ü–�. ¦£GüÉ�  util::look::LookMatcher,Á¬î� ßíD4ˆ‚ ÷Ø.“‚ �ü›‚' $ let mut lookm = LookMatcher::new();ÁüÇ‚' $ lookm.set_line_terminator(b'\x00');Áó‚ �ôû‚ ¢©Güžƒ> ; .thompson(thompson::Config::new().look_matcher(lookm))Áüáƒ!  .build(r"(?m)^[a-z]+$")?;Áü‡„& äÎ/²„ �üº„9 6 // Multi-line assertions now use NUL as a terminator.Á|ø„ »ç/üŒ…# Some(Match::must(0, 1..4)),Áü´…, ) re.find(&mut cache, b"\x00abc\x00"),Á4å… ×è/üð…: 7 // ... and \n is no longer recognized as a terminator.Á|¯† »ç/lÆ Š›6üÕ†( % re.find(&mut cache, b"\nabc\n"),Á4‚‡ ×è/�‡ �ü•‡. áß.<ȇ þ×.dÛ‡ ±ª‚ó±ªBÿ� � • $ì‡ £ ò‡ ôë‹ ü¨‹> ; Returns whether this configuration has enabled UTF-8 mode.ÁDò‹ ú8 ú8±ªBÿ�  û‹ � ïî$ü‹ ü‰�! ü¹ŒK H Returns whether this configuration has enabled reverse NFA compilation.Á\�� û8 û8±ªBÿ�  œ� � Ìé$�� üÇŽ1 üÞ�H E Return the configured NFA size limit, if it exists, in the number ofÁ¼«Ž  bytes of heap used.Á”ÎŽ ü8 ü8±ªØÚBÿ�  Ꭰ� Æô$⎠üã� ü²�, ) Return whether NFA shrinking is enabled.ÁTê� ý8 ý8±ªBÿ�  õ� � ™ $ö� üÒ‘" ü¶�K H Return whether NFA compilation is configured to produce capture states.ÁÙåGuse get_which_captures insteadÁü«‘ ü†‘G dÙ‘ ÙåG¼„H1þ8 þ8±ªBÿ�  æ‘ � š $ç‘ ü÷’1 ü­’E B Return what kinds of capture states will be compiled into an NFA.Á”þ’ ÿ8 ÿ8±ª¼«Bÿ�  ‘“ � žê$’“ ü¥”- üð“0 - Return the look-around matcher for this NFA.Á„¬” €9 €9±ª‚óBÿ�  ½” � Òò$¾” ü¾–' ¬Á– é �9 �9±ªBÿ�  ×– � ïø$Ø– üŒš3 Lšš ‚9 ‚9±ª±ª±ªBÿ�  ¤š � ž $¥š ¥ «š —� ž �Ÿ �Ÿ �Ÿ Ÿ ž Ÿ �´Uÿʵôž² ¼«¡ ÷¡ ìò <Ʋ ¼«Bÿ    ¡ ”‡³ ¼«£ ¤ ì’´ ü ³G D Returns true if this configuration indicates that no capture statesÁüì³!  should be produced in an NFA.Á<™´ ‡9 ‡9¼«Bÿ¢  ¡´ ¢ £ $¢´ ä±¶ üê´I F Returns true if this configuration indicates that some capture statesÁü¸µH E should be added to an NFA. Note that this might only include captureÁü…¶' $ states for implicit capture groups.Á4¸¶ ˆ9 ˆ9¼«Bÿ¢  ¿¶ ¢ Öê$À¶ l»á ·¬¦ § ¨ ª « ­ ® Ä�â üÏá< 9 Create a new NFA builder with its default configuration.Á—â ·¬Bÿ¥ ¥ ¦ ü™î= üˆå= : Compile the given regular expression pattern into an NFA.ÁÊå �üÒåJ G If there was a problem parsing the regex, then that error is returned.Á¡æ �ü©æH E Otherwise, if there was a problem building the NFA, then an error isÁüöæJ G returned. The only error that can occur is if the compiled regex wouldÁüÅçH E exceed the size limits configured on this builder, or if any part ofÁü’èH E the NFA would exceed the integer representations used. (For example,Áüßè> ; too many states might plausibly occur on a 16-bit target.)Á¢é �lªé ¯Ö.¼é �<Äé þ×.üÐéF C use regex_automata::{nfa::thompson::{NFA, pikevm::PikeVM}, Match};Á›ê �ü£ê; ‹»/üãêC @ let nfa = NFA::compiler().configure(config).build(r"(?-u)\w")?;Á«ë �ü³ë( % let re = PikeVM::new_from_nfa(nfa)?;Áüàë& äÎ/ü‹ì( •Ï/ü¸ì. ’ïCüëì2 / re.captures(&mut cache, "!@#A#@!", &mut caps);Áü¢í+ Þ½/Òí �üÚí. áß.<�î þ×., î �9Ž9 �9·¬ Ž9¡óBÿ¥  ¦î ¥ § $§î îN<­î üýõi üˆïD A Compile the given regular expression patterns into a single NFA.ÁÑï �üÙïI ΋/ü§ð# ¡Œ/Ïð �l×ð ¯Ö.éð �<ñð þ×.üýðF Ñ•HÈñ �üÐñ; ‹»/ü�ò= : let nfa = NFA::compiler().configure(config).build_many(&[ÁœÒò  r"(?-u)\s",Áœêò  r"(?-u)\w",ÁD‚ó ¯ƒ1�ó �ü—ó( ™—HüÄó& äÎ/üïó( •Ï/üœô. + let expected = Some(Match::must(1, 1..2));ÁüÏô2 / re.captures(&mut cache, "!A! !A!", &mut caps);Áü†õ+ Þ½/¶õ �ü¾õ. áß.<ñõ þ×.T„ö �9�9 �9·¬ �9©ò¡óBÿ¥ Œ© ©  §ö ¥ ¹Ž/ �ö ÊŽ/T’ö Ôë$¨ö ¨ ý¯"$ü€…C üÊùI F Compile the given high level intermediate representation of a regularÁܘú  expression into an NFA.Á¸ú �üÀúK H If there was a problem building the NFA, then an error is returned. TheÁü�ûG D only error that can occur is if the compiled regex would exceed theÁüÜûK H size limits configured on this builder, or if any part of the NFA wouldÁü¬üJ G exceed the integer representations used. (For example, too many statesÁüûü. + might plausibly occur on a 16-bit target.)Á®ý �l¶ý ¯Ö.Èý �<Ðý þ×.üÜýF Ñ•Hü§þE ø·/ñþ �üùþ; Õ¸/ü¹ÿ) ›¹/üçÿ) Ϲ/ü•€) ƒº/üÀ) ·º/Lñ€ êº/ÿ€ �ü‡�; ‹»/üÇ�F Ñ»/’‚ �üš‚( ™—HüÇ‚& äÎ/üò‚( •Ï/üŸƒ. ’ïCüÒƒ2 ù—Hü‰„+ Þ½/¹„ �üÁ„. áß.<ô„ þ×.t‡… ‘9’9 ‘9·¬ ’9‰ô¡óBÿ¥  –… ¥ ª $—… ²$�… ü¥‘p üû…H E Compile the given high level intermediate representations of regularÁüȆ"  expressions into a single NFA.Áï† �ü÷†I ΋/üŇ# ¡Œ/í‡ �lõ‡ ¯Ö.‡ˆ �<�ˆ þ×.ü›ˆF Ñ•HüæˆE ø·/°‰ �Œ¸‰  let hirs = &[ÁüΉ5 2 Hir::class(Class::Bytes(ClassBytes::new(vec![ÁüˆŠ/ , ClassBytesRange::new(b'\t', b'\r'),Áü¼Š- * ClassBytesRange::new(b' ', b' '),ÁlîŠ ]))),Áü€‹5 ù©Hüº‹- * ClassBytesRange::new(b'0', b'9'),Áüì‹- * ClassBytesRange::new(b'A', b'Z'),ÁüžŒ- * ClassBytesRange::new(b'_', b'_'),ÁüÐŒ- * ClassBytesRange::new(b'a', b'z'),Ál‚� ª«H4”� ó°3Ÿ� �ü§�; ‹»/üç�K H let nfa = NFA::compiler().configure(config).build_many_from_hir(hirs)?;Á·Ž �ü¿Ž( ™—HüìŽ& äÎ/ü—�( •Ï/üÄ�. †�Hü÷�2 ¿�Hü®�+ Þ½/Þ� �üæ�. áß.<™‘ þ×.œ¬‘ “9”9 “9·¬ ”9�·¡óBÿ¥ „¬ ¬  Ù‘ ¥ ȳ@ À‘ Ú³@\Ñ « �¦$Ú‘ ÜæE³(*üá•< ü¿’> ; Apply the given NFA configuration options to this builder.Á‚“ �lŠ“ ¯Ö.œ“ �<¤“ þ×.ü°“+ ®ÆGà“ �üè“; ‹»/ü¨”C ¾–Hüð”% ·ÉGš• �ü¢•. áß.<Õ• þ×.Lè• •9 •9·¬±ªþ³HBÿ¥  ò• ¥ �Þ $÷• É4ý• üÍ�e üí–7 ‘–/ü©—4 Ó–/â— �üê—J Ÿ—/t¹˜ ó—/̘ �üÔ˜H E This syntax configuration only applies when an NFA is built directlyÁü¡™J G from a pattern string. If an NFA is built from an HIR, then all syntaxÁÌð™  settings are ignored.ÁŽš �l–š ¯Ö.¨š �<°š þ×.ü¼š; 8 use regex_automata::{nfa::thompson::NFA, util::syntax};Áüš �ü„›= : let syntax_config = syntax::Config::new().unicode(false);ÁüÆ›B ? let nfa = NFA::compiler().syntax(syntax_config).build(r"\w")?;Áü�œJ G // If Unicode were enabled, the number of states would be much bigger.ÁüÜœ% " assert!(nfa.states().len() < 15);Á†� �üŽ�. áß.<Á� þ×.4Ô� –9 –9·¬Ý’κHBÿ¥  ä� ¥ ® $é� É4÷� lóž ·¬° ´ ¹ » ¾ À Á Â Ã Å Æ È É Ë Ì Í Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß ü¦¡I <©¡ é —9˜9 —9·¬ ˜9�·¡óBÿ¯ „± ±  Á¡ ¯ ȳ@ ±¡ Ú³@\´¡ âæ¤ÏÜæ<Å!#�ª ° �² �² �² ² ° ˜øÓ® ° �³ �³ �³ ³ ° ‘€ü‚´: …´ é ™9š9 ™9·¬ š9‰ô¸úBÿ¯  ‡´ ¯ ´ $ˆ´ ²$Ž´ ŒË´ ,ß´ <æ´ ö¸ ´ �¸ �¸ �¸ ¸ ´ ¸ �Ø:¸úUÿð÷üž¼• D¡¼ é ›9 ›9·¬‰Œ¸úBÿ¯ …º º  ­¼ ¯ þƉŒ ª¼ ÔP‰Œü÷¼; ÅQ‰Œ¸úü‹½& ¹ ‰Œ$®¼ Û˸¼ HJüÞÅG \áÅ é œ9�9 œ9·¬ �9¿œ¸úBÿ¯  íÅ ¯ » $îÅ Üæ,ôÅ ®Ç » �¼ �¼ �¼ ¼ » ¼  •§Uÿ˜É » �½ �½ �½ ½ » ½ žÀHð÷ü´ÑŒ T·Ñ é ž9 ž9·¬‰Œ¸úBÿ¯ …¿ ¿  ÅÑ ¯ �ÁH ÂÑ ÄQ‰Œü�Ò0 ´ÁHü˜Ò& ¾ ‰Œ$ÆÑ ÛËÐÑ <>üõÛ… ,øÛ é Ÿ9 9¡9 Ÿ9·¬Å™Ç™È™­É™Ê™àË™óG*¤�R{9   9 ¡9‰ô¸úBÿ¯  ‡Ü ¯ ¹¤$ˆÜ ÷,–Ü ‚ $ªÜ ²$ÆÜ ü‹ãg dŽã é ¢9£9 ¢9·¬ £9ðÔ@¸úBÿ¯  ¤ã ¯ Á $¥ã èÔ@³ã üüè“ Lÿè é ¤9¥9 ¤9·¬ ¥9‰ô¸úBÿ¯  ’é ¯  $“é ²$¡é šÔ@4µé ôïËé ŽÔ@Ýé üÞû€ Táû é ¦9§9 ¦9·¬ §9‰ô¸úBÿ¯  õû ¯ Šý$öû ²$„ü šÔ@4˜ü ¤ ®ü ,Çÿ à �Ä �Ä �Ä Ä à Ä �Ú:üñ”s lô” é ¨9©9 ¨9·¬ ©9‰ô¸úBÿ¯  ‹• ¯ Å $Œ• ²$š• šÔ@4®• üŒ™i L�™ é ª9«9 ª9·¬ «9‰ô¸úBÿ¯  ¢™ ¯ Æ $£™ ²$±™ ¤ Å™ ”š Æ �Ç �Ç �Ç Ç Æ Ç ÚÖ@¸úUÿËç•§ü Ÿg d£Ÿ é ¬9­9 ¬9·¬ ­9©ç:¸úBÿ¯  ¹Ÿ ¯ È $ºŸ éã:ÈŸ ü¦¨l |©¨ é ®9¯9 ®9·¬ ¯9Äè:¸úBÿ¯  ¨ ¯ É $è éã:Ѩ ,º¾ É �Ê �Ê �Ê Ê É Ê   ú¡§õUÿ åâüöÜ€ üùÜ# é °9±9 °9·¬ ±9Äè:¸úBÿ¯  ¦Ý ¯ Ë $§Ý éã:µÝ ü²éG 4µé é ²9³9 ²9·¬ ³9îã ¸úBÿ¯  ¼é ¯ Ì $½é anchorÁ4Ãé üôóD L÷ó é ´9µ9 ´9·¬ µ9Èš¸úBÿ¯  �ô ¯ Í $‚ô öÆ,ˆô ëô Í �Î �Î �Î Î Í Î ¸úUÿð÷üÛ÷H <Þ÷ é ¶9 ¶9·¬¸úBÿ¯  æ÷ ¯ Ï $ç÷ ‚,í÷ ’ø÷ ü›û4 <žû é ·9 ·9·¬¸úBÿ¯  ¦û ¯ …ú$§û üýü3 4€ý é ¸9 ¸9·¬¸úBÿ¯  ‡ý ¯ °·$ˆý üŸ�E ,¢� é ¹9 ¹9·¬ÇǧõBÿ¯  ¨� ¯ ׂ$©� ”$¯� Š˜1¾� ü¤‚8 l§‚ é º9 º9·¬Ý¡Bÿ¯  µ‚ ¯ ­¡$¶‚ üœƒc tŸƒ é »9 »9·¬ÇÝ¡Bÿ¯  ·ƒ ¯ –ª$¸ƒ €Î Dƃ üÈ„2 LË„ é ¼9 ¼9·¬Þ¦Bÿ¯  Õ„ ¯ ˜¼$Ö„ ü¶…F L¹… é ½9 ½9·¬Þ¦Bÿ¯  Ã… ¯ Ö $Ä… ‚,Ê… ’Õ… ü“‡c T–‡ é ¾9 ¾9·¬‹ÎÞ¦Bÿ¯  ª‡ ¯ × $«‡ ³±4¹‡ ü¹ˆA D¼ˆ é ¿9 ¿9·¬ôíÞ¦Bÿ¯  ň ¯ Ø $ƈ ¢Ô$Ј ü•Š2 L˜Š é À9 À9·¬Þ¦Bÿ¯  ¢Š ¯ Ѻ$£Š ü‰‹: ŒŒ‹ é Á9 Á9·¬Þ¦Bÿ¯  ž‹ ¯ Ú $Ÿ‹ ü�Œ� Œ�Œ é Â9Ã9 Â9·¬Å™Ç™È™­É™Ê™àË™óG*¤�R{9  Ã9Þ¦Bÿ¯  «Œ ¯ Û $¬Œ Ž”lºŒ ‚ $ÖŒ üËŽc |ÎŽ é Ä9 Ä9·¬Þ¦Bÿ¯  çŽ ¯ Ü $èŽ Ž”löŽ üŒ�1 D�� é Å9 Å9·¬Þ¦Bÿ¯  ˜� ¯ Ý $™� üø�2 Lû� é Æ9 Æ9·¬Þ¦Bÿ¯  …‘ ¯ ó¥$†‘ äæ‘ Té‘ é Ç9 Ç9·¬Bÿ¯  ô‘ ¯ ß $õ‘ tÙ¡ í®á â ¬î¡ ñ¡ é í®Bÿà à á œá¢ ,ä¢ é Û9 Û9í®Bÿà  ê¢ à â $ï¢ ÌÀ£ Ää ä ™®å æ ç ê ë ì í î ï ð Å£ üà£y ã£ é  Ä�© Äí®ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw™®×°Bÿã ã å ÄÖ<𣠃,’¤ ü—¦7 4š¦ é Ü9 Ü9™®¸úBÿã  ¡¦ ã æ Ä$¦¦ üü§A ÿ§ é Ý9Þ9 Ý9™® Þ9ïÐH§õBÿã  ƒ¨ ã ç Ä$ˆ¨ ³±4ލ „µ© ç �è �è �è è ç è  µ«·íUÿù© ç �é �é �é é ç é ÄòUÿµ«ü–¬A d™¬ é ß9 ß9™®§õBÿã  ¦¬ ã ê Ä$«¬ ”$±¬ üÓ®b <Ö® é à9 à9™®‹ÎÞ¦Bÿã  ç® ã ë Ä$ì® nodeÁ$ú® üÖ±. TÙ± é á9â9 á9™® â9ïÐHBÿã  ä± ã ì Ä$é± ³±4ï± ¼ý¶ L€· é ã9 ã9™®Bÿã  Š· ã í Ä$�· üî·: Tñ· é ä9 ä9™®Ç‹ÎBÿã  ü· ã î Ä$�¸ ¥ $‡¸ üÀ¹) Dù é å9 å9™®‹ÎBÿã  ̹ ã ï Ä$ѹ ü©», |¬» é æ9 æ9™®ÇBÿã  ¼» ã ð Ä$Á» ¥ $Ç» lº½ ¼¯ò üν0 œÑ½ é ç9 ç9¼¯ÇBÿñ  å½ ñ ò $ê½ ¥ $ð½ LÈ:,Ì:± µ"»"áD"ôó õ ¢Ô$!"Øó ö ¦¡L8"Ù)ó ø µ¢"4Þ'"ò9 ò9װřǙș­É™Ê™àË™óG*¤�R{9  ò9�Õ1Bÿ…  å'"… † $æ'"üÿ)&"×°ˆ ¥gˆ ü¬*D"¯*"ó9ô9õ9 ó9×° ô9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡õ9­àBÿ‡  ³*"‡ ˆ $´*"œ º*"„î:Óí”Ù:ÔÓ:dò:± Õ"Ú"ã"ê"ò"˜  ô‰ Š – Ð=‰ Œ –‰ Œ ü& …C‰ � ±$N ± ‰ � öß\^ �"‰ ‘ �®Tk µ"‰ ’ ‰“¨#À Å $Š>#�è˜>#Æ$¶>#Š#DË>#”ÎJ#θÇ È É Ì Í ü‹N,#’N#θBÿÆ Æ Ç ïŒD–N#¼¿P#,ÆP#°: °:θBÿÆ  ÌP#Æ È $ÑP#üÍS0#$ÔS#±:²: ±:θ ²:¨¹BÿÆ  ÙS#Æ É $ÚS#�èàS#„‰U#,�U#³ |³U#$¹U#³ üÒYi#ÙY#³:´: ³:θ ´:¨¹¶àBÿÆ  æY#Æ Ì $ëY#�èùY#Æ$–Z#ü­^I#´^#µ: µ:θ¨¹ÇBÿÆ  ¸^#Æ Í $½^#�èÃ^#Æ$×^#Š#Dä^#<¤:¨:± ¬#­#±#Ã#ä#ï#ú#Š$ñ ûcÎ Ð ˜ ôÎ Ñ ¸Ù *ŸÎ Ó ÐÞ@4/Î Ô å4?ëIÎ Õ KM„KÎ Ö –RÐ=Î × –Î × ü\…CÎ Ø ÷ÞD©„"Î Û ç4³ê!Î Ü �®Tǵ"Î Ý “¨<ÿÚ!Î ß «³$§–Î â “�d­ü%Î ã õý\»Ô%Î ä ´…LÜÁ&Î æ í†tçÓ&Î ç ‘Ú$‡Ø'Î é Œ–\�­(Î ê ý”<šš(Î ë ‚ö„ÆžÎ í ¦¡LØÙ)Î î †¨lãÒ*Î ï öžTò±)Î ð µ¢<þî)Î ñ §ÃL¦ò-Î ò $@C25,T#)t7 LGÿîñDWФ‚Óí”iÔcü‚$ÓíçÓí('ùæÓí=<øŒÀÓíSRø,ÚüçîüÚ6üÚJåDœÖÙÆÉüÚ»¾«®üÚª¡¤‘”�„üÚÜwzgjWZGJ7:¬š+DµD�»ô õ ÷ ø ù ú û ü ý þ ÿ €�‚ƒ„…†‡ˆ‰Š‹Œ�ü¡J4üÄDHý¡2Ì‘E build an NFA from it.Á¯E�ü·E=: If you want a non-default configuration, then use the NFAÁüùE# [`Compiler`] with a [`Config`].Á¡F�l©F¯Ö.»F�<ÃFþ×.üÏF?< use regex_automata::{nfa::thompson::pikevm::PikeVM, Match};Á“G�ü›G(% let re = PikeVM::new(r"foo[0-9]+")?;ÁüÈGJ¶Ú.—H�üŸH.ˆØ/üÒH41 re.captures(&mut cache, b"foo12345", &mut caps);Áü‹I+Þ½/»I�üÃI.áß.<öIþ×.Ó픈JÔ‚J¨J·: ·:¡óBÿó  µJó ô îN<¬Jü€QIüŠKI¶§2üØK  build a multi-NFA from them.ÁýK�ü…L=á¢IüÇL#¨£IïL�l÷L¯Ö.‰M�<‘Mþ×.ü�M?‡¤IáM�üéM63 let re = PikeVM::new_many(&["[0-9]+", "[a-z]+"])?;Áü¤NJ¶Ú.óN�üûN.+ let expected = Some(Match::must(1, 0..3));Áü®O74 re.captures(&mut cache, b"foo12345bar", &mut caps);ÁüêO+Þ½/šP�ü¢P.áß.<ÕPþ×.Óí”çPÔáPD‡Q¸: ¸:©ò¡óBÿó Œö ö  ©Qó ¹Ž/ �QÊŽ/T“Q õ µ“¨ Ú+ äºWü„RKH Returns an NFA with a single regex pattern that always matches at everyÁlÔR position.ÁæR�lîR¯Ö.€S�<ˆSþ×.ü”SFÑ•HßS�üçS85 let re = PikeVM::new_from_nfa(NFA::always_match())?;Áü¤TJ¶Ú.óT�üûT.+ let expected = Some(Match::must(0, 0..0));Áü®U,) re.captures(&mut cache, b"", &mut caps);ÁüßU+Þ½/ü�V/, re.captures(&mut cache, b"foo", &mut caps);ÁüÃV+Þ½/óV�üûV.áß.<®Wþ×.dÁW�»Bÿó ó ÷ Üùeüë`63 Returns an NFA that never matches at any position.Á¦a�ü®aIF This is a convenience routine for creating an NFA with zero patterns.Áüa�l„b¯Ö.–b�<žbþ×.üªb=: use regex_automata::nfa::thompson::{NFA, pikevm::PikeVM};Áìb�üôb74 let re = PikeVM::new_from_nfa(NFA::never_match())?;Áü°cJ¶Ú.ÿc�ü‡d,©®Iô¸d assert!(!caps.is_match());ÁüÛd/í®Iô�ež³I²e�üºe.áß.<íeþ×.\€f�»Bÿó ó ø ÌÊnü¦h0- Return a default configuration for an `NFA`.ÁÛh�üãhIãÇ/ü±i52 type when customizing the construction of an NFA.Áëi�lói¯Ö.…j�ü�jGD This example shows how to build an NFA with a small size limit thatÁüÙjGD results in a compilation error for any regex that tries to use moreÁü¥k*' heap memory than the configured limit.ÁÔk�<Ükþ×.üèk=ã±Iªl�ü²l" let result = PikeVM::builder()ÁüÙl<9 .thompson(NFA::config().nfa_size_limit(Some(1_000)))ÁüšmB? // Remember, \w is Unicode-aware by default and thus huge.Á¼ám .build(r"\w+");Áìým¯¡;<Ÿnþ×.Óí”±nÔ«n4Ñn±ªBÿó ó ù ìÏwü‡oC@ Return a compiler for configuring the construction of an `NFA`.ÁÏo�ü×o@ÔÒ/üœp&# [`Compiler`] type in common cases.ÁÇp�lÏp¯Ö.áp�üépJG This example shows how to build an NFA that is permitted match invalidÁü¸qKH UTF-8. Without the additional syntax configuration here, compilation ofÁüˆrHE `(?-u:.)` would fail because it is permitted to match invalid UTF-8.ÁÕr�<Ýrþ×.ÌérŽØ.ü‡s&# nfa::thompson::pikevm::PikeVM,Á¬²s«Õ/tÌsÑ·/4ßs÷Ø.ês�ôòs¢©Gü•t2‚Ö/üÌt" .build(r"[a-z]+(?-u:.)")?;ÁüótJ¶Ú.Âu�üÊu.+ let expected = Some(Match::must(0, 1..5));Áüýu74 re.captures(&mut cache, b"\xFFabc\xFF", &mut caps);Áü¹v+Þ½/év�üñv.áß.<¤wþ×.Óí”¶wÔ°wDÖw·¬Bÿó ó ¸×üã})ü’xA> Returns an iterator over all pattern identifiers in this NFA.ÁØx�üàxEB Pattern IDs are allocated in sequential order starting from zero,ÁüªyHE where the order corresponds to the order of patterns provided to theÁü÷y" [`NFA::new_many`] constructor.Ážz�l¦z¯Ö.¸z�<Àzþ×.üÌz85 use regex_automata::{nfa::thompson::NFA, PatternID};Á‰{�ü‘{>; let nfa = NFA::new_many(&["[0-9]+", "[a-z]+", "[A-Z]+"])?;ÁüÔ{85 let pids: Vec = nfa.patterns().collect();ÁÔ‘| assert_eq!(pids, vec![Áܰ| PatternID::must(0),ÁÜÐ| PatternID::must(1),ÁÜð| PatternID::must(2),Á<�}í¦9œ}�ü¤}.áß.<×}þ×.Dê}¹: ¹:�»Š$Š$ØðŒ$ÛËÎ �$üðÎ ÿsÁ­ËNœX¹:Bÿó  ó}ó û $ô}ü¿†"üŸ;8 Returns the total number of regex patterns in this NFA.Áß�üçHE This may return zero if the NFA was constructed with no patterns. InÁü´€?< this case, the NFA can never produce a match for any input.Áø€�ü€�HE This is guaranteed to be no bigger than [`PatternID::LIMIT`] becauseÁüÍ�>; NFA construction will fail if too many patterns are added.Á�‚�ü˜‚IF It is always true that `nfa.patterns().count() == nfa.pattern_len()`.Áæ‚�lÖ.€ƒ�<ˆƒþ×.ü”ƒ+®ÆGă�ü̃>þÄIü�„%" assert_eq!(3, nfa.pattern_len());Á¹„�üÁ„! let nfa = NFA::never_match();Áüç„%" assert_eq!(0, nfa.pattern_len());Á‘…�ü™…" let nfa = NFA::always_match();ÁüÀ…%" assert_eq!(1, nfa.pattern_len());Áê…�üò….áß.<¥†þ×.\Ɔº: º:�»Bÿó  Ò†ó é˜$Ó†ü��'ü’‡JG Return the state identifier of the initial anchored state of this NFA.Áá‡�üé‡FC The returned identifier is guaranteed to be a valid index into theÁü´ˆFC slice returned by [`NFA::states`], and is also a valid argument toÁœÿˆ [`NFA::state`].Á—‰�lŸ‰¯Ö.±‰�ü¹‰GD This example shows a somewhat contrived example where we can easilyÁü…Š(% predict the anchored starting state.Á²Š�<ºŠþ×.üÆŠC@ use regex_automata::nfa::thompson::{NFA, State, WhichCaptures};ÁŽ‹�ì–‹„‘/ü¸‹EB .configure(NFA::config().which_captures(WhichCaptures::None))Á¬‚Œ .build("a")?;ÁüœŒ0- let state = nfa.state(nfa.start_anchored());Á”ÑŒ match *state {ÁüèŒ'$ State::ByteRange { trans } => {Áü”�*' assert_eq!(b'a', trans.start);ÁüÃ�(% assert_eq!(b'a', trans.end);ÁLð�£¯3üþ�.+ _ => unreachable!("unexpected state"),Á,±Ž¶¯3»Ž�üÃŽ.áß.<öŽþ×.t—�»: »:�»ÇBÿó  ¦�ó ‹ð$§�ü¬–)üã�GD Return the state identifier of the initial unanchored state of thisÁD¯�‰µ/¼��üÄ�41 This is equivalent to the identifier returned byÁüý�JG [`NFA::start_anchored`] when the NFA has no unanchored starting state.ÁÌ‘�üÔ‘F¡ÑIüŸ’FòÑIœê’ÂÒI‚“�lŠ“¯Ö.œ“�ü¤“GD This example shows that the anchored and unanchored starting statesÁüð“1. are equivalent when an anchored NFA is built.Á¦”�<®”þ×.üº”+®ÆGê”�ôò” let nfa = NFA::new("^a")?;Áü••=: assert_eq!(nfa.start_anchored(), nfa.start_unanchored());Áו�üß•.áß.<’–þ×.„³–¼: ¼:�»ÇBÿó  Ä–ó Åð$Å–üõ¤>üƒ—KH Return the state identifier of the initial anchored state for the givenÁüÓ—HE pattern, or `None` if there is no pattern corresponding to the givenÁ| ˜ identifier.Á´˜�ü¼˜JG If one uses the starting state for a particular pattern, then the onlyÁü‹™@= match that can be returned is for the corresponding pattern.ÁЙ�üØ™F¡ÑIü£šFòÑIœîšÂÒI†›�dŽ›¯Ö0Ÿ›�ü§›IF If the pattern doesn't exist in this NFA, then this returns an error.Áüõ›;8 This occurs when `pid.as_usize() >= nfa.pattern_len()`.Áµœ�l½œ¯Ö.Ïœ�üלG©ÜIü£�1ûÜIÙ��<á�þ×.üí�8°ÄIªž�ü²ž,) let nfa = NFA::new_many(&["^a", "^b"])?;ÁüãžJG // The anchored and unanchored states for the entire NFA are the same,Áü²Ÿ.+ // since all of the patterns are anchored.ÁüåŸ=–ÞIü§ FC // But the anchored starting states for each pattern are distinct,Áüò EB // because these starting states can only lead to matches for theÁ켡 // corresponding pattern.ÁüÞ¡.+ let anchored = Some(nfa.start_anchored());Áü‘¢@= assert_ne!(anchored, nfa.start_pattern(PatternID::must(0)));ÁüÖ¢@= assert_ne!(anchored, nfa.start_pattern(PatternID::must(1)));Áü›£?< // Requesting a pattern not in the NFA will result in None:Áüߣ<9 assert_eq!(None, nfa.start_pattern(PatternID::must(2)));Á ¤�ü¨¤.áß.<Û¤þ×.lü¤½: ½:�»›†¶àBÿó  Š¥ó ÿ $‹¥¾¾0üü«4tЬ¾: ¾:�» ¾:Š×Bÿó  ™¬ó €$š¬üþ¶*üݬ&# Get the byte classes for this NFA.Áˆ­�ü�­EB Byte classes represent a partitioning of this NFA's alphabet intoÁüÚ­HE equivalence classes. Any two bytes in the same equivalence class areÁü§®IF guaranteed to never discriminate between a match or a non-match. (TheÁüõ®%" partitioning may not be minimal.)ÁŸ¯�ü§¯FC Byte classes are used internally by this crate when building DFAs.Áüò¯GD Namely, among other optimizations, they enable a space optimizationÁü¾°EB where the DFA's internal alphabet is defined over the equivalenceÁüˆ±GD classes of bytes instead of all possible byte values. The former isÁüÔ±KH often quite a bit smaller than the latter, which permits the DFA to useÁü¤²(% less space for its transition table.ÁѲ�lÙ²¯Ö.ë²�üó²?< This example shows how to query the class of various bytes.Á·³�<¿³þ×.ü˳+®ÆGû³�üƒ´" let nfa = NFA::new("[a-z]+")?;Áüª´%" let classes = nfa.byte_classes();ÁüÔ´85 // 'a' and 'z' are in the same class for this regex.Áü‘µ52 assert_eq!(classes.get(b'a'), classes.get(b'z'));Áü˵ // But 'a' and 'A' are not.Áüïµ52 assert_ne!(classes.get(b'a'), classes.get(b'A'));Á©¶�ü±¶.áß.<ä¶þ×.d…·¿: ¿:�» ¿:ªÓBÿó  ’·ó �$“·ü¼¿*üÓ·FC Return a reference to the NFA state corresponding to the given ID.Áž¸�ü¦¸96 This is a convenience routine for `nfa.states()[id]`.Áä¸�d츔Ÿ0ý¸�ü…¹KH This panics when the given identifier does not reference a valid state.ÁüÕ¹85 That is, when `id.as_usize() >= nfa.states().len()`.Á’º�lšº¯Ö.¬º�ü´ºC@ The anchored state for a pattern will typically correspond to aÁüüºC@ capturing state for that pattern. (Although, this is not an APIÁ|Ä» guarantee!)ÁØ»�<à»þ×.üì»A> use regex_automata::{nfa::thompson::{NFA, State}, PatternID};Á²¼�캼 let nfa = NFA::new("a")?;ÁüܼGD let state = nfa.state(nfa.start_pattern(PatternID::ZERO).unwrap());Á”¨½ºÖIü¿½(% State::Capture { slot, .. } => {Áüì½+( assert_eq!(0, slot.as_usize());ÁLœ¾£¯3üª¾.ÿ×I,ݾ¶¯3ç¾�üï¾.áß.<¢¿þ×.,ÿÀ: À:�»Ç À:ȽBÿó  É¿ó ‚$Ê¿ˆCI2üöÆ ü�À.+ Returns a slice of all states in this NFA.ÁÂÀ�üÊÀJG The slice returned is indexed by `StateID`. This provides a convenientÁü™ÁHE way to access states while following transitions among those states.ÁæÁ�lîÁ¯Ö.€Â�üˆÂJG This demonstrates that disabling UTF-8 mode can shrink the size of theÁü×ÂKH NFA considerably in some cases, especially when using Unicode characterÁd§Ã classes.Á¸Ã�<ÀÃþ×.üÌÃ=îõ.üŽÄ+®ÆG¾Ä�üÆÄ'$ let nfa_unicode = NFA::new(r"\w")?;ÁüòÄ*' let nfa_ascii = NFA::new(r"(?-u)\w")?;Áü¡Å.+ // Yes, a factor of 45 difference. No lie.ÁüÔÅHE assert!(40 * nfa_ascii.states().len() < nfa_unicode.states().len());Á¡Æ�ü©Æ.áß.<ÜÆþ×.4ýÆÁ: Á:�» Á:ЧBÿó  „Çó ¤$…ÇüÆÒ&ü»Ç2/ Returns the capturing group info for this NFA.ÁòÇ�üúÇEB The [`GroupInfo`] provides a way to map to and from capture indexÁüÄÈFC and capture name for each pattern. It also provides a mapping fromÁü�ÉHE each of the capturing groups in every pattern to their correspondingÁüÜÉ63 slot offsets encoded in [`State::Capture`] states.Á—Ê�üŸÊGD Note that `GroupInfo` uses reference counting internally, such thatÁüëÊ(% cloning a `GroupInfo` is very cheap.Á˜Ë�l Ë¯Ö.²Ë�üºËGD This example shows how to get a list of all capture group names forÁ̆Ì a particular pattern.Á¤Ì�<¬Ìþ×.ü¸Ì8°ÄIõÌ�üýÌ:7 let nfa = NFA::new(r"(a)(?Pb)(c)(d)(?Pe)")?;Áü¼ÍGD // The first is the implicit group that is always unnamed. The nextÁüˆÎKH // 5 groups are the explicit groups found in the concrete syntax above.ÁüØÎJG let expected = vec![None, None, Some("foo"), None, None, Some("bar")];Áü§Ï  let got: Vec> =ÁüÌÏB? nfa.group_info().pattern_names(PatternID::ZERO).collect();Áô“бÄ2¶Ð�ü¾ÐB? // Using an invalid pattern ID will result in nothing yielded.Áü…ÑKH let got = nfa.group_info().pattern_names(PatternID::must(999)).count();Á¼ÕÑ assert_eq!(0, got);ÁñÑ�üùÑ.áß.<¬Òþ×.TÍÒÂ: Â:�» Â:ýÝBÿó  ØÒó µ’$ÙÒü¬á!ü—Ó96 Returns true if and only if this NFA has at least oneÁüÕÓ:7 [`Capture`](State::Capture) in its sequence of states.Á”Ô�üœÔEB This is useful as a way to perform a quick test before attemptingÁüæÔHE something that does or does not require capture states. For example,Áü³ÕKH some regex engines (like the PikeVM) require capture states in order toÁ„ƒÖ work at all.Á˜Ö�l Ö¯Ö.²Ö�üºÖJG This example shows a few different NFAs and whether they have capturesÁ\‰× or not.Á™×�<¡×þ×.ü­×<ÒÖGî×�üö×$! // Obviously has capture states.ÁüŸØ let nfa = NFA::new("(a)")?;ÁüÃØ assert!(nfa.has_capture());ÁçØ�üïØFC // Less obviously has capture states, because every pattern has atÁüºÙKH // least one anonymous capture group corresponding to the match for theÁ´ŠÚ // entire pattern.Áì¥Ú¨þIüÇÚËšJëÚ�üóÚKH // Other than hand building your own NFA, this is the only way to buildÁüÃÛKH // an NFA without capturing groups. In general, you should only do thisÁü“ÜHE // if you don't intend to use any of the NFA-oriented regex engines.ÁüàÜIF // Overall, capturing groups don't have many downsides. Although theyÁü®ÝJG // can add a bit of noise to simple NFAs, so it can be nice to disableÁüýÝ# // them for debugging purposes.Á4¥Þßê/ü°ÞC@ // Notice that 'has_capture' is false here even when we have anÁüøÞ-* // explicit capture group in the pattern.Áìªß„‘/üÌßE‘ÕI¼–à .build("(a)")?;Áü²à  assert!(!nfa.has_capture());Á×à�üßà.áß.<’áþ×.\³áÃ: Ã:�»Bÿó  ¿áó …$Àáü¬þüöáDA Returns true if and only if this NFA can match the empty string.Áü¿âHE When it returns false, all possible matches are guaranteed to have aÁ¤Œã non-zero length.Á¥ã�ü­ãHE This is useful as cheap way to know whether code needs to handle theÁüúãJG case of a zero length match. This is particularly important when UTF-8ÁüÉäHE modes are enabled, as when UTF-8 mode is enabled, empty matches thatÁü–åEB split a codepoint must never be reported. This extra handling canÁüàåGD sometimes be costly, and since regexes matching an empty string areÁü¬æHE somewhat rare, it can be beneficial to treat such regexes specially.Áùæ�l�ç¯Ö.“ç�ü›çFC This example shows a few different NFAs and whether they match theÁüæçFC empty string or not. Notice the empty string isn't merely a matterÁü±èHE of a string of length literally `0`, but rather, whether a match canÁüþè*' occur between specific pairs of bytes.Á­é�<µéþ×.üÁé;¢¶H�ê�ü‰ê0- // The empty regex matches the empty string.Áä¾ê let nfa = NFA::new("")?;Áüßê41 assert!(nfa.has_empty(), "empty matches empty");Áü˜ëFC // The '+' repetition operator requires at least one match, and soÁüãë'$ // does not match the empty string.Áô�ì let nfa = NFA::new("a+")?;Áü²ì85 assert!(!nfa.has_empty(), "+ does not match empty");Áüïì,) // But the '*' repetition operator does.Áô í let nfa = NFA::new("a*")?;ÁüÃí30 assert!(nfa.has_empty(), "* does match empty");ÁüûíJG // And wrapping '+' in an operator that can match an empty string alsoÁüÊî/, // causes it to match the empty string too.Áüþî! let nfa = NFA::new("(a+)*")?;Áü¤ï<9 assert!(nfa.has_empty(), "+ inside of * matches empty");Áåï�üíïFC // If a regex is just made of a look-around assertion, even if theÁü¸ðJG // assertion requires some kind of non-empty string around it (such asÁü‡ñGD // \b), then it is still treated as if it matches the empty string.ÁüÓñJG // Namely, if a match occurs of just a look-around assertion, then theÁü¢ò // match returned is empty.ÁìÆò„‘/üèò2‚Ö/üŸó)& .build(r"^$\A\z\b\B(?-u:\b\B)")?;ÁüÍó74 assert!(nfa.has_empty(), "assertions match empty");Áü‰ôGD // Even when an assertion is wrapped in a '+', it still matches theÁ¤Õô // empty string.Áüîô  let nfa = NFA::new(r"\b+")?;Áü“õ@= assert!(nfa.has_empty(), "+ of an assertion matches empty");ÁØõ�üàõJG // An alternation with even one branch that can match the empty stringÁü¯ö63 // is also said to match the empty string overall.Áüêö+( let nfa = NFA::new("foo|(bar)?|quux")?;Áüš÷=: assert!(nfa.has_empty(), "alternations can match empty");ÁÜ÷�üä÷C@ // An NFA that matches nothing does not match the empty string.Áü¬ø" let nfa = NFA::new("[a&&b]")?;ÁüÓøIF assert!(!nfa.has_empty(), "never matching means not matching empty");Áü¡ùGD // But if it's wrapped in something that doesn't require a match atÁüíù/, // all, then it can match the empty string!Áü¡ú# let nfa = NFA::new("[a&&b]*")?;ÁüÉúEB assert!(nfa.has_empty(), "* on never-match still matches empty");Áü“ûIF // Since a '+' requires a match, using it on something that can neverÁüáûGD // match will itself produce a regex that can never match anything,Áü­ü0- // and thus does not match the empty string.Áüâü# let nfa = NFA::new("[a&&b]+")?;ÁüŠýHE assert!(!nfa.has_empty(), "+ on never-match still matches nothing");Á×ý�üßý.áß.<’þþ×.L³þÄ: Ä:�»Bÿó  ½þó ÏÜ$¾þì—‘üòþ63 Whether UTF-8 mode is enabled for this NFA or not.Á­ÿ�üµÿFC When UTF-8 mode is enabled, all matches reported by a regex engineÁü€€HE derived from this NFA are guaranteed to correspond to spans of validÁüÍ€JG UTF-8. This includes zero-width matches. For example, the regex engineÁüœ�GD must guarantee that the empty regex will not match at the positionsÁüè�C@ between code units in the UTF-8 encoding of a single codepoint.Á°‚�ü¸‚.+ See [`Config::utf8`] for more information.Áë‚�üó‚´¡G—ƒ�lŸƒ¯Ö.±ƒ�ü¹ƒI‚¢Gü‡„!Õ¢G­„�<µ„þ×.ÌÁ„ŽØ.üß„.¦£G¬’…ßíD4¬…÷Ø.·…�ô¿…ƒ¤Güâ…J¶Ú.±†�ü¹†(ŤGüæ†&Þ§3ü‘‡-…¥GüÇ=¼¥G…ˆ�ü�ˆD�¦GüÖˆGݦGÌ¢‰­§G¼À‰ϧGü܉-…¥GüŽŠ=þ§GЊ�üØŠHѨGô¥‹¢©GüÈ‹6¿Ö/¤ƒŒº¹>üœŒ-…¥GüÎŒ=ó©G���¼˜�ŪGü´�-…¥Güæ�=ôªG¨Ž�¼°ŽÆ«GüÌŽ-…¥GüþŽ=þ§GÀ��¼È�ެGüä�-…¥Gü–�'¤ß.Â��üÊ�.áß.<ý�þ×.<ž‘Å: Å:�»Bÿó  ¦‘ó ØÝ$§‘ü�œ üÖ‘A> Returns true when this NFA is meant to be matched in reverse.Áœ’�ü¤’JG Generally speaking, when this is true, it means the NFA is supposed toÁüó’KH be used in conjunction with moving backwards through the haystack. ThatÁüÓ?< is, from a higher memory address to a lower memory address.Á‡”�ü�”FC It is often the case that lower level routines dealing with an NFAÁüÚ”KH don't need to care about whether it is "meant" to be matched in reverseÁüª•HE or not. However, there are some specific cases where it matters. ForÁü÷•FC example, the implementation of CRLF-aware `^` and `$` line anchorsÁü–A> needs to know whether the search is in the forward or reverseÁüˆ—IF direction. In the forward direction, neither `^` nor `$` should matchÁüÖ—HE when a `\r` has been seen previously and a `\n` is next. However, inÁü£˜GD the reverse direction, neither `^` nor `$` should match when a `\n`Áüï˜KH has been seen previously and a `\r` is next. This fundamentally changesÁü¿™FC how the state machine is constructed, and thus needs to be alteredÁüŠš)& based on the direction of the search.Á¸š�üÀšLI This is automatically set when using a [`Compiler`] with a configurationÁü‘›IF where [`Config::reverse`] is enabled. If you're building your own NFAÁìß› by hand via a [`Builder`]ÁT–œÆ: Æ:�»Bÿó  ¡œó ˆ$¢œü¾®.üÔœKH Returns true if and only if all starting states for this NFA correspondÁü¤�+( to the beginning of an anchored search.ÁÔ��üÜ�KH Typically, an NFA will have both an anchored and an unanchored startingÁü¬žJG state. Namely, because it tends to be useful to have both and the costÁüûžGD of having an unanchored starting state is almost zero (for an NFA).ÁüÇŸJG However, if all patterns in the NFA are themselves anchored, then evenÁü– GD the unanchored starting state will correspond to an anchored searchÁüâ 30 since the pattern doesn't permit anything else.Áš¡�l¢¡¯Ö.´¡�ü¼¡DA This example shows a few different scenarios where this method'sÁÄ…¢ return value varies.Á¢¢�<ª¢þ×.ü¶¢+®ÆGæ¢�üî¢KH // The unanchored starting state permits matching this pattern anywhereÁü¾£74 // in a haystack, instead of just at the beginning.Áìú£¨þIüœ¤-* assert!(!nfa.is_always_start_anchored());ÁΤ�üÖ¤GD // In this case, the pattern is itself anchored, so there is no wayÁü¢¥# // to run an unanchored search.ÁôÊ¥íÝIüí¥,) assert!(nfa.is_always_start_anchored());Áž¦�ü¦¦KH // When multiline mode is enabled, '^' can match at the start of a lineÁüö¦IF // in addition to the start of a haystack, so an unanchored search isÁÌħ // actually possible.Áüâ§" let nfa = NFA::new("(?m)^a")?;Áü‰¨-ÕàJ»¨�üèJG // Weird cases also work. A pattern is only considered anchored if allÁü’©96 // matches may only occur at the start of a haystack.ÁüЩ" let nfa = NFA::new("(^a)|a")?;Áü÷©-ÕàJ©ª�ü±ªIF // When multiple patterns are present, if they are all anchored, thenÁüÿª&# // the NFA is always anchored too.Áüª«2/ let nfa = NFA::new_many(&["^a", "^b", "^c"])?;Áüá«,¨âJ’¬�üš¬DA // But if one pattern is unanchored, then the NFA must permit anÁÌ㬠// unanchored search.Áü�­1. let nfa = NFA::new_many(&["^a", "b", "^c"])?;Áü·­-ÕàJé­�üñ­.áß.<¤®þ×.ÄÅ®Ç: Ç:�»Bÿó  Þ®ó »•$ß®ü†¼*ü³¯=: Returns the look-around matcher associated with this NFA.Áõ¯�üý¯I�ôGü˰EðôGü•±K¿õGüå±/”öG™²�ü¡²@= If the NFA was built using a [`Compiler`], then this matcherÁüæ²=: can be set via the [`Config::look_matcher`] configurationÁü¨³B? knob. Otherwise, if you've built an NFA by hand, it is set viaÁüï³" [`Builder::set_look_matcher`].Á–´�lž´¯Ö.°´�ü¸´KôöGˆµ�<�µþ×.ÌœµŽØ.üºµ.¦£Güíµ ‚øG¬’¶ßíD4¬¶÷Ø.·¶�ü¿¶'ÖøGüë¶'ˆùG—·�ôŸ·¢©Gü·>ÕùGü…¸!žúGü«¸&äÎ/Ö¸�üÞ¸9æúG|œ¹»ç/ü°¹#¸ûGüع,æûG4‰º×è/ü”º:«üG|Óº»ç/l纊›6üùº(ŒýG4¦»×è/±»�ü¹».áß.<ì»þ×.d�¼È: È:�» È:‚óBÿó  š¼ó Š$›¼üÜË%üÛ¼HE Returns the union of all look-around assertions used throughout thisÁü¨½GD NFA. When the returned set is empty, it implies that the NFA has noÁüô½IF look-around assertions and thus zero conditional epsilon transitions.Á¾�üʾB? This is useful in some cases enabling optimizations. It is notÁü‘¿GD unusual, for example, for optimizations to be of the form, "for anyÁüÝ¿HE regex with zero conditional epsilon transitions, do ..." where "..."ÁüªÀ! is some kind of optimization.ÁÐÀ�üØÀKH This isn't only helpful for optimizations either. Sometimes look-aroundÁü¨ÁIF assertions are difficult to support. For example, many of the DFAs inÁüöÁIF this crate don't support Unicode word boundaries or handle them usingÁüÄÂGD heuristics. Handling that correctly typically requires some kind ofÁü�ÃKH cheap check of whether the NFA has a Unicode word boundary in the firstÁTàà place.ÁïÃ�l÷ïÖ.‰Ä�ü‘ÄJG This example shows how this routine varies based on the regex pattern:ÁàÄ�<èÄþ×.üôÄ?< use regex_automata::{nfa::thompson::NFA, util::look::Look};Á¸Å�ìÀÅ // No look-around at all.ÁìâŨþIü„Æ+( assert!(nfa.look_set_any().is_empty());Á´Æ�ü¼ÆHE // When multiple patterns are present, since this returns the union,Áü‰ÇEB // it will include look-around assertions that only appear in oneÁ|ÓÇ // pattern.ÁüçÇ63 let nfa = NFA::new_many(&["a", "b", "a^b", "c"])?;Áü¢È63 assert!(nfa.look_set_any().contains(Look::Start));ÁÝÈ�üåÈEB // Some groups of assertions have various shortcuts. For example:Áü¯É%" let nfa = NFA::new(r"(?-u:\b)")?;ÁüÙÉ0- assert!(nfa.look_set_any().contains_word());ÁüŽÊ96 assert!(!nfa.look_set_any().contains_word_unicode());ÁüÌÊ63 assert!(nfa.look_set_any().contains_word_ascii());Á‡Ë�ü�Ë.áß.<ÂËþ×.dãËÉ: É:�»¯ñBÿó  ðËó ‹$ñËü“Ú,ü«ÌDA Returns the union of all prefix look-around assertions for everyÁüôÌKH pattern in this NFA. When the returned set is empty, it implies none ofÁüÄÍHE the patterns require moving through a conditional epsilon transitionÁü‘Î52 before inspecting the first byte in the haystack.ÁËÎ�üÓÎJG This can be useful for determining what kinds of assertions need to beÁü¢ÏGD satisfied at the beginning of a search. For example, typically DFAsÁüîÏHE in this crate will build a distinct starting state for each possibleÁü»ÐFC starting configuration that might result in look-around assertionsÁü†ÑEB being satisfied differently. However, if the set returned here isÁüÐÑHE empty, then you know that the start state is invariant because thereÁü�Ò74 are no conditional epsilon transitions to consider.ÁÙÒ�láÒ¯Ö.óÒ�üûÒJôúJÊÓ�<ÒÓþ×.üÞÓ?äûJ¢Ô�ìªÔºüJìÌÔ¨þIüîÔ2/ assert!(nfa.look_set_prefix_any().is_empty());Á¥Õ�ü­ÕH³ýJüúÕE†þJüÄÖJG // pattern. But it will only include assertions that are in the prefixÁü“×KH // of a pattern. For example, this includes '^' but not '$' even thoughÁ¼ã× // '$' does appear.Áüÿ×74 let nfa = NFA::new_many(&["a", "b", "^ab$", "c"])?;Áü»Ø=: assert!(nfa.look_set_prefix_any().contains(Look::Start));ÁüýØ<9 assert!(!nfa.look_set_prefix_any().contains(Look::End));Á¾Ù�üÆÙ.áß.<ùÙþ×.œšÚÊ: Ê:�»¯ñBÿó  ®Úó Œ$¯Úü ð#üÁê41 Returns the memory usage, in bytes, of this NFA.Áúê�ü‚ëDA This does **not** include the stack size used up by this NFA. ToÁüËë30 compute that, use `std::mem::size_of::()`.Áƒì�l‹ì¯Ö.�ì�ü¥ìIF This example shows that large Unicode character classes can use quiteÁ¤óì a bit of memory.ÁŒí�<”íþ×.ü í=îõ.üâí+®ÆG’î�üšî'ù…JüÆî+( let nfa_ascii = NFA::new(r"(?-u:\w)")?;Áöî�üþîHE assert!(10 * nfa_ascii.memory_usage() < nfa_unicode.memory_usage());ÁËï�üÓï.áß.<†ðþ×.d§ðË: Ë:�»Bÿó  ´ðó �$µð”Òð<Ýð¼ôò�»� g�ü’ó8•óÌ:Í:Î: Ì:�» Í:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Î:­àBÿ� ™ó� �$šóœ  óTÌ–Ô»’“”•–—˜™œü¥—'D³—± Ô»�»Bÿ‘‘ ’$À—ü›µ-T©µ± Ï: Ï:Ô» Ï:ýÝBÿ‘ ´µ‘„é$µµü£¸5±¸± Ð: Ð:Ô»ȽÇBÿ‘ µ¸‘ ”$º¸ƒ,À¸ü¬Ã™TºÃ± Ñ:Ò: Ñ:Ô»ÇÇ Ò:ìáBÿ‘ ÎÑ •$ÓÃÀ táÃÖ „‚Äòl¥Äü‘Æ,DŸÆ± Ó: Ó:Ô»Bÿ‘ ¨Æ‘ –$­Æê³Æü�Ç/\�DZ Ô: Ô:Ô»Bÿ‘ ©Ç‘ —$®Çê´Çü¥È9„³È± Õ: Õ:Ô»‚óBÿ‘ ÄÈ‘ ˜$ÉÈ£ ÏÈü‡Í~d•ͱ Ö:×: Ö:Ô» ×:Ù쨹Bÿ‘ «Í‘ ™$°ÍáD¾ÍÒΙ�š�š�šš™šÇòÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþìñ›½éřǙș­É™Ê™àË™óG*¤�R{9 œÂUÿUÿãΙ�›�›�››™‡¡Kü…Ô6,“Ô± Ø:Ù: Ø:Ô» Ù:ìáBÿ‘ ™Ô‘ œ$žÔ old_to_newÁT¤ÔÌÿÖÔ»ž gžüŸ×8¢×Ú:Û:Ü: Ú:Ô» Û:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ü:­àBÿ� ¦×� ž$§×œ ­×Tÿ�Ƚ ¡¢üÏ™ ü�‘GD Returns true if and only if this state contains one or more epsilonÁ„Ü‘ transitions.Áñ‘�üù‘HE In practice, a state has no outgoing transitions (like `Match`), hasÁüÆ’GD only non-epsilon transitions (like `ByteRange`) or has only epsilonÁü’“ transitions (like `Union`).Á¶“�l¾“¯Ö.Г�<Ø“þ×.Ì䓎Ø.ü‚”+( nfa::thompson::{State, Transition},Áü²”;8 util::primitives::{PatternID, StateID, SmallIndex},Á4ò”÷Ø.ý”�ü…•.+ // Capture states are epsilon transitions.Áü¸•  let state = State::Capture {ÁäÝ• next: StateID::ZERO,Áüþ•$! pattern_id: PatternID::ZERO,Áü§–&# group_index: SmallIndex::ZERO,ÁüÒ– slot: SmallIndex::ZERO,Á4ö–÷Ø.ü�—  assert!(state.is_epsilon());Á¦—�ü®—  // ByteRange states are not.ÁüÓ—" let state = State::ByteRange {Áüú—JG trans: Transition { start: b'a', end: b'z', next: StateID::ZERO },Á4ɘ÷Ø.üÔ˜! assert!(!state.is_epsilon());Áú˜�ü‚™.áß.<µ™þ×.TÖ™á: á:ȽBÿŸ ᙟ  $â™ü¤�d§�Î â: â:ȽBÿŸ ´�Ÿ ¡$µ�üΤ&,ѤÎ ã:ä: ã:Ƚ ä:ìáBÿŸ פŸ ¢$ܤ± ,â¤̽­Ƚ¤ g¤üÝ­8à­å:æ:ç: å:Ƚ æ:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ç:­àBÿ£ ä­£ ¤$å­œ ë­а¤�¥�¥�¥¥¤¥âÔ‹ÏUÿ$�¶¤�¦�¦�¦¦¤¦ÍŠ‹ÏUÿ´ Â‘À¨ª¬üƒÅDü½Â?< This follows the matching transition for a particular byte.Á�Ã�ü‰ÃC@ The matching transition is found by looking for a matching byteÁüÑÃFC range (there is at most one) corresponding to the position `at` inÁ|œÄ `haystack`.Á°Ä�ü¸Ä85 If `at >= haystack.len()`, then this returns `None`.Á<ŠÅï:ð: ï:‘À ð:Èš¶àBÿ§ ’ŧ ¨Þaý�€`™´Š`$ìŨ�©�©�©©¨›Áü�Éad�Éñ: ñ:‘ÀÞжàBÿ§ ¥É§ ª$¦ÉÊ$´É4ƒÊª�«�«�««ª«ÆÔH¶àUÿðÀü–Ì7ü®Ê?®³KòÊ�üúÊIF The matching transition is found by looking for a matching byte rangeÁüÈË;8 (there is at most one) corresponding to the byte given.Ád�Ìò: ò:‘À¶àBÿ§ ªÌ§æÃ$«Ì—»e¬êÛ÷À®°²³üÙÞDü†Ü?®³KÊÜ�üÒÜEB The matching transition is found by looking for a transition thatÁüœÝEB doesn't correspond to `StateID::ZERO` for the byte `at` the givenÁÜæÝ position in `haystack`.Á†Þ�üŽÞ8ʵK<àÞú:û: ú:÷À û:Èš¶àBÿ­ èÞ­ ®@ký�*j™´4j$Âß®�¯�¯�¯¯®ÅÔüÐâadÞâü: ü:÷ÀÞжàBÿ­ ôâ­ °$õâÊ$ƒã4Òã°�±�±�±±°±ƒºKšÔüåå7üýã?®³KÁä�üÉäE÷»Kü“å?< doesn't correspond to `StateID::ZERO` for the given `byte`.Ádìåý: ý:÷À¶àBÿ­ ùå­ÈÖ$úå—»šmü‡ìB$•ìþ: þ:÷À´þ:Bÿ­ šì­ ³$›ìø·¤ì%³8�E�E³ÌŠÌІ§ÏŠ�Њœ“D^)c˜þOþ�Š�ŠFilterÁ�Š�‘Š predicateÁ²=²=J/VÔáËƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ8Ƕ  8ÇUÿ·çÆKÝÁUÿþÆ´8˜ÄQžÇKÜ©ìÅQžÇKÝÁŒ²ìžÇK8Çì–ÇKÔ¯ÇK4ÀÇK%ÕÇK³¼Øì,êìdËí³�¶�¶�¶¶³þß|ÿí³�·�·�··³Úã|ÖòÝÁ¹»½ü�ô9üìòA> Returns true if the position `at` in `haystack` falls in thisÁü²ó  transition's range of bytes.Á×ó�üßó96 If `at >= haystack.len()`, then this returns `false`.Á<¤ô…;†; …;ÝÁ †;ÈšBÿ¸ ¬ô¸ ¹$­ôý�D³ô™´Äô$€õ¹�º�º�ºº¹ºöô޳Küßö8ü¦õFC Returns true if the given alphabet unit falls in this transition'sÁüñõKH range of bytes. If the given unit is [`EOI`](alphabet::Unit::eoi), thenÁÌÁö this returns `false`.Ádæö‡; ‡;ÝÁÞÐBÿ¸ óö¸ »$ôöÊ$úö4½÷»�¼�¼�¼¼»¼ÆÔHUÿ޳KüÂø,üè÷FC Returns true if the given byte falls in this transition's range ofÁT³ø bytes.ÁdÉøˆ; ˆ;ÝÁBÿ¸ Öø¸¾É$×ø—»$Ýøô©ùÝÁ¿ g¿üÎù8Ñù‰;Š;‹; ‰;ÝÁ Š;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‹;­àBÿ¾ Õù¾ ¿$Öùœ Üùô•úLªúüÜ‚%ÄÂÂõÂÃÄÅQÆQÄá‚Lˆƒ$�ƒÁÁ›†ü¤ƒ'$§ƒ�; �;õÂܧBÿÁ ¬ƒÁ ÄÄ$±ƒtÌ:üÜ× An NFA backed Pike VM for executing regex searches with capturing groups. This module provides a [`PikeVM`] that works by simulating an NFA and resolving all spans of capturing groups that participate in a match. ÁÓ nfa-pikevmÁ´³:ô­:4Ô:‘$š$¡$¨$µ$Â$Ê$Ñ$Ù$–³Ð=ÅÇ–ÅÇü½…CÅȱ$å± ÅË�®Tëµ"Å̉´Ù,÷Ã#ÅÍŽä®þ¬#ÅÎ�œãD¢±&ÅÐØ$,´ÿÅÑ�$»«ÅÒé›LÔü(ÅÓñ�\ôž)ÅÕ¦¡L�Ù)ÅÖöžTŒ±)Å×µ¢<˜î)ÅØžDÀ§-ÅÚáºLÊé,ÅÛ—,ÕÑ,ÅÜÕÛ,Üú,ÅÝÓ¿Lãº-ÅÞ̼Tî‹-Åßú¹$úÚ,Åà§ÃLŸò-Åá,«þD¸à,ÈÔÈÖDÚÇʳ¶Ÿ¢üÈD”˜”‚…sv¤ÉgüÈ©Z]JM:=*-üÈè #ñóßáÍÏ»½¬“­¼  T­  ¸  ¯  ¾  È , ¿ 8funÁÀ & à 8²$Ä *Ê  Í  ¬ + ×  Ø  „ 8ìÙ  Ü  ƒ 8Ó<Ý  å 7æäç  Ž  ¦ 8œ 8¸ÛK  & £  ¥ 8¦ 84ª 8‡,®  ³  Á  ´ 8µ 8ŒD¹  à  Å 8Æ , Ê 8¸ÛKË % Î 8COUNTERSÁDÜ  ä 8withÁ$å  é  ›   ê 8™ ë & ì  î 8Í<ï  ö 8ŒD÷  ÿ  € 8¸ÛK‚  …  š  † 8‡  ‹ 8™ Œ  � 8 borrow_mutÁTŽ  ˜  ™ % œ % ­ \ãÊÃäåæçèé´¨üõ.+ Return a new default PikeVM configuration.Á¯ÊÃBÿãã äüã6üæ$ÈÃ.��ü—I‚Ä.üåFÕÄ.ü°H¥Å.üý3÷Å.µ�ü½BÀÆ.ü„HŒÇ.üÑFC where all possible matches are visited in the NFA by the `PikeVM`.Áœ�ü¤E¶ê5üîH†ë5ü»KÙë5ü‹I¯ì5üÙC@ strategy. Specifically, `LeftmostFirst` results in the `PikeVM`Áü¡HE simulating dead states as a way to terminate the search and report aÁüîFC match. `LeftmostFirst` also supports non-greedy matches using thisÁü¹%" strategy where as `All` does not.ÁTêÊÃù¦ÊÃBÿãã å$ù¦$ÿüÜ0<üÚAž‡6 �ü¨F÷‡6üóGȈ6ü¿ Fš‰6üŠ!Hë‰6t×!½Š6ê!�üò!IãŠ6üÀ"C·‹6üˆ#H…Œ6üÕ#GØŒ6ü¡$Hª�6|î$ü�6‚%�üŠ%#ø‘6²%�lº%¯Ö.Ì%�<Ô%þ×.Ìà%ŽØ.üþ%&Ÿ¾Iü©&#ø’6üÑ& š±C4ö&÷Ø.�'�ü‰'Hð“6ôÖ'¢©Güù'30 .configure(PikeVM::config().prefilter(pre))Áü±($Œ•6üÚ(&äÎ/ü…).Ê•6ü¸)HE assert_eq!(Some(Match::must(0, 5..11)), re.find(&mut cache, input));Á…*�ü�*.áß.<À*þ×.Ì*�üÔ*FÀ—6dŸ+�˜6°+�<¸+þ×.ÌÄ+ŽØ.üâ+&Ÿ¾Iü�,#ø’6üµ,$¦“64Þ,÷Ø.é,�üñ,H—™6ô¾-¢©Güá-3ãèKü™.$Œ•6üÂ.&äÎ/üí..Ê•6ü /:—¶Cüß/1. assert_eq!(None, re.find(&mut cache, input));Á•0�ü�0.áß.<Ð0þ×.Lã0ÊÃȹ ÊÃBÿãã æ$ñ0Ѷ÷0ü�2)üÑ1:Úþ.t—2”; ”;ÊÃù¦Bÿã ¦2ã ç$§2üË31üƒ3C�ú7lÒ3•; •;ÊÃřǙș­É™Ê™àË™óG*¤�R{9  •;äüBÿã à3ã è$á3ü¼63LÊ6–; –;ÊÃÊÃÊÃBÿã Ô6ã é$Õ6¥ Û6Ü7é�ê�ê�êêéêøœ8ýñd’I£Äìíîðñòó¼éIü¥I?< Create a new PikeVM builder with its default configuration.ÁðI£ÄBÿëë ìüåL@ü©K,) Build a `PikeVM` from the given pattern.ÁÚK�üâKJž‰/„±Lñ‰/Óí”ÌLÔÆL,ìL›;œ; ›;£Ä œ;°ÿBÿë òLë í$óLîN<ùLü¨Nlü×M-* Build a `PikeVM` from the given patterns.ÁÓí”�NÔ‰NT¯N�;ž; �;£Ä ž;©ò°ÿBÿëŒïï ÒN빎/ ºNÊŽ/T½N¢‰$ÓN¨ ^€!ü÷QDüúO+( Build a `PikeVM` directly from its NFA.ÁªP�ü²PK´ÕCü‚QK‰ÖCüÒQ ÞÖCtþQŸ; Ÿ;£Ä�»°ÿBÿë �Rëäþ$ŽRß'”RüŒT;üÄSC@ Apply the given `PikeVM` configuration options to this builder.ÁL“T ;  ;£ÄÊÃËùKBÿë �Të ñ$¢TÉ4¨TüûWdü—U7‘–/üÓU4Ó–/ŒV�ü”VJŸ—/tãVó—/öV�üþVHE These settings only apply when constructing a PikeVM directly from aÁdËWûœ/Óí”âWÔÜW4‚X¡; ¡;£ÄÝ’ìûKBÿë ’Xë ò$—XÉ4¥Xü£\Dü Y=ÿ™/üâY<Çš/£Z�ü«ZGŠÜCü÷Z"ÛÜCž[�ü¦[HåùKdó[ûœ/Ó픊\Ô„\Dª\¢; ¢;£Ä±ªÊýKBÿë ³\ë ó$¸\É4¾\\§vðÄõöøùúûüýþÿ€�‚üè{7ü¹vJ¸¨/üˆw&# return the corresponding `PikeVM`.Á³w�ü»wHÏ©/üˆx¢ª/¬x�l´x¯Ö.Æx�<Îxþ×.üÚx?‡¤Ižy�ü¦y*' let re = PikeVM::new("foo[0-9]+bar")?;ÁüÕy&äÎ/|€z»ç/ü”z$÷ï8ü½z=: re.find_iter(&mut cache, "zzzfoo12345barzzz").next(),Á4ÿz×è/üŠ{.áß.<½{þ×.Óí”Ï{ÔÉ{ï{§; §;°ÿBÿô ü{ô õîN<ó{üüƒ[üÖ|Iÿ­/ü¤}8Ó®/á}�lé}¯Ö.û}�<ƒ~þ×.ü�~?‡¤IÓ~�üÛ~63 let re = PikeVM::new_many(&["[a-z]+", "[0-9]+"])?;Áü–&äÎ/Á�üÉC°ó8ü‘€6ýó8üÌ€6½ô8ü‡�6ýô8üÂ�8½õ8üÿ�8ÿõ8ü¼‚8Áö8üù‚ ƒ÷8üžƒ.áß.<уþ×.Óí”ãƒÔ݃Dƒ„¨; ¨;©ò°ÿBÿôŒ÷÷ ®„ô¹Ž/ Œ„ÊŽ/T�„ öµ“¨ £„ "ü‡�;ü”…HE Like `new`, but builds a PikeVM directly from an NFA. This is usefulÁüá…FC if you already have an NFA, or even if you hand-assembled the NFA.Á¬†�l´†¯Ö.Ɔ�üΆEĵ/ü˜‡;8 compile an NFA from it and build a PikeVM from the NFA.Á؇�<à‡þ×.üì‡FÑ•Hü·ˆEø·/�‰�ü‰‰;Õ¸/üɉ)›¹/ü÷‰)Ϲ/ü¥Š)ƒº/üÓŠ)·º/L�‹êº/�‹�ü—‹;‹»/ü׋FÑ»/¢Œ�üªŒ(™—Hü׌J¶Ú.ü¦�.’ïCüÙ�2ù—Hü�Ž+Þ½/ÀŽ�üÈŽ.áß.<ûŽþ×.dŽ��»°ÿBÿôô øß'›�üŽ”3üþ�30 Create a new `PikeVM` that matches every input.Á¶��l¾�¯Ö.Ð��<Ø�þ×.üä�?‡¤I¨‘�ü°‘%" let re = PikeVM::always_match()?;ÁüÚ‘&äÎ/…’�ü�’(¶Á/üº’DA assert_eq!(Some(expected), re.find_iter(&mut cache, "").next());Áüƒ“GD assert_eq!(Some(expected), re.find_iter(&mut cache, "foo").next());ÁüÏ“.áß.<‚”þ×.d•”°ÿBÿôô ùüë˜2ü¢•74 Create a new `PikeVM` that never matches any input.ÁÞ•�l敯Ö.ø•�<€–þ×.üŒ–63 use regex_automata::nfa::thompson::pikevm::PikeVM;ÁÇ–�üÏ–$! let re = PikeVM::never_match()?;Áüø–&äÎ/£—�ü«—:7 assert_eq!(None, re.find_iter(&mut cache, "").next());Áüê—=: assert_eq!(None, re.find_iter(&mut cache, "foo").next());Áü¬˜.áß.<ߘþ×.\ò˜°ÿBÿôô úÌå¤üý™2/ Return a default configuration for a `PikeVM`.Á´š�ü¼šIãÇ/üŠ›96 type when customizing the construction of a `PikeVM`.ÁÈ›�lЛ¯Ö.â›�üê›DšûCü³œDéûCüüœ&¸üC§��ü¯�GöüCüû�+ÈýC«ž�<³žþ×.ü¿žGD use regex_automata::{nfa::thompson::{self, pikevm::PikeVM}, Match};Á‹Ÿ�ô“Ÿ¢©Gü¶Ÿ6¿Ö/¬ñŸå¦3ü‹ &äÎ/¶ �ܾ ßÿCüÞ 41 let mut it = re.find_iter(&mut cache, haystack);Áü—¡63 assert_eq!(Some(Match::must(0, 0..0)), it.next());ÁüÒ¡63 assert_eq!(Some(Match::must(0, 1..1)), it.next());Áü�¢63 assert_eq!(Some(Match::must(0, 2..2)), it.next());ÁüÈ¢63 assert_eq!(Some(Match::must(0, 3..3)), it.next());Áüƒ£63 assert_eq!(Some(Match::must(0, 4..4)), it.next());Áü¾£63 assert_eq!(Some(Match::must(0, 5..5)), it.next());Áüù£ ƒ÷8ž¤�ü¦¤.áß.<Ù¤þ×.4ì¤ÊÃBÿôô ûܵ­ü¢¥DA Return a builder for configuring the construction of a `PikeVM`.Áë¥�üó¥@ÔÒ/ü¸¦%ŸÓ/â¦�lꦯÖ.ü¦�ü„§CµÀ2|̧Êù8à§�<è§þ×.Ìô§ŽØ.ü’¨.¦£G¬Å¨«Õ/tߨÑ·/4ò¨÷Ø.ý¨�ô…©¢©Gü¨©2‚Ö/üß©6¿Ö/üšª&€×/üŪJ¶Ú.”«�üœ«4åû8üÕ«.£ü8üˆ¬1ÁØ/ü¾¬+Þ½/î¬�üö¬.áß.<©­þ×.<¼­£ÄBÿôôòˆüõ±)üõ­GìÙ/üÁ®/, valid for the search APIs on this `PikeVM`.Áõ®�üý®JG A `Captures` value created for a specific `PikeVM` cannot be used withÁ¼Ì¯ any other `PikeVM`.Áè¯�üð¯AùÛ/ü¶°DÅÜ/üÿ°JG constructors that permit the `PikeVM` to do less work during a search,Áüα" and thus might make it faster.Á|ü±©; ©;ðĘÛBÿô Œ²ôȼ$�²ü�µ#üç²)& Create a new cache for this `PikeVM`.Á•³�ü�³@¢ß/üâ³GD `PikeVM`. If you want to reuse the cache for another `PikeVM`, thenÁü®´HE you must call [`Cache::reset`] with that `PikeVM` (or, equivalently,Áìû´ [`PikeVM::reset_cache`]).Ád¤µª; ª;ðıÇBÿô ±µô þ$²µüŸÀ,üçµIýá/üµ¶+( this `PikeVM` (and only this `PikeVM`).Áå¶�üí¶HŠã/ôº· with a different `PikeVM`.ÁÝ·�lå·¯Ö.÷·�üÿ·KH This shows how to re-purpose a cache for use with a different `PikeVM`.Áϸ�<׸þ×.üã¸=îõ.ü¥¹?‡¤Ié¹�üñ¹" let re1 = PikeVM::new(r"\w")?;Áü˜º" let re2 = PikeVM::new(r"\W")?;Á¿º�üǺ'Šç/|óº»ç/ü‡»#Õç/ü¯»/, re1.find_iter(&mut cache, "Δ").next(),Á4ã»×è/î»�üö»Hõè/üüIÈé/ü‘½30 // it with the PikeVM we'd like to use it with.Á4ɽßê/üÔ½Jðê/|£¾Äë/ü·¾ Þë/|ܾ»ç/üð¾#—ì/ü˜¿0- re2.find_iter(&mut cache, "☃").next(),Á4Í¿×è/Ø¿�üà¿.áß.<“Àþ×.\¦À«;¬; «;ðÄ ¬;±ÇBÿô ²Àô ÿ$³ÀóA,¹Àü�Ê"üôÀEB Returns the total number of patterns compiled into this `PikeVM`.Á¾Á�üÆÁJG In the case of a `PikeVM` that contains no patterns, this returns `0`.Á•Â�l�¯Ö.¯Â�ü·ÂC@ This example shows the pattern length for a `PikeVM` that neverÁdÿ matches:Á�Ã�<˜Ãþ×.ü¤Ã6»�LßÃ�üçÃ$‰�Lü�Ä$Œ�Dü¹Ä.áß.<ìÄþ×.øÄ�ü€ÅFC And another example for a `PikeVM` that matches at every position:ÁËÅ�<ÓÅþ×.üßÅ6»�LšÆ�ü¢Æ%ð‹LüÌÆ$•ŸDüõÆ.áß.<¨Çþ×.´Ç�ü¼ÇHE And finally, a `PikeVM` that was constructed from multiple patterns:Á‰È�<‘Èþ×.ü�È6»�LØÈ�üàÈ@= let re = PikeVM::new_many(&["[0-9]+", "[a-z]+", "[A-Z]+"])?;Áü¥É$è¡DüÎÉ.áß.<�Êþ×.\”Ê­; ­;ðÄBÿô  Êô €$¡Êü—Ë#üÜÊ(% Return the config for this `PikeVM`.ÁTžË®; ®;ðÄ ®;ÊÃBÿô ©Ëô �$ªËìžÌüÝË.Øï/<¥Ì¯; ¯;ðÄ ¯;�»Bÿô ­Ìôì‘$®Ì\ÙÌðÄ„‡Š�’üžÞrüëÌIF Returns true if and only if this `PikeVM` matches the given haystack.Á¹Í�üÁÍC€™0ü‰ÎFΙ0üÔÎFC underlying NFA enters a match state, then this routine will returnÁüŸÏIðš0üíÏEÄ›0ü·ÐI”œ0ü…ÑFèœ0¼ÐѸ�0ìÑ�lôѯÖ.†Ò�ÜŽÒó¤0®Ò�<¶Òþ×.üÂÒ6»�LýÒ�ü…Ó*€ÿKü´Ó&äÎ/ßÓ�üçÓ4û¥0ü Ô0º¦0üÕÔ.áß.<ˆÕþ×.”Õ�üœÕ+Ÿ§0ÌÕ�üÔÕG¢®;ü ÖEô®;têÖ‡©0ýÖ�<…×þ×.ü‘×?< use regex_automata::{nfa::thompson::pikevm::PikeVM, Input};ÁÕ×�üÝ×  let re = PikeVM::new("a*")?;Áü‚Ø&äÎ/­Ø�üµØDɪ0üþØ.áß.<±Ùþ×.½Ù�üÅÙE«0ü�ÚI’¬0ôÝÚå¬0€Û�<ˆÛþ×.ü”ÛFC use regex_automata::{nfa::thompson::{pikevm::PikeVM, NFA}, Input};ÁßÛ�ôçÛ¢©GüŠÜ,–®0´»ÜÌ®0üÖÜ&äÎ/�Ý�ü‰ÝC‰¯0üÑÝ.áß.<„Þþ×.D¥Þ°;±; °;ðÄ ±;±Ç¯¢Bÿƒ¸……††… ÏÞƒÚ±0 ²Þì±0|µÞ „¸¯¢$ÐÞóA#‡–`.‡®Þ<>üÓîwü‹àKàÃDÛà�üãàKö²0ü³áGD individual spans of each capturing group, use [`PikeVM::captures`].Áÿá�l‡â¯Ö.™â�ü¡âDѶ0üêâG ·0ü¶ãGò·0ü‚äKĸ0üÒä&š¹0ýä�ü…åKع0üÕåH®º0ü¢æF�»0üíæCÒ»0üµçF ¼0ü€è ñ¼0¥è�<­èþ×.ü¹è?‡¤Iýè�ü…é'$ let re = PikeVM::new("foo[0-9]+")?;Áü±é&äÎ/üÜé(‘¾0ü‰ê@ľ0Îê�üÖêGœ¿0ü¢ëJî¿0üñëHÃÀ0ü¾ì# let re = PikeVM::new("abc|a")?;Áüæì&äÎ/ü‘í(ÐÁ0ü¾í;ƒÂ0þí�ü†î.áß.<¹îþ×.$Úî²;³; ²;ðÄ ³;±Ç¯¢�´Bÿƒ¸ˆ…‰ˆ‰ €ïƒÚ±0 ãîì±0|æî ‡¸¯¢$�ïóAØ“–`ã“ßî<>ü®ü‡ü¦õHªÁ;üóõFýÁ;ü¾öKÎÂ;´Ž÷£Ã;©÷�l±÷¯Ö.Ã÷�<Ë÷þ×.ü×÷>; use regex_automata::{nfa::thompson::pikevm::PikeVM, Span};Ášø�ü¢øA> let re = PikeVM::new(r"^([0-9]{4})-([0-9]{2})-([0-9]{2})$")?;ÁüèøJ¶Ú.·ù�ü¿ù52 re.captures(&mut cache, "2010-03-14", &mut caps);ÁìùùØÅ;ü›ú:€Æ;üÚú:ÅÆ;ü™û;ŠÇ;Ùû�üáû.áß.<”üþ×.Dµü´;µ;¶; ´;ðÄ µ;±Ç¯¢ ¶;˜ÛBÿƒ¸‹…Œ‹Œ ßüƒÚ±0 Âüì±0|Åü Џ¯¢$àüóA½™–`È™ɾÓ™¾üEGüÀƒ”üóýH­�9üÀþJÿ�9�ÿ�l—ÿ¯Ö.©ÿ�<±ÿþ×.ü½ÿ?‡¤I�€�ü‰€'ÁÄLüµ€&äÎ/à€�üè€#Ô¤9ü��G�¥9ìÜ�Ñ¥9ìþ�÷¥9ô ‚�¦9üÂŦ9<ç‚í¦9üó‚.áß.<¦ƒþ×.LǃŽ� ŽðÄ �±Ç¯¢¨$¨$¾¾¬$é¾Å­$óAÅ®$ɾů$ÛËÅ6·¡I yŽ�¸Bÿƒ¸�…‘‘�уƒÚ±0 ݃ì±0|àƒ �¸¯¢$þƒóA œ–`«œCEÕƒÙƒGIü¿�œü“†IŽÏ;üá†7âÏ;�‡�ü¥‡JG This yields the same matches as [`PikeVM::find_iter`], but it includesÁüô‡E…Ñ;¾ˆ�üƈJâÑ;ü•‰J·Ò;üä‰JŒÓ;ü³Š%áÓ;ÝŠ�l劯Ö.÷Š�<ÿŠþ×.ü‹‹>�ÉL΋�üÖ‹41 let re = PikeVM::new("foo(?P[0-9]+)")?;Áü�Œ&äÎ/ºŒ�üÂŒ#Ô¤9üꌽÕ;üŽ�(% .captures_iter(&mut cache, text)Áü»�K’Ö;ü‹Ž?èÖ;œÏޱ×;ìçŽÑ¥9̉�Ü×;Ô§�ÿ×;ÜÆ�£Ø;<æ�í¦9üò�.áß.<¥�þ×.lÆ�“” “ðÄ ”±Ç¯¢µ$µ$ëĹ$é¾Åº$óAÅ»$ɾż$ÛËÅÆçìs};"™“”¸Bÿƒ¸•…––•Ô�ƒÚ±0 à�ì±0|ã� ’¸¯¢$�‘óAuŸ–`€ŸCEØ�Ü�GI\ü’ðĘ™œŸüÅ­vüŽ“HªÁ;üÛ“FýÁ;ü¦”KÎÂ;´ö”£Ã;‘•�ü™•IF This is like [`PikeVM::captures`], but it accepts a concrete `&Input`Áüç• ø–<Œ–�ü”–&†Ù0¿–�üÇ–IF This example shows how to build a multi-PikeVM that permits searchingÁÔ•—Èý2´—�<¼—þ×.ÌÈ—ŽØ.üæ—&Ÿ¾Iü‘˜*Œª<4À˜÷Ø.˘�üÓ˜EB let re = PikeVM::new_many(&["[a-z0-9]{6}", "[a-z][a-z0-9]{5}"])?;Áü�™J¶Ú.äì™–€3�š�ü•šCÊ€3üÝšK˜�3ü­›Gî�3„ù›¿‚3üŽœ.�¬<üÁœ<9 re.search(&mut cache, &Input::new(haystack), &mut caps);Áü‚�+Þ½/²��üº�Jÿƒ3ü‰ž"Ô„3ü°ž.Ç­<üãž$»…3üŒŸ9ê…3üÊŸ-…¥GüüŸ+Þ½/¬ �ü´ .áß.<ç þ×.ó �üû 0šä0°¡�ü¸¡Gâä0ü„¢;´å0Ä¢�<Ì¢þ×.üØ¢=îõ.üš£FC use regex_automata::{nfa::thompson::pikevm::PikeVM, Match, Input};Áå£�üí£+( let re = PikeVM::new(r"\b[0-9]{3}\b")?;Áü�¤J¶Ú.üì¤òè0�¥�ü˜¥E©é0üâ¥Fùé0ü­¦IÊê0üû¦Ežë0tŧíë0üا.†ì0ü‹¨C@ re.search(&mut cache, &Input::new(&haystack[3..6]), &mut caps);ÁüÓ¨+Þ½/ƒ©�ü‹©K¹í0üÛ©H�î0ü¨ªFâî0üóªC³ï0Ä»«€ð0üØ«1®³<üެ-…¥GüÀ¬+Þ½/ð¬�üø¬.áß.<«­þ×.4Ì­·;¸;¹;º;»; ·;ðÄ ¸;±Ç ¹;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaº; »;˜ÛBÿ— Ü­—ѳ$Ý­óAc¡–`n¡ɾy¡ü­ÅŸüͯHªÁ;üš°F­¶<üå°Kþ¶<üµ±KÔ·<ü…²Gª¸<Ѳ�üÙ²EB This is like [`PikeVM::search`], but it accepts a raw slots sliceÁü£³GÜö0üï³0®÷0¤´�ü¬´Kö÷0üü´FÌø0üǵK�ù0ü—¶6óù0Ò¶�üÚ¶CÁú0”¢·Žû0ü¹·AÎøDüÿ·Köû0dϸûœ/”ฎû0ü÷¸Kèü0üǹF¾ý0d’ºûœ/£º�l«º¯Ö.½º�üźAþÿ0ü‹»JÊ€1üÚ»)Ÿ�1ˆ¼�<�¼þ×.üœ¼=îõ.üÞ¼JG use regex_automata::{nfa::thompson::pikevm::PikeVM, PatternID, Input};Á­½�üµ½  let re = PikeVM::new_many(&[Á„Ú½˜¾<|ï½²¾<Dƒ¾¯ƒ1ü�¾&äÎ/ü»¾%Ú¾<å¾�üí¾D£„1ü¶¿Gò„1ä‚ÀÃ…1ô£Àé…1üÆÀ>; let pid = re.search_slots(&mut cache, &input, &mut slots);Áü‰Á.à†1¼Á�üÄÁK¦‡1ü”ÂIü‡1¤âÂψ1üûÂ1îˆ1ü±Ã"ª‰1üØÃ<ôÀ<ü™Ä:»Á<ØÄ�üàÄ.áß.<“Åþ×.d´Å¼;½;¾;¿;À; ¼;ðÄ ½;±Ç ¾;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa¿; À;ü¦ܧBÿ— ÊÅ—û�$ËÅóAQ«–`\«©&g«$ºÒ™�š�š�šš™äÑ$“Õ™�›�›�››™¦Õüîן„ñ×ÅÁ;Â;Ã;Ä;Å; Á;ðÄ Â;±Ç Ã;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÄ; Å;ü¦ÄÜBÿ— ‹Ø—©Ç$ŒØóA,šØ–`,µØ©&,ÐØ<ÔÛœ�������œ�¬áÌÿ‡‚ú¦$¸Üœ�ž�ž�žžœž†ëüÍí�ü¨ÝFµð3üóÝE†ñ3ü½ÞEB position and this `PikeVM` was configured with [`MatchKind::All`]Áü‡ßG‚Å<Óß�üÛßB? Unless all of the patterns in this `PikeVM` are anchored, thenÁü¢àC@ generally speaking, this will visit every byte in the haystack.Áêà�üòàI™ô3üÀáGíô3üŒâH¿õ3üÙâF’ö3„¤ãâö3¹ã�üÁãDŠ÷3üŠäIÙ÷3dØä¬ø3éä�lñä¯Ö.ƒå�ü‹åGþú3ü×åIÐû3¥æ�<­æþ×.ü¹æ=îõ.ÌûæŽØ.ü™ç&Ÿ¾IüÄç%êü34îç÷Ø.ùç�¬�è´ý3ü›èFÔý34æèó°3ôñ袩Gü”é?< .configure(PikeVM::config().match_kind(MatchKind::All))ÁüØéÐþ3üüé&äÎ/§ê�ü¯ê%–ÿ3üÙê7 Ì<ü•ëB? re.which_overlapping_matches(&mut cache, &input, &mut patset);ÁüÜë'Ü€4üˆìHŽ�4ôÕì±Ä2øì�ü€í.áß.<³íþ×.ÌÔíÆ;Ç;È;É;Ê; Æ;ðÄ Ç;±Ç È;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÉ; Ê;¡£Bÿ— ÷í—ƒ�$øíóA!±–`,±˜¢ 7±\ŸïðÄ¡¢£¤¥¦§¨üÌñ™TÏñÅË;Ì;Í;Î;Ï; Ë;ðÄ Ì;±Ç Í;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÎ; Ï;ü¦ÄÜBÿ  ãñ  ¡$äñóA,òñ–`,�ò©&,¨òüƺ…¬ÉºÅÐ;Ñ;Ò;Ó;Ô; Ð;ðÄ Ñ;±Ç Ò;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÓ; Ô;¡£Bÿ  躠²â$éºóA,÷º–`,’»˜¢ 4­»üÎÓö,ÑÓÅÕ;Ö;×;Ø;Ù;Ú;Û; Õ;ðÄ Ö;Éþ ×;ŒÈ Ø;ŒÈ Ù;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÚ; Û;ü¦ܧBÿ  àÓ  £$áÓŸ©,ïÓªô$—Ô¥ $¸Ô–`,ÙÔ™´ôÔ©&,‡ÕüÀÛãŒÃÛÅÜ;Ý;Þ;ß;à;á;â; Ü;ðÄ Ý;Éþ Þ;ŒÈ ß;ŒÈ à;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaá; â;¡£Bÿ  ÞÛ  ¤$ßÛŸ©,íÛªô$•Ü¥ $¶Ü–`,×Ü™´òܘ¢ 4…ÝüÆëè$ÉëÅã;ä;å;æ;ç;è; ã;ðÄ ä;Éþ å;ÛÈ æ;ŒÈ ç;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaè;ÇܧBÿ  ×ë  ¥$ØëŸ©,æëcurr_slot_tableÁ|Žì¥ $·ì–`,Øì™´óì Ø†íüÒ‚å|Õ‚Åé;ê;ë;ì;í;î; é;ðÄ ê;Éþ ë;ü¦ ì;ŒÈ í;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaî;ÇBÿ  î‚  ¦$©,ý‚ curr_slotsÁT¥ƒ¥ $Õƒ–`,öƒ™´‘„ Ø¤„ü¯”ñ¼²”Åï;ð;ñ;ò;ó;ô; ï;ðÄ ð;Éþ ñ;ü¦ ò;ŒÈ ó;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaô;ÇBÿ  Ó”  §$Ô”Ÿ©,â”¶�MTŠ•¥ $º•–`,Û•™´ö• Ø�–ü»¹Dd¾¹Åõ;ö;÷; õ;ðÄ ö;Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa÷;řǙș­É™Ê™àË™óG*¤�R{9 ÇBÿ  ˹  ¨$̹–`,Ò¹üÿÂ5æGªÌ3«¸¬¬«ª½Å­®ÅQÆQ®„ÈÌÃL»Ã$Àé©‹¢üáÃ#$äÃû; û;½Å�´Bÿ© éé ®æGÌ3¸$îÃ<ºÆ®�¯�¯�¯¯®ÂêüÂÌ9æG±Ì3²¸³±²³·Æ´µÅQÆQµÇÌËÌÏÌL‚Í$‡Í°°˜Ûü«Í&$®Íÿ; ÿ;·Æ‘–Bÿ° ³Í° µæGÌ3¸$¸Í<‹Ðµ�¶�¶�¶¶µÏöT¹Ú±Ç¸¹º¼ü¹Ý üÊÚ" Create a new [`PikeVM`] cache.ÁñÚ�üùÚ>Ĥ1ü¼ÛGD [`PikeVM::create_cache`], as it does not require also importing theÁŒˆÜÛ¥1žÜ�ü¦ÜGD If you want to reuse the returned `Cache` with some other `PikeVM`,ÁüòÜB? then you must call [`Cache::reset`] with the desired `PikeVM`.ÁÀÝ„< „<ðıÇBÿ· ÈÝ· ¸é¾ÄÝüƒé$üîÞB„¨1̵ß different [`PikeVM`].ÁÓß�üÛßHŠã/ô¨à¢¦LËà�lÓà¯Ö.åà�üíàKó¦L½á�<Åáþ×.üÑá=îõ.ü“â?‡¤I×â�üßâ"�¨Lü†ã"¼¨L­ã�üµã'Šç/|áã»ç/üõã#Õç/ü�ä/¢©L4Ñä×è/Üä�üääHõè/ü±åIÈé/üÿå3•ªL4·æßê/üÂæJðê/|‘çÄë/´¥çÄÆ9|Àç»ç/üÔç#—ì/üüç0ª«L4±è×è/¼è�üÄè.áß.<÷èþ×.,Šé…<†< …<±Ç †<ðÄBÿ· �é· ¹$•éé¾›éü¼ë#üïé;ú®1¯ê�ü·êFͯ1ü‚ë5ž°1dÃë‡< ‡<±ÇBÿ· Ðë· º$Ñë”îë<ùëüûñ4dþñň< ˆ<±ÇBÿ· ‹ò· ¼$�òcaptures_slot_lenÁŒ–òŒ³ÿŒÈ¾¿ÀÁü¡�#¤�Å�< �<ðÄŒÈBÿ½ ¬�½ ¾é¾¨�üóƒ ,öƒÅŽ<�< Ž<ŒÈ �<ðÄBÿ½ üƒ½ ¿$�„龇„ü™†dœ†Å�< �<ŒÈBÿ½ ©†½ À$ª†ü¸ˆ4d»ˆÅ‘< ‘<ŒÈBÿ½ Ȉ½ Á$͈¦¤MŒÓˆtÄ—ÛÈÃÄÆÇÈɬ̘ϘÅÛÈBÿ Ãü«š ,®šÅ–<—< –<ÛÈ —<ðÄBÿ ´šÂ Ä$¹šé¾¿š… Ä�Å�Å�ÅÅÄÅ‚Ç ØÚUÿûù9üì§dï§Å˜< ˜<ÛÈBÿ ü§Â Æ$ý§ü�­4d„­Å™< ™<ÛÈBÿ ‘­Â Ç$–­¦¤MŒœ­ü¤°CL§°Åš< š<ÛÈÇ š<ü¦Bÿ ±°Â È$¶° Ø¼°ü‡´6TŠ´Å›< ›<ÛÈ ›<ü¦Bÿ •´Â É$š´t÷:Óí”â:ÔÜ:Tû:± ר†ä$í$ñ$ö$ý$„%�%›%Í<¼4ð0ÊÌñÅ4ûcÊ͘ Ê4ôÊÎÁtÔ4òýÊÏÐÞ@4ò4ÊÑå4‚5ëIÊÒ–Š5Ð=ÊÓ–ÊÓü”5…CÊÔ„¡L³5ßÊÕµ¢<Ü5î)ÊÖ$¯4l¶4îÛÝÊÌœÏ4½,ê4¬®tú4ŸŒŽD�5lìŸ5\üÃ5 M¤Û6,á6ÊÇœ¢7$¨7ÊÇtóL¢ÊÚÛÜßáâãäåæç̯M¶M¢ÊBÿÙÙ Ú¼‘Q,˜Q£< £<¢ÊBÿÙ žQÙ Û$£QüÙSp$àS¥< ¥<¢ÊòèÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�BÿÙ�Ý‚ÞÝÞ šTÙþÆ�´M åSþÆòè èS¤<ˆ#òè ¤<ïÐHüëS$¤<�#òèù´M½³Ml‚T Ü�´Mòè$›Tœ ­Ttvprüÿb.4†c§<¨< §<¢Ê ¨<ïÐHBÿÙ �cÙ ß$’c³±4˜cüÌ},ß�à�à�ààßà¦< ¦<¢ÊÇú¡ÇUÿ üÁ˜&LȘ©< ©<¢ÊÇBÿÙ Ò˜Ù á$טüš¦3L�¦Êª< ª<¢ÊÇÇBÿÙ §¦Ù â$¬¦¼ø4²¦ü¡±yt¤±Ê«< «<¢ÊÇú¡ÇBÿÙ ¼±Ù ã$Á±from_idÁ<ϱÙœ,é±�ø<ƒ²üý³ŽŒ€´Ê¬< ¬<¢ÊÇú¡ÇBÿÙ ›´Ù ä$ ´Ÿ ®´ø¸M<À´Ùœ,Ú´�ø<ô´üÔ¶ŽŒ×¶Ê­< ­<¢ÊÇú¡ÇBÿÙ ò¶Ù å$÷¶Ÿ …·ø¸M<—·Ùœ,±·�ø<Ë·ü„¹&,‡¹Ê®< ®<¢ÊÇ ®<šËBÿÙ �¹Ù æ$޹ˆC”¹ü’º2L•ºÊ¯< ¯<¢ÊÇ ¯<šËBÿÙ ŸºÙ ç$¤ºˆCªºTíºšËéîü¾Á)$ÁÁʰ< °<šËú¡Bÿè ÆÁè é$ÇÁÙœ,ÍÁü¨Æfl«ÆÊ²< ²<‹ƒòèBÿ�ë‚ìëì ÃÆþÆéì ¹ÆØ´M ¼Æ±<ˆ#òè ±<éìŒüƱ<�#òè¬ÀM$‰Ç êéìòèxsÁ¿ÆpredÁ$ÍÆuwy{¿Ìé�í�í�ííéí ÑËUÿåÀœ¦Í,©Íʳ< ³<šËBÿè ¯Íè î$´Í|‚Ö²ÍðòóôüŒØ=�ØÊÀ<Ç À<ïÐH²ÍBÿï ®Øï ðŠ#D“س±4¦Ø ÙÙððüÕÜz$ØÜÊÁ<Â<Ã< Á<¢Ê Â<ð£ Ã<ïÐHÇBÿï ìÜï òtrieÁ$æÜŸ©,„ݳ±4©ÝìÐßDÓßÊÄ< Ä<²ÍÇBÿï Üßï ó$ÝßüÀà 4ÃàÊÅ< Å<²Í Å<ïÐHBÿï Êàï ô$ËàTÞ„ŒÎöûüýþüù…3ü…Êú¡ú¡Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ŒÎBÿõõ ö¥ €†¤ ކ¼Ã†ö�÷�÷�÷÷ö÷ãóú¡Uÿ¾‡ö�ø�ø�øøöøêÈM�ÏUÿ ÞÈMï‡ö�ù�ù�ùùöùÌÉMØÉM¡ˆö�ú�ú�úúöúÌÉMØÉMü´–"4·–Ê�ÏŒÎBÿõõ ûr1Á¾–üИ24Ó˜Ê�Ï�ÏŒÎBÿõõ üÙÊMÚ˜r2Áê˜üüšB4ÿšÊ�Ï�Ï�ÏŒÎBÿõõ ýÙÊM†›°ËM–›r3Á¦›ü·œ#DºœÊÔ< Ô<ŒÎ Ô< �ÏBÿõ Üõ þ$Äœì‹�¢Ê€ g€ü¯�8²�Õ<Ö<×< Õ<¢Ê Ö<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡×<­àBÿÿ ¶�ÿ €$·�œ ½�ÌÜŸšË‚ g‚üüŸ8ÿŸØ<Ù<Ú< Ø<šË Ù<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ú<­àBÿ� ƒ � ‚$„ œ Š ‹¡‚�ƒ�ƒ�ƒƒ‚ƒ¢«‹ÏUÿôƒ¢ÑË… g…ü¨¢8«¢Û<Ü<Ý< Û<ÑË Ü<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý<­àBÿ„ ¯¢„ …$°¢œ ¶¢üâ¦3Tå¦Êú¡ú¡Bÿ †ÙÊMð¦°ËMÿ¦$�:„œ:þœŒ²:óœü�<:éœíœÞœâœÓœלȜ̜½œÁœ²œ¶œD×:Ó픺:Ô´:¾œÓíÑœœÓí.,՜ƜÓíECÙœdùï2üØ ;Ó A collection of modules that provide APIs that are useful across many regex engines. While one should explore the sub-modules directly to get a sense of what's there, here are some highlights that tie the sub-modules to higher level use cases: * `alphabet` contains APIs that are useful if you're doing low level things with the DFAs in this crate. For example, implementing determinization or walking its state graph directly. * `captures` contains APIs for dealing with capture group matches and their mapping to "slots" used inside an NFA graph. This is also where you can find iterators over capture group names. * `escape` contains types for pretty-printing raw byte slices as strings. * `iter` contains API helpers for writing regex iterators. * `lazy` contains a no-std and no-alloc variant of `lazy_static!` and `once_cell`. * `look` contains APIs for matching and configuring look-around assertions. * `pool` provides a way to reuse mutable memory allocated in a thread safe manner. * `prefilter` provides APIs for building prefilters and using them in searches. * `primitives` are what you might use if you're doing lower level work on automata, such as walking an NFA state graph. * `syntax` provides some higher level convenience functions for interacting with the `regex-syntax` crate. * `wire` is useful if you're working with DFA serialization. Á$�ð2–ôˆ”«žØ¬±Ù£ÆôÞÿŒÆÏÉåæ„Ú ;üþù This module provides APIs for dealing with the alphabets of finite state machines. There are two principal types in this module, [`ByteClasses`] and [`Unit`]. The former defines the alphabet of a finite state machine while the latter represents an element of that alphabet. To a first approximation, the alphabet of all automata in this crate is just a `u8`. Namely, every distinct byte value. All 256 of them. In practice, this can be quite wasteful when building a transition table for a DFA, since it requires storing a state identifier for each element in the alphabet. Instead, we collapse the alphabet of an automaton down into equivalence classes, where every byte in the same equivalence class never discriminates between a match or a non-match from any other byte in the same class. For example, in the regex `[a-z]+`, then you could consider it having an alphabet consisting of two equivalence classes: `a-z` and everything else. In terms of the transitions on an automaton, it doesn't actually require representing every distinct byte. Just the equivalence classes. The downside of equivalence classes is that, of course, searching a haystack deals with individual byte values. Those byte values need to be mapped to their corresponding equivalence class. This is what `ByteClasses` does. In practice, doing this for every state transition has negligible impact on modern CPUs. Moreover, it helps make more efficient use of the CPU cache by (possibly considerably) shrinking the size of the transition table. One last hiccup concerns `Unit`. Namely, because of look-around and how the DFAs in this crate work, we need to add a sentinel value to our alphabet of equivalence classes that represents the "end" of a search. We call that sentinel [`Unit::eoi`] or "end of input." Thus, a `Unit` is either an equivalence class corresponding to a set of bytes, or it is a special "end of input" sentinel. In general, you should not expect to need either of these types unless you're doing lower level shenanigans with DFAs, or even building your own DFAs. (Although, you don't have to use these types to build your own DFAs of course.) For example, if you're walking a DFA's state graph, it's probably useful to make use of [`ByteClasses`] to visit each element in the DFA's alphabet instead of just visiting every distinct `u8` value. The latter isn't necessarily wrong, but it could be potentially very wasteful. ÁDâ ;°%±%À%Ô%Õ%Ý%ä%í%õ%ü%ý%ƒ&’&“&£&ª&®ŠLžü&–˜®Šý&–˜‚þ$´ô–šà³„º�,–›±³t̉,–œ\ƒŒ–rüƒ.M$­=?+-L®"ÞОŸ ¡¢£¥¦Üù&ü¾"1. Create a new haystack unit from a byte value.Áô"�üü"IF All possible byte values are legal. However, when creating a haystackÁüÊ#JG unit for a specific DFA, one should be careful to only construct unitsÁü™$GD that are in that DFA's alphabet. Namely, one way to compact a DFA'sÁüå$GD in-memory representation is to collapse its transitions to a set ofÁü±%HE equivalence classes into a set of all possible byte values. If a DFAÁüþ%HE uses equivalence classes instead of byte values, then the byte givenÁüË&)& here should be the equivalence class.Á€'ÞÐBÿ��ë§ —»$ƒ'ü“+1üÃ'.+ Create a new "end of input" haystack unit.Áö'�üþ'HE The value given is the sentinel value used by this unit to representÁüË(KH the "end of input." The value should be the total number of equivalenceÁü›)FC classes in the corresponding alphabet. Its maximum value is `256`,Áüæ)>; which occurs when every byte is its own equivalence class.Á©*�d±*”Ÿ0Â*�üÊ*DA This panics when `num_byte_equiv_classes` is greater than `256`.Áš+ÞÐBÿ��þ€num_byte_equiv_classesÁ´ž+üÙ. üØ-DA If this unit is not an "end of input" sentinel, then returns itsÁü¡.30 underlying byte value. Otherwise return `None`.Á,à.ÞÐÈË Bÿ��  $æ.üž1"üö/JG If this unit is an "end of input" sentinel, then return the underlyingÁüÅ0DA sentinel value that was given to [`Unit::eoi`]. Otherwise returnÁ\Ž1 `None`.Á4¥1ÞÐřǙș­É™Ê™àË™óG*¤�R{9 Bÿ�� ¡$¬1ô 4üË2KH Return this unit as a `usize`, regardless of whether it is a byte valueÁü›3EB or an "end of input" sentinel. In the latter case, the underlyingÁüå363 sentinel value given to [`Unit::eoi`] is returned.ÁD§4ÞÐBÿ��»¸ $°4üÿ6&üÐ5KH Returns true if and only of this unit is a byte value equivalent to theÁü 6HE byte given. This always returns false when this is an "end of input"Álí6 sentinel.Á<†7ÞÐBÿ�� £$Ž7—»$”7Ë7£�¤�¤�¤¤£¤êÏKåÀܰ8üå7FC Returns true when this unit represents an "end of input" sentinel.Á4·8ÞÐBÿ�� ¥$¾8ü¨:!üù8B? Returns true when this unit corresponds to an ASCII word byte.ÁÀ9�üÈ9IF This always returns false when this unit represents an "end of input"Ál–:³†Nd¯:ÞÐBÿ�� ¦$¼:ô™;ÞШ g¨ü¾;@Á;î<ï<ð< î<ÞÐ ï<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ð<­àBÿ§ Å;§ ¨$Æ;œ Ì;„ÖFªÓª¬­®¯°±²³´µ¶·¸»¼ìâGüíFJG Creates a new set of equivalence classes where all bytes are mapped toÁœ¼G the same class.Á,éGªÓBÿ©©úòšHªªü¨I"ü«HGD Creates a new set of equivalence classes where each byte belongs toÁô÷H its own equivalence class.ÁT¯IªÓBÿ©© ¬ü£MgT±Mò< ò<ÈšÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwªÓÖ•Bÿ© ÌM© ­å,ÅMü”ViD¢Vó<ô< ó<ªÓ ô<ÈšÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‰•Bÿ© ´V© ®$µVÜ„ÇVüçY*dõYõ< õ<ªÓBÿ© ‚Z© ¯$ƒZüïZ*ü«Z1. Set the equivalence class for the given byte.ÁöZö< ö<ªÓBÿ© úZ©òõ$ÿZ—»Tü›€]üü–\!üÒ[1. Get the equivalence class for the given byte.Á�\÷< ÷<ªÓBÿ© ¡\©פ $¢\—»iýüÞ].üç\HE Get the equivalence class for the given haystack unit and return theÁ¼´] class as a `usize`.Á\å]ø< ø<ªÓÞÐBÿ© ñ]© ²$ò]Êäþ̨`ü¤_JG Create a unit that represents the "end of input" sentinel based on theÁüó_" number of equivalence classes.Á¯`ù< ù<ªÓÞÐBÿ© ³`©�¸ $´`ü¼c#üôaFC Return the total number of elements in the alphabet represented byÁü¿bJG these equivalence classes. Equivalently, this returns the total numberÁÜŽc of equivalence classes.ÁdÃcú< ú<ªÓBÿ© Ðc©ïÿ$ÑcôÒiüÞe@= Returns the stride, as a base-2 exponent, required for theseÁÄ£f equivalence classes.ÁÀf�üÈfHE The stride is always the smallest power of 2 that is greater than orÁü•gHE equal to the alphabet length, and the `stride2` returned here is theÁüâgKH exponent applied to `2` to get the smallest power. This is done so thatÁü²hKH converting between premultiplied state IDs and indices can be done withÁü‚i=: shifts alone, which is much faster than integer division.Á<Ùiû< û<ªÓBÿ© ái© µ$âiü¨m"üôjHE Returns true if and only if every byte in this class maps to its ownÁüÁkFC equivalence class. Equivalently, there are 257 equivalence classesÁüŒlIF and each class contains either exactly one byte or corresponds to theÁüÚl;8 singleton class containing the "end of input" sentinel.Ád¯mü< ü<ªÓBÿ© ¼m© ¶$½müÏn'üûmA> Returns an iterator over all equivalence classes in this set.Á$Öný< ý<ªÓÝ%Ý%¶þß%ש–à%Ÿ–!´ã ÅÒTý = classes.representatives(..).collect();Áü¸xEB // Note that the specific byte values yielded are not guaranteed!ÁÄ‚y�°3ÔŸy Unit::u8(b'\x00'),Á¼¾y Unit::u8(b'a'),Á¼Úy Unit::u8(b'{'),Á¬öy Unit::eoi(3),Á4�zó°3ü›z assert_eq!(expected, reps);Á¿z�üÇz.áß.<úzþ×.†{�üŽ{KH Note though, that you can ask for an arbitrary range of bytes, and onlyÁüÞ{41 representatives for that range will be returned:Á—|�<Ÿ|þ×.ü«|Cð¬Nó|�üû|"žõIü¢}%ËõIüÌ}IF let reps: Vec = classes.representatives(b'A'..=b'z').collect();Áüš~E¯®NÄä~�°3¼� Unit::u8(b'A'),Á¼�­¯N4¹ó°3üÄ™°Nè�üð.áß.<£€þ×.|¶€þ< þ<ªÓ‘Œä%ä%ùþæ%ש–ç%ªÿ–è%ºÿ–é%Êÿ–”º¥�F mþ This shows an example of how to get all of the elements in anÁ´–Ž equivalence class.Á±Ž�<¹Žþ×.üÅŽCð¬N���ü•�"žõIü¼�%ËõIüæ�FC let elements: Vec = classes.elements(Unit::u8(1)).collect();Áü±�DA let expected: Vec = (b'a'..=b'z').map(Unit::u8).collect();Áüú�# assert_eq!(expected, elements);Á¢‘�üª‘.áß.<Ý‘þ×.Dþ‘ÿ< ÿ<ªÓÞÐí%í%ñÿï%ש–ð%›€–ñ%—»–.´` &-xÿ˜Û†‡ˆ‰Š‹Œ�Ž�‘’“–—š ü€K-üÄ>HE Create new storage for the offsets of all matching capturing groups.Á‘?�ü™?HE This routine provides the most information for matches---namely, theÁüæ?KH spans of matching capturing groups---but also requires the regex searchÁü¶@! routines to do the most work.ÁÜ@�üä@HE It is unspecified behavior to use the returned `Captures` value in aÁü±AIF search with a `GroupInfo` other than the one that is provided to thisÁ„ÿA constructor.Á”B�lœB¯Ö.®B�ü¶BEB This example shows that all capturing groups---but only ones thatÁü€CFC participated in a match---are available to query after a match hasÁ|ËC been found:ÁßC�<çCþ×.ÌóCŽØ.ü‘D&Ÿ¾Iü¼D!ò„=¤âD Span, Match,Á4ûD÷Ø.†E�ÌŽE let re = PikeVM::new(Áü¬EGD r"^(?:(?P[a-z]+)|(?P[A-Z]+))(?P[0-9]+)$",Á<øEÞÌ0ü„F&äÎ/ü¯FDA let mut caps = Captures::all(re.get_nfa().group_info().clone());ÁøF�ü€G1. re.captures(&mut cache, "ABC123", &mut caps);Áì¶GØÅ;üØG=âÐ/üšHDA // The 'lower' group didn't match, so it won't have any offsets.ÁüãH63 assert_eq!(None, caps.get_group_by_name("lower"));ÁüžIHE assert_eq!(Some(Span::from(0..3)), caps.get_group_by_name("upper"));ÁüëIIF assert_eq!(Some(Span::from(3..6)), caps.get_group_by_name("digits"));Á¹J�üÁJ.áß.<ôJþ×.‡KýݘÛBÿ……�“Ö]T‹KüÍW1ü«LGD Create new storage for only the full match spans of a pattern. ThisÁü÷L1. does not include any capturing group offsets.Á­M�üµMH–ôNü‚NIèôN„ÐNºõNåN�líN¯Ö.ÿN�ü‡OHE This example shows that only overall match offsets are reported whenÁüÔOGD this constructor is used. Accessing any capturing groups other thanÁü P&# the 0th will always return `None`.ÁËP�<ÓPþ×.ÌßPŽØ.üýP&Ÿ¾Iü¨Q!ò„=tÎQÑ·/4áQ÷Ø.ìQ�ÌôQ§øNü’RGÊøN<ÞRÞÌ0üêR&äÎ/ü•SHE let mut caps = Captures::matches(re.get_nfa().group_info().clone());ÁâS�üêS1�úNì TØÅ;üÂT=âÐ/ü„UKH // We didn't ask for capturing group offsets, so they aren't available.ÁüÔU6´ûNü�V63 assert_eq!(None, caps.get_group_by_name("upper"));ÁüÊV74 assert_eq!(None, caps.get_group_by_name("digits"));Á†W�üŽW.áß.<ÁWþ×.<ÔWýݘÛBÿ……ÙÕÖ]TÜWüàe/üÉZJG Create new storage for only tracking which pattern matched. No offsetsÁ´˜[ are stored at all.Á³[�ü»[H–ôNüˆ\IèôN„Ö\ºõNë\�ló\¯Ö.…]�ü�]IF This example shows that only the pattern that matched can be accessedÁüÛ]96 from a `Captures` value created via this constructor.Á™^�<¡^þ×.Ì­^ŽØ.üË^&Ÿ¾Iüö^!ò„=”œ_ PatternID,Á4³_÷Ø.¾_�üÆ_85 let re = PikeVM::new_many(&[r"[a-z]+", r"[A-Z]+"])?;Áüƒ`&äÎ/ü®`FC let mut caps = Captures::empty(re.get_nfa().group_info().clone());Áù`�ü�a0- re.captures(&mut cache, "aABCz", &mut caps);Áì¶aØÅ;üØa96 assert_eq!(Some(PatternID::must(0)), caps.pattern());Áü–b?< // We didn't ask for any offsets, so they aren't available.ÁüÚb'¤ß.†c�üŽc63 re.captures(&mut cache, &"aABCz"[1..], &mut caps);ÁìÉcØÅ;üëc96 assert_eq!(Some(PatternID::must(1)), caps.pattern());Áü©d?ºŒOüíd'¤ß.™e�ü¡e.áß.<Ôeþ×.,çeýݘÛBÿ…… ˆÖ]TíeôÐmü×fHE Returns true if and only if this capturing group represents a match.Á¤g�ü¬gA> This is a convenience routine for `caps.pattern().is_some()`.Áòg�lúg¯Ö.Œh�ü”hC@ When using the PikeVM (for example), the lightest weight way ofÁüÜhGD detecting whether a match exists is to create capturing groups thatÁü¨i96 only track the ID of the pattern that match (if any):Áæi�<îiþ×.ÌúiŽØ.ü˜j&Ÿ¾IüÃj!ò„=4éj÷Ø.ôj�üüj%" let re = PikeVM::new(r"[a-z]+")?;Áü¦k&äÎ/üÑkFÔŠOœl�ü¤l0°‹OìÙlØÅ;ûl�üƒm.áß.<¶mþ×.D×m¾= ¾=˜ÛBÿ… àm…¤”$ámü‘y*ü—n@= Returns the identifier of the pattern that matched when thisÁüÜnHE capturing group represents a match. If no match was found, then thisÁÔ©o always returns `None`.ÁÈo�üÐoHE This returns a pattern ID in precisely the cases in which `is_match`Áü�pDA returns `true`. Similarly, the pattern ID returned is always theÁüæpA> same pattern ID found in the `Match` returned by `get_match`.Á¬q�l´q¯Ö.Æq�üÎqC€‘Oü–rKH detecting which pattern matched is to create capturing groups that onlyÁüær41 track the ID of the pattern that match (if any):ÁŸs�<§sþ×.̳sŽØ.üÑs&Ÿ¾Iüüs!ò„=”¢tωO4¹t÷Ø.Ät�üÌt8„ŠOü‰u&äÎ/ü´uFÔŠOÿu�ü‡v.+ re.captures(&mut cache, "ABC", &mut caps);Áüºv9ê�OüøvDA // Recall that offsets are only available when using a non-emptyÁüÁwJG // Captures value. So even though a match occurred, this returns None!Áü�x'¤ß.¼x�üÄx.áß.<÷xþ×.<˜y¿= ¿=˜ÛܧBÿ…  y…ôÐ$¡yü‡�(üÚyFC Returns the pattern ID and the span of the match, if one occurred.Á¥z�ü­z?< This always returns `None` when `Captures` was created withÁüñz30 [`Captures::empty`], even if a match was found.Á©{�ü±{B? If this routine returns a non-`None` value, then `is_match` isÁüø{JG guaranteed to return `true` and `pattern` is also guaranteed to returnÁ¼Ç| a non-`None` value.Áã|�lë|¯Ö.ý|�ü…}?< This example shows how to get the full match from a search:ÁÉ}�<Ñ}þ×.üÝ}?‡¤I¡~�ü©~8„ŠOüæ~J¶Ú.µ�ü½.À›Oüð=‰Ý.²€�üº€.áß.<í€þ×.LŽ�À= À=˜Û�´Bÿ… ˜�…€š$™�üŽ–5üû�JG Returns the span of a capturing group match corresponding to the groupÁüÊ‚KH index given, only if both the overall pattern matched and the capturingÁüšƒ%" group participated in that match.Áă�ü̃KH This returns `None` if `index` is invalid. `index` is valid if and onlyÁüœ„GD if it's less than [`Captures::group_len`] for the matching pattern.Áè„�üð„?�ŸOü´…DA [`Captures::empty`], even if a match was found. This also alwaysÁüý…GD returns `None` for any `index > 0` when `Captures` was created withÁÔɆ [`Captures::matches`].Áè†�üð†BŸ Oü·‡DA guaranteed to return `true`, `pattern` is guaranteed to return aÁü€ˆIF non-`None` value and `get_match` is guaranteed to return a non-`None`ÁTΈ value.Á݈�üåˆDA By convention, the 0th capture group will always return the sameÁü®‰EB span as the span returned by `get_match`. This is because the 0thÁüø‰EB capture group always corresponds to the entirety of the pattern'sÁüŠHE match. (It is similarly always unnamed because it is implicit.) ThisÁü�‹EB isn't necessarily true of all regex engines. For example, one canÁüÙ‹EB hand-compile a [`thompson::NFA`](crate::nfa::thompson::NFA) via aÁü£ŒEB [`thompson::Builder`](crate::nfa::thompson::Builder), which isn'tÁüíŒKH technically forced to make the 0th capturing group always correspond toÁ¬½� the entire match.Á×��lß�¯Ö.ñ��üù�HE This example shows how to get the capturing groups, by index, from aÁTÆŽ match:ÁÕŽ�<ÝŽþ×.üéŽ=îõ.ü«�EB use regex_automata::{nfa::thompson::pikevm::PikeVM, Span, Match};Áõ��üý�A> let re = PikeVM::new(r"^(?P\pL+)\s+(?P\pL+)$")?;ÁüÃ�J¶Ú.’‘�üš‘<ŒÍ0üÛ‘>ÓÍ0üž’:œÎ0üÝ’;8 assert_eq!(Some(Span::from(6..17)), caps.get_group(2));Áü�“C@ // Looking for a non-existent capturing group will return None:Áüå“(% assert_eq!(None, caps.get_group(3));Áü’”52 # // literals are too big for 32-bit usize: #1039ÁüÌ”)& # #[cfg(target_pointer_width = "64")]Áüú”:7 assert_eq!(None, caps.get_group(9944060567225171988));Á¹•�üÁ•.áß.<ô•þ×.L•–Á= Á=˜Û­ãBÿ… Ÿ–…ˆÒ$ –÷f6üË©;üà›JƤOü¯œJG name given, only if both the overall pattern matched and the capturingÁüþœ%ñ¥O¨��ü°�JG This returns `None` if `name` does not correspond to a valid capturingÁüÿ�'$ group for the pattern that matched.Á«ž�ü³ž?�ŸOü÷žDò§OüÀŸGÁ¨OÔŒ ’©O« �ü³ BŸ Oüú DÓ©OüáI¢ªOT‘¢õªO ¢�l¨¢¯Ö.º¢�ü¢GD This example shows how to get the capturing groups, by name, from aÁTŽ£¸±O�£�<¥£þ×.ü±£=îõ.üó£E÷±O½¤�üŤAÔ²Oü‹¥J¶Ú.Ú¥�üâ¥<ŒÍ0ü£¦>ÓÍ0üæ¦HE assert_eq!(Some(Span::from(0..5)), caps.get_group_by_name("first"));Áü³§HáÎ0ü€¨C¯´OüȨ74 assert_eq!(None, caps.get_group_by_name("middle"));Á„©�üŒ©.áß.<¿©þ×.ŒÒ©Â=Ã= Â=˜Û Ã=­ãBÿ… ä©… �$å©‚ $ë©üµ¾-üúªJG Returns an iterator of possible spans for every capturing group in theÁ¬É« matching pattern.Áã«�üë«EB If this `Captures` value does not correspond to a match, then theÁüµ¬)& iterator returned yields no elements.Áã¬�üë¬KH Note that the iterator returned yields elements of type `Option`.Áü»­HE A span is present if and only if it corresponds to a capturing groupÁüˆ®! that participated in a match.Á®®�l¶®¯Ö.È®�üЮ;8 This example shows how to collect all capturing groups:Á�¯�<˜¯þ×.ü¤¯=îõ.üæ¯>�ÉL©°�̱°§øNüϰB? // Matches first/last names, with an optional middle name.Áü–±FC r"^(?P\pL+)\s+(?:(?P\pL+)\s+)?(?P\pL+)$",Á<á±ÞÌ0üí±J¶Ú.¼²�üIJ=: re.captures(&mut cache, "Harry James Potter", &mut caps);Á솳ØÅ;ü¨³:7 let groups: Vec> = caps.iter().collect();Áäç³ assert_eq!(groups, vec![Áüˆ´  Some(Span::from(0..18)),Áü­´ Some(Span::from(0..5)),ÁüÑ´  Some(Span::from(6..11)),Áüö´! Some(Span::from(12..18)),Á<œµí¦9¨µ�ü°µ.áß.<ãµþ×.ïµ�ü÷µHE This example uses the same regex as the previous example, but with aÁüĶJG haystack that omits the middle name. This results in a capturing groupÁü“·IF that is present in the elements yielded by the iterator but without aÁTá·¸±Oð·�<ø·þ×.ü„¸=îõ.üƸ>�ÉL‰¹�Ì‘¹§øNü¯¹BšÅOüö¹FçÅO<ÁºÞÌ0üͺJ¶Ú.œ»�ü¤»74 re.captures(&mut cache, "Harry Potter", &mut caps);Áìà»ØÅ;ü‚¼:¸ÇOäÁ¼üÇOüâ¼  Some(Span::from(0..12)),Áü‡½ÎÈOl«½Š›6ü½½  Some(Span::from(6..12)),Á<â½í¦9î½�üö½.áß.<©¾þ×.$¼¾Ä= Ä=˜Û·&·&Ö„¹&ɾôº&ƒ ôCkŠË@Õœ2Ä=Bÿ… Á¾…æø$¾,Õ¿Ž�������Ž�›†Ø–Uÿ—�üÊÊ üëÀIF Return the total number of capturing groups for the matching pattern.Á¹Á�üÁÁFC If this `Captures` value does not correspond to a match, then thisÁ¼ŒÂ always returns `0`.Á¨Â�ü°Â>; This always returns the same number of elements yielded byÁüóÂJG [`Captures::iter`]. That is, the number includes capturing groups evenÁüÂÃ+( if they don't participate in the match.ÁòÃ�lúïÖ.ŒÄ�ü”ÄHE This example shows how to count the total number of capturing groupsÁüáÄJG associated with a pattern. Notice that it includes groups that did notÁü°Å=: participate in a match (just like `Captures::iter` does).ÁòÅ�<úÅþ×.ü†Æ=îõ.üÈÆ6»�LƒÇ�̋ǧøNü©ÇBšÅOüðÇFçÅO<»ÈÞÌ0üÇÈJ¶Ú.–É�üžÉ7ºÍOüÚÉ$! assert_eq!(4, caps.group_len());ÁƒÊ�ü‹Ê.áß.<¾Êþ×.LÑÊÅ= Å=˜ÛBÿ… ÛÊ… �$ÜÊüÖÛ&ü‘ÌC@ Returns a reference to the underlying group info on which theseÁ¼ÙÌ captures are based.ÁõÌ�üýÌHE The difference between `GroupInfo` and `Captures` is that the formerÁüÊÍIF defines the structure of capturing groups where as the latter is whatÁü˜ÎJG stores the actual match information. So where as `Captures` only givesÁüçÎC@ you access to the current match, `GroupInfo` lets you query anyÁü¯ÏGD information about all capturing groups, even ones for patterns thatÁüûÏ  weren't involved in a match.Á Ð�ü¨ÐIF Note that a `GroupInfo` uses reference counting internally, so it mayÁ´öÐ be cloned cheaply.Á‘Ñ�l™Ñ¯Ö.«Ñ�ü³ÑDA This example shows how to get all capturing group names from theÁüüÑC@ underlying `GroupInfo`. Notice that we don't even need to run aÁ\ÄÒ search.ÁÔÒ�<ÜÒþ×.üèÒC@ use regex_automata::{nfa::thompson::pikevm::PikeVM, PatternID};Á°Ó�ü¸Ó ÷ìL´ÝÓ r"(?Pa)",Á”øÓ r"(a)(b)",Át�Ô r"ab",Áü¢Ô! r"(?Pa)(?Pa)",Á´ÈÔ r"(?Pz)",ÁDãÔ¯ƒ1üðÔ$! let caps = re.create_captures();Á™Õ�Ä¡Õ�°3ü¾Õ&# (PatternID::must(0), 0, None),ÁüéÕ-* (PatternID::must(0), 1, Some("foo")),Áü›Ö&# (PatternID::must(1), 0, None),ÁüÆÖ&# (PatternID::must(1), 1, None),ÁüñÖ&# (PatternID::must(1), 2, None),Áüœ×&# (PatternID::must(2), 0, None),ÁüÇ×&# (PatternID::must(3), 0, None),Áüò×-* (PatternID::must(3), 1, Some("bar")),Áü¤Ø.+ (PatternID::must(3), 2, Some("quux")),Áüר&# (PatternID::must(4), 0, None),Áü‚Ù-* (PatternID::must(4), 1, Some("foo")),Á4´Ùó°3ü¿Ù:7 // We could also just use 're.get_nfa().group_info()'.ÁüþÙ41 let got: Vec<(PatternID, usize, Option<&str>)> =Áü·Ú0- caps.group_info().all_names().collect();ÁôìÚ±Ä2�Û�ü—Û.áß.<ÊÛþ×.TÝÛÆ= Æ=˜Û Æ=ýÝBÿ… èÛ…ˆÙ$éÛüÃèlü£ÜA> Interpolates the capture references in `replacement` with theÁüéÜIF corresponding substrings in `haystack` matched by each reference. TheÁü·Ý$! interpolated string is returned.ÁàÝ�üèÝHE See the [`interpolate` module](interpolate) for documentation on theÁüµÞ%" format of the replacement string.ÁßÞ�lçÞ¯Ö.ùÞ�ü�ßFC This example shows how to use interpolation, and also shows how itÁüÌß(% can work with multi-pattern regexes.Áùß�<�àþ×.ü�àC³áOÕà�üÝà ÷ìLü‚áA> r"(?[0-9]{2})-(?[0-9]{2})-(?[0-9]{4})",ÁüÈáA> r"(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})",ÁDŽâ¯ƒ1ü›â&äÎ/üÆâ(•Ï/óâ�üûâ;8 let replacement = "year=$year, month=$month, day=$day";Á»ã�üÃã&# // This matches the first pattern.Áüîã:7 let hay = "On 14-03-2010, I became a Tennessee lamb.";Áü­ä,) re.captures(&mut cache, hay, &mut caps);ÁüÞä;8 let result = caps.interpolate_string(hay, replacement);Áüžå63 assert_eq!("year=2010, month=03, day=14", result);ÁÙå�üáå+( // And this matches the second pattern.Áü‘æ:7 let hay = "On 2010-03-14, I became a Tennessee lamb.";ÁüÐæ,žóOü�ç;ÕóOüÁç6›ôOüç�ü„è.áß.<·èþ×.”ÊèÇ=È=É= Ç=˜Û È= É=‹ÏBÿ… æè… ’$çèý�Dõè „\�éü¥÷�üµêA³ëOüûêIÿëOüÉë,) interpolated string is written to `dst`.Áúë�ü‚ìH�íOüÏì%âíOùì�l�í¯Ö.“í�ü›íFºîOüæí(‹ïO“î�<›îþ×.ü§îC³áOïî�ü÷î ÷ìLüœïA„ðOüâïAÐðOD¨ð¯ƒ1üµð&äÎ/üàð(•Ï/�ñ�ü•ñ;ÕñOÕñ�üÝñ&¨òOüˆò:ÙòOüÇò,žóOüøò  let mut dst = String::new();Áü�ó=: caps.interpolate_string_into(hay, replacement, &mut dst);Áüßó30 assert_eq!("year=2010, month=03, day=14", dst);Á—ô�üŸô+éôOüÏô:ŸõOüŽõ,žóOü¿õ õúOüäõ= ûOü¦ö3èûOÞö�üæö.áß.<™÷þ×.¼¬÷Ê=Ë=Ì=Í= Ê=˜Û Ë= Ì= Í=‹ÏBÿ… Í÷… “$Î÷ý�DÜ÷ „\ô÷Ü„�ødëø“�”�”�””“” ‹ÏUÿ—�²Ý4Üú“�•�•�••“• ØÚUÿ»ÒOüï‡nü½ûA³ëOüƒüIÿëOüÑü)& interpolated byte string is returned.Áÿü�ü‡ýH�íOüÔý%âíOþý�l†þ¯Ö.˜þ�ü þFºîOüëþ(‹ïO˜ÿ�< ÿþ×.ü¬ÿC³áOôÿ�üüÿ ÷ìLü¡€A„ðOüç€AÐðOD­�¯ƒ1üº�&äÎ/üå�(•Ï/’‚�üš‚<9 let replacement = b"year=$year, month=$month, day=$day";ÁÛ‚�üã‚&¨òOüŽƒ;8 let hay = b"On 14-03-2010, I became a Tennessee lamb.";Áü΃,žóOüÿƒ:7 let result = caps.interpolate_bytes(hay, replacement);Áü¾„<9 assert_eq!(&b"year=2010, month=03, day=14"[..], result);Áÿ„�ü‡…+éôOü·…;8 let hay = b"On 2010-03-14, I became a Tennessee lamb.";Áü÷…,žóOü¨†:Ù„Püç†<ž…P¨‡�ü°‡.áß.<ã‡þ×.Œö‡Î=Ï=Ð= Î=˜Û Ï=Èš Ð=Èšñ”Bÿ… ‘ˆ… –$’ˆý�D ˆ „\¹ˆüÏ–ƒüÛ‰A³ëOü¡ŠIÿëOüïŠ1. interpolated byte string is written to `dst`.Á¥‹�ü­‹H�íOüú‹%âíO¤Œ�l¬Œ¯Ö.¾Œ�üÆŒFºîOü‘�(‹ïO¾��<Æ�þ×.üÒ�C³áOšŽ�ü¢Ž ÷ìLüÇŽA„ðOü��AÐðODÓ�¯ƒ1üà�&äÎ/ü‹�(•Ï/¸��üÀ�<¡ƒP�‘�ü‰‘&¨òOü´‘;„„Püô‘,žóOÌ¥’ let mut dst = vec![];ÁüÃ’<9 caps.interpolate_bytes_into(hay, replacement, &mut dst);Áü„“96 assert_eq!(&b"year=2010, month=03, day=14"[..], dst);Á“�üÊ“+éôOüú“;�†Püº”,žóOÌë”à‹Pü‰•<„ŒPüÊ•9ËŒPˆ–�ü�–.áß.<Öþ×.´Ö–Ñ=Ò=Ó=Ô= Ñ=˜Û Ò=Èš Ó=Èš Ô=ñ”Bÿ… ö–… —$÷–ý�D…— „\ž—Ü„º—d–˜—�˜�˜�˜˜—˜ ñ”Uÿ—�Ýô 4�š—�™�™�™™—™—�P»ÒOü‚¨nüñš?< This is a convenience routine for extracting the substringsÁüµ›IF corresponding to matching capture groups in the given `haystack`. TheÁüƒœKH `haystack` should be the same substring used to find the match spans inÁÔÓœ this `Captures` value.Áòœ�üúœJG This is identical to [`Captures::extract_bytes`], except it works withÁôÉ� `&str` instead of `&[u8]`.Áì��dô�”Ÿ0…ž�ü�žA> This panics if the number of explicit matching groups in thisÁüÓžJG `Captures` value is less than `N`. This also panics if this `Captures`Áü¢Ÿ)& value does not correspond to a match.ÁП�üØŸFC Note that this does *not* panic if the number of explicit matchingÁü£ HE groups is bigger than `N`. In that case, only the first `N` matchingÁÌð  groups are extracted.ÁŽ¡�l–¡¯Ö.¨¡�<°¡þ×.ü¼¡6»�L÷¡�üÿ¡?< let re = PikeVM::new(r"([0-9]{4})-([0-9]{2})-([0-9]{2})")?;Áüâ&äÎ/üî¢(•Ï/›£�ü££:ŸõOüâ£,žóO쓤ØÅ;üµ¤74 let (full, [year, month, day]) = caps.extract(hay);Áüñ¤# assert_eq!("2010-03-14", full);Á왥 assert_eq!("2010", year);Á以 assert_eq!("03", month);ÁÔÜ¥ assert_eq!("14", day);Áû¥�üƒ¦96 // We can also ask for fewer than all capture groups.ÁüÁ¦+( let (full, [year]) = caps.extract(hay);Áüñ¦#ÄšPì™§ñšP»§�üç.áß.<ö§þ×.<‰¨›Õ= Õ=˜Û ›ÙžPÙžPŠBÿ…Šœœ‘¨…Št•¨ šŠ$¯¨ý�™>57% ›¨’ªš�Ÿ�Ÿ�ŸŸšëüüÓ¸wüµ«?œ‘Püù«Iæ‘PüǬKº’PÔ—­�“P¶­�ü¾­DA This is identical to [`Captures::extract`], except it works withÁô‡® `&[u8]` instead of `&str`.Áª®�d²®”Ÿ0î�üË®Aæ”Pü‘¯J²•Püà¯)‡–Pް�ü–°FÈ–Püá°H™—PÌ®±ë—P̱�lÔ±¯Ö.æ±�<î±þ×.üú±6»�Lµ²�ü½²?á˜Pü�³&äÎ/ü¬³(•Ï/Ù³�üá³;�†Pü¡´,žóOìÒ´ØÅ;üô´=: let (full, [year, month, day]) = caps.extract_bytes(hay);Áü¶µ$! assert_eq!(b"2010-03-14", full);Áôßµ assert_eq!(b"2010", year);Áì‚¶ assert_eq!(b"03", month);Áܤ¶ assert_eq!(b"14", day);ÁĶ�ü̶9ð›PüŠ·1. let (full, [year]) = caps.extract_bytes(hay);ÁüÀ·$û£Pôé·©¤PŒ¸�ü”¸.áß.<Ǹþ×.lÚ¸¡Ö= Ö=˜Û ¡Èšå§På§PŠBÿ…Š¢¢è¸…–ŸPtì¸  Š$†¹ý�šC/1% ò¸ìº �¥�¥�¥¥ ì†lô½ü�¼NK Lower level "slot" oriented APIs. One does not typically need to use theseÁüܼLI when executing a search. They are instead mostly intended for folks thatÁü©½JG are writing their own regex engine while reusing this `Captures` type.Á˜Û§¨©ª¼«Ðüˆ¾  Clear this `Captures` value.Á­¾�üµ¾IF After clearing, all slots inside this `Captures` value will be set toÁüƒ¿GD `None`. Similarly, any pattern ID that it was previously associatedÁüÏ¿! with (for a match) is erased.Áõ¿�üý¿JG It is not usually necessary to call this routine. Namely, a `Captures`ÁüÌÀHE value only provides high level access to the capturing groups of theÁü™ÁHE pattern that matched, and only low level access to individual slots.ÁüæÁFC Thus, even if slots corresponding to groups that aren't associatedÁü±ÂFC with the matching pattern are set, then it won't impact the higherÁüüÂKH level APIs. Namely, higher level APIs like [`Captures::get_group`] willÁüÌÃJG return `None` if no pattern ID is present, even if there are spans setÁä›Ä in the underlying slots.Á¼Ä�üÄÄFC Thus, to "clear" a `Captures` value of a match, it is usually onlyÁü�Å<9 necessary to call [`Captures::set_pattern`] with `None`.ÁÐÅ�lØÅ¯Ö.êÅ�üòÅGD This example shows what happens when a `Captures` value is cleared.Á¾Æ�<ÆÆþ×.üÒÆ=îõ.ü”Ç6»�LÏÇ�ü×ÇAÔ²Oü�ÈJ¶Ú.ìÈ�üôÈ<ŒÍ0ìµÉØÅ;ü×É# let slots: Vec> =ÁüÿÉB? caps.slots().iter().map(|s| s.map(|x| x.get())).collect();ÁüÆÊGD // Note that the following ordering is considered an API guarantee.ÁÜ’Ë assert_eq!(slots, vec![Á„²Ë Some(0),ÁŒÇË Some(17),Á„ÝËü¶P„òË Some(5),Á„‡Ì Some(6),ÁŒœÌ–·P<²Ìí¦9¾Ì�üÆÌKH // Now clear the slots. Everything is gone and it is no longer a match.ÁŒ–Í caps.clear();Áô¬Íž³IüÏÍ#‹µPü÷ÍB¹µPܾÎ×¶PlÞΊ›6lðΊ›6l‚ÏŠ›6l”ÏŠ›6l¦ÏŠ›6l¸ÏŠ›6<ÊÏí¦9ÖÏ�üÞÏ.áß.<‘Ðþ×.,²Ð×= ×=˜ÛBÿ¦ ¸Ð¦ §$½Ðüßá5ü¹Ñ-* Set the pattern on this `Captures` value.ÁëÑ�üóÑFC When the pattern ID is `None`, then this `Captures` value does notÁü¾ÒIF correspond to a match (`is_match` will return `false`). Otherwise, itÁÜŒÓ corresponds to a match.Á¬Ó�ü´ÓDA This is useful in search implementations where you might want toÁüýÓDA initially call `set_pattern(None)` in order to avoid the cost ofÁüÆÔ:7 calling `clear()` if it turns out to not be necessary.Á…Õ�l�Õ¯Ö.ŸÕ�ü§ÕKH This example shows that `set_pattern` merely overwrites the pattern ID.Áü÷Õ;8 It does not actually change the underlying slot values.Á·Ö�<¿Öþ×.üËÖ=îõ.ü�×6»�LÈ×�üÐ×AÔ²Oü–ØJ¶Ú.åØ�üíØ<ŒÍ0ì®ÙØÅ;üÐÙ&# assert!(caps.pattern().is_some());ÁüûÙ#‹µPü£ÚB¹µPüêÚG†¶PܶÛ×¶P„ÖÛü¶PŒëÛ–·P„�Üü¶P„–Ü¿·P„«ÜÙ·PŒÀÜ–·P<ÖÜí¦9âÜ�üêÜEB // Now set the pattern to None. Note that the slot values remain.ÁÜ´Ý caps.set_pattern(None);ÁôÔÝž³Iü÷Ý'$ assert!(!caps.pattern().is_some());Áü£Þ#‹µPüËÞB¹µPü’ßG†¶PÜÞß×¶P„þßü¶PŒ“à–·P„©àü¶P„¾à¿·P„ÓàÙ·PŒèà–·P<þàí¦9Šá�ü’á.áß.<Åáþ×.\æáØ= Ø=˜ÛܧBÿ¦ òᦋ×$÷á¾¾>Iü«ò-üºâIF Returns the underlying slots, where each slot stores a single offset.Áˆã�ü�ãJG Every matching capturing group generally corresponds to two slots: oneÁüßãGD slot for the starting position and another for the ending position.Áü«äGD Typically, either both are present or neither are. (The weasel wordÁü÷äJG "typically" is used here because it really depends on the regex engineÁüÆåFC implementation. Every sensible regex engine likely adheres to thisÁü‘æA> invariant, and every regex engine in this crate is sensible.)Á׿�üßæJG Generally speaking, callers should prefer to use higher level routinesÁü®ç<9 like [`Captures::get_match`] or [`Captures::get_group`].Áïç�ü÷çJG An important note here is that a regex engine may not reset all of theÁüÆèHE slots to `None` values when no match occurs, or even when a match ofÁü“éHE a different pattern occurs. But this depends on how the regex engineÁüàé$! implementation deals with slots.Á‰ê�l‘ê¯Ö.£ê�ü«êJG This example shows how to get the underlying slots from a regex match.Áúê�<‚ëþ×.ÌŽëŽØ.ü¬ë&Ÿ¾Iü×ë30 util::primitives::{PatternID, NonMaxUsize},Á4�ì÷Ø.šì�ü¢ì ÷ìL”Çì r"[a-z]+",Á”Þ쓃1Dõ쯃1ü‚íJ¶Ú.Ñí�üÙí.+ re.captures(&mut cache, "123", &mut caps);ÁüŒî9ê�OüÊîFC // Note that the only guarantee we have here is that slots 2 and 3Áü•ïIF // are set to correct values. The contents of the first two slots areÁüãï74 // unspecified since the 0th pattern did not match.Á¬Ÿð let expected = &[Ál¹ðŠ›6lËðŠ›6äÝð NonMaxUsize::new(0),Áäþð NonMaxUsize::new(3),Á4Ÿñó°3üªñ'$ assert_eq!(expected, caps.slots());ÁÖñ�üÞñ.áß.<‘òþ×.,²òÙ= Ù=˜Û Ù=ü¦Bÿ¦ ¸ò¦ ©$¹òüÍõ9üúòKH Returns the underlying slots as a mutable slice, where each slot storesÁ¤Êó a single offset.Áãó�üëóEB This tends to be most useful for regex engine implementations forÁüµô;8 writing offsets for matching capturing groups to slots.Áõô�üýô=: See [`Captures::slots`] for more information about slots.ÁLÔõÚ= Ú=˜Û Ú=ü¦Bÿ¦ Þõ¦®Õ$ãõüªö"˜Û¬ g¬üÓö@ÖöÛ=Ü=Ý= Û=˜Û Ü=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý=­àBÿ« Úö« ¬$Ûöœ áöÜþù„…úôÄ®®òÛK—� ~+믰–út ú úô­­›†”´ú$´úô­­ ĘÛüËú2IJ²òÛ³ g³Ðúü„û@‡ûÞ=ß=à= Þ=òÛ ß=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡à=­àBÿ± ‹û± ³Ä$Œûœ ’ûJ ÖûôͶ¼ÜI �î/÷hµ·¸Å™Ç™È™­É™Ê™àË™óG*¤�R{9 ðæ¼ÜBÿ˜J ’ô®áP¼ÜBÿ´´ µÄÚû,Þûô´´|åûô´´®áPü€ü%ĺº¼Ü» g»…üü´ü@·üá=â=ã= á=¼Ü â=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ã=­àBÿ¹ »ü¹ »Ä$¼üœ ÂüüÔ…-Ľ½ˆÝ¾¿ÀÁÅQÆQÊQËQ¿ÀÁÙ…Lˆ†$�†¼¼­ãü§†*$ª†è= è=ˆÝřǙș­É™Ê™àË™óG*¤�R{9 ­ãBÿ¼ ¯†¼ ¿Ä$´†üÁ‡-Lćé= é=ˆÝð›>Bÿ¼ ·¼ ÀÄ$χ¼›ˆ,žˆˆÝBÿ¼¼ ÁÄ$¤ˆüÙˆ6ÄÃÈÝÞˆü“‰>ÄÅňݘ‰t©ÆýÝÇÌÎÐÑÓÔÖרÙÚÛÜÝüÎëºü¾ÆDA Creates a new group info from a sequence of patterns, where eachÁü‡ÇGD sequence of patterns yields a sequence of possible group names. TheÁüÓÇIF index of each pattern in the sequence corresponds to its `PatternID`,Áü¡ÈIF and the index of each group in each pattern's sequence corresponds toÁüïÈ" its corresponding group index.Á–É�üžÉHE While this constructor is very generic and therefore perhaps hard toÁüëÉFC chew on, an example of a valid concrete type that can be passed toÁü¶ÊC@ this constructor is `Vec>>`. The outer `Vec`ÁüþÊDA corresponds to the patterns, i.e., one `Vec>` perÁüÇËDA pattern. The inner `Vec` corresponds to the capturing groups forÁü�ÌEB each pattern. The `Option` corresponds to the name of theÁüÚÌ  capturing group, if present.ÁÿÌ�ü‡ÍFC It is legal to pass an empty iterator to this constructor. It willÁüÒÍFC return an empty group info with zero slots. An empty group info isÁü�ÎHE useful for cases where you have no patterns or for cases where slotsÁüêÎA> aren't being used at all (e.g., for most DFAs in this crate).Á°Ï�d¸Ï¯Ö0ÉÏ�üÑÏGD This constructor returns an error if the given capturing groups areÁü�ÐGD invalid in some way. Those reasons include, but are not necessarilyÁ|éÐ limited to:ÁýÐ�ü…Ñ;8 * Too many patterns (i.e., `PatternID` would overflow).ÁüÅÑ=: * Too many capturing groups (e.g., `u32` would overflow).Áü‡ÒIF * A pattern is given that has no capturing groups. (All patterns mustÁüÕÒ<9 have at least an implicit capturing group at index `0`.)Áü–ÓFC * The capturing group at index `0` has a name. It must be unnamed.ÁüáÓHE * There are duplicate capturing group names within the same pattern.Áü®ÔEB (Multiple capturing groups with the same name may exist, but theyÁüøÔ# must be in different patterns.)Á Õ�ü¨ÕA> An example below shows how to trigger some of the above errorÁ|îÕ conditions.Á‚Ö�lŠÖ¯Ö.œÖ�ü¤ÖFC This example shows how to build a new `GroupInfo` and query it forÁ„ïÖèè4„×�<Œ×þ×.ü˜×2/ use regex_automata::util::captures::GroupInfo;ÁÏ×�ü××# let info = GroupInfo::new(vec![Áüÿ×  vec![None, Some("foo")],Áœ¤Ø vec![None],Áü¼Ø2/ vec![None, None, None, Some("bar"), None],ÁüóØ&# vec![None, None, Some("foo")],ÁDžÙ¯ƒ1ü«Ù,) // The number of patterns being tracked.ÁüÜÙ&# assert_eq!(4, info.pattern_len());ÁćÚ // 2 slots per groupÁü¤Ú$! assert_eq!(22, info.slot_len());ÁÍÚ�üÕÚ.áß.<ˆÛþ×.”Û�üœÛ  # Example: empty `GroupInfo`ÁÁÛ�üÉÛF€úP„”Üèè4©Ü�<±Üþ×.ü½Ü2úúPôÜ�üüÜ" let info = GroupInfo::empty();ÁÔ£Ý // Everything is zero.ÁüÂÝ&# assert_eq!(0, info.pattern_len());ÁüíÝ# assert_eq!(0, info.slot_len());Á•Þ�ü�Þ.áß.<ÐÞþ×.ÜÞ�üäÞ # Example: error conditionsÁˆß�ü�ßHE This example shows how to provoke some of the ways in which buildingÁÜÝß a `GroupInfo` can fail.Áýß�<…àþ×.ü‘à2úúPÈà�üÐàIF // Either the group info is empty, or all patterns must have at leastÁÜžá // one capturing group.Áü¾á  assert!(GroupInfo::new(vec![Áüãá$! vec![None, Some("a")], // okÁÌŒâ vec![None], // okÁ̪â vec![], // not okÁŒÈâ ]).is_err());ÁüÞâ41 // Note that building an empty group info is OK.Áü—ãGD assert!(GroupInfo::new(Vec::>>::new()).is_ok());Áãã�üëãEB // The first group in each pattern must correspond to an implicitÁüµäHE // anonymous group. i.e., One that is not named. By convention, thisÁü‚åKH // group corresponds to the overall match of a regex. Every other groupÁüÒå-* // in a pattern is explicit and optional.Áü„æ>; assert!(GroupInfo::new(vec![vec![Some("foo")]]).is_err());ÁÇæ�üÏæGD // There must not be duplicate group names within the same pattern.Áü›ç ø„QüÀç-* vec![None, Some("foo"), Some("foo")],ÁŒòç—†Qüˆè:7 // But duplicate names across distinct patterns is OK.ÁüÇè ø„Qüìè òûPü‘é òûP„¶é ]).is_ok());ÁËé�üÓé.áß.<†êþ×.’ê�üšêC@ There are other ways for building a `GroupInfo` to fail but areÁüâêIF difficult to show. For example, if the number of patterns given wouldÁ̰ë overflow `PatternID`.ÁÕ뵓¬BÿƌȃɊÊÊÈÉÆ¹Ž/ ÙëþÆß§ ÜëþÆ÷¯ ßëŽPµ“´¯ì�Pµ“ß§D¼ìŽPß§ôÒì�Pß§²¯„ßì£÷¯Týì ǵ“ß§÷¯‡Ð>c¢¤�Ÿ˜š˜øÇ�Ë�Ë�ËËÇéµÜÝ€üÍû&# This creates an empty `GroupInfo`.Áøû�ü€üFC This is a convenience routine for calling `GroupInfo::new` with anÁüËü%" iterator that yields no elements.Áõü�lýü¯Ö.�ý�ü—ýHE This example shows how to build a new empty `GroupInfo` and query itÁ¤äý for information.Áýý�<…þþ×.ü‘þ2úúPÈþ�üÐþ"²€QÔ÷þÞ€Qü–ÿ&ƒ�QüÁÿ(% assert_eq!(0, info.all_group_len());Áüîÿ#´�Q–€�üž€.áß.<Ñ€þ×.,ä€ýÝBÿÆÆ Ì µ�üº�Cüÿ�IF Return the capture group index corresponding to the given name in theÁüÍ‚DA given pattern. If no such capture group name exists in the givenÁü–ƒ&# pattern, then this returns `None`.ÁÁƒ�üɃA> If the given pattern ID is invalid, then this returns `None`.Á�„�ü—„GD This also returns `None` for all inputs if these captures are emptyÁüã„HE (e.g., built from an empty [`GroupInfo`]). To check whether capturesÁü°…EB are present for a specific pattern, use [`GroupInfo::group_len`].Áú…�l‚†¯Ö.”†�üœ†JG This example shows how to find the capture index for the given patternÁœë† and group name.Áƒ‡�ü‹‡HE Remember that capture indices are relative to the pattern, such thatÁü؇HE the same capture index value may refer to different capturing groupsÁÔ¥ˆ for distinct patterns.ÁĈ�<̈þ×.ü؈=îõ.üš‰8°ÄI׉�ü߉@= let (pid0, pid1) = (PatternID::must(0), PatternID::must(1));Á¤Š�ô¬Š let nfa = NFA::new_many(&[ÁüÏŠ'$ r"a(?P\w+)z(?P\s+)",ÁÔûŠ r"a(?P\d+)z",ÁDš‹¯ƒ1ü§‹" let groups = nfa.group_info();Áü΋63 assert_eq!(Some(2), groups.to_index(pid0, "foo"));Áü‰ŒFC // Recall that capture index 0 is always unnamed and refers to theÁüÔŒJG // entire pattern. So the first capturing group present in the patternÁü£�'$ // itself always starts at index 1.ÁüÏ�63 assert_eq!(Some(1), groups.to_index(pid1, "foo"));ÁŠŽ�ü’ŽEB // And if a name does not exist for a particular pattern, None isÁ„ÜŽ // returned.ÁüñŽ52 assert!(groups.to_index(pid0, "quux").is_some());Áü«�52 assert!(groups.to_index(pid1, "quux").is_none());Áå��üí�.áß.< �þ×.DÁ�î=ï= î=ýÝ›† ï=ØÚBÿÆ Ê�Æ Î$Ë�¾¾ún‚ oè‘Î�Ï�Ï�ÏÏÎàÝü” Iü…’IF Return the capture name for the given index and given pattern. If theÁüÓ’GD corresponding group does not have a name, then this returns `None`.ÁŸ“�ü§“;8 If the pattern ID is invalid, then this returns `None`.Áç“�üï“JG If the group index is invalid for the given pattern, then this returnsÁü¾”KH `None`. A group `index` is valid for a pattern `pid` in an `nfa` if andÁüŽ•30 only if `index < nfa.pattern_capture_len(pid)`.ÁÆ•�üΕGµ™Qüš–H‡šQüç–EÚšQ±—�l¹—¯Ö.Ë—�üÓ—GD This example shows how to find the capture group name for the givenÁ䟘 pattern and group index.ÁÀ˜�<Șþ×.üÔ˜=îõ.ü–™8°ÄIÓ™�üÛ™@ážQ š�ô¨š¸ŸQüËš%" r"a(?P\w+)z(\s+)x(\d+)",Áüõš r"a(\d+)z(?P\s+)",ÁD™›¯ƒ1ü¦›"Å QüÍ›.+ assert_eq!(None, groups.to_name(pid0, 0));Áü€œ52 assert_eq!(Some("foo"), groups.to_name(pid0, 1));Áüºœ.+ assert_eq!(None, groups.to_name(pid0, 2));Áüíœ.+ assert_eq!(None, groups.to_name(pid0, 3));Á ��ü¨�.+ assert_eq!(None, groups.to_name(pid1, 0));ÁüÛ�.+ assert_eq!(None, groups.to_name(pid1, 1));ÁüŽž52 assert_eq!(Some("foo"), groups.to_name(pid1, 2));ÁüÈž?< // '3' is not a valid capture index for the second pattern.ÁüŒŸ.+ assert_eq!(None, groups.to_name(pid1, 3));Á¿Ÿ�üÇŸ.áß.<úŸþ×.<› ð= ð=ýÝ›†Å™Ç™È™­É™Ê™àË™óG*¤�R{9  ð=BÿÆ £ Æ Ð$¤ ¾¾cuÊÚmuü²¬Hüå¡IF Return an iterator of all capture groups and their names (if present)Áì³¢ for a particular pattern.ÁÕ¢�üÝ¢GD If the given pattern ID is invalid or if this `GroupInfo` is empty,Áü©£)& then the iterator yields no elements.Á×£�üߣFC The number of elements yielded by this iterator is always equal toÁüª¤@= the result of calling [`GroupInfo::group_len`] with the sameÁ„ï¤ðœ5„¥�lŒ¥¯Ö.ž¥�ü¦¥G°�JÌò¥�ŽJ�¦�<˜¦þ×.ü¤¦8°ÄIá¦�üé¦:ÜŽJü¨§G¡�Jüô§Kó�JüĨJÉ�Jü“© ž‘Jü¸©BÉ‘Jôÿ©±Ä2¢ª�üªªB±’JüñªKþ’J¼Á«Ó“JÝ«�üå«.áß.<˜¬þ×.l¹¬ñ= ñ=ýÝ›†ê&ê&ñˆì&ÛËô#Ã/6$Ûñ=BÿÆ ǬÆ Ñ$Ȭ¾¾ñyLž®Ñ�Ò�Ò�ÒÒÑ»òüʼ0üô®JG Return an iterator of all capture groups for all patterns supported byÁüïJG this `GroupInfo`. Each item yielded is a triple of the group's patternÁü’°>; ID, index in the pattern and the group's name, if present.ÁÕ°�lݰ¯Ö.ï°�ü÷°GD This example shows how to get a list of all capture groups found inÁüñ41 one NFA, potentially spanning multiple patterns.Áü±�<„²þ×.ü�²8°ÄIͲ�ôÕ²¸ŸQ´ø²œâOl“³ r"a",Á|¥³ r"(a)",ÁD¹³¯ƒ1ÄÆ³�°3üã³&•äOüŽ´-ÆäOüÀ´&þäOüë´&‘æOü–µ&# (PatternID::must(2), 1, None),Á4Áµó°3ü̵4 éOü…¶/, nfa.group_info().all_names().collect();Áô¹¶±Ä2ܶ�üä¶.áß.<—·þ×.£·�ü«·GD Unlike other capturing group related routines, this routine doesn'tÁü÷·63 panic even if captures aren't enabled on this NFA:Á²¸�<º¸þ×.üƸ<ÒÖG‡¹�ì�¹„‘/ü±¹E‘ÕI´û¹Ñ�5Ô–º r"(?Pa)",ÁŒµº r"a",ÁœËº r"(a)",Ád㺭Ž5üôº?< // When captures aren't enabled, there's nothing to return.Áü¸»85 assert_eq!(0, nfa.group_info().all_names().count());Áõ»�üý».áß.<°¼þ×.LѼò= ò=ýÝó&ó&ɉõ&Ö]ôö&ò‰ô÷&þ‰ôø&ƒ ôªõ*ßÿçÅò=BÿÆ Û¼Æ Ó$ܼü·Çpü»¾C@ Returns the starting and ending slot corresponding to the givenÁüƒ¿HE capturing group for the given pattern. The ending slot is always oneÁüп)& more than the starting slot returned.Áþ¿�ü†ÀKH Note that this is like [`GroupInfo::slot`], except that it also returnsÁüÖÀ*' the ending slot value for convenience.Á…Á�ü�ÁGD If either the pattern ID or the capture index is invalid, then thisÁŒÙÁ returns None.ÁïÁ�l÷Á¯Ö.‰Â�ü‘ÂFC This example shows that the starting slots for the first capturingÁüÜÂ'$ group of each pattern are distinct.ÁˆÃ�<�Ãþ×.üœÃ8°ÄIÙÃ�üáÃ*' let nfa = NFA::new_many(&["a", "b"])?;Á|�Ä assert_ne!(Áü¤Ä63 nfa.group_info().slots(PatternID::must(0), 0),ÁüßÄ63 nfa.group_info().slots(PatternID::must(1), 0),Á4šÅ×è/¥Å�ü­Å@= // Also, the start and end slot values are never equivalent.ÁüòÅKH let (start, end) = nfa.group_info().slots(PatternID::ZERO, 0).unwrap();ÁÜÂÆ assert_ne!(start, end);ÁâÆ�üêÆ.áß.<�Çþ×.,¾Çó= ó=ýÝ›†ÇàBÿÆ ÍÇÆ†à$ÎǾ¾·~ÊÚÁ~<ŽÊÔ�Õ�Õ�ÕÕÔÀýüØÐGüµÊHE Returns the starting slot corresponding to the given capturing groupÁü‚ËFC for the given pattern. The ending slot is always one more than theÁœÍË value returned.ÁåË�üíËG‰ÌQŒ¹ÌÚÌQÏÌ�l×̯Ö.éÌ�üñÌFžÍQü¼Í'ïÍQèÍ�<ðÍþ×.üüÍ8°ÄI¹Î�üÁÎ*ØÎQ|ðÎŒÏQü„Ï52 nfa.group_info().slot(PatternID::must(0), 0),Áü¾Ï52 nfa.group_info().slot(PatternID::must(1), 0),Á4øÏ×è/ƒÐ�ü‹Ð.áß.<¾Ðþ×.$ßÐô= ô=ýÝ›†ØÚBÿÆ äÐÆôü$åо¾{‚ÊÚ…‚ü�Þ"üÉ×=: Returns the total number of patterns in this `GroupInfo`.Á‹Ø�ü“ØC@ This may return zero if the `GroupInfo` was constructed with noÁlÛØ³û>íØ�üõØHÞÊIüÂÙFC `GroupInfo` construction will fail if too many patterns are added.Á�Ú�l•Ú¯Ö.§Ú�<¯Úþ×.ü»Ú+®ÆGëÚ�üóÚ>þÄIü¶Û2/ assert_eq!(3, nfa.group_info().pattern_len());ÁíÛ�üõÛ!ùÍIü›Ü2/ assert_eq!(0, nfa.group_info().pattern_len());ÁÒÜ�üÚÜ"âÎIü�Ý2/ assert_eq!(1, nfa.group_info().pattern_len());Á¸Ý�üÀÝ.áß.<óÝþ×.\”Þõ= õ=ýÝBÿÆ  ÞÆîÙ$¡ÞüÐê0üÚÞ52 Return the number of capture groups in a pattern.Á”ß�üœß85 If the pattern ID is invalid, then this returns `0`.ÁÙß�lá߯Ö.óß�üûßGD This example shows how the values returned by this routine may varyÁüÇà2/ for different patterns and NFA configurations.Áþà�<†áþ×.ü’áIF use regex_automata::{nfa::thompson::{NFA, WhichCaptures}, PatternID};Áàá�üèá&# let nfa = NFA::new(r"(a)(b)(c)")?;Áü“âGD // There are 3 explicit groups in the pattern's concrete syntax andÁüßâ@= // 1 unnamed and implicit group spanning the entire pattern.Áü¤ã?< assert_eq!(4, nfa.group_info().group_len(PatternID::ZERO));Áèã�üðã  let nfa = NFA::new(r"abc")?;Áü•ä0- // There is just the unnamed implicit group.ÁüÊä?< assert_eq!(1, nfa.group_info().group_len(PatternID::ZERO));ÁŽå�ì–å„‘/ü¸åE‘ÕIÄ‚æ .build(r"abc")?;ÁüŸæ74 // We disabled capturing groups, so there are none.ÁüÛæ?< assert_eq!(0, nfa.group_info().group_len(PatternID::ZERO));ÁŸç�ì§ç„‘/üÉçE‘ÕIô“è .build(r"(a)(b)(c)")?;Áü¶èIF // We disabled capturing groups, so there are none, even if there areÁü„é.+ // explicit groups in the concrete syntax.Áü·é?¯çQûé�üƒê.áß.<¶êþ×.L×êö= ö=ýÝ›†BÿÆ áêÆÁ€$âê¾¾ð„ü‘ù$ü¬ëB? Return the total number of capture groups across all patterns.Áóë�üûëFC This includes implicit groups that represent the entire match of aÁdÆìûœ/×ì�lßì¯Ö.ñì�üùìGÁàQüÅí2“áQüí�<„îþ×.ü�îIëáQÞî�üæî&ÌâQü‘ïGýâQüÝï@ÏãQü¢ð41 assert_eq!(4, nfa.group_info().all_group_len());ÁÛð�üãð ñäQüˆñ0œåQü½ñ41 assert_eq!(1, nfa.group_info().all_group_len());Áöñ�üþñ30 let nfa = NFA::new_many(&["(a)", "b", "(c)"])?;Áü¶ò41 // Each pattern has one implicit groups, and twoÁüïò-* // patterns have one explicit group each.Áü¡ó41 assert_eq!(5, nfa.group_info().all_group_len());ÁÚó�ìâó„‘/ü„ôE‘ÕIÄÎôÊæQüëô7íæQü§õ41 assert_eq!(0, nfa.group_info().all_group_len());Áàõ�ìèõ„‘/üŠöE‘ÕIôÔö¢èQü÷öIËèQüÅ÷.ŸéQüø÷?¯çQ¼ø�üÄø.áß.<÷øþ×.l˜ù÷= ÷=ýÝBÿÆ ¦ùÆ Ù$§ùüÜ€üßùDA Returns the total number of slots in this `GroupInfo` across allÁl¨ú³û>ºú�üÂúKH The total number of slots is always twice the total number of capturingÁü’û85 groups, including both implicit and explicit groups.ÁÏû�l×û¯Ö.éû�üñûGD This example shows the relationship between the number of capturingÁ¬½ü groups and slots.Á×ü�<ßüþ×.üëü2úúP¢ý�üªý&# // There are 11 total groups here.ÁüÕý#ÄûPüýý òûPœ¢þœüPüºþ2ºüPüñþ&÷üPDœÿ¯ƒ1ü©ÿ0- // 2 slots per group gives us 11*2=22 slots.ÁüÞÿ$ÀþP‡€�ü�€.áß.<€þ×.Dã€ø= ø=ýÝBÿÆ ì€ÆÑ‹$í€üÊŠ(ü´�DA Returns the total number of slots for implicit capturing groups.Áý��ü…‚GD This is like [`GroupInfo::slot_len`], except it doesn't include theÁüÑ‚EB explicit slots for each pattern. Since there are always exactly 2Áü›ƒKH implicit slots for each pattern, the number of implicit slots is alwaysÁüëƒ*' equal to twice the number of patterns.Áš„�l¢„¯Ö.´„�ü¼„G˜öQüˆ….+ groups, implicit slots and explicit slots.Á»…�<Ã…þ×.üÏ…2úúP††�üކ&À÷Qü¹†KH let info = GroupInfo::new(vec![vec![None, Some("foo"), Some("bar")]])?;Áü‰‡0ÉøQü¾‡# assert_eq!(6, info.slot_len());Áüæ‡IF // 2 implicit slots per pattern gives us 2 implicit slots since thereÁ¤´ˆ // is 1 pattern.Áü͈,) assert_eq!(2, info.implicit_slot_len());ÁüþˆA> // 2 explicit capturing groups gives us 2*2=4 explicit slots.Áüĉ,) assert_eq!(4, info.explicit_slot_len());Áõ‰�üý‰.áß.<°Šþ×.ŒÑŠù= ù=ýÝBÿÆ ãŠÆʹ$äŠüΕ(üŸ‹DA Returns the total number of slots for explicit capturing groups.Áè‹�üð‹GïúQü¼ŒKH implicit slots for each pattern. (There are always 2 implicit slots forÁ”Œ� each pattern.)Á£��ü«�IF For a non-empty `GroupInfo`, it is always the case that `slot_len` isÁüù�HE strictly greater than `explicit_slot_len`. For an empty `GroupInfo`,ÁüÆŽFC both the total number of slots and the number of explicit slots isÁD‘� `0`.Áž��l¦�¯Ö.¸��üÀ�G˜öQüŒ�.ÓýQ¿��<Ç�þ×.üÓ�2úúPŠ‘�ü’‘&À÷Qü½‘KÒþQü�’0ÉøQüÂ’#·ÿQüê’IåÿQ¤¸“¸€RüÑ“,×€Rü‚”AŽ�RüÈ”,Ú�Rù”�ü�•.áß.<´•þ×.ŒÕ•ú= ú=ýÝBÿÆ ç•Æ Ü$è•ü«˜#üÅ–<9 Returns the memory usage, in bytes, of this `GroupInfo`.Á†—�üŽ—IF This does **not** include the stack size used up by this `GroupInfo`.ÁüÜ—<9 To compute that, use `std::mem::size_of::()`.Ád²˜û= û=ýÝBÿÆ ¿˜ÆÃú$À˜”ݘ ó˜œÀ¡Ó‰|®¡¼¨¡tÅ¡ô—£œÎ¥ÍÞáâåèéêüÉ©-|Ì©ôÿ= ÿ=ÍÞ›†Bÿà Ü©à„²$᩾¾ç©üþ³®”�´ô€> €>ÍÞ›†×�│¹BÿàŠãã ¬´àþÆ ¦ ”´£ ¦T—´ â ¦$±´¾¾]ŸÑÑhŸ»Ñ¸ŸDF�¹â�ä�ä�ääââ¦ü‡Ç=ŒŠÇô�> �>ÍÞ¨¹Bÿà œÇàà»$¡ÇüÓÇ)„ìÇ•Îå�ç�ç�ççå祵³µô€Ñ\ƒÑô‚> ‚>ÍÞBÿà �ÑàLj$�Ñü÷Ò,LúÒôƒ> ƒ>ÍÞ›†Bÿà „Óà–Š$…Ó¾¾‹Óü…Ø&tˆØô„> „>ÍÞ×�Bÿà —Øàþ�$˜Ø\óÛê�ë�ë�ëëêëĆ×�Uÿœâî¶ßíîïðñüüî;Œÿîôú‰¶ßBÿìì‚©¬º‘ïü’ðH|•ðô›†¶ßBÿìì’×îN<¥ðí¹<¹ðüÕñ7tØñô›†¶ßBÿììé°îN<çñüéò>¬ìòô›†¶ßBÿìì¼°îN<‚óüžô>L¡ôô�>›† �>¶ßBÿì ÅôìϬîN<«ô‚ $¿ôü§ö)Ó‰|•ö¼�ö¶ßó‚óü×ö>4ÚöŽ> Ž>¶ßřǙș­É™Ê™àË™óG*¤�R{9  Ž>�Õ1Bÿò áöò ó$âöüâù*¶ßõ¥gõü“úD–ú�>�>‘> �>¶ß �>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‘>­àBÿô šúô õ$›úœ ¡úÄæúüà‡#ê&ê&ñˆì&ÛËô#Ã/6$ÛøüŠˆ,,�ˆôÁœRBÿ÷÷ øüòˆ/ÄúúÌáûüþÿÅQÆQÊQËQþÿü÷ˆL¨‰$­‰ùù®áPüʉ-$͉–> –>ÌářǙș­É™Ê™àË™óG*¤�R{9 ®áPBÿù Ò‰ù üÄ$׉•Šü�ý�ý�ýýüý“¡Kæ¯Uÿü²Š-LµŠ—> —>Ìáð›>Bÿù ¿Šù þÄ$À쉋,Œ‹ÌáBÿùù ÿÄ$’‹üÄ‹8Ä��ÌáÉ‹ü€Œ@ăƒÌá…Œüœ�+Ä……µâ†‡ÅQÆQ‡¡�LÎ�$Ó�„„›†®áPü„‘A$‡‘›> ›>µâřǙș­É™Ê™àË™óG*¤�R{9 õ¢RBÿ„ Œ‘„ ‡Ä$‘‘t˜ ;üü$÷ Provides convenience routines for escaping raw bytes. Since this crate tends to deal with `&[u8]` everywhere and the default `Debug` implementation just shows decimal integers, it makes debugging those representations quite difficult. This module provides types that show `&[u8]` as if it were a string, with invalid UTF-8 escaped into its byte-by-byte hex representation. Á4  ;�Žü&ý&‚�$�$戉Œ‚$ü½#$¢ã‹ g‹üç@$ê$�>ž>Ÿ> �>¢ã ž>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ÿ>­àBÿŠ î$Š ‹$ï$œ õ$� $‹‹"­ ü… =$: Provides a convenient `Debug` implementation for `&[u8]`.Áà $�üÇ M$J This generally works best when the bytes are presumed to be mostly UTF-8,Áü• I$F but will work for anything. For any bytes that aren't UTF-8, they areÁüß $$! emitted as hex escape sequences.Ál�$Ä��úã׫*YOn! Ž� ÄÈšúãBÿœ® Mª¬RúãBÿ�� ŽÄ�$d¡$��ª¬Rü±/$Ä’’úã“ g“¶$üç@$ê$ >¡>¢>  >úã ¡>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¢>­àBÿ‘ î$‘ “Ä$ï$œ õ$œÂ ;ü¡œ Provides routines for interpolating capture group references. That is, if a replacement string contains references like `$foo` or `${foo1}`, then they are replaced with the corresponding capture values for the groups named `foo` and `foo1`, respectively. Similarly, syntax like `$1` and `${1}` is supported as well, with `1` corresponding to a capture group index and not a name. This module provides the free functions [`string`] and [`bytes`], which interpolate Rust Unicode strings and byte strings, respectively. # Format These routines support two different kinds of capture references: unbraced and braced. For the unbraced format, the format supported is `$ref` where `name` can be any character in the class `[0-9A-Za-z_]`. `ref` is always the longest possible parse. So for example, `$1a` corresponds to the capture group named `1a` and not the capture group at index `1`. If `ref` matches `^[0-9]+$`, then it is treated as a capture group index itself and not a name. For the braced format, the format supported is `${ref}` where `ref` can be any sequence of bytes except for `}`. If no closing brace occurs, then it is not considered a capture reference. As with the unbraced format, if `ref` matches `^[0-9]+$`, then it is treated as a capture group index and not a name. The braced format is useful for exerting precise control over the name of the capture reference. For example, `${1}a` corresponds to the capture group reference `1` followed by the letter `a`, where as `$1a` (as mentioned above) corresponds to the capture group reference `1a`. The braced format is also useful for expressing capture group names that use characters not supported by the unbraced format. For example, `${foo[bar].baz}` refers to the capture group named `foo[bar].baz`. If a capture group reference is found and it does not refer to a valid capture group, then it will be replaced with the empty string. To write a literal `$`, use `$$`. To be clear, and as exhibited via the type signatures in the routines in this module, it is impossible for a replacement string to be invalid. A replacement string may not have the intended semantics, but the interpolation procedure itself can never fail. ÁÓ«Œ® ;̨ ;\Ê ;™�¦§ªƒ'™'å4·ëI”–üÄ…C”—ì4ä É”˜Ç,§t¯HD¿9ÜÏ*üÓ«üíOL Accepts a replacement string and interpolates capture references with theirÁ̽ corresponding values.Á×�üÛLI `append` should be a function that appends the string value of a captureÁü¨IF group at a particular index to the string given. If the capture groupÁüò63 index is invalid, then nothing should be appended.Á©�ü­LI `name_to_index` should be a function that maps a capture group name to aÁüúLI capture group index. If the given name doesn't exist, then `None` shouldÁ„Ç be returned.ÁØ�üÜNK Finally, `dst` is where the final interpolated contents should be written.Áü«MJ If `replacement` contains no capture group references, then `dst` will beÁüù  equivalent to `replacement`.Áš�üžEB See the [module documentation](self) for details about the formatÁtä supported.Áó�l÷¯Ö.…�<‰þ×.ü‘*' use regex_automata::util::interpolate;Á¼�üÀ õúOÄá interpolate::string(Á¼ú "foo $bar baz",Á´’ |index, dst| {ÁÜ© if index == 0 {ÁüÅ$! dst.push_str("BAR");Álꌯ3Tøþ–F„ƒ |name| {Áô” if name == "bar" {Á¼³ Some(0)Á¤Ë } else {Á¤à NoneÁlõŒ¯3Tƒþ–FŒŽ &mut dst,Á4 ×è/ü§# assert_eq!("foo BAR baz", dst);Á<Ëþ×.4Ú£>¤> £>åôìô ¤>‹ÏBÿ¢ÆšÈÆ›š› ÷þÆåôô�þÆìôüÄ!¥>ˆ#åô ¥>‹ÏÌ’¥>�#åôÛÎR¦>ˆ#ìô ¦>äɦ>�#ìôœÏRØÚlØ ™åôìô „\깄4…¡†lµÜ„þ¿ÈÊÄÆ$â™�œ�œ�œœ™ßôüà/­üâ%NK Accepts a replacement byte string and interpolates capture references withÁü±& their corresponding values.ÁÑ&�üÕ&IF `append` should be a function that appends the byte string value of aÁüŸ'HE capture group at a particular index to the byte string given. If theÁüè'DA capture group index is invalid, then nothing should be appended.Á­(�ü±(LÀÃRüþ(L–ÄR„Ë)ëÄRÜ)�üà)N‘ÅRü¯*MéÅRüý* ÀÆRž+�ü¢+EöÆRtè+ÄÇR÷+�lû+¯Ö.‰,�<�,þ×.ü•,*ŽÈRÀ,�ÌÄ,à‹P¼Þ, interpolate::bytes(ÁÄö, b"foo $bar baz",Á´�-œÉRܦ-»ÉRüÂ-.+ dst.extend_from_slice(b"BAR");Álñ-Œ¯3Tÿ-þ–F„Š.§ÊRô›.ÀÊR¼º.çÊR¤Ò.‡ËR¤ç.¤ËRlü.Œ¯3TŠ/þ–FŒ•/ÛËR4§/×è/ü®/)& assert_eq!(&b"foo BAR baz"[..], dst);Á<Ø/þ×.,ç/§>¨> §>Èšä�ìô ¨>ñ”BÿƒÇžÈÆŸžŸ ƒ0þÆä�üš0¹ÎRüÒ0!©>ˆ#ä� ©>ñ”ÔŸ0©>�#ä�ÚÙRª>ˆ#ìô ª>ä×0ª>�#ìô›ÚRØÚlæ0 �ä�ìô „\ö/¹„4’0¡†lÃ0Ü„æËÀÂÄÆ$ä3�� � �  �Þ�üë="Ä¢¢È壮£ð=ô”>$—>ðæÈåBÿ¡¡ £Ä® œ>üÔ>!€ç¥®¥üü>!$ÿ>€çBÿ¤¤ ¥® „?üðB=dóB”¹> ¹>ȚřǙș­É™Ê™àË™óG*¤�R{9 ƒ'ƒ'㊅'ýŠ”†'’”Mj'Õ÷É«A¹>Bÿ �CÍ÷ „\€CüžLJœ¡L”º> º>ȚřǙș­É™Ê™àË™óG*¤�R{9 ƒ'ƒ'㊅'ýŠ”†'’”Mj'Õ÷É«Aº>Bÿ ºL §èÔ@µLŸ ÅL$×M§�¨�¨�¨¨§¨öô$ N§�©�©�©©§©öôüéS%œìS”Bÿ ª˜ €Td× ;üí%è Generic helpers for iteration of matches from a regex engine in a haystack. The principle type in this module is a [`Searcher`]. A `Searcher` provides its own lower level iterator-like API in addition to methods for constructing types that implement `Iterator`. The documentation for `Searcher` explains a bit more about why these different APIs exist. Currently, this module supports iteration over any regex engine that works with the [`HalfMatch`], [`Match`] or [`Captures`] types. Á$ß ;Éç…³'½'¾'Æ'Ç'Ï'Ð'œãD¤%±&«¬áºLÈ%é,«®—,Ó%Ñ,«¯ÕÛ,Ú%ú,«°ÛÀTá%Ì-«±ü�%Ó«Œõ%Ìï%�œ²%qs`bNP<>¬×;%¸³³Ûç´µ·¹»½¿ÁÃÅÇÜ;%üÈ>,%üó;;%8 Create a new fallible non-overlapping matches iterator.Á³<%�ü» % such as a prefilter scanner.ÁÏ>%¿�ÛçBÿ²² ´¸–`,Ó>%üÂA+%ü³?6%3 Returns the current `Input` used by this searcher.Áî?%�üö?D%A The `Input` returned is generally equivalent to the one given toÁü¿@I%F [`Searcher::new`], but its start position may be different to reflectÁü�A0%- the start of the next search to be executed.Á,ÉA%¶ ¶Ûç ¶¿�Bÿ²ÏA%² µ¸$×A%ü‚Y’%ü�BJ%G Return the next half match for an infallible search if one exists, andÁüÞB!% advance to the next position.Á„C%�üŒCE%B This is like `try_advance_half`, except errors are converted intoÁ\ÖC% panics.ÁæC%�dîC%”Ÿ0ÿC%�ü‡DK%H If the given closure returns an error, then this panics. This is usefulÁü×DI%F when you know your underlying regex engine has been configured to notÁ¤¥E% return an error.Á¾E%�lÆE%¯Ö.ØE%�üàEJ%G This example shows how to use a `Searcher` to iterate over all matchesÁü¯F9%6 when using a DFA, which only provides "half" matches.ÁíF%�<õF%þ×.Ì�G%ŽØ.ÌŸG%•þ2ì½G% util::iter::Searcher,ÁÌßG%¼›34ýG%÷Ø.ˆH%�ü�H6%3 let re = DFA::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")?;ÁüËH&%äÎ/öH%�üþH?%< let input = Input::new("2010-03-14 2016-10-08 2020-10-22");ÁüÂI&%# let mut it = Searcher::new(input);ÁíI%�üõI0%- let expected = Some(HalfMatch::must(0, 10));ÁüªJL%I let got = it.advance_half(|input| re.try_search_fwd(&mut cache, input));ÁôûJ%±Ä2žK%�ü¦K0%- let expected = Some(HalfMatch::must(0, 21));ÁüÛKL%çöRô¬L%±Ä2ÏL%�ü×L0%- let expected = Some(HalfMatch::must(0, 32));ÁüŒML%çöRôÝM%±Ä2€N%�ĈN%€ð0ü¥NL%çöRôöN%±Ä2™O%�ü¡O.%áß.<ÔO%þ×.àO%�üèOK%H This correctly moves iteration forward even when an empty match occurs:Á¸P%�<ÀP%þ×.ÌÌP%ŽØ.ÌêP%•þ2ìˆQ%�ôR̪Q%¼›34ÈQ%÷Ø.ÓQ%�ôÛQ% let re = DFA::new(r"a|")?;ÁüþQ&%äÎ/©R%�ü±R#% let input = Input::new("abba");ÁüÙR&%ñõR„S%�üŒS/%, let expected = Some(HalfMatch::must(0, 1));ÁüÀSL%çöRô‘T%±Ä2´T%�ü¼T/%, let expected = Some(HalfMatch::must(0, 2));ÁüðTL%çöRôÁU%±Ä2äU%�üìU/%‘Ø3ü VL%çöRôñV%±Ä2”W%�ÄœW%€ð0ü¹WL%çöRôŠX%±Ä2­X%�üµX.%áß.<èX%þ×.d‰Y%Á> Á>ÛçòèÄÜBÿ²‚¸¸ ™Y%²Ø´M –Y%¿>À>ˆ#òè ¿>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÀ>üÙY:%¿>À>�#òèå€SõÛüîY%% ·¸òè$žY%åˈÞÌÎü¥x…%ü©\E%B Return the next match for an infallible search if one exists, andÁüó\!%�ïR™]%�ü¡]C%@ The search is advanced even in the presence of empty matches byÁüé]C%@ forbidding empty matches from overlapping with any other match.Á±^%�ü¹^H%E This is like `try_advance`, except errors are converted into panics.Á†_%�dŽ_%”Ÿ0Ÿ_%�ü§_K%ÎðRü÷_I%£ñR¤Å`%õñRÞ`%�læ`%¯Ö.ø`%�ü€aJ%¸òRüÏa*%' when using a regex based on lazy DFAs:Áþa%�<†b%þ×.Ì’b%ŽØ.ì°b% hybrid::regex::Regex,ÁìÒb%�ôR¬ôb%ßíD4Žc%÷Ø.™c%�ü¡c8%5 let re = Regex::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")?;ÁüÞc&%äÎ/‰d%�ü‘d?%¨õRüÕd&%ñõR€e%�üˆe/%, let expected = Some(Match::must(0, 0..10));Áü¼eC%@ let got = it.advance(|input| re.try_search(&mut cache, input));Áô„f%±Ä2§f%�ü¯f0%- let expected = Some(Match::must(0, 11..21));ÁüäfC%‡ˆSô¬g%±Ä2Ïg%�ü×g0%- let expected = Some(Match::must(0, 22..32));ÁüŒhC%‡ˆSôÔh%±Ä2÷h%�Äÿh%€ð0üœiC%‡ˆSôäi%±Ä2‡j%�ü�j.%áß.<Âj%þ×.Îj%�üÖjK%H This example shows the same as above, but with the PikeVM. This exampleÁü¦kF%C is useful because it shows how to use this API even when the regexÁüñk-%* engine doesn't directly return a `Match`.Á£l%�<«l%þ×.Ì·l%ŽØ.üÕl&%Ÿ¾Iì€m%�ôR¬¢m%ßíD4¼m%÷Ø.Çm%�üÏm9%6 let re = PikeVM::new(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")?;Áü�nJ%¶Ú.Ün%�üän?%¨õRü¨o&%ñõRÓo%�üÛo/%·Sü�p"% let got = it.advance(|input| {Áü¶p0%- re.search(&mut cache, input, &mut caps);Áäëp% Ok(caps.get_match())Á<Œq% });Áü˜qH%E // Note that if we wanted to extract capturing group spans, we couldÁüåq % // do that here with 'caps'.ÁôŠr%±Ä2­r%�üµr0%íˆSüêr"%àŽSü‘s0%Œ�SäÆs%Å�S<çs%ê�Sôós%±Ä2–t%�üžt0%ΉSüÓt"%àŽSüút0%Œ�Sä¯u%Å�S<Ðu%ê�SôÜu%±Ä2ÿu%�ćv%€ð0ü¤v"%àŽSüËv0%Œ�Sä€w%Å�S<¡w%ê�Sô­w%±Ä2Ðw%�üØw.%áß.<‹x%þ×.<¬x%Ä> Ä>Ûçòè�´Bÿ²‚ºº ·x%²Ø´M ´x%Â>Ã>ˆ#òè Â>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÃ>üóx6%Â>Ã>�#ò謕Sæù üˆy!% ¹¸òè$¼x%åË“áÌÎü§}Å%üµ{G%D Return the next half match for a fallible search if one exists, andÁü�|!%�ïR§|%�ü¯|K%H This is like `advance_half`, except it permits callers to handle errorsÁ¬ÿ|% during iteration.Á„®}%Ç> Ç>ÛçòèõÛBÿ²‚¼¼ Ë}%²Ø´M ¿}%Å>Æ>ˆ#òè Å>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÆ>ü±~:%Å>Æ>�#òèÅ™SõÛüÆ~%% »¸òè$Ð}%åË4â}%ÌÎü±„¸%üÉ‚J%G Return the next match for a fallible search if one exists, and advanceÁ̘ƒ% to the next position.Á¶ƒ%�ü¾ƒF%C This is like `advance`, except it permits callers to handle errorsÁ¬‰„%»—S\¸„%Ê> Ê>Ûçòèæù Bÿ²‚¾¾ Є%²Ø´M Ä„%È>É>ˆ#òè È>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÉ>ü²…6%È>É>�#òèè�Sæù üÇ…!% ½¸òè$Õ„%åË4ç„%ÑÓüü”¶%üȉJ%G Given a closure that executes a single search, return an iterator overÁü—Š0%- all successive non-overlapping half matches.ÁÌŠ%�üÔŠG%D The iterator returned yields result values. If the underlying regexÁü ‹C%@ engine is configured to never return an error, consider callingÁüè‹E%B [`TryHalfMatchesIter::infallible`] to convert errors into panics.Á²Œ%�lºŒ%¯Ö.ÌŒ%�üÔŒA%> This example shows how to use a `Searcher` to create a properÁüš�% iterator over half matches.Á¾�%�<Æ�%þ×.ÌÒ�%ŽØ.Ìð�%•þ2쎎%�ôR̰Ž%¼›34ÎŽ%÷Ø.ÙŽ%�üáŽ6%ÎôRüœ�&%äÎ/Ç�%�üÏ�?%¨õRü“�F%C let mut it = Searcher::new(input).into_half_matches_iter(|input| {ÁüÞ�,%) re.try_search_fwd(&mut cache, input)Á<�‘%ê�S›‘%�ü£‘4%1 let expected = Some(Ok(HalfMatch::must(0, 10)));ÁüÜ‘$%! assert_eq!(expected, it.next());Á…’%�ü�’4%1 let expected = Some(Ok(HalfMatch::must(0, 21)));ÁüÆ’$%ó¥Sï’%�ü÷’4%1 let expected = Some(Ok(HalfMatch::must(0, 32)));Áü°“$%ó¥SÙ“%�Äá“%€ð0üþ“$%ó¥S§”%�ü¯”.%áß.<â”%þ×.´ƒ•%Ûçòè¯èBÿ²‚ÀÀ²Ø´M š•%Ë>Ì>ˆ#òè Ë>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÌ>ü÷•:%Ë>Ì>�#òè…ªSõÛüŒ–%% ¿¸òèîôåËùôÏÑü’¢’%üô–J%¾žSü×+%( all successive non-overlapping matches.Áó—%�üû—G%ÛŸSüǘC%­ Sü�™A%> [`TryMatchesIter::infallible`] to convert errors into panics.ÁÕ™%�lÝ™%¯Ö.ï™%�ü÷™A%ó¡SÔ½š% iterator over matches.ÁÜš%�<äš%þ×.Ìðš%ŽØ.쎛%ð…Sì°›%�ôR¬Ò›%ßíD4ì›%÷Ø.÷›%�üÿ›8%ʆSü¼œ&%äÎ/çœ%�üïœ?%¨õRü³�A%> let mut it = Searcher::new(input).into_matches_iter(|input| {Áüù�(%% re.try_search(&mut cache, input)Á<¦ž%ê�S²ž%�üºž3%0 let expected = Some(Ok(Match::must(0, 0..10)));Áüòž$%ó¥S›Ÿ%�ü£Ÿ4%1 let expected = Some(Ok(Match::must(0, 11..21)));ÁüÜŸ$%ó¥S… %�ü� 4%1 let expected = Some(Ok(Match::must(0, 22..32)));ÁüÆ $%ó¥Sï %�Ä÷ %€ð0ü”¡$%ó¥S½¡%�üÅ¡.%áß.<ø¡%þ×.Œ™¢%ÛçòèÙéBÿ²‚²شM «¢%Í>Î>ˆ#òè Í>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÎ>üí¢6%Í>Î>�#òèâ³Sæù ü‚£!% Á¸òè¼õåËÇõÏÑü¥·Ç%üâ£J%¾žSü±¤5%2 all successive non-overlapping `Captures` values.Áë¤%�üó¤G%ÛŸSü¿¥C%­ Sü‡¦B%? [`TryCapturesIter::infallible`] to convert errors into panics.ÁΦ%�üÖ¦C%@ Unlike the other iterator constructors, this accepts an initialÁüž§J%G `Captures` value. This `Captures` value is reused for each search, andÁüí§I%F the iterator implementation clones it before returning it. The callerÁü»¨F%C must provide this value because the iterator is purposely ignorantÁü†©F%C of the underlying regex engine and thus doesn't know how to createÁüÑ©F%C one itself. More to the point, a `Captures` value itself has a fewÁüœªE%B different constructors, which change which kind of information isÁüæª:%7 available to query in exchange for search performance.Á¥«%�l­«%¯Ö.¿«%�üÇ«J%G This example shows how to use a `Searcher` to create a proper iteratorÁü–¬H%E over `Captures` values, which provides access to all capturing groupÁÌã¬% spans for each match.Á�­%�<‰­%þ×.Ì•­%ŽØ.ü³­&%Ÿ¾IìÞ­%�ôRt€®%³ò>4“®%÷Ø.ž®%�̦®%§øNüÄ®;%8 r"(?P[0-9]{4})-(?P[0-9]{2})-(?P[0-9]{2})",Á<„¯%ÞÌ0ü�¯F%C let (mut cache, caps) = (re.create_cache(), re.create_captures());ÁÛ¯%�üã¯6%3 let haystack = "2010-03-14 2016-10-08 2020-10-22";Áüž°%%…®6üȰ%%" let mut it = Searcher::new(input)Áüò°1%. .into_captures_iter(caps, |input, caps| {Áü¨±/%, re.search(&mut cache, input, caps);Á”ܱ% Ok(())Á\ó±% });Áƒ²%�ü‹².%+ let got = it.next().expect("first date")?;Áü¾²?%< let year = got.get_group_by_name("y").expect("must match");Áü‚³(%% assert_eq!("2010", &haystack[year]);Á¯³%�ü·³/%, let got = it.next().expect("second date")?;Áüë³@%= let month = got.get_group_by_name("m").expect("must match");Áü°´'%$ assert_eq!("10", &haystack[month]);ÁÜ´%�üä´.%+ let got = it.next().expect("third date")?;Áü—µ>%; let day = got.get_group_by_name("d").expect("must match");ÁüÚµ%%" assert_eq!("22", &haystack[day]);Á„¶%�üŒ¶!% assert!(it.next().is_none());Á²¶%�üº¶.%áß.<í¶%þ×.Ó«Œÿ¶%Ìù¶%”¬·%Ûç˜Ûòè�ëBÿ²‚ÄIJشM ¿·%Ï>Ð>Ñ>ˆ#òè Ï>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÐ> Ñ>˜Ûü±¸:%Ï>Ð>Ñ>�#òèñÈSÃÓ´Õ¸% øòèšöɾ¥öå˰öîðü™¼ê%üœ¼#%«Ô> Ô>Ûçö òèõÛBÿ²‚ÆÆ ̼%²Ø´M À¼%Ò>Ó>ˆ#òè Ò>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÓ>üȽ:%Ò>Ó>�#òèÒËSõÛüݽ%% Ÿòè$Ѽ%¦øåË4ù¼%ØÚü´ÍÙ%ô·Í%«×> ×>Ûç‹¢òèæù Bÿ²‚ÈÈ âÍ%²Ø´M ÖÍ%Õ>Ö>ˆ#òè Õ>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÖ>üÖÎ6%Õ>Ö>�#òè¡ÎSæù üëÎ!% Ǹòè$çÍ%£”ûåË4‹Î%ÙÛüÈÕ$%ü¢ÐL%I An iterator over all non-overlapping half matches for a fallible search.ÁïÐ%�üóÐM%J The iterator yields a `Result` value until no moreÁÜÁÑ% matches could be found.ÁÝÑ%�üáÑ'%$ The type parameters are as follows:Á‰Ò%�ü�ÒD%A * `F` represents the type of a closure that executes the search.ÁÒÒ%�üÖÒ9%6 The lifetime parameters come from the [`Input`] type:Á�Ó%�ü”Ó6%3 * `'h` is the lifetime of the underlying haystack.ÁËÓ%�üÏÓJ%G When possible, prefer the iterators defined on the regex engine you'reÁüšÔN%K using. This tries to abstract over the regex engine and is thus a bit moreÁ¤éÔ% unwieldy to use.ÁþÔ%�ü‚ÕE%B This iterator is created by [`Searcher::into_half_matches_iter`].Á”ÓÕ%¸Ê‚ËËÊØ´M êÕ%¯è4¡ŽnyP°GÌÍæÕ%(*„óÕ%óÕ%«ÉÉÛçL‰Ö%4‰Ö%«ÉÉòèü—Ö%%¸Ï‚ÐÐÏØ´M  Ö%¯èÑÒœÖ%üÒØ1%üÃÖ2%/ Return an infallible version of this iterator.ÁúÖ%�ü‚×J%G Any item yielded that corresponds to an error results in a panic. ThisÁüÑ×I%F is useful if your underlying regex engine is configured in a way thatÁüŸØ.%+ it is guaranteed to never return an error.ÁTÙØ%¯èŠéBÿÎΠѸòèýüÃÛ+%ü¯Ù6%3 Returns the current `Input` used by this iterator.ÁêÙ%�üòÙC%@ The `Input` returned is generally equivalent to the one used toÁüºÚG%D construct this iterator, but its start position may be different toÁü†Û8%5 reflect the start of the next search to be executed.Á,ÊÛ%Ó Ó¯è Ó¿�BÿÎÐÛ%Î Ò¸òè$ØÛ%!#ü’Ü{%¸Õ‚ÖÕÖØ>Ù>�#òè Ø>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaÙ>õÛüçÜ%%Ø>Ù>ˆ#òèœßSüÒÜ:%Ø´M ›Ü%¯èרÅQÆQØ—Ü%"$L”Ý%$™Ý%ÔÔÊþüÒÝ;%$ÕÝ%Ú> Ú>¯è…þBÿÔ ÚÝ%Ô Ø¸òè$ßÝ%üØÞ:%¸Ú‚ÛÛÚØ´M áÞ%¯èÜ gÜÝÞ%ü™ßD%œß%Û>Ü>Ý> Û>¯è Ü>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý>­àBÿÙ  ß%٠ܸòè$¡ß%œ9ü™ç"%¸Þ‚ßÞߨ´M ¢ç%Šéàžç%üÖé+%üÂç6%ÇÚSýç%�ü…èC%•ÛSüÍèG%ãÛSü™é8%µÜS,Ýé%á áŠé á¿�BÿÝãé%Ý à¸òè$ëé%!#ü§êx%¸ã‚äãäá>â>�#òè á>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaâ>õÛüùê%%á>â>ˆ#òèÏæSüäê:%Ø´M °ê%ŠéåæÅQÆQæ¬ê%"$L¦ë%$«ë%ââö üÐë'%$Óë%ã> ã>ŠéÄÜBÿâ Øë%â æ¸òè$Ýë%ü•ó %üýíG%D An iterator over all non-overlapping matches for a fallible search.ÁÅî%�üÉîI%F The iterator yields a `Result` value until no moreÁÜ“ï%¹ÐS¯ï%�ü³ï'%ìÐSÛï%�üßïD%«ÑS¤ð%�ü¨ð9%‡ÒSâð%�üæð6%ØÒS�ñ%�ü¡ñJ%¦ÓSüìñN%ûÓS¤»ò%ÓÔSÐò%�üÔò@%= This iterator is created by [`Searcher::into_matches_iter`].Át ó%¸è‚ééèØ´M ³ó%Ùéå>�#òè ä>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaå>æù ü ú!%ä>å>ˆ#òèíñSü‹ú6%Ø´M Øù%ÙéõöÅQÆQöÔù%"$LÉú%$Îú%òòè’üƒû7%$†û%æ> æ>Ù飒Bÿò ‹û%ò ö¸òè$�û%ü€ü6%¸ø‚ùøùØ´M ‰ü%Ùéú gú…ü%ü½üD%Àü%ç>è>é> ç>Ùé è>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡é>­àBÿ÷ Äü%÷ ú¸òè$Åü%œØ ô›„%¸ü‚ýüýØ´M ¤„%²êþ „%üÔ†+%üÀ„6%ÇÚSû„%�üƒ…C%•ÛSüË…G%ãÛSü—†8%µÜS,Û†%ÿ ÿ²ê ÿ¿�Bÿûá†%û þ¸òè$é†%!#ü¥‡p%¸�‚‚�‚í>î>�#òè í>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaî>æù üó‡!%í>î>ˆ#òèŸùSüÞ‡6%Ø´M ®‡%²êƒ„ÅQÆQ„ª‡%"$Lœˆ%$¡ˆ%€€‹¢üˆ#%$ň%ï> ï>²ê�´Bÿ€ ʈ%€ „¸òè$ψ%ü��!%üæŠH%E An iterator over all non-overlapping captures for a fallible search.Á¯‹%�ü³‹L%I The iterator yields a `Result` value until no moreÁÜ€Œ%¹ÐSœŒ%�ü Œ'%ìÐSÈŒ%�üÌŒD%«ÑS‘�%�ü•�9%‡ÒSÏ�%�üÓ�6%ØÒSŠŽ%�üŽŽJ%¦ÓSüÙŽN%ûÓS¤¨�%ÓÔS½�%�üÁ�A%> This iterator is created by [`Searcher::into_captures_iter`].ÁÓ«Œ‰�%̃�%|¨�%¸†‚‡†‡Ø´M ¼�%�ëAZ©o…ÚQˆ‰Š¸�%*,„Å�%Å�%«……ÛçtÛ�%$Û�%«……˜ÛLï�%4ï�%«……òèü—‘"%Ó«Œƒ‘%Ìý�%¸Œ‚�Œ�Ø´M  ‘%�뎜‘%üÏ“.%üÀ‘2%Ë×S÷‘%�üÿ‘J%•ØSüÎ’I%êØSüœ“.%¾ÙSTÖ“%�ëçëBÿ‹‹ ޏòè:ü¾”x%Ó«Œª”%̤”%¸�‚‘�‘ð>ñ>ò>�#òè ð>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õañ> ò>˜ÛÃÓ´Ÿ•%ð>ñ>ò>ˆ#òèçƒTüû”:%Ø´M Ç”%�ë’“ÅQÆQ“Ô%"$L½•%$•%��º£üú•:%$ý•%ó> ó>�ëõ¢Bÿ� ‚–%� “¸òè$‡–%<Æ—%“�”�”�””“�« üà™7%Ó«ŒÌ™%ÌÆ™%¸–‚——–Ø´M é™%�똠g˜å™%üžšD%¡š%ô>õ>ö> ô>�ë õ>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ö>­àBÿ• ¥š%• ˜¸òè$¦š%œ[üä¢u%Ó«ŒÐ¢%ÌÊ¢%¸š‚››šú>û>ü>�#òè ú>Ñ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õaû> ü>˜ÛÃӴ£%ú>û>ü>ˆ#òè�ŠTüž£:%Ø´M í¢%çëœ�ÅQÆQ�é¢%"$Là£%$å£%™™˜Ûü‰¤&%$Œ¤%ý> ý>çë‘–Bÿ™ ‘¤%™ �¸òè$–¤%då ;üØÓ A lazily initialized value for safe sharing between threads. The principal type in this module is `Lazy`, which makes it easy to construct values that are shared safely across multiple threads simultaneously. Á$í ; ¡¶ñäûcžŸLÞ½ üê?< A lazily initialized value that implements `Deref` for `T`.Áª�ü®JG A `Lazy` takes an initialization function and permits callers from anyÁüùIF thread to access the result of that initialization function in a safeÁüÃOL manner. In effect, this permits one-time initialization of global resourcesÁü“+( in a (possibly) multi-threaded program.Á¿�üÃOL This type and its functionality are available even when neither the `alloc`Áü“JG nor the `std` features are enabled. In exchange, a `Lazy` does **not**ÁüÞIF guarantee that the given `create` function is called at most once. ItÁü¨KH might be called multiple times. Moreover, a call to `Lazy::get` (eitherÁüôMJ explicitly or implicitly via `Lazy`'s `Deref` impl) may block until a `T`ÁŒÂ is available.ÁÔ�üØKH This is very similar to `lazy_static` or `once_cell`, except it doesn'tÁü¤LI guarantee that the initialization function will be run once and it worksÁüñIF in no-alloc no-std environments. With that said, if you need strongerÁü» KH guarantees or a more flexible API, then it is recommended to use eitherÁü‡ ! `lazy_static` or `once_cell`.Á© �ü­ " # Warning: may use a spin lockÁÐ �üÔ MJ When this crate is compiled _without_ the `alloc` feature, then this typeÁü¢ JG may used a spin lock internally. This can have subtle effects that mayÁüí KH be undesirable. See [Spinlocks Considered Harmful][spinharm] for a moreÁü¹ %" thorough treatment of this topic.Áß �üã VS [spinharm]: https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.htmlÁº �l¾ ¯Ö.Ì �üÐ KH This type is useful for creating regexes once, and then using them fromÁüœKH multiple threads simultaneously without worrying about synchronization.Áè�<ìþ×.üôEB use regex_automata::{dfa::regex::Regex, util::lazy::Lazy, Match};Áº�ü¾OL static RE: Lazy = Lazy::new(|| Regex::new("foo[0-9]+bar").unwrap());ÁŽ�ü’/, let expected = Some(Match::must(0, 3..14));ÁüÂ85 assert_eq!(expected, RE.find(b"zzzfoo12345barzzz"));Á<ûþ×.$Ž�¢‚££¢�ÀM “Ø´Ml–¶ìö»ûÓWb;É¡¤…í¶ìBÿ' hž…í¶ìBÿ   ¡éìòèy{~ –éìBÿ„¥ž  …í¬¹�¦‚§¦§�ÀM ¾Ø´M Á¶ì¨ü—)üÕIF Create a new `Lazy` value that is initialized via the given function.Á£�ü«FC The `T` type is automatically inferred from the return type of theÁäö `create` function given.Á¤òè¶ìBÿ¥¥ ¨éìòèöÒÜ%üò �ª‚«ª«�#òèéì …Ø´M ú…#òèLý�ÀM ÷¶ì¬  35üë#ü™74 Return a reference to the lazily initialized value.ÁÕ�üÝC@ This routine may block if another thread is initializing a `T`.Á¥�ü­HE Note that given a `x` which has type `Lazy`, this must be called viaÁüúFC `Lazy::get(x)` and not `x.get()`. This routine is defined this wayÁüÅ63 because `Lazy` impls `Deref` with a target of `T`.Á€�dˆ”Ÿ0™�ü¡GD This panics if the `create` function inside this lazy value panics.ÁüíIF If the panic occurred in another thread, then this routine _may_ alsoÁü»+( panic (but is not guaranteed to do so).Áòþ> þ>¶ì þ>éìBÿ© ü©žÐ èÎ S'ü¯5�®‚¯¯®•¦T ÂØ´M ·´¦TLº�ÀM ´¶ì°±Ý"Þ"±79\ë4ð­­éì¬�,„ÿ> ÿ>¶ì ÿ>éìBÿ­ Š­ ±éìòè$‹üº;�³‚´³´•¦T ÙØ´M ΟgéìT´¦TLÑ�ÀM ¿¶ìµ gµ@Büü4ÿ€?�?‚? €?¶ì �?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‚?­àBÿ² ƒ² µéìòè$„œ‘(DìÓ«ŒØÌÒ$ðž¾ñ�ûc¶¸Àì\¤„!¶¹Àì…!¶¹ AtomicPtrÁLÈŠa¶»²DÓ“�¶¼¸Ù üŸ¶½$ÿŒŽœœ~üÿFQS@BŒî1äŠ"$œ"ž�¿‚À¿À�ÀM ¡"Ø´M ¤"…í⑌#®�ÁÂÃ×-/24”±"$±"¶¾¾—Õ LÍ"4Í"¶¾¾òèÔˆ&,ˆ&¶¾¾ÛÓ ü–+?�Å‚ÆÆÅ�ÀM ¢+Ø´M ²+ýÆéì$¥+ÿ éì$¬+ýÆòè$µ+ÿ òè$¼+…íRTWY¬Þ+�È‚ÉÉÈ�ÀM ã+Ø´M æ+…íÊü¥-0¹-žòè…íBÿÇÇòË öÒ*ü‡/ �Ì‚ÍÌÍ•¦T š/Ø´M �/´¦TL’/�ÀM Œ/…íÎÏ+-ô¹1Ç1žƒ? ƒ?…í ƒ?éìBÿË Ë1Ë�Ï $Ì1ä²<$µ<¶„? „?…ířǙș­É™Ê™àË™óG*¤�R{9  „?éìBÿË º<ËþØ $»<üÀ?;�Ñ‚ÒÒÑ•¦T ß?Ø´M Ô?“¯TTÈ?´¦TL×?�ÀM Å?…íÓ gÓ8:ü†@4‰@…?†?‡? …?…í †?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‡?­àBÿÐ �@Ð Óéìòè$Ž@œ'4ôšA�Õ‚ÖÕÖ�ÀM ŸAØ´M ¢A…í×�#× "”ÃA$ÆAˆ? ˆ?…íBÿÔ ËAÔ ×éìòè$ÐAdó ;ü�ü Types and routines for working with look-around assertions. This module principally defines two types: * [`Look`] enumerates all of the assertions supported by this crate. * [`LookSet`] provides a way to efficiently store a set of [`Look`] values. * [`LookMatcher`] provides routines for checking whether a `Look` or a `LookSet` matches at a particular position in a haystack. Á$û ;¦Ø'š(§(­(³(´(®ŠL¹ü&ØÚ®Šý&ØÚ‚�$ÄæØÛ\£Œ±FL‘6ôíÝÞßàüØ8#ü¡6JG Flip the look-around assertion to its equivalent for reverse searches.Áüð663 For example, `StartLF` gets translated to `EndLF`.Á«7�ü³7FC Some assertions, such as `WordUnicode`, remain the same since theyÁüþ7GD match the same positions regardless of the direction of the search.ÁDå8ôíôíBÿÜÜ ÝMü²C!üô@HE Return the underlying representation of this look-around enumerationÁüÁAEB as an integer. Giving the return value to the [`Look::from_repr`]Áü‹BIF constructor is guaranteed to return the same look-around variant thatÁüÙBFC one started with within a semver compatible release of this crate.Á<¿CôíBÿÜÜ–Ñ!.Pü›F1üÚDEB Given the underlying representation of a `Look` value, return theÁü¤EHE corresponding `Look` value if the representation is valid. OtherwiseÁ¼ñE©Ý3L¨Fù«!BÿÜܦ–"½ ËUüµS"ü´P@= Returns a convenient single codepoint representation of thisÁüùPIF look-around assertion. Each assertion is guaranteed to be representedÁäÇQ by a distinct character.ÁèQ�üðQIF This is useful for succinctly representing a look-around assertion inÁü¾RKH human friendly but succinct output intended for a programmer working onÁ¤ŽS regex internals.Á<ÂSôíBÿÜÜ à¤_dÌ`¯ñâãäåæçèéêëìíîïðñòóôõö÷øùúûüý̤aüß`2/ Create an empty set of look-around assertions.Á,«a¯ñBÿáá§Ì!Äñbüça0- Create a full set of look-around assertions.Áœb�ü¤b:7 This set contains all possible look-around assertions.Á$øb¯ñBÿáá ãü‰e'ü´cHE Create a look-around set containing the look-around assertion given.Á�d�ü‰dIF This is a convenience routine for creating an empty set and insertingÁü×d one look-around assertions.ÁL�eôí¯ñBÿáá ä¢Ôf̺füäeC@ Returns the total number of look-around assertions in this set.ÁÁf¯ñBÿááÝÏ!gìÛhü–h2/ Returns true if and only if this set is empty.ÁDâh¯ñBÿááý“"Ãgüˆj)üžiJG Returns true if and only if the given look-around assertion is in thisÁDíi set.ÁD�j¯ñôíBÿááùÔ!Šh¢Ô”hüŽl%üçjHE Returns true if and only if this set contains any anchor assertions.Áü´kGD This includes both "start/end of haystack" and "start/end of line."Á|•l”? ”?¯ñBÿá ¥lá è$¦lü«n.üˆmC@ Returns true if and only if this set contains any "start/end ofÁüÐmHE haystack" anchors. This doesn't include "start/end of line" anchors.ÁIJn•? •?¯ñBÿá ËnáòÒ!$Ìnüœq*ü¦oIF Returns true if and only if this set contains any "start/end of line"ÁüôoGD anchors. This doesn't include "start/end of haystack" anchors. ThisÁüÀpIF includes both `\n` line anchors and CRLF (`\r\n`) aware line anchors.Á¤£q–? –?¯ñBÿá ¸qáÍÓ!$¹qüÞt(üýrI°ÙTüËsKH anchors that only treat `\n` as line terminators. This does not includeÁü›t0- haystack anchors or CRLF aware line anchors.Á”åt—? —?¯ñBÿá øtá ë$ùtü²w*ü×uI°ÙTü¥vC@ anchors that are CRLF-aware. This doesn't include "start/end ofÁüív2/ haystack" or "start/end of line-feed" anchors.Á¤¹w˜? ˜?¯ñBÿá Îwá ì$Ïwüñy"ü±xFC Returns true if and only if this set contains any word boundary orÁüüxIF negated word boundary assertions. This include both Unicode and ASCIIÁ¤Êy word boundaries.Áløy¯ñBÿáá í­pü÷{*üäzKH Returns true if and only if this set contains any Unicode word boundaryÁü´{0- or negated Unicode word boundary assertions.Á¬þ{¯ñBÿááŽá!süõ(üæ~IF Returns true if and only if this set contains any ASCII word boundaryÁü´.+ or negated ASCII word boundary assertions.Áœü¯ñBÿááéá!ýuü´ƒ üÖ‚KH Returns an iterator over all of the look-around assertions in this set.Á$»ƒ¯ñµòBÿáá ðévüæ…*ü„„KH Return a new set that is equivalent to the original, but with the givenÁüÔ„KH assertion added to it. If the assertion is already in the set, then theÁü¤…/, returned set is equivalent to the original.Á4í…¯ñôí¯ñBÿááÈÌ!¦w¢Ô±wüˇ(üÓ†DA Updates this set in place with the result of inserting the givenÁ䜇 assertion into this set.ÁTÒ‡™? ™?¯ñôíBÿá ݇á ò$⇢Ԍxü†Š*ü¤ˆK„æTüôˆKH assertion removed from it. If the assertion is not in the set, then theÁüĉ/°çT4�Нñôí¯ñBÿááþô!|y¢Ô‡yüë‹(üôŠC@ Updates this set in place with the result of removing the givenÁ伋 assertion from this set.ÁTò‹š? š?¯ñôíBÿá ý‹á ô$‚Œ¢Ôhzü³�0üÄŒJG Returns a new set that is the result of subtracting the given set fromÁl“� this set.ÁDº�¯ñ¯ñ¯ñBÿááºø!?{î J{ü—�.ü£ŽJG Updates this set in place with the result of subtracting the given setÁ”òŽ from this set.Ádž�›? ›?¯ñ¯ñBÿá «�á ö$°�î $|üÎ�-üù�B? Returns a new set that is the union of this and the one given.Á,Õ�¯ñ¯ñ¯ñBÿááßû!ë|î ö|ü¥’+üº‘IF Updates this set in place with the result of unioning it with the oneÁTˆ’ given.ÁL¬’œ? œ?¯ñ¯ñBÿá ¶’á ø$»’î É}üÝ“1ü�“IF Returns a new set that is the intersection of this and the one given.ÁL䓯ñ¯ñ¯ñBÿáá„ÿ!�~î ›~ü¼•/üÍ”IF Updates this set in place with the result of intersecting it with theÁt›• one given.ÁlÕ�? �?¯ñ¯ñBÿá Ñ•á ú$Ö•î nüÔ—)ü –EB Return a `LookSet` from the slice given as a native endian 32-bitÁdê– integer.Áû–�dƒ—”Ÿ0”—�üœ—%" This panics if `slice.len() < 4`.ÁLÛ—ž? ž?Èš¯ñBÿá ì—á ûåD�ü­š)üë˜HE Write a `LookSet` as a native endian 32-bit integer to the beginningÁ¼¸™ of the slice given.ÁÔ™�dÜ™”Ÿ0í™�üõ™%›÷TT´šŸ?¯ñ Ÿ?ÈšBÿá Ìšá ü#†å1†üŽ¢>üû›:7 Checks that all assertions in this set can be matched.Áºœ�üœKH Some assertions, such as Unicode word boundaries, require optional (butÁü’�FC enabled by default) tables that may not be available. If there areÁüÝ�KH assertions in this set that require tables that are not available, thenÁô­ž this will return an error.ÁО�üØž0- Specifically, this returns an error when theÁü�ŸC@ `unicode-word-boundary` feature is _not_ enabled _and_ this setÁüÕŸ/, contains a Unicode word boundary assertion.Á‰ �ü‘ 1. It can be useful to use this on the result ofÁüÇ B? [`NFA::look_set_any`](crate::nfa::thompson::NFA::look_set_any)ÁüŽ¡96 when building a matcher engine to ensure methods likeÁüÌ¡=: [`LookMatcher::matches_set`] do not panic at search time.ÁL•¢¯ñÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏóBÿáá ý$Ÿ¢üË£!¯ñÿ gÿüó£@ö£ ?¡?¢?  ?¯ñ ¡?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¢?­àBÿþ ú£þ ÿ$û£œ �¤ì³§µò�‚ÅQÆQ‚L×§$ܧ€€ôíüü§"$ÿ§§? §?µòù«!Bÿ€ „¨€ ‚$‰¨„‡´‚ó„…†‡ˆ‰Š‹�Ž��‘’“”•–—˜™š›œ�žÜà´üž´=: Creates a new default matcher for look-around assertions.Áç´‚óBÿƒƒ „üû¹Cü¼µ@= Sets the line terminator for use with `(?m:^)` and `(?m:$)`.Á�¶�ü‰¶KH Namely, instead of `^` matching after `\n` and `$` matching immediatelyÁüÙ¶HE before a `\n`, this will cause it to match after and before the byteÁT¦·¥òTµ·�ü½·C@ It can occasionally be useful to use this to configure the lineÁü…¸:7 terminator to the NUL byte when searching binary data.Áĸ�ü̸DA Note that this does not apply to CRLF-aware line anchors such asÁü•¹FC `(?Rm:^)` and `(?Rm:$)`. CRLF-aware line anchors are hard-coded toÁ´à¹ use `\r` and `\n`.Áœ‚º¬? ¬?‚ó–�UBÿƒ –ºƒ …$›º—»$¡ºü÷½'üùºEB Returns the line terminator that was configured for this matcher.Áû�üË»A> If no line terminator was configured, then this returns `\n`.Á‘¼�ü™¼KH Note that the line terminator should only be used for matching `(?m:^)`Áüé¼EB and `(?m:$)` assertions. It specifically should _not_ be used forÁü³½?< matching the CRLF aware assertions `(?Rm:^)` and `(?Rm:$)`.Áœþ½­? ­?‚óBÿƒ ’¾ƒ †$“¾ü÷ÅEüľIF Returns true when the position `at` in `haystack` satisfies the givenÁÔ’¿ look-around assertion.Á±¿�d¹¿”Ÿ0Ê¿�üÒ¿HE This panics when testing any Unicode word boundary assertion in thisÁüŸÀKH set and when the Unicode word data is not available. Specifically, thisÁüïÀHE only occurs when the `unicode-word-boundary` feature is not enabled.Á¼Á�üÄÁGD Since it's generally expected that this routine is called inside ofÁü�ÂDA a matching engine, callers should check the error condition whenÁüÙÂEB building the matching engine. If there is a Unicode word boundaryÁü£ÃHE in the matcher and the data isn't available, then the matcher shouldÁ”ðà fail to build.Á‡Ä�ü�ÄFC Callers can check the error condition with [`LookSet::available`].ÁÚÄ�üâÄDA This also may panic when `at > haystack.len()`. Note that `at ==Áü«Å96 haystack.len()` is legal and guaranteed not to panic.Á<þÅ®?¯? ®?‚óôí ¯?ÈšBÿƒ †Æƒ ‡$‡Æ¢ÔZ�ý�e�™´o�ü›Îzt©Î°?±? °?‚óôí ±?ÈšBÿƒ Á΃í "$Â΢ÔÕ–ý�à–™´ê–ü™ãrüÛÛKH Returns true when _all_ of the assertions in the given set match at theÁü«Ü# given position in the haystack.ÁÓÜ�dÛÜ”Ÿ0ìÜ�üôÜH„’UüÁÝK×’Uü‘ÞH­“UÞÞ�üæÞG�”Uü²ßDß”UüûßE®•UüÅàHþ•U”’áЖU©á�ü±áFú–Uüá�ü„âDØ—UüÍâ9§˜U\ ã²?³? ²?‚ó¯ñ ³?ÈšBÿƒ µãƒ ‰$¶ãã�ô˜ý�ÿ˜™´ ™üÇ倔Õå´?µ? ´?‚ó¯ñ µ?ÈšBÿƒ ñ僆²"$òåã�¶¨ý�Á¨™´˨ü•€}Ó«ŒýÿÌ÷ÿt£€¶?·? ¶?‚óôí ·?Š×Bÿƒ »€ƒ ‹$¼€¢Ô$Ê€ã�Þ€DÕŽ‹�Œ�Œ�ŒŒ‹ŒUÿü­—;ü–•JG Returns true when [`Look::Start`] is satisfied `at` the given positionÁ”å• in `haystack`.Áü•�d„–”Ÿ0•–�ü�–?< This may panic when `at > haystack.len()`. Note that `at ==Áüá–9§˜UD´—¸?¹? ¸?‚ó ¹?ÈšBÿƒ ½—ƒæ«"$¾—–Ù"u¬™´¬ü›š8ü†˜KH Returns true when [`Look::End`] is satisfied `at` the given position inÁ|Ö˜£µKê˜�dò˜”Ÿ0ƒ™�ü‹™?œ£UüÏ™9§˜U4¢šº?»? º?‚ó »?ÈšBÿƒ ©šƒ¨«"$ªšý�!­™´+­ü—�=üþšC@ Returns true when [`Look::StartLF`] is satisfied `at` the givenÁÜÆ›–½Kæ›�dî›”Ÿ0ÿ›�ü‡œ?œ£UüËœ9§˜U\ž�¼?½? ¼?‚ó ½?ÈšBÿƒ ª�ƒêª"$«�ý�½®™´Ç®üÄ ;ü­žJG Returns true when [`Look::EndLF`] is satisfied `at` the given positionÁ”üž×¢U“Ÿ�d›Ÿ”Ÿ0¬Ÿ�ü´Ÿ?œ£UüøŸ9§˜ULË ¾?¿? ¾?‚ó ¿?ÈšBÿƒ Õ ƒ¬ª"$Ö ý�X°™´b°üí£?üÒ¡EB Returns true when [`Look::StartCRLF`] is satisfied `at` the givenÁÜœ¢–½K¼¢�dÄ¢”Ÿ0Õ¢�üÝ¢?œ£Uü¡£9§˜Ulô£À?Á? À?‚ó Á?ÈšBÿƒ ‚¤ƒî©"$ƒ¤ý�|³™´†³üލ=üõ¥C@ Returns true when [`Look::EndCRLF`] is satisfied `at` the givenÁܽ¦–½Kݦ�d妔Ÿ0ö¦�üþ¦?œ£Uü§9§˜U\•¨Â?Ã? Â?‚ó Ã?ÈšBÿƒ ¡¨ƒ¯©"$¢¨ý�ݶ™´ç¶üœ¬?ü�ªEB Returns true when [`Look::WordAscii`] is satisfied `at` the givenÁÜ˪–½Këª�d󪔟0„«�üŒ«?œ£UüЫ9§˜Ul£¬Ä?Å? Ä?‚ó Å?ÈšBÿƒ ±¬ƒñ¨"$²¬ý�¹¹™´ùüÔ°Fü³®KH Returns true when [`Look::WordAsciiNegate`] is satisfied `at` the givenÁ܃¯–½K£¯�d«¯”Ÿ0¼¯�üį?œ£Uüˆ°9§˜U¤Û°Æ?Ç? Æ?‚ó Ç?ÈšBÿƒ 𰃱¨"$ñ°ý�4»™´>»ü˵‚üÒ±GD Returns true when [`Look::WordUnicode`] is satisfied `at` the givenÁÜž²–½K¾²�dƲ”Ÿ0ײ�üß²?œ£Uü£³9§˜Uá³�d鳯Ö0ú³�ü‚´;8 This returns an error when Unicode word boundary tablesÁü´>; are not available. Specifically, this only occurs when theÁü…µ30 `unicode-word-boundary` feature is not enabled.Á|ÒµÈ?É? È?‚ó É?Èšû®"Bÿƒ 뵃ò§"$ìµý�1¾™´;¾ü÷»‰üø·GD Returns true when [`Look::WordUnicodeNegate`] is satisfied `at` theÁüĸ! given position in `haystack`.Áê¸�dò¸”Ÿ0ƒ¹�ü‹¹?œ£UüϹ9§˜U�º�d•º¯Ö0¦º�ü®º;¥¶Uüîº>ë¶Uü±»3´·U´þ»Ê?Ë? Ê?‚ó Ë?Èšû®"Bÿƒ ž¼ƒ²§"$Ÿ¼ý�Å™´ÅüùÓEüÙÑJG Returns true when [`Look::WordStartAscii`] is satisfied `at` the givenÁܨÒ–½KÈÒ�dÐÒ”Ÿ0áÒ�üéÒ?œ£Uü­Ó9§˜Uœ€ÔÌ?Í? Ì?‚ó Í?ÈšBÿƒ ”Ôƒò¦"$•Ôý�fÉ™´pÉüµØCü—ÖHE Returns true when [`Look::WordEndAscii`] is satisfied `at` the givenÁÜäÖ–½K„×�dŒ×”Ÿ0�×�ü¥×?œ£Uüé×9§˜UŒ¼ØÎ?Ï? Î?‚ó Ï?ÈšBÿƒ ÎØƒ²¦"$ÏØý�šÌ™´¤ÌüÏÞˆüÑÚFC Returns true when [`Look::WordStartUnicode`] is satisfied `at` theÁüœÛ!¹UÂÛ�dÊÛ”Ÿ0ÛÛ�üãÛ?œ£Uü§Ü9§˜UåÜ�díܯÖ0þÜ�ü†Ý;¥¶UüÆÝ>ë¶Uü‰Þ3´·U¬ÖÞÐ?Ñ? Ð?‚ó Ñ?Èšû®"Bÿƒ õÞƒò¥"$öÞý�øÏ™´Ðüÿä†üƒáDA Returns true when [`Look::WordEndUnicode`] is satisfied `at` theÁüÌá!¹Uòá�dúᔟ0‹â�ü“â?œ£Uü×â9§˜U•ã�d�ã¯Ö0®ã�ü¶ã;¥¶Uüöã>ë¶Uü¹ä3´·Uœ†åÒ?Ó? Ò?‚ó Ó?Èšû®"Bÿƒ £åƒ²¥"$¤åý��Ó™´™ÓüÕéiü±çHE Returns true when [`Look::WordStartHalfAscii`] is satisfied `at` theÁüþç!¹U¤è�d¬è”Ÿ0½è�üÅè?œ£Uü‰é9§˜UÄÜéÔ?Õ? Ô?‚ó Õ?ÈšBÿƒ þéƒò¤"$ÿéý�ñÕ™´ûÕüÍíHü«ëFC Returns true when [`Look::WordEndHalfAscii`] is satisfied `at` theÁüöë!¹Uœì�d¤ì”Ÿ0µì�ü½ì?œ£Uü�í9§˜U´ÔíÖ?×? Ö?‚ó ×?ÈšBÿƒ ë탲¤"$ìíý�¢×™´¬×ü—ó�ü•ïJG Returns true when [`Look::WordStartHalfUnicode`] is satisfied `at` theÁüäï!¹UŠð�d’ð”Ÿ0£ð�ü«ð?œ£Uüïð9§˜U­ñ�dµñ¯Ö0Æñ�üÎñ;¥¶UüŽò>ë¶UüÑò3´·UÔžóØ?Ù? Ø?‚ó Ù?Èšû®"Bÿƒ Âóƒò£"$Ãóý�Û™´ÛüÂü‹üÂøHE Returns true when [`Look::WordEndHalfUnicode`] is satisfied `at` theÁü�ù!¹Uµù�d½ù”Ÿ0Îù�üÖù?œ£Uüšú9§˜UØú�dàú¯Ö0ñú�üùú;¥¶Uü¹û>ë¶Uüüû3´·UÄÉüÚ?Û? Ú?‚ó Û?Èšû®"Bÿƒ ëüƒ²£"$ìüý�ÑÞ™´ÛÞäì�‚ó ÷ Ü�‚<’‚‚óBÿŸŸ  ìÿ†Ïó¢ü“‰6ü¸ˆA> Returns an error if and only if Unicode word boundary data isÁ„þˆ unavailable.Á,š‰­‚UBÿ¡¡ ¢ü‹Š3Ó‰|ù‰¼ó‰ÏóüÊ4Ïó¥¥g¥üþŠD�‹à?á?â? à?Ïó á?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡â?­àBÿ¤ …‹¤ ¥$†‹œ Œ‹„ ÜÓ²üÃÛ!Óí”êÛӀĂÜü½Û`ü´Ûkd¤Üب©ª«‚�$ÈÜæ¦§Œ»ÜüÓÜD,áÜØ­‚UBÿ ¨üíÝuûÝØã? ã?Èšû®"Bÿ ’Þ¾ù"ý�Ùâ™´ãâüÂàuÐàØä? ä?Èšû®"Bÿ çàžø"ý�å™´åüœã&ŒŸã¦BÿÅÅ#ËÆ#”æd› ;üê#„ÿ A thread safe memory pool. The principal type in this module is a [`Pool`]. It main use case is for holding a thread safe collection of mutable scratch spaces (usually called `Cache` in this crate) that regex engines need to execute a search. This then permits sharing the same read-only regex object across multiple threads while having a quick way of reusing scratch space in a thread safe way. This avoids needing to re-create the scratch space for every search, which could wind up being quite expensive. ÁÓ«Œ‡ ;Ì� ;$£ ;­®ÄÅß^„ üð'=: A thread safe pool that works in an `alloc`-only context.Á®(�ü²(KH Getting a value out comes with a guard. When that guard is dropped, theÁüþ(JG value is automatically put back in the pool. The guard provides both aÁüÉ)LI `Deref` and a `DerefMut` implementation for easy access to an underlyingÁD–* `T`.ÁŸ*�ü£*NK A `Pool` impls `Sync` when `T` is `Send` (even if `T` is not `Sync`). ThisÁüò*NK is possible because a pool is guaranteed to provide a value to exactly oneÁ¼Á+ thread at any time.ÁÙ+�üÝ+NK Currently, a pool never contracts in size. Its size is proportional to theÁü¬,GD maximum number of simultaneous uses. This may change in the future.Áô,�üø,KH A `Pool` is a particularly useful data structure for this crate becauseÁüÄ-KH many of the regex engines require a mutable "cache" in order to executeÁü�.NK a search. Since regexes themselves tend to be global, the problem is then:Áüß.B? how do you get a mutable cache to execute a search? You could:Á¢/�ü¦/NK 1. Use a `thread_local!`, which requires the standard library and requiresÁüõ//, that the regex pattern be statically known.Á¤¥0 2. Use a `Pool`.Áüº0MJ 3. Make the cache an explicit dependency in your code and pass it around.Áüˆ1KH 4. Put the cache state in a `Mutex`, but this means only one search canÁ´Ô1 execute at a time.Áüë1+( 5. Create a new cache for every search.Á—2�ü›2OL A `thread_local!` is perhaps the best choice if it works for your use case.Áüë2MJ Putting the cache in a mutex or creating a new cache for every search areÁü¹3LI perhaps the worst choices. Of the remaining two choices, whether you useÁü†4MJ this `Pool` or thread through a cache explicitly in your code is a matterÁüÔ430 of taste and depends on your code architecture.Áˆ5�üŒ5"„˜T¯5�ü³5KH When this crate is compiled _without_ the `std` feature, then this typeÁüÿ5J“™TüÊ6Kç™Tü–7%¼šT¼7�üÀ7V÷šT—8�l›8¯Ö.©8�ü­8HE This example shows how to share a single hybrid regex among multipleÁüö8EB threads, while also safely getting exclusive access to a hybrid'sÁü¼9LI [`Cache`](crate::hybrid::regex::Cache) without preventing other searchesÁü‰:41 from running while your thread uses the `Cache`.Á¾:�<Â:þ×.ÌÊ:ŽØ.üä:&# hybrid::regex::{Cache, Regex},Áü‹;'$ util::{lazy::Lazy, pool::Pool},Át³;Ñ·/4Â;÷Ø.É;�äÍ; static RE: Lazy =Áüê;:7 Lazy::new(|| Regex::new("foo[0-9]+bar").unwrap());Áü¥<%" static CACHE: Lazy> =ÁüË<63 Lazy::new(|| Pool::new(|| RE.create_cache()));Á‚=�ü†=/ÿžTü¶=JG assert_eq!(expected, RE.find(&mut CACHE.get(), b"zzzfoo12345barzzz"));Á<�>þ×.$”>�¯‚°°¯�ÀM ™>Ø´Mlœ>ªôrÚµím¤S®±ÚÐ#ªôBÿ�� h¬ÚÐ#ªôBÿ­­ ®éìòèy{~ œ>âTü«>$¬­­ÚÐ#¬Ó>�³‚´³´�ÀM Ø>Ø´M Û>ªôµ¶· üÙ?#üï>DA Create a new pool. The given closure is used to create values inÁä¸? the pool when necessary.Áà?òèªôBÿ²²ÔÖ#öÒÔçü°G>üÉ@DòöUä’A¿÷U³A�ü»AKH When the `std` feature is enabled, a `Pool` is thread-aware and spreadsÁü‹BIF its memory out across multiple cache lines. The number of cache linesÁüÙBHE is determined by the `capacity` parameter passed here. By default, aÁü¦CJG fixed reasonable number is used. A smaller number means less memory isÁüõCHE used, but a higher number means there may be less contention on thisÁüÂDJG pool in highly threaded environments doing a lot of searches using theÁ¼‘E same `Regex` value.Á­E�üµEEB When `std` is not enabled, then the capacity parameter is ignoredÁüÿEC@ because the underlying pool implementation is not thread-aware.ÁÇF�üÏFDA The capacity must be at least 1. If it's less than 1, then it isÁœ˜G forced to be 1.Ál·GòèªôBÿ²²üÕ#ïŒéöÒéü†LCüæHDòöUä¯I¿÷UÐI�üØIHE This is a convenience routine for calling `Pool::with_capacity` withÁü¥JJG a number equivalent to the available parallelism for this environment.ÁôJ�üüJEB If `std` is not enabled or if the query for available parallelismÁüÆK;8 failed, then this is equivalent to calling `Pool::new`.Áü�L#òèªôBÿ²² ·éìòèöÒs뼆M$™Mü¬M1¬³M¬¡Ô#ÃÆúM¹�º�º�ºº¹¯Û#¼N¹�»�»�»»¹›Ú#üôP&�½‚¾½¾•¦T �QØ´M ‚Qù´T$üP´¦TL…Q�ÀM ùPªô¿  02ü”X(ü¡Q?< Get a value from the pool. The caller is guaranteed to haveÁüåQFC exclusive access to the given value. Namely, it is guaranteed thatÁü°RGD this will never return a value that was returned by another call toÁüüR-* `get` but was not put back into the pool.Á®S�ü¶SGD When the guard goes out of scope and its destructor is called, thenÁü‚TC@ it will automatically be put back into the pool. Alternatively,ÁüÊTHE [`PoolGuard::put`] may be used to explicitly put it back in the poolÁü—U&# without relying on its destructor.ÁÂU�üÊUEB Note that there is no guarantee provided about which value in theÁü”VGD pool is returned. That is, calling get, dropping the guard (causingÁüàVEB the value to go back into the pool) and then calling get again isÁüªWIF *not* guaranteed to return the same value received in the first `get`ÁLøW call.Á›Xå? å?ªôÄÄÅ­àÉó¬ (! y?V¾�å?éìòèBÿ¼ ŸX¼ ¿éìòè$ XüèX<�Á‚ÂÂÁ�ÀM íXØ´M ‚Y“¯T„ðXªôàgÃ#%(*ü«Y@®Yæ?ç?è? æ?ªô ç?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡è?­àBÿÀ ²YÀ Ãéìòè$³YœÀñü� ü­ZJG A guard that is returned when a caller requests a value from the pool.ÁøZ�üüZJG The purpose of the guard is to use RAII to automatically put the valueÁüÇ['$ back in the pool once it's dropped.ÁLú[ÄÆ�Ç‚ÈÇÈÆþÆ¥õ ˆ\þÆ«õ ‘\ýÆ¥õ$‹\…#«õL”\�#«õ¥õ œ\¥õĤ˖«õÄìô(! y?V¾�ÅÉ–÷ìôBÿß à¬–÷ìôBÿÄÄ ÅÄ¥õ«õ„\çéãåÔŸ\¬ÄÄ–÷ü½\3ÄË�Ì‚ÍÍË̲”V Ú\ý“V Ï\Ž”V$É\Ÿ”VLÒ\ì“V Æ\ìôÎÂ\68ü–_%ü÷\74 Consumes this guard and puts it back into the pool.Á³]�ü»]JG This circumvents the guard's `Drop` implementation. This can be usefulÁüŠ^JG in circumstances where the automatic `Drop` results in poorer codegen,ÁüÙ^*' such as calling non-inlined functions.Á�_é?ÄÄÅ­àÉó¬ (! y?V¾�é?¥õ«õBÿʱ_Ê ÎÄ¥õ«õèÎ ©óüî_HÄÐ�Ñ‚ÒÑÒв”V ‹`ý“V €`Ž”V$ú_Ÿ”VLƒ`ì“V ÷_ìôÓÔÝ"Þ"Ôó_ "EG\½`4Â`ÏÏ¥õ¬á`,ä`ê? ê?ìô ê?¥õBÿÏ ê`Ï ÔÄ¥õ«õ$ë`ü™aKÄÖ�ׂØÖר²”V ¶aý“V «aŽ”V$¥aŸ”VL®aì“V ¢aìôÙê"Ùža>@üùa!Lüaë? ë?ìô ë?¥õBÿÕ †bÕ ÙÄ¥õ«õ$‹büÁb_ÄÛ�Ü‚ÝÛÝܲ”V ñbý“V æbŽ”V$ÍbŸg¥õ„ÔbŸ”VLébì“V ÊbìôÞ gÞÆbNPü§c@ªcì?í?î? ì?ìô í?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡î?­àBÿÚ ®cÚ ÞÄ¥õ«õ$¯cœ@öLÆdÓ‰|´d¼®d,Êd¬ïðñòóô˜º(Á(Â(©ˆ$Tðd“2ßáÜî:lŒe–šßãþî:T›e•šßä AtomicUsizeÁ\¿e� ßæ²DÌe“�ßç¸Ù öeŸßé–ûeÐ=ßê–ßêü…f…Cßë¨, f²6ßíÖd§fµßî$Úd„êdýüÚd/îðÛÝüÚdbÃű³,çeTïe¦“•D€fs”f\šfhUWÜêg<ñgß‘ñ#CüÆiŒÍi߃ì÷k|þkßü˜qŒŸqß丌|¾Œßä¥�$·�¬�õ‚ööõ�ÀM ¼�Ø´M ¿��ö�wÁ¢”6Õ–÷øùú.024L»ž4»žßôôòèüº¡*4º¡ßôô¹‡$”ƒ¦,ƒ¦ßôô‘ñ#ü›¨ L›¨ßôôŸ‰$ü€·8�ü‚ýüý�ÀM Œ·Ø´M •·ù´T$�·šµT$˜·«µT$Ÿ·�ö-/13üººL�ÿ‚€€ÿ�ÀM ¿ºØ´M κ•šéìTº•šòèTѺ–šòèlÞº�öHJLNü‹¾W�‚‚ƒ‚ƒ�ÀM �¾Ø´M Ÿ¾‚ªVT“¾”ªVT¢¾¦ªVl¯¾�ö-/13¬ô¾�…‚†…†�ÀM ù¾Ø´M ü¾�ö‡ˆü†À*”À¬òè�öBÿ„„½Ï#öÒ5þüˆÄEl–Ĭòè�öBÿ„„ìÑ#ïŒ' öÒ2 üÝÚ&�Š‚‹Š‹•¦T öÚØ´M ëÚù´T$åÚ´¦TLîÚ�ÀM âÚ�öŒŽ�‘’“CEüªÜ/¸Ü¬ò? ò?�ö˜˜­àœÊÞß��ßžÑæßgVeSC�Ôò?éìòèBÿ‰ ¼Ü‰êß#$½Ü$§äŒ�������Œó‹$üØêuDÛêßó? ó?�ö˜˜­àœÊÞß��ßžÑæßgVeSC�Ôó?éìòèBÿ‰ ñꉜ�$$òêà1 ôã; üÂ"LÆ‚ßô? ô?�ö‚Ô Bÿ‰ Ђ‰ �éìòè$Ñ‚�r $�ƒ���������Ù±$üŸŒ;\¢Œßõ? õ?�ö˜˜­àœÊÞß��ßžÑæßgVeSC�Ôõ?éìòèBÿ‰ ®Œ‰ÞŽ$$¯Œà› ü“Ž;\–Žßö? ö?�ö‚Ô ˜˜­àœÊÞß��ßžÑæßgVeSC�Ôö?éìòèBÿ‰ ¢Ž‰ð $$£Ž�³ üò�E¬õ�ß÷? ÷?�ö‚Ô ˜˜­àœÊÞß��ßžÑæßgVeSC�Ô÷?éìòèBÿ‰ ‹‘‰É£$$Œ‘�y! ü•’<�•‚–•–�ÀM š’Ø´M ¯’“¯T„�’�ö— g—&(*,üÜ’Dß’ø?ù?ú? ø?�ö ù?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ú?­àBÿ” ã’” —éìòè$ä’œÇ# üÕ•6L畬ę�š‚››š™ì“V õ•ý“V þ•Ž”V$ø•Ÿ”VL�–²”V ‰–É”VfÙ”Vm–÷gVeSC�Ôœ�ž«ñ•_ace²$˖ߘ˜ ĸÌ$ä�™,�™ß˜˜ÏÊ$l²œ<²œß˜˜üÌœ3Ä �¡‚¢ ¡¢²”V éœý“V ÞœŽ”V$ØœŸ”VLáœì“V Õœ–÷£¤¥¦ÑœDFüÅ� ,Ó�¬û? û?–÷ û?¥õBÿŸ Ù�Ÿ £Ä¥õ«õ$Ú�ü¥§,L³§¬ü? ü?–÷ ü?¥õBÿŸ ½§Ÿ ¤Ä¥õ«õ$§ü™±,§±¬ý?˜˜­àœÊÞß��ßžÑæßgVeSC�Ôý?¥õ«õBÿŸ»±Ÿ ¥Ä¥õ«õèÎ H. ¬½¶<À¶ßþ? þ?–÷BÿŸ ȶŸ ¦Ä¥õ«õ$ͶüìÄ<Ĩ�©‚ª¨©ª²”V ‰Åý“V þÄŽ”V$øÄŸ”VL�Åì“V õÄ–÷«�#«ñÄCE”ÅÅ$ÈÅÿ? ÿ?–÷Bÿ§ Íŧ «Ä¥õ«õ$ÒÅü‹ÆcÄ­�®‚¯­¯®²”V »Æý“V °ÆŽ”V$—ÆןV„žÆŸ”VL³Æì“V ”Æ–÷° g°�ÆLNüýÆ@€Ç€@�@‚@ €@–÷ �@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‚@­àBÿ¬ „Ǭ °Ä¥õ«õ$…Çœß5 Œ© ;üÛ +Ö Defines a prefilter for accelerating regex searches. A prefilter can be created by building a [`Prefilter`] value. A prefilter represents one of the most important optimizations available for accelerating regex searches. The idea of a prefilter is to very quickly find candidate locations in a haystack where a regex _could_ match. Once a candidate is found, it is then intended for the regex engine to run at that position to determine whether the candidate is a match or a false positive. In the aforementioned description of the prefilter optimization also lay its demise. Namely, if a prefilter has a high false positive rate and it produces lots of candidates, then a prefilter can overall make a regex search slower. It can run more slowly because more time is spent ping-ponging between the prefilter search and the regex engine attempting to confirm each candidate as a match. This ping-ponging has overhead that adds up, and is exacerbated by a high false positive rate. Nevertheless, the optimization is still generally worth performing in most cases. Particularly given just how much throughput can be improved. (It is not uncommon for prefilter optimizations to improve throughput by one or two orders of magnitude.) Typically a prefilter is used to find occurrences of literal prefixes from a regex pattern, but this isn't required. A prefilter can be used to look for suffixes or even inner literals. Note that as of now, prefilters throw away information about which pattern each literal comes from. In other words, when a prefilter finds a match, there's no way to know which pattern (or patterns) it came from. Therefore, in order to confirm a match, you'll have to check all of the patterns by running the full regex engine. ÁL± ;²ÃÕû‹ÄÕ×ü(„)Y4¸+ͱ q,É+Ÿg±¡q¢g±¡Üî:lÜ+–š±£þî:Të+•š±¤K§+„K±¥Ð<à+¼±§“óé+¶±¨Ó¿LŠ+º-±ªú¹$•+Ú,±«¶˜\Ø+È(­Î�<ò+Î(®¢™4ˆ+Ö(°×™<�+Ý(±•š<™+å(²Ûš4¯+î(³Œ›,Â+ô(´„Ý +dá +±È(õïT"&IJ´Ó¿L;&º-²¶ú¹$F&Ú,²·\&¬&Aü4&24!#„­&ÿ÷¹üÄo&Ò&‡@ù¦ ‡@Õ÷$¯ú$Bÿ¸þºº ‘&¸þÆø” Ö&£ø”Èš\Ù&ƒ³&¦= ¥ÿ$ = ,.ü�&ÿ÷¼½¿ÁÂÅÆÇÈÉÁ¿½Â¼ô¶&$¹&ˆ@ ˆ@ÿ÷¥Ó1Bÿ» ¾&» ¼$¿&üù;&$ü&‰@Š@ ‰@ÿ÷ Š@ȚŞ­ãBÿ» �&» ½$‚&ý�Dˆ&Åœ$™&’ &½�¾�¾�¾¾½¾ììÕÛíîNÓ îÅœÓ u¬½ rœÅžUÿüÔ =&4× &‹@Œ@ ‹@ÿ÷ Œ@ȚŞ­ãBÿ» Þ &» ¿$ß &ý�Då &Åœ$ö &§$&¿�À�À�ÀÀ¿ÀçÜVüé$&dì$&�@ �@ÿ÷Bÿ» ù$&» Á$ú$&Ìñ&&<ô&&Ž@ Ž@ÿ÷Bÿ» ü&&» Â$ý&&\ï +<ó +±Î(Ï(õïT"'ÄÃÅÓ¿L;'º-ÃÇú¹$F'Ú,ÃÈ\'¬'Aü4'24!#d’'ÌøÊü¥l'³'“@ù¦ “@Õ÷$•Œ%BÿÉþËË ó'ɲÙV ·'ÃÙV\º'ѱ&å�%èE ¥ÿ$òE !#Ú'ÊÊ܇'ÌøÎÏÒÓÔÅÆÇÈÉÎÓÏÔÒô©'$¬'”@ ”@Ìø¥Ó1BÿÍ ±'Í Î$²'üç;'$ê'•@–@ •@Ìø –@ȚŞ­ãBÿÍ ï'Í Ï$ð'ý�Dö'Åœ$‡'$Ì'Ï�Ð�Ð�ÐÐÏÐöôà‚%í'Ï�Ñ�Ñ�ÑÑÏÑ‚Ç ÅžUÿûù9üò='4õ'—@˜@ —@Ìø ˜@ȚŞ­ãBÿÍ ü'Í Ò$ý'ý�Dƒ 'Åœ$” 'üû 'dþ '™@ ™@ÌøBÿÍ ‹ 'Í Ó$Œ '̲ '<µ 'š@ š@ÌøBÿÍ ½ 'Í Ô$¾ 'Tü +4€+±Ö(×(Ý(Þ(å(æ(õïT"(ÄÕ×Ó¿L;(º-ÕÙú¹$F(Ú,ÕÚ\(¬(Aü4(24!#\ˆ(œùÜüšk(¨(Ÿ@ù¦ Ÿ@Õ÷$¹˜%BÿÛþÝÝ è(Û²ÙV ¬(ÃÙV\¯(ܪ&å�% L ¥ÿ$L !#Ô�(œùßàâãäÅÆÇÈÉäâàãßô±($´( @  @œù¥Ó1BÿÞ ¹(Þ ß$º(üî;($ñ(¡@¢@ ¡@œù ¢@ȚŞ­ãBÿÞ ö(Þ à$÷(ý�Dý(Åœ$Ž(ˆ(à�á�á�ááàá—æVûù9ü§ =(4ª (£@¤@ £@œù ¤@ȚŞ­ãBÿÞ ± (Þ â$² (ý�D¸ (Åœ$É (ü¥ (d¨ (¥@ ¥@œùBÿÞ µ (Þ ã$¶ (ÌÜ (<ß (¦@ ¦@œùBÿÞ ç (Þ ä$è (dÊ (ìùæüÝ l(ë («@ù¦ «@Õ÷$‡¦%Bÿåþçç « (å²ÙV ï (ÃÙV\ò (�¬&å�%ÚR ¥ÿ$äR !#Ø(æ�è�è�èèæÞ %ܯ(ìùêëíîïÅÆÇÈÉïíëîêôÑ($Ô(¬@ ¬@ìù¥Ó1Bÿé Ù(é ê$Ú(ü�;($’(­@®@ ­@ìù ®@ȚŞ­ãBÿé —(é ë$˜(ý�Dž(Åœ$¯(²(ë�ì�ì�ììëì—æVûù9üÑ=(4Ô(¯@°@ ¯@ìù °@ȚŞ­ãBÿé Û(é í$Ü(ý�Dâ(Åœ$ó(üÞ(dá(±@ ±@ìùBÿé î(é î$ï(Ì•(<˜(²@ ²@ìùBÿé  (é ï$¡(d‡(Èúñüšl(¨(·@ù¦ ·@Õ÷$Ù¸%Bÿðþòò è(ð²ÙV ¬(ÃÙV\¯(¾­&å�%,\ ¥ÿ$6\ !#•(ñ�ó�ó�óóñDZ%Ü�(ÈúõöøùúÅÆÇÈÉøöúùõô¿($Â(¸@ ¸@Èú¥Ó1Bÿô Ç(ô õ$È(üý;($€(¹@º@ ¹@Èú º@ȚŞ­ãBÿô …(ô ö$†(ý�DŒ(Åœ$�(¨!(ö�÷�÷�÷÷ö÷—æVûù9üÇ"=(4Ê"(»@¼@ »@Èú ¼@ȚŞ­ãBÿô Ñ"(ô ø$Ò"(ý�DØ"(Åœ$é"(üã$(dæ$(½@ ½@ÈúBÿô ó$(ô ù$ô$(Ìš%(<�%(¾@ ¾@ÈúBÿô ¥%(ô ú$¦%(Tˆ+4Œ+±î(õïT")ÄûýÓ¿L;)º-ûÿú¹$F)Ú,û€\)¬)Aü4)24!#\Ô)°û‚üæk)ô)Ã@ù¦ Ã@Õ÷$ïÅ%Bÿ�þƒƒ ´)�²ÙV ø)ÃÙV\û)ï®&å�%Âb ¥ÿ$Ìb !#Ô™)°û…†ˆ‰ŠÅÆÇÈɉ…Іˆôº)$½)Ä@ Ä@°û¥Ó1Bÿ„ Â)„ …$Ã)ü÷;)$ú)Å@Æ@ Å@°û Æ@ȚŞ­ãBÿ„ ÿ)„ †$€)ý�D†)Åœ$—)· )†�‡�‡�‡‡†‡—æVóŠο%üï =)4ò )Ç@È@ Ç@°û È@ȚŞ­ãBÿ„ ù )„ ˆ$ú )ý�D€ )Åœ$‘ )üõ)dø)É@ É@°ûBÿ„ …)„ ‰$†)Ì£)<¦)Ê@ Ê@°ûBÿ„ ®)„ Š$¯)L”+,˜+±ô(õïT"*Ä‹�Ó¿L;*º-‹�ú¹$F*Ú,‹�\*¬*Aü4*24!#T· *ýû’üÈ i*Ö *Ï@ù¦ Ï@Õ÷$ÝÙ%Bÿ‘þ““ •*‘²ÙV Ú *ÃÙV\Ý * °&¦p ¥ÿ$$p  "Ä*’�”�”�””’þÓ%Ì�*ýû–—™œžÅÆÇÈÉ–™—žœô¯*$²*Ð@ Ð@ýû¥Ó1Bÿ• ·*• –$¸*üë;*$î*Ñ@Ò@ Ñ@ýû Ò@ȚŞ­ãBÿ• ó*• —$ô*ý�Dú*Åœ$‹*• *—�˜�˜�˜˜—˜çÜVü× =*4Ú *Ó@Ô@ Ó@ýû Ô@ȚŞ­ãBÿ• á *• ™$â *ý�Dè *Åœ$ù *üÕ""*Lî"*ð%*™�›�›�››™›çÜVü²&*dµ&*Õ@ Õ@ýûBÿ• Â&*• œ$Ã&*ü’("*L«(*Ì–)*<™)*Ö@ Ö@ýûBÿ• ¡)*• ž$¢)*$¤+t°+ŸTÄ+’ü¤5+qt`c„š+Ó«Œ‚+Ìü+hŒÌ+Ó픳+Ô­+mÓílÓí+)~œô+or_b´¬+ÌÊ+W„é+Iü¬Y+<?-0!t§+d»+tä*+äü¶º»¼¿ÀÁÂÃüŽ;f+üù*I+F Create a new prefilter from a sequence of needles and a correspondingÁ¤Ç++ match semantics.Áà++�üè+D+A This may return `None` for a variety of reasons, for example, ifÁü±,C+@ a suitable prefilter could not be constructed. That might occurÁüù,C+@ if they are unavailable (e.g., the `perf-literal-substring` andÁüÁ-G+D `perf-literal-multisubstring` features aren't enabled), or it mightÁü�.G+D occur because of heuristics or other artifacts of how the prefilterÁTÙ.+ works.Áè.+�üð.J+G Note that if you have an [`Hir`] expression, it may be more convenientÁü¿/K+H to use [`Prefilter::from_hir_prefix`]. It will automatically handle theÁü�0/+, task of extracting prefix literals for you.ÁÃ0+�lË0+¯Ö.Ý0+�üå0B+? This example shows how match semantics can impact the matchingÁü¬1H+E algorithm used by the prefilter. For this reason, it is important toÁüù1F+C ensure that the match semantics given here are consistent with theÁüÄ2I+F match semantics intended for the regular expression that the literalsÁÄ’3+ were extracted from.Á¯3+�<·3+þ×.ÌÃ3+ŽØ.üá3-+* util::{prefilter::Prefilter, syntax},ÁÄ“4+ MatchKind, Span,Á4°4+÷Ø.»4+�ôÃ4+ let hay = "Hello samwise";Áæ4+�üî4C+@ // With leftmost-first, we find 'samwise' here because it comesÁü¶50+- // before 'sam' in the sequence we give it..Áüë5K+H let pre = Prefilter::new(MatchKind::LeftmostFirst, &["samwise", "sam"])Áü»6+ÏÍ>|ß6+»ç/üó6 + Some(Span::from(6..13)),Áü˜7;+8 pre.find(hay.as_bytes(), Span::from(0..hay.len())),Á4Ø7+×è/üã7I+F // Still with leftmost-first but with the literals reverse, now 'sam'ÁÔ±8+ // will match instead!ÁüÐ8K+H let pre = Prefilter::new(MatchKind::LeftmostFirst, &["sam", "samwise"])Áü 9+ÏÍ>|Ä9+»ç/üØ9+ Some(Span::from(6..9)),Áüü9;+ŠœW4¼:+×è/Ç:+�üÏ:.+áß.<‚;+þ×.•;+Û@ù¦ Û@Õ÷$ȹ Bÿµþ·· Ô;+µ²ÙV ™;+ÃÙV\œ;+ ¶ø”¦=z ¥ÿ$Gz &(D£<+¶�¸�¸�¸¸¶âô%ò<+¶�¹�¹�¹¹¶ß÷%üè>a+\ë>+±Ãþȹ Bÿµµõù%Áú%4€?+Öït˜?+ü²LG+üíDI+F This attempts to extract prefixes from the given `Hir` expression forÁü»EF+C the given match semantics, and if possible, builds a prefilter forÁL†F+ them.Á”F+�lœF+¯Ö.®F+�ü¶FH+E This example shows how to build a prefilter directly from an [`Hir`]ÁüƒGH+E expression, and use to find an occurrence of a prefix from the regexÁdÐG+ûœ/áG+�<éG+þ×.ÌõG+ŽØ.ü“H-+ŘWÄÅH+û˜W4âH+÷Ø.íH+�üõH3+0 let hir = syntax::parse(r"(Bruce|Patti) \w+")?;Áü­IH+E let pre = Prefilter::from_hir_prefix(MatchKind::LeftmostFirst, &hir)ÁüúI+ÏÍ>üžJ%+" let hay = "Hello Patti Scialfa!";Á|ÈJ+»ç/üÜJ +ïÎOü�K;+ŠœW4ÁK+×è/ÌK+�üÔK.+áß.<‡L+þ×.Óí”™L+Ô“L+|¹L+Ü@ù¦ Ü@‰ôȹ Bÿµ ßL+µ »¦$ÉL+¤OÚL+üÎXp+ü¹MJ+G This attempts to extract prefixes from the given `Hir` expressions forÁüˆNF+þ¢WLÓN+Í£WáN+�üéNF+C Note that as of now, prefilters throw away information about whichÁü´OK+H pattern each literal comes from. In other words, when a prefilter findsÁü„PG+D a match, there's no way to know which pattern (or patterns) it cameÁüÐPJ+G from. Therefore, in order to confirm a match, you'll have to check allÁüŸQ5+2 of the patterns by running the full regex engine.ÁÙQ+�láQ+¯Ö.óQ+�üûQF+C This example shows how to build a prefilter directly from multipleÁüÆRG+D `Hir` expressions expression, and use it to find an occurrence of aÁü’S#+ prefix from the regex patterns.ÁºS+�<ÂS+þ×.ÌÎS+ŽØ.üìS-+ŘWÄžT+û˜W4»T+÷Ø.ÆT+�üÎT$+! let hirs = syntax::parse_many(&[Áì÷T+ r"(Bruce|Patti) \w+",Áä™U+ r"Mrs?\. Doubtfire",ÁDºU+¯ƒ1üÇUJ+G let pre = Prefilter::from_hirs_prefix(MatchKind::LeftmostFirst, &hirs)Áü–V+ÏÍ>üºV%+" let hay = "Hello Mrs. Doubtfire";Á|äV+»ç/üøV + Some(Span::from(6..20)),Áü�W;+ŠœW4ÝW+×è/èW+�üðW.+áß.<£X+þ×.Ó픵X+Ô¯X+„ÕX+Ý@ù¦ Ý@�·ȹ Bÿµ„½½ žY+µȳ@ æX+Ú³@\éX+ ¼�¦¦° ”œº &(4ŒZ+¼�¾�¾�¾¾¼«ÿ%üìb?+üºZK+H Run this prefilter on `haystack[span.start..end]` and return a matchingÁ¼Š[+ span if one exists.Á¦[+�ü®[I+F The span returned is guaranteed to have a start position greater thanÁüü[H+E or equal to the one given, and an end position less than or equal toÁ”É\+ the one given.Áà\+�lè\+¯Ö.ú\+�ü‚]H+…¤WüÏ]K+H expression, and use it to find an occurrence of a prefix from the regexÁdŸ^+ûœ/°^+�<¸^+þ×.ÌÄ^+ŽØ.üâ^-+ŘWÄ”_+û˜W4±_+÷Ø.¼_+�üÄ_++( let hir = syntax::parse(r"Bruce \w+")?;Áüô_H+ͦWüÁ`+ÏÍ>üå`)+ÃÁ>|“a+»ç/ü§a +ïÎOüÌa;+ŠœW4Œb+×è/—b+�üŸb.+áß.<Òb+þ×.$ób+Þ@ß@ Þ@äü ß@ȚŞ­ãBÿµ øb+µœŸ$ùb+ý�‚ Åœ'‚ ü¡pA+üïdG+D Returns the span of a prefix of `haystack[span.start..span.end]` ifÁÔ»e+ the prefilter matches.ÁÚe+�üâeJ+G The span returned is guaranteed to have a start position equivalent toÁü±fK+H the one given, and an end position less than or equal to the one given.Á�g+�l‰g+¯Ö.›g+�ü£gH+…¤WüðgK+ö·WüÀh8+5 pattern that begins at the start of a haystack only.Áýh+�<…i+þ×.Ì‘i+ŽØ.ü¯i-+ŘWÄái+û˜W4þi+÷Ø.‰j+�ü‘j++²¹WüÁjH+ͦWüŽk+ÏÍ>ü²k)+ÃÁ>üàk1+. // Nothing is found here because 'Bruce' doesÁü–l0+- // not occur at the beginning of our search.Á|Ël+»ç/lßl+Š›6üñl=+: pre.prefix(hay.as_bytes(), Span::from(0..hay.len())),Á4³m+×è/ü¾m1+. // But if we change where we start the searchÁüôm-+* // to begin where 'Bruce ' begins, then aÁܦn+ // match will be found.Á|Æn+»ç/üÚn +ïÎOüÿn=+: pre.prefix(hay.as_bytes(), Span::from(6..hay.len())),Á4Áo+×è/Ìo+�üÔo.+áß.<‡p+þ×.4¨p+à@á@ à@äü á@ȚŞ­ãBÿµ ¯p+µ À$°p+ý�û‚ Åœƒ üƒs#+ü¨rH+E Returns the heap memory, in bytes, used by the underlying prefilter.ÁdŠs+â@ â@äüBÿµ —s+µ Á$˜s+ü¼u%+üät++( Return the length of the longest needleÁ¬”u+ in this PrefilterÁtÃu+ã@ ã@äüBÿµ Òu+µ Â$Óu+ìÆ+ü›wH+E Implementations might return true here if they believe themselves toÁüèwG+D be "fast." The concept of "fast" is deliberately left vague, but inÁü´xH+E practice this usually corresponds to whether it's believed that SIMDÁŒ�y+ will be used.Á—y+�üŸyG+D Why do we care about this? Well, some prefilter tricks tend to comeÁüëyG+D with their own bits of overhead, and so might only make sense if weÁü·zH+E know that a scan will be *much* faster than the regex engine itself.Áü„{E+B Otherwise, the trick may not be worth doing. Whether something isÁüÎ{G+D "much" faster than the regex engine generally boils down to whetherÁüš|H+E SIMD is used. (But not always. Even a SIMD matcher with a high falseÁüç|)+& positive rate can become quite slow.)Á•}+�ü�}H+E Even if this returns true, it is still possible for the prefilter toÁüê}H+E be "slow." Remember, prefilters are just heuristics. We can't reallyÁü·~J+G *know* a prefilter will be fast without actually trying the prefilter.Áü†-+* (Which of course we cannot afford to do.)Á<Í+ä@ ä@äüBÿµ Õ+µ Ã$Ö+üŸ„[+T°„+ÄÄ£Ø1üŸ„Œ +¶Ø1,À„+®ç@$È„+¿ç@$Ï„+Ïç@lÖ„+àç@Tæ„+ñç@<ó„+Ä£Ø1S¶Ø1N®ç@K¿ç@HÏç@Eàç@Bñç@?£Ø1}¶Ø1x®ç@u¿ç@rÏç@oàç@lñç@iÅÆÇÈÉÅÆÇÈÉÆÇÅÉÈü¬…+$¯…+å@ å@Å�(¥Ó1BÿÄ ´…+Ä ÅÅ�($µ…+ü÷‡<+$ú‡+æ@ç@ æ@Å�( ç@ȚŞ­ãBÿÄ ÿ‡+Ä ÆÅ�($€ˆ+ý�D†ˆ+Åœ$—ˆ+üËŠ>+4Ί+è@é@ è@Å�( é@ȚŞ­ãBÿÄ ÕŠ+Ä ÇÅ�($ÖŠ+ý�DÜŠ+Åœ$íŠ+üÜ‹ +dß‹+ê@ ê@Å�(BÿÄ ì‹+Ä ÈÅ�($í‹+Ô��+<’�+ë@ ë@Å�(BÿÄ š�+Ä ÉÅ�($›�+üÇ�2+Ó«Œ³�+Ì­�+ŒËËÿƵ“4Ü�+Ûû@TÏ�+ÀýÌÍÎÏÐÅÆÇÈÉÍÏÐÎÌ Ì�+ô€Ž+$ƒŽ+ì@ ì@Àý¥Ó1BÿÊ ˆŽ+Ê Ìµ“$‰Ž+üýŽ;+$€�+í@î@ í@Àý î@ȚŞ­ãBÿÊ …�+Ê Íµ“$†�+ý�† Åœ† ü¥�=+4¨�+ï@ð@ ï@Àý ð@ȚŞ­ãBÿÊ ¯�+Ê Îµ“$°�+ý� ‡ Åœ‡ üÑ‘+dÔ‘+ñ@ ñ@ÀýBÿÊ á‘+Ê Ïµ“$â‘+Ì×’+<Ú’+ò@ ò@ÀýBÿÊ â’+Ê Ðµ“$ã’+\üž+ÃþÒüð§j+þ§+÷@ù¦ ÷@Õ÷$Íõ%BÿÑþÓÓ ½¨+ѲÙV ‚¨+ÃÙV\…¨+ïó%¦Cš ¥ÿ$Nš "$¨¬+Ò�Ô�Ô�ÔÔÒÜ©&üâÀn+Óí”ÍÀ+ÔÇÀ+DðÀ+ø@ù¦ ø@�·��&Bÿ„ÖÖ “Á+ȳ@ ùÀ+Ú³@̶Á+ñý%¦¸  ”œà "$üêÈn+Óí”ÕÈ+ÔÏÈ+DøÈ+ù@ù¦ ù@�·��&Bÿ„ØØ ›É+ȳ@ �É+Ú³@̾É+ ×�¦¦$„É+”œ$•É+*,”¼ ;ü˜ ,“ Lower level primitive types that are useful in a variety of circumstances. # Overview This list represents the principle types in this module and briefly describes when you might want to use them. * [`PatternID`] - A type that represents the identifier of a regex pattern. This is probably the most widely used type in this module (which is why it's also re-exported in the crate root). * [`StateID`] - A type the represents the identifier of a finite automaton state. This is used for both NFAs and DFAs, with the notable exception of the hybrid NFA/DFA. (The hybrid NFA/DFA uses a special purpose "lazy" state identifier.) * [`SmallIndex`] - The internal representation of both a `PatternID` and a `StateID`. Its purpose is to serve as a type that can index memory without being as big as a `usize` on 64-bit targets. The main idea behind this type is that there are many things in regex engines that will, in practice, never overflow a 32-bit integer. (For example, like the number of patterns in a regex or the number of states in an NFA.) Thus, a `SmallIndex` can be used to index memory without peppering `as` casts everywhere. Moreover, it forces callers to handle errors in the case where, somehow, the value would otherwise overflow either a 32-bit integer or a `usize` (e.g., on 16-bit targets). * [`NonMaxUsize`] - Represents a `usize` that cannot be `usize::MAX`. As a result, `Option` has the same size in memory as a `usize`. This useful, for example, when representing the offsets of submatches since it reduces memory usage by a factor of 2. It is a legal optimization since Rust guarantees that slices never have a length that exceeds `isize::MAX`. ÁTÄ ;žž)Ÿ)±)²)È)Ó)Ù)Ú)î)ï)Æ*Ç*Ò*Ó*Ù*¦+§+²+³+¹+ NonZeroUsizeÁd© ,ÈçÙÚüâ ,…CÙÛ�š,ÿ ,·ÙÝŒ—†,‘ÙÞÝ—‹,™Ùߘ�,£Ù༞ ,„|Ö ,Ó«Œ¾ ,̸ ,‡„ì ,wyegSUAC„õ,¯€âãü«/,üŒ4,1 Create a new `NonMaxUsize` from the given value.ÁÅ,�üÍK,H This returns `None` only when the given value is equal to `usize::MAX`.Á²,•¦Bÿááåò�0¨ Ì©,üªI,F Return the underlying `usize` value. The returned value is guaranteedÁôø, to not equal `usize::MAX`.Á°,¯€Bÿááжa© ü�%,¯€å gåü¼@,¿,„A…A†A „A¯€ …A€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡†A­àBÿä Ã,ä å$Ä,œ Ê,|‡3,×�çèéêëìíîïðñòóõ÷̈4,ä�3, The maximum index value.ÁÆ¡Ê8ÜÈ3,ƯÊ8Üå3,üÇ3:,ü¾3E,’4,ææ×�´¥7,üØ6H,E The total number of values that can be represented as a small index.Á,¯7,ææÔ�8,Ìã7, The zero index value.Á$‹8,ææ×�¬‡9,üÁ8A,> The number of bytes that a single small index uses in memory.Á$‘9,ææüÜ:?,ìÈ9, Create a new small index.Áê9,�üò9E,B If the given index exceeds [`SmallIndex::MAX`], then this returnsÁl¼:,£ÿ7ã:,ÇÍBÿææ¾´÷™² ü¾?6,üÍ;E,B Create a new small index without checking whether the given valueÁü—< , exceeds [`SmallIndex::MAX`].Á¼<,�üÄ Using this routine with an invalid index value will result inÁüŠ=I,F unspecified behavior, but *not* undefined behavior. In particular, anÁüØ=I,F invalid index value is likely to cause panics or possibly even silentÁœ¦>, logical errors.Á¾>,�üÆ>J,G Callers must never rely on a `SmallIndex` to be within a certain rangeÁ´•?, for memory safety.ÁlË?,×�BÿææÀß&÷³ üÉA',üí@I,F Like [`SmallIndex::new`], but panics if the given index is not valid.Á$ÐA,×�Bÿææ í÷~´ ü­C%,ü»BE,B Return this small index as a `usize`. This is guaranteed to neverÁ¬…C, overflow `usize`.ÁDºC,”A ”A×�Bÿæ ÃC,æ­ã$ÄC,ü¬E!,üÄDC,@ Return this small index as a `u64`. This is guaranteed to neverÁlŒE, overflow.Á4¹E,•A •A×�Bÿæ ÀE,æÕ¬'$ÁE,ü·G!,ü¾FH,E Return the internal `u32` of this small index. This is guaranteed toÁÌ‹G, never overflow `u32`.Á4ÄG,–A –A×�Bÿæ ËG,æ½ó&$ÌG,ü‰I!,üõGJ,G Return the internal `u32` of this small index represented as an `i32`.ÁüÄH2,/ This is guaranteed to never overflow an `i32`.Á4–I,—A —A×�Bÿæ �I,æݱ'$žI,üùK,üœJ6,3 Returns one more than this small index as a usize.Á×J,�üßJK,H Since a small index has constraints on its maximum value, adding `1` toÁü¯K7,4 it will always fit in a `usize`, `u32` and a `i32`.ÁD€L,˜A ˜A×�Bÿæ ‰L,懵$ŠL,üÑNZ,üÂLH,E Decode this small index from the bytes given using the native endianÁü�M&,# byte order for the current target.ÁºM,�üÂMH,E If the decoded integer is not representable as a small index for theÁü�N/,, current target, then this returns an error.ÁlØN,¬�"ÇÍBÿææ»µ'öÆ›º ûN,ü¿S<,ü•QH,ʼnXüâQ&,—ŠX�R,�ü•RJ,G This is analogous to [`SmallIndex::new_unchecked`] in that is does notÁüäRH,E check whether the decoded integer is representable as a small index.Á¼ÆS,¬�"×�Bÿææ„¸'öÆ_¼ êS,ü¿U$,üÑTK,H Return the underlying small index integer as raw bytes in native endianÁ\¡U, format.Á\ÆU,™A ™A×�¬�"Bÿæ ÒU,æç¹'$ÓU, áU,üŒV,,�úú�ÀM ‘V,‹ƒûü�ý‘ýü\¿V,4ÄV,ùùéìüãV(,,æV,€šA šA‹ƒ×� šAéìBÿù ìV,ù üéì$íV,÷¾ ü·W/,�þþ�ÀM ¼W,‹ƒÿª#ÿüûW4,LþW,€›A ›A‹ƒ×� ›AéìBÿý ˆX,ý ÿéì$�X,÷(¿ üùX/,Ó«ŒåX,ÌßX,����ÀM þX,«ƒ‚ƒ�ý‘ýƒ\¯Y,4´Y,€€éìüÓY(,,ÖY,€œA œA«ƒ×� œAéìBÿ€ ÜY,€ ƒéì$ÝY,÷&À üÁZ2,Ó«Œ­Z,̧Z,�……�ÀM ÆZ,«ƒ†ª#†üˆ[4,L‹[,€�A �A«ƒ×� �AéìBÿ„ •[,„ †éì$š[,÷Á äì[,×�ˆ®ˆü�\ ,$’\,×�Bÿ‡‡ ˆ÷,—\,üñ\ ,×�Š‹µ¶‹T˜],,�],‰‰Єü»]>,D¾],ÇÍBÿ‰‰ ‹÷,Ç],üÉ_ ,×��޵¶ŽTð_,,õ_,ŒŒЄü“`>,D–`,ÇÍBÿŒŒ Ž÷,Ÿ`,ü–b ,×��‘µ¶‘T½b,,Âb,��Єüàb>,Dãb,ÇÍBÿ�� ‘÷,ìb,üØd",×�“”µ¶”T�e,,†e,’’Єü¤e@,D§e,ÇÍBÿ’’ ”÷,°e,¤Ül,Є–ô¿m,ü÷lC,@ Returns the value that could not be converted to a small index.ÁLÆm,¥A ¥AЄBÿ• Ðm,• –$Ñm,ü˜n*,Ó‰|†n,¼€n,ЄüÇn+,Є™¥g™üùn@,ün,¦A§A¨A ¦AЄ §A€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¨A­àBÿ˜ €o,˜ ™$�o,œ ‡o,üÓq ,Î…›œÅQÆQœLúq,$ÿq,šš×�ü—r(,$šr,­A ­AÎ…¿àBÿš Ÿr,š œ$¤r,ì¿u,„Ìu, Ýu, ëÄ, ãu, ™v,, äu,8‚ $åu,& éu,8Ý,êu,$ ïu,, ñu,8¬ºòu,& õu,8Ý,öu,$ ûu,, ýu,8�$þu,& ‚v,8Ý,ƒv,$ ˆv,, Šv,8withiterÁD‹v,& “v,8Ý,”v,*›v, žv, èÄ,ø8$¨v,, ­v,8‚ $®v, ³v, óš,Ý< The maximum value.Á´Áv,8äv,8,èv,8€Dîv,& ñv,, óv,8‚ $ôv, ùv,, ûv,8‚ $üv, €w, �w,8öžT�w,'‹w,8€D�w,% ‘w,<4 The total number of values that can be represented.Áü w7,8äw,8,èw,8õ&,îw,& ów,8€,õw, ûw,8öžTýw,'‡x,8õ&,‰x,% Žx,< The zero value.Áœ�x,8½x,8,Áx,8œò$Çx,& Ëx,, Íx,8‚ $Îx, Óx,, Õx,8‚ $Öx, Úx, ëx,8öžTÛx,'åx,8œò$çx,% ìx,<8 The number of bytes that a single value uses in memory.Áüûx;,8Ãy,8,Çy,8¨ò$Íy,& Ñy,8€,Óy, Ùy,8öžTÛy,'åy,8¨ò$çy,% ëy,<; Create a new value that is represented by a "small index."Áüúy>,<�Åz,<@ If the given index exceeds the maximum allowed value, then thisÁüÕzC,< returns an error.Á¬¥{,+ Ç{, È{, Ï{,8þ4É{,8Ý{,8 á{,8˜ ä{, ç{, ô{,8�,è{,& í{,8€,ï{,(ö{,8Ñ4ù{, ÿ{,, €|,8‚ $�|,$ …|,, ‡|,8¬ºˆ|, ‹|, �|, Û|, 8öžTŸ|,'©|,8˜ «|, ®|, ´|,8�,¯|, µ|,8ƒ ¶|, ¹|, ¿|,, º|,8‚ $»|, À|,8„ <Á|, È|, Í|,, É|,8¬ºÊ|,<? Create a new value without checking whether the given argumentÁüê|B,< exceeds the maximum.ÁĹ},<�Þ},<8 Using this routine with an invalid value will result inÁüî};,<7 unspecified behavior, but *not* undefined behavior. InÁü¶~:,<= particular, an invalid ID value is likely to cause panics orÁüý~@,<% possibly even silent logical errors.ÁüÊ(,<�ÿ,<< Callers must never rely on this type to be within a certainÁü�€?,< range for memory safety.ÁäÛ€,+ „�, …�, Œ�,8þ4†�,8š�,8,ž�,8 ¤�,8¢ l§�, ´�, Á�,8�,µ�,& º�,8€,¼�,(Ã�,, Æ�,8‚ $Ç�, Ì�, ’‚,, Þ�,8‚ $ß�, ã�, „‚,8öžTä�,'î�,8¢ lð�, ý�, ƒ‚,8�,þ�,<8 Like `new`, but panics if the given value is not valid.Áü¡‚;,+ é‚, ê‚, ñ‚,8þ4ë‚,8ÿ‚,8 ƒƒ,8Äò$†ƒ, Šƒ, —ƒ,8�,‹ƒ,& �ƒ,8€,’ƒ,(™ƒ,, œƒ,8‚ $�ƒ, ¢ƒ, Ù„,, ´ƒ,8‚ $µƒ,'¹ƒ,8˜ »ƒ, ¾ƒ, ă,8�,¿ƒ, Ń,8¦4ƃ, ̃, Ë„,8µ4̓, Óƒ, Ôƒ, Ê„,7invalid ÁTêƒ,$ ôƒ,8�LŠ„, “„, ”„, š„,, •„,8‚ $–„,$ ›„,7 valueÁD±„,<> Return the internal value as a `usize`. This is guaranteed toÁüè„A,< never overflow `usize`.Áܶ…,+ Þ…, ß…, æ…,8þ4à…,8ô…,8,ø…,8 þ…,8Œ´D�†, ‰†, �†, І,8$‹†,(‘†,8€,”†, š†, ʆ,8$¬†, °†,7ó ±†, ²†,8Œ´D³†, »†, ¼†,<< Return the internal value as a `u64`. This is guaranteed toÁüÙ†?,< never overflow.Áœ¥‡,+ Ň, Ƈ, ͇,8þ4LJ,8Û‡,8,߇,8 å‡,8Ùò4è‡, î‡, ô‡, ï‡,8$ð‡,(ö‡,8«ù‡, ý‡, «ˆ,8$�ˆ, “ˆ,7ó ”ˆ, •ˆ,8Ùò4–ˆ, œˆ, �ˆ,<< Return the internal value as a `u32`. This is guaranteed toÁüºˆ?,<¶„X̆‰,+ ¬‰, ­‰, ´‰,8þ4®‰,8‰,8,Ɖ,8 ̉,8çò4ω, Õ‰, Û‰, Ö‰,8$׉,(݉,8¥à‰, ä‰, ’Š,8$ö‰, ú‰,7ó û‰, ü‰,8çò4ý‰, ƒŠ, „Š,<; Return the internal value as a i32`. This is guaranteed toÁü¡Š>,< never overflow an `i32`.ÁäìŠ,+ •‹, –‹, �‹,8þ4—‹,8«‹,8,¯‹,8 µ‹,8õò4¸‹, ¾‹, Ä‹, ¿‹,8$À‹,(Æ‹,8ÙÉ‹, Í‹, û‹,8$ß‹, ã‹,7ó ä‹, å‹,8õò4æ‹, ì‹, í‹,<- Returns one more than this value as a usize.ÁüŠŒ0,<�ÇŒ,<= Since values represented by a "small index" have constraintsÁü׌@,<> on their maximum value, adding `1` to it will always fit in aÁü¤�A,< `usize`, `u32` and a `i32`.Áüò�,+ žŽ, ŸŽ, ¦Ž,8þ4 Ž,8´Ž,8 ¸Ž,8ƒóD»Ž, ÃŽ, ÉŽ, ÄŽ,8$ÅŽ,(ËŽ,8€,ÎŽ, ÔŽ, „�,8$æŽ, êŽ,7ó ëŽ, ìŽ,8ƒóDíŽ, õŽ, öŽ,<? Decode this value from the bytes given using the native endianÁü“�B,<—ŠXüâ�&,<�•�,<= If the decoded integer is not representable as a small indexÁü¥�@,<4 for the current target, then this returns an error.Áüò�7,+ ¶‘, ·‘, ¾‘,8þ4¸‘,8Ì‘,8 Б,8“ólÓ‘, à‘, ï‘,8öÆ,á‘,& æ‘, è‘, î‘,8™é‘,% ë‘,7÷ í‘,(ñ‘,8Ñ4ô‘, ú‘,, û‘,8‚ $ü‘,$ €’,, ‚’,8¬ºƒ’, †’, ˆ’, à’, 8öžTš’,'¤’,8“ól¦’, ³’, ¹’,8öÆ,´’, º’,8ƒ »’, ¾’, Ä’,, ¿’,8‚ $À’, Å’,8„ <Æ’, Í’, Ò’,, Î’,8¬ºÏ’,<ÕÂXüï’B,<—ŠXü¾“&,<�ñ“,<? This is analogous to `new_unchecked` in that is does not checkÁü�”B,<? whether the decoded integer is representable as a small index.ÁüДB,+ Ÿ•,  •, §•,8þ4¡•,8µ•,8 ¹•,8­ó¼¼•, Ó•, â•,8öÆ,Ô•,& Ù•, Û•, á•,8™Ü•,% Þ•,7÷ à•,(ä•,, ç•,8‚ $è•, í•, ½–,, ÿ•,8‚ $€–, „–, ¯–,8öžT…–,'�–,8­ó¼‘–, ¨–, ®–,8öÆ,©–,<< Return the underlying integer as raw bytes in native endianÁüÌ–?,<¢�X\˜—,+ °—, ±—, ¸—,8þ4²—,8Æ—,8 Ê—,8Ñó\Í—, Ø—, Þ—, Ù—,8$Ú—,(à—, ã—, é—,8™ä—,% æ—,7÷ è—, ë—, ž˜,8$ý—, �˜,7ó ‚˜, ƒ˜,8Ñó\„˜, �˜, �˜,<9 Returns an iterator over all values from 0 up to and notÁü­˜<,< including the given length.Áüö˜,<�¢™,<9 If the given length exceeds this type's limit, then thisÁü²™<,<”ðR\û™,8“š, –š, œš,8,—š,8 žš,8�$¡š, ¥š, °š,8¶¦š,& ©š,8€,«š,(²š,, µš,8�$¶š, »š, éš,, Íš,8�$Κ,'Òš,8˜ Ôš, ך, Ûš,8¶Øš,8$ý›,8û$‚œ,'†œ,8ñˆœ,'‹œ,8q,�œ,8 “œ,, —œ,8‚ $˜œ, �œ, Ô�, 8 «œ,8ñ®œ, ±œ, Õœ,  ²œ,8$³œ,$ ·œ,8œ ¹œ,& ºœ, ¼œ,8½œ,8û$Áœ,'Åœ,8ñÇœ,'Êœ,8ŠLÌœ,(ל,8û$Úœ,'Þœ,8ñàœ,'ãœ,8Ñ4åœ, ìœ, Ê�, 8œ þœ, ÿœ,8 debug_tupleÁ\€�, ‹�, ��,8�LŒ�, •�, –�, œ�,, —�,8‚ $˜�, ž�,8Ú,Ÿ�, ¤�, ³�, ¥�,8$¦�, ª�,8çò4«�, ±�, ²�, ´�,8§—4µ�, »�, ¼�,8$ß�, ã�,8� ä�, å�,8û$ç�,'ë�,8â í�,'ð�,8IndexÁ,ò�, ÷�,, ø�,8‚ $ù�, ý�,8 ÿ�, ƒž, …ž,8� „ž, ‡ž, ­Ÿ,8!$•ž,8´4šž, ¡ž,8� £ž,% ¤ž,+ ³ž, ´ž, »ž,8þ4µž,8 Éž,8÷,Ìž, Ñž, åž, Òž,8$Óž,$ מ,8÷,Ùž,& Þž,, àž,8‚ $áž,(çž, êž,8� ëž, íž, £Ÿ, ÿž,8$€Ÿ, „Ÿ, •Ÿ,8÷,…Ÿ, ŠŸ,8Œ´D‹Ÿ, “Ÿ, ”Ÿ,8$¸Ÿ, ¼Ÿ,8� ½Ÿ, ¾Ÿ,8û$ÀŸ,'ÄŸ,8â ÆŸ,'ÉŸ,8IndexMutÁDËŸ, ÓŸ,, ÔŸ,8‚ $ÕŸ, ÙŸ,8 ÛŸ, ߟ, áŸ,8� àŸ, ãŸ, û , + ñŸ, òŸ, ùŸ,8þ4óŸ,8 ‡ ,8øLŠ , “ , « , ” ,8• ,8$™ ,$ � ,8÷,Ÿ ,& ¤ ,, ¦ ,8‚ $§ ,(­ , ° ,8± ,8� µ , · , ñ , É ,8Ê ,8$Π, Ò , ã ,8÷,Ó , Ø ,8Œ´DÙ , á , â ,+ †¡, ‡¡, ž¡,8숡, ‹¡, �¡,8Ó<Œ¡, ”¡,7«<–¡,8$¨¡, ¬¡,8� ­¡, ®¡,8û$°¡,'´¡,8â ¶¡,'¹¡,8çÖX,»¡, À¡,, Á¡,8‚ $¡, Æ¡,8 È¡,8üÌ¡, Ï¡,8� С, Ñ¡, Ó¡, ù¢,8!$á¡,8´4æ¡, í¡,8� ï¡,% ð¡,+ ÿ¡, €¢, ‡¢,8þ4�¢,8 •¢,8÷,˜¢, �¢, ±¢, ž¢,8$Ÿ¢,$ £¢,8÷,¥¢,& ª¢,, ¬¢,8‚ $­¢,(³¢, ¶¢,8� ·¢, ¹¢, ï¢, Ë¢,8$Ì¢, Т, á¢,8÷,Ñ¢, Ö¢,8Œ´D×¢, ߢ, à¢,+ „£, …£, œ£,8솣, ‰£, ›£,8Ó<Š£, ’£,7«<”£,8$¦£, ª£,8� «£, ¬£,8û$®£,'²£,8â ´£,'·£,8ÜÚXD¹£, Á£,, £,8‚ $ã, Ç£,8 É£,8üÍ£, У,8� Ñ£, Ò£, Ô£, ì¤, + â£, ã£, ê£,8þ4ä£,8 ø£,8øLû£, „¤, œ¤, …¤,8†¤,8$Ф,$ ޤ,8÷,�¤,& •¤,, —¤,8‚ $˜¤,(ž¤, ¡¤,8¢¤,8� ¦¤, ¨¤, â¤, º¤,8»¤,8$¿¤, ä, Ô¤,8÷,Ĥ, ɤ,8Œ´Dʤ, Ò¤, Ó¤,8$÷¤,8�$ü¤, €¥,8™�¥, ƒ¥,8 …¥,, ‰¥,8‚ $Š¥, �¥, €¦,8 �¥,8”$ ¥, ¤¥, ®¥,8�,¥¥,& ª¥,8™¬¥,(°¥,, ³¥,8‚ $´¥, ¹¥, ö¥,, Ë¥,8‚ $Ì¥, Ð¥, è¥,8öžTÑ¥,'Û¥,8”$Ý¥, á¥, ç¥,8�,â¥,8$‹¦,8ò<�¦, —¦,8Ÿ˜¦, ›¦,8 �¦,, ¡¦,8‚ $¢¦, §¦, á§,8!$µ¦,8ßô,º¦, À¦,, ¦,8¬ºæ,% Ʀ,8 Õ¦,8øDئ, à¦, ë¦,8�,á¦,& æ¦,8Ÿè¦,(í¦,8Ñ4ð¦, ö¦,, ÷¦,8‚ $ø¦,$ ü¦,, þ¦,8¬ºÿ¦, ‚§, „§, ×§, 8öžT–§,' §,8øD¢§, ª§, °§,8�,«§, ±§,8ƒ ²§, µ§, »§,, ¶§,8‚ $·§, ¼§,8„ <½§, ħ, ɧ,, ŧ,8¬ºƧ,8$ì§,8ò<ñ§, ø§,8¥ù§, ü§,8 þ§,, ‚¨,8‚ $ƒ¨, ˆ¨, ©,8!$–¨,8ßô,›¨, ¡¨,, £¨,8¬º¤¨,% §¨,8 ¶¨,8øD¹¨, Á¨, ̨,8�,¨,& Ǩ,8¥ɨ,(Ψ,8Ñ4Ѩ, ר,, ب,8‚ $Ù¨,$ ݨ,, ߨ,8¬ºà¨, ã¨, å¨, ¸©, 8öžT÷¨,'�©,8øDƒ©, ‹©, ‘©,8�,Œ©, ’©,8ƒ “©, –©, œ©,, —©,8‚ $˜©, �©,8„ <ž©, ¥©, ª©,, ¦©,8¬º§©,8$Í©,8ò<Ò©, Ù©,8«Ú©, Ý©,8 ß©,, ã©,8‚ $ä©, é©, £«,8!$÷©,8ßô,ü©, ‚ª,, „ª,8¬º…ª,% ˆª,8 —ª,8øDšª, ¢ª, ­ª,8�,£ª,& ¨ª,8«ªª,(¯ª,8Ñ4²ª, ¸ª,, ¹ª,8‚ $ºª,$ ¾ª,, Àª,8¬ºÁª, Ī, ƪ, ™«, 8öžTت,'âª,8øDäª, ìª, òª,8�,íª, óª,8ƒ ôª, ÷ª, ýª,, øª,8‚ $ùª, þª,8„ <ÿª, †«, ‹«,, ‡«,8¬ºˆ«,8$®«,8ò<³«, º«,8€,»«, À«,8 «,, Æ«,8‚ $Ç«, Ì«, ˆ­,8!$Ú«,8ßô,ß«, å«,, ç«,8¬ºè«,% ë«,8 ú«,8øDý«, …¬, ’¬,8�,†¬,& ‹¬,8€,�¬,(”¬,8Ñ4—¬, �¬,, ž¬,8‚ $Ÿ¬,$ £¬,, ¥¬,8¬º¦¬, ©¬, «¬, þ¬, 8öžT½¬,'Ǭ,8øDɬ, Ѭ, ׬,8�,Ò¬, ج,8ƒ Ù¬, ܬ, â¬,, ݬ,8‚ $Þ¬, ã¬,8„ <ä¬, ë¬, ð¬,, ì¬,8¬ºí¬,+ “­, ”­, ž­,8ì•­, ˜­, �­,8Í$™­,8$¨­,8 quickcheckÁT­­,'·­,8 ArbitraryÁL¹­,8 í,, Ç­,8‚ $È­, Í­, Ö®,8 Û­,8 arbitraryÁLÞ­, ç­, �®,85è­,& ë­, í­,8î­,8ÉùXTò­,'ü­,8GenÁþ­,(ƒ®,, †®,8‚ $‡®, Œ®, Ì®,, ž®,8‚ $Ÿ®, £®, ¾®,8öžT¤®,'®®,8µúXL°®, ¹®, ½®,85º®,<9 This error occurs when a value could not be constructed.Áüá®<,<�¦¯,<@ This occurs when given an integer exceeding the maximum allowedÁü²¯C,<õªOTþ¯,<�‘°,<? When the `std` feature is enabled, this implements the `Error`Áü�°B,< trait.ÁTè°,+ û°, ü°,  ±,8É4ý°, ƒ±, Ÿ±,8e,„±,$ ‰±,8q,‹±,$ �±,8~’±,$ ”±,8¶L–±,8ª±,84®±,, µ±,8¬º¶±, ¹±, ɱ,8“ |º±,% ʱ,8$Õ±,, Ú±,8¬ºÛ±, ß±, �³,<8 Returns the value that could not be converted to an ID.Áüí±;,8µ²,8 ¹²,8õEL¼², Ų, ˲, Ʋ,8$Dz,(Ͳ,8«в, Ô², …³,8$æ², ê²,7ó ë², ì²,8õELí², ö², ÷²,+ š³, ›³, °³,8윳, Ÿ³, ¯³,8Ó< ³, ¨³,7‰,ª³,8$º³,8‰¿³,'³,8°@,ij,'ɳ,8ßô,˳,8 ѳ,, Õ³,8¬ºÖ³, Ú³, Û³,8$æ³,8û$ë³,'ï³,8ññ³,'ô³,8u<ö³,8 þ³,, ‚´,8¬ºƒ´, ‡´, å¶, 8 •´,8ñ˜´, ›´, ¿´,  œ´,8$�´,$ ¡´,8œ £´,& ¤´, ¦´,8§´,8û$«´,'¯´,8ñ±´,'´´,8ŠL¶´,(Á´,8û$Ä´,'È´,8ñÊ´,'Í´,8Ñ4Ï´, Ö´, Û¶,8writeÁ,è´, í´, î´, Ͷ,8œ „µ,$ …µ,71failed to create {} from {:?}, which exceeds {:?}Áü›µ3,$ ε,8�Läµ, íµ, îµ, ôµ,, ïµ,8‚ $ðµ,$ õµ,8$‹¶, �¶,8õEL�¶, ™¶, š¶,$ ›¶,, ±¶,8‚ $²¶,'¶¶,8€D¸¶,$ »¶,+ ð¶, ñ¶, †·,8É4ò¶, ø¶, …·,8e,ù¶,$ þ¶,8q,€·,8�·, “·, ™·,8,”·,84›·,, ¢·,8�$£·, §·, ¶·,8ë t¨·,% ··,8$·,, Ç·,8�$È·, Í·, Óº,8 Û·,8˜ Þ·, á·, ì·,8¶â·,& å·,8€,ç·,(î·,, ñ·,8�$ò·, ÷·, ɺ,8Ú4‰¸, �¸, �¸, „º,8¶¦¸,ª¸,, ­¸,8‚ $®¸,'²¸,8õ&,´¸,$ ¹¸,7Xcannot create iterator for {} when number of \ elements exceed {:?}ÁüϸZ,$ ©¹,8�L¿¹, ȹ, ɹ, Ϲ,, ʹ,8‚ $˹,$ й,, æ¹,8‚ $ç¹,'ë¹,8õ&,í¹,$ ò¹,% …º,, —º,8�$˜º, œº, »º,8ë t�º, ¬º, ºº,8�¡®º,& ±º,7ó ³º,!´º,8¶¶º,8$Þº,8¡Dãº,8 ìº,, ðº,8�$ñº, öº, ‰¼,8!$„»,8Ÿ$‰», Ž»,, �»,8‚ $‘»,% •»,8 ¤»,8¥ $§», «», µ», ¬»,8­»,8$±»,(·»,8°4º», À»,, Á»,8‚ $», Æ», È», ÿ», 8$Ú», Þ»,7ó ß», à»,8¥ $á», å», æ», ç»,8ƒ è», ë», ñ»,, ì»,8‚ $í»,<D An iterator adapter that is like std::iter::Enumerate, but attachesÁü”¼G,<@ small index values instead. It requires `ExactSizeIterator`. AtÁüä¼C,<? construction, it ensures that the index of each element in theÁü°½B,<A iterator is representable in the corresponding small index type.Áüû½D,+ Ⱦ, ɾ, Þ¾,8É4ʾ, о, ݾ,8e,Ѿ,$ Ö¾,8q,ؾ,8è¾, ë¾, ñ¾,8,ì¾,84ó¾,, ú¾,8�¡XDû¾, ƒ¿,8… „¿, …¿, ‡¿, ¼¿, 8ÛË•¿,& —¿,8… ™¿,$ š¿,8쨨¿,& «¿,, ­¿,8�$®¿,$ ²¿,8$Ç¿, Ë¿,8… Ì¿,& Í¿,8¡DÏ¿, Ø¿,8ExactSizeIteratorÁŒÚ¿, ë¿,, í¿,8�¡XDî¿, ö¿,8… ÷¿, ø¿, ú¿, •Á, 8 ˆÀ,8˜ ‹À, ŽÀ, ”À,8ÛË�À,& ‘À,8… “À,(–À,, ™À,8�¡XDšÀ, ¢À,8… £À, ¤À, ¦À, ‹Á, 8¸À,8쨼À, ÀÀ,, ÂÀ,8‚ $ÃÀ,'ÇÀ,8�$ÉÀ, ÍÀ, ÖÀ,8ÛËÎÀ, ÐÀ,8¶ÑÀ, ÔÀ, ÕÀ,% ×À,, éÀ,8�¡XDêÀ, óÀ, ýÀ,8ÛËõÀ,$ ÷À,8ì¨ùÀ,8$ Á, ¤Á,8… ¥Á,& ¦Á,8¡D¨Á, ±Á,8œ—YŒ³Á, ÄÁ,8¡DÆÁ,8 ÏÁ,, ÓÁ,8�¡XDÔÁ, ÜÁ,8… ÝÁ, ÞÁ, àÁ, âÄ,8!$îÁ,8Ÿ$óÁ, øÁ, úÁ, ‰Â,, ûÁ,8‚ $üÁ,$ €Â,8… ‚Â,'ƒÂ,8Ÿ$…Â,% ŠÂ,8 ™Â,8¥ $œÂ,  Â, ªÂ, ¡Â,8¢Â,8$¦Â,(¬Â,8°4¯Â, µÂ, ¶Â, ÅÂ,, ·Â,8‚ $¸Â,$ ¼Â,8… ¾Â,'¿Â,8Ÿ$ÁÂ, ÆÂ, ÈÂ, ØÄ,8ÚÂ,8›$ÞÂ, ãÂ,8$åÂ, éÂ,8ÛËêÂ, ìÂ,8¥ $íÂ, ñÂ, òÂ,- óÂ,% ôÂ,8ˆÄ,8ˆCŒÄ, �Ä,8$‘Ä, •Ä,8쨖Ä, ™Ä,8¥ $šÄ, žÄ, ŸÄ,  Ä,8ö4¡Ä, §Ä, ¨Ä,% ©Ä,8à$»Ä, ¿Ä, ÊÄ, ÀÄ, ÉÄ,8ˆCÁÄ,$ ÃÄ,8›$ÅÄ,% éÄ,ü™Õ+,„ªÕ,žž£Ø1ü™Õä,ÄQÅ�(D¼Õ,ž£Ø1.¿¢Y!£Ø1:¿¢Y-Ÿ Ÿ Ÿ üËÕg,„ÎÕ,Å�(þ�(BÿžžþÆÅ�(,˜Ö,ŽQÅ�(Œ Ö, ŸÅ�(Ê üéÖc,tìÖ,Å�(ÆŸ(BÿžžÇ£Y,²×,Ù£YŒº×,  Å�(’ üÿ×(,…¢¢�ÁH „Ø,œÅHD‡Ø,‰ŒlÐ ;üLG Provides helpers for dealing with start state configurations in DFAs. Á,Ø ;Ã+Ê+Ï+Œ–\k­(£¥žD…§-£§—,�Ñ,£¨‚þ$¢ô£ªà³„¨�,£«±³tº‰,£¬\RŒe„üR0uwdfüRMV$›FH46\¡"ö�®¯±²³´µ´Ï#ü³"-* Create a new default start configuration.Áå"�üí"KH The default is an unanchored search that starts at the beginning of theÁl½#ÈÖ<Ö#ö�Bÿ­­ ®ü÷&6ü°$DA A convenience routine for building a start configuration from anÁüù$# [`Input`] for a forward search.Á¡%�ü©%HE This automatically sets the look-behind byte to the byte immediatelyÁüö%GD preceding the start of the search. If the start of the search is atÁüÂ&0- offset `0`, then no look-behind byte is set.Á”þ&ŠB‹B ŠBÑ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa‹Bö�Bÿ­ ˜'­ªÐ –`,‘'—(¯�°�°�°°¯°‚Ç ÈË Uÿ±Ñ üØ+6üˆ)D¶¨YüÑ)# [`Input`] for a reverse search.Áù)�ü�*H½©YüÎ*C@ following the end of the search. If the end of the search is atÁü–+=: offset `haystack.len()`, then no look-behind byte is set.Á”ß+ŒB�B ŒBÑ,Ñ,—Ó,ý�ÏÔ,ÅœÏÕ,ã÷ÏÖ,÷œÏ´�¾Ú&õa�Bö�Bÿ­ ù+­“Û –`,ò+üŒ18ü¡-63 Set the look-behind byte at the start of a search.ÁÜ-�üä-JG Unless the search is intended to logically start at the beginning of aÁü³.KH haystack, this should _always_ be set to the byte immediately precedingÁüƒ/JG the start of the search. If no look-behind byte is set, then the startÁüÒ/IF configuration will assume it is at the beginning of the haystack. ForÁü 0'$ example, the anchor `^` will match.ÁÌ0�üÔ030 The default is that no look-behind byte is set.Á\“1ö�ÈË ö�Bÿ­­ ²$£1—»$©1üà23ü€2&# Set the anchored mode of a search.Á«2�ü³2(% The default is an unanchored search.ÁDç2ö�Ø¥ö�Bÿ­­ ³$ô2¾»$ú2ü–4+üÌ3EB Return the look-behind byte in this configuration, if one exists.Á|�4ŽB ŽBö�ÈË Bÿ­ ­4­ÂÀ $®4ü 5&üè430 Return the anchored mode in this configuration.Ád§5�B �Bö�Ø¥Bÿ­ ´5­”À $µ5Œâ<Å�·¹º¼½üÅ>6Ó>‘B ‘B‚óÅ�Bÿ¶ Þ>¶ ·lookmÁ,×>©?··üŠK+˜K’B ’BÅ�†‘Bÿ¶ œK¶æÃ $�K—»ÿ ü®NhT¼N“B “BÈšÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÅ�Ö•Bÿ¶ ×N¶ ºå,ÐN‚PººüºUeDÈU”B•B ”BÅ� •BÈš×’NBÿ¶ ÚU¶ ¼$ÛUÜ„éUüˆY*d–Y–B –BÅ�Bÿ¶ £Y¶ ½$¤YüÊY&Å�¿ g¿ü÷Y@úY—B˜B™B —BÅ� ˜B€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡™B­àBÿ¾ þY¾ ¿$ÿYœ …ZôÆZLÛZT˜p†‘ÂÃÄÅüÁq3TÏqřǙș­É™Ê™àË™óG*¤�R{9 †‘BÿÁÁ ¤ ÚqäïtýtBÿÁÁ¢¡ üÑv ,ßv¡B ¡B†‘BÿÁ åvÁæ±($ævü«y&D¹y¢B ¢B†‘BÿÁ ÂyÁîŸ $Ãytú ;ü½-¸ Utilities for dealing with the syntax of a regular expression. This module currently only exposes a [`Config`] type that itself represents a wrapper around the configuration for a [`regex-syntax::ParserBuilder`](regex_syntax::ParserBuilder). The purpose of this wrapper is to make configuring syntax options very similar to how other configuration is done throughout this crate. Namely, instead of duplicating syntax options across every builder (of which there are many), we instead create small config objects like this one that can be passed around and composed. ÁÓí”å ;Ôß ;4‚ ;ÑÒÔÕí+–Ë-Ð=ÆÈ–ÆÈüÕ-…CÆÉ™Oô- ÆË¤O$ƒ-ãÆÍ“ó‰-¶ÆÎßô,“-ÓÆÏæælš-ñÆÐ,Ã-©«DÐ-‰dà-z|üà -oý-_aMO;=üÑ1-ü­J-G A convenience routine for parsing a pattern into an HIR value with theÁÔø- default configuration.Á“-�l—-¯Ö.¥-�ü©8-5 This shows how to parse a pattern into an HIR value:Áâ-�<æ-þ×.üî%-" use regex_automata::util::syntax;Á”-�ü˜3-0 let hir = syntax::parse(r"([a-z]+)|([0-9]+)")?;ÁüÌI-F assert_eq!(Some(1), hir.properties().static_explicit_captures_len());Á–-�üš.-áß.<É-þ×.,Ø-£B £B€ãBÿ ç- ÑîN<Þ-ü“K-ü´ K-H A convenience routine for parsing many patterns into HIR value with theÁÔ€ -‘ÊY› -�lŸ -¯Ö.­ -�ü± K-H This shows how to parse many patterns into an corresponding HIR values:Áý -�<� -þ×.L‰ -ý�@ü“ %-" regex_automata::util::syntax,Áü¹ &-# regex_syntax::hir::Properties,Á4à -÷Ø.ç -�üë $-þ¯Wì� - r"([a-z]+)|([0-9]+)",ÁÌ® - r"foo(A-Z]+)bar",ÁDÈ -¯ƒ1üÑ G-D let props = Properties::union(hirs.iter().map(|h| h.properties()));Áü™ >-; assert_eq!(Some(1), props.static_explicit_captures_len());ÁØ -�üÜ .-áß.<‹-þ×.Tš-¤B ¤B©ò‹´(BÿŒÓÓ ¾-¹Ž/ ¥-ÊŽ/T¨- Òµ“¨ ì  ü�G-ü–I-F A convenience routine for parsing a pattern into an HIR value using aÁlà- `Config`.Áî-�lò-¯Ö.€-�ü„J-G This shows how to parse a pattern into an HIR value with a non-defaultÁ”Ï- configuration:Áâ-�<æ-þ×.üî%-µËY”-�ü˜!- let hir = syntax::parse_with(Á¤º- r"^[a-z]+$",ÁüÏ;-8 &syntax::Config::new().multi_line(true).crlf(true),Á<‹-ÞÌ0ü“@-= assert!(hir.properties().look_set().contains_anchor_crlf());ÁÔ-�üØ.-áß.<‡-þ×.T–-¥B¦B ¥B ¦BÝ’€ãBÿ ª- ÔîN<¡-É4°-üŸl-üËK-H A convenience routine for parsing many patterns into HIR values using aÁl—-æÔY¥-�l©-¯Ö.·-�ü»J-G This shows how to parse many patterns into an corresponding HIR valuesÁü†%-" with a non-default configuration:Á¬-�<°-þ×.L¸-ý�@üÂ%-÷ÏYüè&-¦ÐY4�-÷Ø.–-�¬š-´ý3ì°-üÐYtÎ- r"\W",ÁÌÝ-¢ÑY4÷-ó°3üþB-? let config = syntax::Config::new().unicode(false).utf8(false);ÁüÁ;-8 let hirs = syntax::parse_many_with(patterns, &config)?;ÁüýG-ÒÑYôÅ- assert!(!props.is_utf8());Áä-�üè.-áß.<—-þ×.|¦-§B¨B §B©ò ¨BÝ’‹´(BÿŒÖÖ Ô-¹Ž/ ¶-ÊŽ/T¹-˳(¨ e Éo  "\à$-Ý’ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñ´¥%-üò$.-+ Return a new default syntax configuration.Á¬%-Ý’Bÿ×× Øüˆ,6-üü(;-8 Enable or disable the case insensitive flag by default.Á¼)-�üÄ)F-C When Unicode mode is enabled, case insensitivity is Unicode-aware.Áü�*B-? Specifically, it will apply the "simple" case folding rules asÁÌÖ*- specified by Unicode.Áô*-�üü*D-A By default this is disabled. It may alternatively be selectivelyÁüÅ+>-; enabled in the regular expression itself via the `i` flag.Á„�,-Ý’Ý’Bÿ×× Ù$¤,-êª,-üµ10-üþ,>-; Enable or disable the multi-line matching flag by default.ÁÁ--�üÉ-E-B When this is enabled, the `^` and `$` look-around assertions willÁü“.H-E match immediately after and immediately before a new line character,Áüà.H-E respectively. Note that the `\A` and `\z` look-around assertions areÁü­/G-D unaffected by this setting and always correspond to matching at theÁüù/#- beginning and end of the input.Á¡0-�ü©0D-ÔãYüò0>-; enabled in the regular expression itself via the `m` flag.ÁT¼1-Ý’Ý’Bÿ×× Ú$Ë1-êÑ1-üÙ9:-üŸ2F-C Enable or disable the "dot matches any character" flag by default.Áê2-�üò2K-H When this is enabled, `.` will match any character. When it's disabled,ÁüÂ3F-C then `.` will match any character except for a new line character.Á�4-�ü•4I-F Note that `.` is impacted by whether the "unicode" setting is enabledÁüã4K-H or not. When Unicode is enabled (the default), `.` will match any UTF-8Áü³5G-D encoding of any Unicode scalar value (sans a new line, depending onÁüÿ5H-E whether this "dot matches new line" option is enabled). When UnicodeÁüÌ6G-D mode is disabled, `.` will match any byte instead. Because of this,Áü˜7G-D when Unicode mode is disabled, `.` can only be used when the "allowÁüä7E-B invalid UTF-8" option is enabled, since `.` could otherwise matchÁ”®8- invalid UTF-8.ÁÅ8-�üÍ8D-ÔãYü–9>-; enabled in the regular expression itself via the `s` flag.Á¤à9-Ý’Ý’Bÿ×× Û$ù9-êÿ9-ü£?*-ü×:6-3 Enable or disable the "CRLF mode" flag by default.Á’;-�üš;D-ÔãYüã;>-; enabled in the regular expression itself via the `R` flag.Á¦<-�ü®<5-2 When CRLF mode is enabled, the following happens:Áè<-�üðF-C `\r` and `\n` as line terminators. And in particular, neither willÁüú>$-! match between a `\r` and a `\n`.Á$ª?-Ý’Ý’Bÿ×× Ü$³?-ê¹?-üÊH4-ü�@D-A Sets the line terminator for use with `(?u-s:.)` and `(?-us:.)`.ÁÊ@-�üÒ@L-I Namely, instead of `.` (by default) matching everything except for `\n`,Áü£AF-C this will cause `.` to match everything except for the byte given.ÁîA-�üöAK-H If `.` is used in a context where Unicode mode is enabled and this byteÁüÆBE-B isn't ASCII, then an error will be returned. When Unicode mode isÁü�CK-H disabled, then any byte is permitted, but will return an error if UTF-8ÁüàC/-, mode is enabled and it is a non-ASCII byte.Á”D-�üœDI-F In short, any ASCII value for a line terminator is always okay. But aÁüêDH-E non-ASCII byte might result in an error depending on whether UnicodeÁü·E#- mode or UTF-8 mode are enabled.ÁßE-�üçEH-E Note that if `R` mode is enabled then it always takes precedence andÁü´FH-E the line terminator will be treated as `\r` and `\n` simultaneously.Á�G-�ü‰GC-@ Note also that this *doesn't* impact the look-around assertionsÁüÑGB-? `(?m:^)` and `(?m:$)`. That's usually controlled by additionalÁü˜H--* configuration in the regex engine itself.Á|ÑH-Ý’Ý’Bÿ×× Ý$åH-—»$ëH-ü‚L0-ü¾I7-4 Enable or disable the "swap greed" flag by default.ÁúI-�ü‚JK-H When this is enabled, `.*` (for example) will become ungreedy and `.*?`Á¼ÒJ- will become greedy.ÁîJ-�üöJD-ÔãYü¿K>-; enabled in the regular expression itself via the `U` flag.ÁT‰L-Ý’Ý’Bÿ×× Þ$˜L-êžL-ü¥P7-üìL2-/ Enable verbose mode in the regular expression.Á£M-�ü«MG-D When enabled, verbose mode permits insignificant whitespace in manyÁü÷MG-D places in the regular expression, as well as comments. Comments areÁüÃN=-: started using `#` and continue until the end of the line.Á…O-�ü�OF-C By default, this is disabled. It may be selectively enabled in theÁüØOH-E regular expression by using the `x` flag regardless of this setting.ÁŒ¬P-Ý’Ý’Bÿ×× ß$ÂP-êÈP-üæW--ü�Q8-5 Enable or disable the Unicode flag (`u`) by default.ÁÚQ-�üâQG-D By default this is **enabled**. It may alternatively be selectivelyÁü®R?-< disabled in the regular expression itself via the `u` flag.ÁòR-�üúRG-D Note that unless "allow invalid UTF-8" is enabled (it's disabled byÁüÆSH-E default), a regular expression will fail to parse if Unicode mode isÁü“TE-B disabled and a sub-expression could possibly match invalid UTF-8.ÁÝT-�üåTK-H **WARNING**: Unicode mode can greatly increase the size of the compiledÁüµUF-C DFA, which can noticeably impact both memory usage and compilationÁü€VH-E time. This is especially noticeable if your regex contains characterÁüÍVH-E classes like `\w` that are impacted by whether Unicode is enabled orÁüšWG-D not. If Unicode is not necessary, you are encouraged to disable it.Á<íW-Ý’Ý’Bÿ×× à$ùW-êÿW-üÚ^*-üÊXH-E When disabled, the builder will permit the construction of a regularÁü—Y,-) expression that may match invalid UTF-8.ÁÈY-�üÐY;-8 For example, when [`Config::unicode`] is disabled, thenÁü�ZH-E expressions like `[^a]` may match invalid UTF-8 since they can matchÁüÝZF-C any single byte that is not `a`. By default, these sub-expressionsÁü¨[@-= are disallowed to avoid returning offsets that split a UTF-8Áüí[D-A encoded codepoint. However, in cases where matching at arbitraryÁü¶\H-E locations is desired, this option can be disabled to permit all suchÁ¤ƒ]- sub-expressions.Áœ]-�ü¤]F-C When enabled (the default), the builder is guaranteed to produce aÁüï]G-D regex that will only ever match valid UTF-8 (otherwise, the builderÁÔ»^- will return an error).Á$á^-Ý’Ý’Bÿ×× á$ê^-êð^-üžk1-ü¸_A-> Set the nesting limit used for the regular expression parser.Áþ_-�ü†`K-H The nesting limit controls how deep the abstract syntax tree is allowedÁüÖ`I-F to be. If the AST exceeds the given limit (e.g., with too many nestedÁü¤a5-2 groups), then an error is returned by the parser.ÁÞa-�üæaG-D The purpose of this limit is to act as a heuristic to prevent stackÁü²bI-F overflow when building a finite automaton from a regular expression'sÁü€cD-A abstract syntax tree. In particular, construction currently usesÁüÉcI-F recursion. In the future, the implementation may stop using recursionÁü—d0-- and this option will no longer be necessary.ÁÌd-�üÔdH-E This limit is not checked until the entire AST is parsed. Therefore,Áü¡eI-F if callers want to put a limit on the amount of heap space used, thenÁüïeG-D they should impose a limit on the length, in bytes, of the concreteÁü»fG-D pattern string. In particular, this is viable since the parser willÁü‡gH-E limit itself to heap space proportional to the length of the patternÁ\Ôg- string.Áäg-�üìgI-F Note that a nest limit of `0` will return a nest limit error for mostÁüºhJ-G patterns but not all. For example, a nest limit of `0` permits `a` butÁü‰iI-F not `ab`, since `ab` requires a concatenation AST item, which resultsÁü×iJ-G in a nest depth of `1`. In general, a nest limit is not something thatÁü¦jE-B manifests in an obvious way in the concrete syntax, therefore, itÁüðj)-& should not be used in a granular way.ÁT¥k-Ý’Ý’Bÿ×× â$´k-ª¯,ºk-üÇr+-ü‹l+-( Whether to support octal syntax or not.Á»l-�üÃlH-E Octal syntax is a little-known way of uttering Unicode codepoints inÁü�m@-= a regular expression. For example, `a`, `\x61`, `\u0061` andÁüÕmI-F `\141` are all equivalent regular expressions, where the last exampleÁ¼£n- shows octal syntax.Á¿n-�üÇnK-H While supporting octal syntax isn't in and of itself a problem, it doesÁü—oJ-G make good error messages harder. That is, in PCRE based regex engines,ÁüæoA-> syntax like `\1` invokes a backreference, which is explicitlyÁü¬pH-E unsupported in Rust's regex engine. However, many users expect it toÁüùpF-C be supported. Therefore, when octal support is disabled, the errorÁüÄqI-F message will explicitly mention that backreferences aren't supported.Á’r-�üšr(-% Octal syntax is disabled by default.Á,Îr-Ý’Ý’Bÿ×× ã$Ør-êÞr-üÚs!-ü§s.-+ Returns whether "unicode" mode is enabled.Á\ás-­B ­BÝ’Bÿ× ís-× ä$îs-üÚt*-üžt7-4 Returns whether "case insensitive" mode is enabled.Á¤át-®B ®BÝ’Bÿ× öt-× å$÷t-üæu$-ü°u1-. Returns whether "multi line" mode is enabled.Átíu-¯B ¯BÝ’Bÿ× üu-× æ$ýu-üðv.-ü°v;-8 Returns whether "dot matches new line" mode is enabled.ÁÄ÷v-°B °BÝ’Bÿ× �w-× ç$‘w-ôþw-üÎw+-( Returns whether "CRLF" mode is enabled.ÁD…x-±B ±BÝ’Bÿ× Žx-× è$�x-üþx'-ü¼x=-: Returns the line terminator in this syntax configuration.Áœ…y-²B ²BÝ’Bÿ× ™y-× é$šy-ü†z$-üÐy1-. Returns whether "swap greed" mode is enabled.Át�z-³B ³BÝ’Bÿ× œz-× ê$�z-ü�{+-üÐz8-5 Returns whether "ignore whitespace" mode is enabled.Á¬”{-´B ´BÝ’Bÿ× ª{-× ë$«{-ô”|-üå{*-' Returns whether UTF-8 mode is enabled.ÁD›|-µB µBÝ’Bÿ× ¤|-× ì$¥|-üü|#-üÒ|%-" Returns the "nest limit" setting.Átƒ}-¶B ¶BÝ’Bÿ× ’}-× í$“}-üö}-üÅ},-) Returns whether "octal" mode is enabled.ÁLý}-·B ·BÝ’Bÿ× ‡~-× î$ˆ~-üî~7-,ü~-¸B¹B ¸BÝ’ ¹B߯Bÿ× ‚-×òµ($ƒ-Ö<‰-üÓƒG-Láƒ-ºB»B ºBÝ’ »BÜçBÿ× ëƒ-× ð$ìƒ-Ö<òƒ-üÿ…f-L�†-¼B½B ¼BÝ’ ½B„éBÿ×  †-× ñ$¡†-Ö<¯†-¼Ö‰-Ý’ó÷ó´ô‰-<÷‰-Ý’Bÿòò ódŠ ;üèã Types and routines that support the wire format of finite automata. Currently, this module just exports a few error types and some small helpers for deserializing [dense DFAs](crate::dfa::dense::DFA) using correct alignment. Á$’ ;–—˜™›œž ¡¢£¥¦§©ª­®°±´µ·»¿ÀÁÂÄÆÈÊËÌÎÏÓÔÕÿ+‰,�,Ž,’,–ý¾ôöà<‡ Ùô÷–¸Ð=ôù–ôùüÂ…Côúº<åÁôü¦¡LÿÙ)ôþª§tŠÆ*ôÿµ¢<šî)ô€‰­d£¦+ô�$öÕ×d‚È,°Ó«Œ˜Ì’ÌÓ«ÝD½Ó«*(Ê\Ídà¿üÍ/°²ž ŒŽz|œ’&‰•ƒü¬&D„º&¥Ó1‰•Bÿ‚‚ ƒdz$Ë&üœ'*‰•…¥g…üÍ'@Ð'ÄBÅBÆB ÄB‰• ÅB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÆB­àBÿ„ Ô'„ …$Õ'œ Û'üý()Ó‰|ë(¼å(‰•¬Î4Ö•ˆ‰Š‹Œ�Ž��‘üê4<<ø4¥Ó1Ö•Bÿ‡‡ ˆ«°€5üô5F„‚6¥Ó1Ö•Bÿ‡‡ ‰dz$“6ü�78l“7ô¥Ó1Ö•Bÿ‡‡ Šdz$¡7üœ8B„Ÿ8ôÖ•Bÿ‡‡ ‹§D°8¡µ,¿8üá9A|ä9ôÖ•Bÿ‡‡ Œ§Dô9¡µ,ƒ:ü¤;b”§;ôÖ•Bÿ‡‡ �©LÃ;Ÿ<Ý;üŽ==t‘=ô¥Ó1Ö•Bÿ‡‡ ާD =ü¤>>œ§>ô¥Ó1Ö•Bÿ‡‡ �dz$»>ü¼?g„¿?ôú‰¥Ó1Ö•Bÿ‡‡ �¬ºÙ?dz$ö?üù@nt‡A»�¥Ó1Ö•Bÿ‡‡ ‘¬ºŸAdz$ºAüÑB+Ó‰|¿B¼¹BÖ•ü�C,Ö•”¥g”ü´C@·CÍBÎBÏB ÍBÖ• ÎB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÏB­àBÿ“ »C“ ”$¼Cœ ÂCÔƒDüÏR<ŒÝRÐB ÐB  ÐBìáBÿ öR –å,ïRüÌWH¬ÚWÑB ÑB§ÍZ ÑBìáBÿ ÷W —å,ðWüŒ]@œš]ÒB ÒB§ÍZ ÒB ›†Bÿ µ] ˜å,®]üÛcU|écÓB ÓBÈšÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÖ•Bÿ�šš ˆd�ÀM ùc ™éìå,�düäi9¤òiÔB ÔBÈšBÿ Žj ›å,‡jüÄqFÓ«Œ°q̪q¤Òqñ”Bÿ����ÀM çq œéìß$êqü˜ƒrT¦ƒÕB ÕBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÖ•Bÿ ½ƒ žå,¶ƒexpected_labelÁtȃ$¦†ž�Ÿ�Ÿ�ŸŸžŸöôüýŽb\‹�ÖB×B ÖB ×BÈš×’NBÿ £�  ©,œ�Ü„­�üà”3|î”ØB ØBBÿ …• ¡©,þ”üß™[¬í™ÙB ÙBÈšÝÒZBÿ �š ¢å,ˆšüËžg´ÙžÚB ÚBÈš×’NBÿ�¤¤ …ŸÇ´M ðž®ÛN4óž £�´MÜ„€Ÿ!#ü¡3ÔСBÿ ¥ü—¦md¥¦ÛB ÛBÈšÝÒZBÿ ¾¦ ¦å,·¦expected_versionÁ„ɦüÊ«plØ«ÜB ÜBÈš×’NBÿ�¨¨ �¬Ç´M æ«®ÛN4é« §�´M™<ö«Ü„ˆ¬*,üÆ®*ŒÔ®Bÿ ©ü§±z|µ±ÝB ÝBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw›†Ö•Bÿ ѱ ªå,ʱdz$ܱq8 ,À³ª�¬�¬�¬¬ª¬ ÈEÖ•UÿæÑüƒ¶KÌ‘¶ÞB ÞBÈšÓÛZBÿ ²¶ ­å,«¶üå¹]„ó¹ßB›† ßBÈšBÿ�¯¯ ­ºÇ´M „º®ÛN4‡º ®�´M¾¾”ºÜ„¨º+-ü‹½zŒ™½àB àBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇÖ•Bÿ ·½ °å,°½dz$½ü«Ávl¹ÁáB áBÈš¥Ó1šßZBÿ ÓÁ ±å,ÌÁdz$ÞÁÙ8 ,ºÃ±�³�³�³³±³è§/Ö•UÿæÑüõÅG¼ƒÆâB âBÈšéßZBÿ ¢Æ ´å,›ÆüÉÉYt×ÉãBÇ ãBÈšBÿ�¶¶ �ÊÇ´M æÉ®ÛN4éÉ µ�´M ØöÉÜ„ˆÊ+-ü­Î|¬»ÎäB äBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÏžÖ•Bÿ ÝÎ ·å,ÖÎdz$èÎLÓÏ·�¸�¸�¸¸·¸’äZUÿæÑ‹Ð·�¹�¹�¹¹·¹Éýûù9­Ð·�º�º�ºº·ºÏïÖ•UÿæÑü°Ô|¬¾ÔåB åBÈš¥Ó1’äZBÿ àÔ »å,ÙÔdz$ëÔLÖÕ»�¼�¼�¼¼»¼’äZUÿæÑŽÖ»�½�½�½½»½Éýûù9°Ö»�¾�¾�¾¾»¾¸†Ö•UÿæÑüçÙqdõÙæB æBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwéåZÖ•Bÿ ŽÚ ¿å,‡Údz$™ÚüÁÞqdÏÞçB çBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwöèZÖ•Bÿ èÞ Àå,áÞdz$óÞü�ãsl«ãèB èBÈš¥Ó1ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÖ•Bÿ Åã Áå,¾ãdz$Ðãü¬ç+DºçéB éBÈšBÿ Êç Âå,Ãç îçüõê+DƒëêB êBÈšBÿ “ë Äå,Œë ·ëü—í-L¥íëB ëBÈšBÿ ¶í Æå,¯íÛíüùï…|‡ðìB ìB‹ƒ¥Ó1ÀÏZBÿ�ÉÉ ¦ð�ÀM —ð Èéìå,Ÿð at_least_lenÁd°ðdz$Éð68ü©ók·ó¥Ó1ÝÒZBÿ Ê— Àó˜ Îódz$ÜóüÆökÔö¥Ó1ÝÒZBÿ Ë— Ýö˜ ëödz$ùöüãùkñù¥Ó1ÝÒZBÿ Ì— úù˜ ˆúdz$–ú„ûÌ�Í�Í�ÍÍÌͶêZæÑüðý:\þýBÿ Înon_padding_lenÁ|Šþ¼õÿ4†€ÏÏ£Ø1üõÿ�Ï£Ø1£Ø1#ÐÑÒÐÑÒÒÐÑü½�%LÀ�íB íBÈšBÿÏ ×�Ï ÐÅ�(¤ Ê�Ü„Ò�ü’ƒ%L•ƒîB îBÈšBÿÏ ¬ƒÏ ÑÅ�(¤ ŸƒÜ„§ƒüé„'Tì„ïB ïBÈšBÿÏ ……Ï ÒÅ�(¤ ÷„Ü„€…”¯…¿…ƒ™o·0yu@”Ý…í… ™Vçõ‚ ì蔕†·ÑÄú…üô… ¥†ƒ™”憃™×ØÙÐÑÒÙØ×üÿ†$L‚‡ðB ðBÈšBÿÖ ™‡Ö פ Œ‡Ü„”‡üå‡$Lè‡ñB ñBÈšBÿÖ ÿ‡Ö ؤ ò‡Ü„ú‡üˈ&TΈòB òBÈšBÿÖ çˆÖ Ù¤ و܄∔²‰ ™ÛÜÝÐÑÒÝÛÜüˉ$LΉóB óBÈšBÿÚ å‰Ú Û¤ ؉Ü„à‰ü±Š$L´ŠôB ôBÈšBÿÚ ËŠÚ Ü¤ ¾ŠÜ„ÆŠü—‹&Tš‹õB õBÈšBÿÚ ³‹Ú ݤ ¥‹Ü„®‹ÔÐ ;Ó� ¬£ ;Óª+”º ;ü¢ +;ü™ 6;\ß ;óèíîñüè<…CÞß´Ù,�<¯,á÷·Œ—<À,â·¸œª<Ç,ãì¸|¿<Ì,ä±Dê<± Þæ«³Dˆ<–Þè‘Ú$¡<Ø'Þêý”<§<š(Þëµ¢<Å<î)ÞìÓ¿LÞ<º-Þí§ÃLþ<ò-ÞïãÂT‰<ë-Þðž�,¥<Ï+Þñ‚�$´<æÞò|Ü<E\ý<69'*  ,سçC çCÈšØÚBÿ ¬Âð˜ )P ý�P ü¯GùèC èCÈšØÚBÿ ß Ê˜ )Ån2ÁÍý�DÕüçvMéC éCÈšØÚBÿ À ˘ )†‰Š\–n3Á¦ý�D¶üÒ?­êC êCÈšØÚBÿ ú ̘ )èý�DðüþHöëC ëCÈšØÚBÿ ¯  ͘ )• ‰Š\� ý�D¥ ü¸ wJìC ìCÈšØÚBÿ ’  Θ )Ø ‰Š\è þŠ\ø ý�Dˆ ¬­;4¼;Ñ,Ú,é,ú,‹-—-ž-§-º-Ì-Í-Ø-¼,жýÏÑ RangeBoundsÁ\‘™$ÏÒ®ŠLºü&ÏÔ®Šý&ÏÔ¦¡LÑÙ)ÏÕ‚�$ÜæÏÖLþ�‘rt\¤Œ²h¬ÅB.0”§'¸ØØ¿�ÙÛÝßàáãæçèéêëìíîïðñò¬'ü�(AüÀ'=: Create a new search configuration for the given haystack.Á—(±ž¿�BÿׄÚÚ×ÿÆ·ž4ž(£·žÈš\§( Ù¸·žý�¶R ›(üèH:üå,! Set the span for this search.Á‹-�ü“-JG This routine does not panic if the span given is not a valid range forÁüâ-HE this search's haystack. If this search is run with an invalid range,Áü¯.IF then the most likely outcome is that the actual search execution willÁTý.Øñ6Œ/�ü”/>; This routine is generic over how a span is provided. WhileÁü×/<9 a [`Span`] may be given directly, one may also provide aÁü˜0DA `std::ops::Range`. To provide anything supported by rangeÁüá0,) syntax, use the [`Input::range`] method.Á’1�üš1,) The default span is the entire haystack.ÁË1�üÓ1DA Note that [`Input::range`] overrides this method and vice versa.Áœ2�d¤2”Ÿ0µ2�ü½2HE This panics if the given span does not correspond to valid bounds inÁüŠ30- the haystack or the termination of a search.Á¿3�lÇ3¯Ö.Ù3�üá3FC This example shows how the span of the search can impact whether aÁü¬4KH match is reported or not. This is particularly relevant for look-aroundÁüü4GD operators, which might take things outside of the span into accountÁüÈ5(% when determining whether they match.Áõ5�<ý5þ×.ü‰6=îõ.ÌË6ŽØ.üé6&Ÿ¾I¬”7ßíD4®7÷Ø.¹7�üÁ7-* // Look for 'at', but as a distinct word.Áüó7%" let re = PikeVM::new(r"\bat\b")?;Áü�8&äÎ/üÈ8(•Ï/õ8�üý8>; // Our haystack contains 'at', but not as a distinct word.ÁäÀ9 let haystack = "batter";Áá9�üé941 // A standard search finds nothing, as expected.Áü¢:%…®6üÌ:-…¥Güþ:'¤ß.ª;�ü²;DA // But if we wanted to search starting at position '1', we mightÁüû;DA // slice the haystack. If we do this, it's impossible for the \bÁüÄ=: assert_eq!(Some(Match::must(0, 0..2)), caps.get_match());ÁÔ>�üÜ>FC // But if we specify the span of the search instead of slicing theÁü§?DA // haystack, then the regex engine can "see" outside of the spanÁüð?)& // and resolve the anchors correctly.Áüž@0- let input = Input::new(haystack).span(1..3);ÁüÓ@-…¥Gü…A'¤ß.±A�ü¹A.áß.<ìAþ×.øA�ü€BIF This may seem a little ham-fisted, but this scenario tends to come upÁüÎBGD if some other regex engine found the match span and now you need toÁüšCJG re-process that span to look for capturing groups. (e.g., Run a fasterÁüéCJG DFA first, find a match, then run the PikeVM on just the match span toÁü¸DGD resolve capturing groups.) In order to implement that sort of logicÁü„EHE correctly, you need to set the span on the search instead of slicingÁÔÑE the haystack directly.ÁðE�üøEJG The other advantage of using this routine to specify the bounds of theÁüÇFGD search is that the match offsets are still reported in terms of theÁü“GJG original haystack. For example, the second search in the example aboveÁüâGGD reported a match at position `0`, even though `at` starts at offsetÁü®H'$ `1` because we sliced the haystack.Á$ïH¿�¾§)¿�Bÿ×�ÜÜ×þƾ§) ôH©¾§)ÅžT÷H Û¸¾§)$‡IÅœ¡S 79ü‰SDüÚI63 Like `Input::span`, but accepts any range instead.Á•J�ü�JKH This routine does not panic if the range given is not a valid range forÁüíJHò’\üºKIÄ“\TˆLØñ6—L�üŸL-* The default range is the entire haystack.ÁÑL�üÙLC@ Note that [`Input::span`] overrides this method and vice versa.Á¡M�d©M”Ÿ0ºM�üÂMEB This routine will panic if the given range could not be convertedÁüŒNB? to a valid [`Range`]. For example, this would panic when givenÁüÓNEB `0..=usize::MAX` since it cannot be represented using a half-openÁü�O! interval in terms of `usize`.ÁÃO�üËOKH This also panics if the given range does not correspond to valid boundsÁü›P30 in the haystack or the termination of a search.ÁÓP�lÛP¯Ö.íP�<õPþ×.ô�Q use regex_automata::Input;Á¤Q�ü¬Q%–ÿ3üÖQ(% assert_eq!(0..6, input.get_range());ÁƒR�ü‹R2/ let input = Input::new("foobar").range(2..=4);ÁüÂR(% assert_eq!(2..5, input.get_range());Á<ïRþ×.,�S¿��©)¿�Bÿ׎ÞÞ×þÆ�©) –S™$�©)”™S ݸ�©)$±SÙœrT 68üÀy6ü‡T%" Sets the anchor mode of a search.Á±T�ü¹T=: When a search is anchored (so that's [`Anchored::Yes`] orÁüûTHE [`Anchored::Pattern`]), a match must begin at the start of a search.ÁüÈUJG When a search is not anchored (that's [`Anchored::No`]), regex enginesÁü—VJG will behave as if the pattern started with a `(?s-u:.)*?`. This prefixÁüæV'$ permits a match to appear anywhere.Á’W�üšW63 By default, the anchored mode is [`Anchored::No`].ÁÕW�üÝWJG **WARNING:** this is subtly different than using a `^` at the start ofÁü¬XIF your regex. A `^` forces a regex to match exclusively at the start ofÁüúXGD a haystack, regardless of where you begin your search. In contrast,ÁüÆYFC anchoring a search will allow your regex to match anywhere in yourÁü‘ZDA haystack, but the match must start at the beginning of a search.ÁÚZ�üâZHE For example, consider the haystack `aba` and the following searches:Á¯[�ü·[HE 1. The regex `^a` is compiled with `Anchored::No` and searches `aba`Áü„\IF starting at position `2`. Since `^` requires the match to start atÁüÒ\DA the beginning of the haystack and `2 > 0`, no match is found.Áü›]HE 2. The regex `a` is compiled with `Anchored::Yes` and searches `aba`Áüè]GD starting at position `2`. This reports a match at `[2, 3]` sinceÁü´^HE the match starts where the search started. Since there is no `^`,Áü�_IF there is no requirement for the match to start at the beginning ofÁ¤Ï_ the haystack.Áüè_HE 3. The regex `a` is compiled with `Anchored::Yes` and searches `aba`Áüµ`JG starting at position `1`. Since `b` corresponds to position `1` andÁü„aGD since the search is anchored, it finds no match. While the regexÁüÐaHE matches at other positions, configuring the search to be anchoredÁü�bJG requires that it only report a match that begins at the same offsetÁüìb&# as the beginning of the search.Áü—cGD 4. The regex `a` is compiled with `Anchored::No` and searches `aba`ÁüãcEB starting at position `1`. Since the search is not anchored andÁü­dIF the regex does not start with `^`, the search executes as if thereÁüûdIF is a `(?s:.)*?` prefix that permits it to match anywhere. Thus, itÁüÉe# reports a match at `[2, 3]`.Áñe�üùeEB Note that the [`Anchored::Pattern`] mode is like `Anchored::Yes`,ÁüÃf<9 except it only reports matches for a particular pattern.Á„g�lŒg¯Ö.žg�ü¦gDA This demonstrates the differences between an anchored search andÁüïgEB a pattern that begins with `^` (as described in the above warningÁl¹h message).ÁËh�<Óhþ×.ÌßhŽØ.üýh&Ÿ¾Iü¨i Anchored, Match, Input,Á4Ìi÷Ø.×i�Ìßi let haystack = "aba";Áýi�ü…j! let re = PikeVM::new(r"^a")?;Áü«jJ¶Ú.üújGD let input = Input::new(haystack).span(2..3).anchored(Anchored::No);ÁüÆk-…¥GüøkHE // No match is found because 2 is not the beginning of the haystack,ÁüÅl  // which is what ^ requires.Áüêl'¤ß.–m�üžm  let re = PikeVM::new(r"a")?;ÁüÃmJ¶Ú.ü’nHE let input = Input::new(haystack).span(2..3).anchored(Anchored::Yes);Áüßn-…¥Gü‘oKH // An anchored search can still match anywhere in the haystack, it justÁüáoGD // must begin at the start of the search which is '2' in this case.Áü­p=: assert_eq!(Some(Match::must(0, 2..3)), caps.get_match());Áïp�ü÷p àÑ\üœqJ¶Ú.üëqHE let input = Input::new(haystack).span(1..3).anchored(Anchored::Yes);Áü¸r-…¥GüêrC@ // No match is found since we start searching at offset 1 whichÁü²sHE // corresponds to 'b'. Since there is no '(?s:.)*?' prefix, no matchÁ„ÿs // is found.Áü”t'¤ß.Àt�üÈt àÑ\üítJ¶Ú.ü¼uGD let input = Input::new(haystack).span(1..3).anchored(Anchored::No);Áüˆv-…¥GüºvHE // Since anchored=no, an implicit '(?s:.)*?' prefix was added to theÁü‡wJG // pattern. Even though the search starts at 'b', the 'match anything'ÁüÖw-* // prefix allows the search to match 'a'.Áüˆx.+ let expected = Some(Match::must(0, 2..3));Áü»x+Þ½/ëx�üóx.áß.<¦yþ×.DÇy¿�Ø¥¿�Bÿ×× ß¸$Ôy¾»9U üá‹1ü²z30 Whether to execute an "earliest" search or not.Áêz�üòzKH When running a non-overlapping search, an "earliest" search will returnÁüÂ{IF the match location as early as possible. For example, given a patternÁü�|IF of `foo[0-9]+` and a haystack of `foo12345`, a normal leftmost searchÁüÞ|IF will return `foo12345` as a match. But an "earliest" search for regexÁü¬}EB engines that support "earliest" semantics will return `foo1` as aÁüö}JG match, since as soon as the first digit following `foo` is seen, it isÁüÅ~  known to have found a match.Áê~�üò~HE Note that "earliest" semantics generally depend on the regex engine.Áü¿GD Different regex engines may determine there is a match at differentÁü‹€HE points. So there is no guarantee that "earliest" matches will alwaysÁüØ€HE return the same offsets for all regex engines. The "earliest" notionÁü¥�HE is really about when the particular regex engine determines there isÁüò�HE a match rather than a consistent semantic unto itself. This is oftenÁü¿‚FC useful for implementing "did a match occur or not" predicates, butÁüŠƒ+( sometimes the offset is useful as well.Áºƒ�üƒ ¦Ñ6çƒ�lÖ.�„�ü‰„FC This example shows the difference between "earliest" searching andÁ¬Ô„ normal searching.Áî„�<ö„þ×.ü‚…FÎáLÍ…�üÕ…(ܤIü‚†&äÎ/ü­†(•Ï/Ú†�üâ†=: // A normal search implements greediness like you expect.Áü¤‡'$ let input = Input::new("foo12345");ÁüЇ-…¥Gü‚ˆ=: assert_eq!(Some(Match::must(0, 0..8)), caps.get_match());ÁĈ�ü̈?< // When 'earliest' is enabled and the regex engine supportsÁü�‰>; // it, the search will bail once it knows a match has beenÁlÓ‰ // found.Áüå‰63 let input = Input::new("foo12345").earliest(true);Áü Š-…¥GüÒŠ=: assert_eq!(Some(Match::must(0, 0..4)), caps.get_match());Áü”‹.áß.<Ç‹þ×.Dè‹¿�¿�Bÿ×× à¸$õ‹ê V üÓ’2üÍŒ/, Set the span for this search configuration.Á���ü‰�DA This is like the [`Input::span`] method, except this mutates theÁ”Ò� span in place.Áé��üñ�>°”\ü´Ž<ø”\ìõŽ `std::ops::Range`.Á—��dŸ�”Ÿ0°��ü¸�Hƒ˜\ü…�0Õ˜\º��lÂ�¯Ö.Ô��<Ü�þ×.ôè�ã´\‹‘�ü“‘)& let mut input = Input::new("foobar");ÁüÁ‘(¥µ\Ìî‘ input.set_span(2..4);ÁüŒ’(% assert_eq!(2..4, input.get_range());Á<¹’þ×.DÚ’îC îC¿�¾§)Bÿ×�ââ ò’×”®\ ã’¥®\Tæ’ á¸¾§)$÷’ÅœpY .0ü¹ž<ü¾•?< Set the span for this search configuration given any range.Á‚–�üŠ–EB This is like the [`Input::range`] method, except this mutates theÁ”Ô–�î\ë–�üó–KÀ®\ü×Hò’\ü�˜IÄ“\TÞ˜Øñ6í˜�dõ˜”Ÿ0†™�üŽ™Eÿ°\üØ™Bα\üŸšEš²\üéš!é²\�›�ü—›JG This also panics if the given span does not correspond to valid boundsÁüæ›3õ³\žœ�l¦œ¯Ö.¸œ�<Àœþ×.ôÌœã´\ïœ�ü÷œ)“ð\ü¥�(¥µ\ÜÒ� input.set_range(2..=4);Áüò�(Ÿ¶\<Ÿžþ×.LÀžïC ïC¿��©)Bÿ׎ää áž×™¸\ Êžª¸\”Íž ã¸�©)$æžÙœü^ .0„„Ÿ,�Ÿü�«)üÞ¥GD Set the starting offset for the span for this search configuration.Áª¦�ü²¦GD This is a convenience routine for only mutating the start of a spanÁüþ¦*' without having to set the entire span.Á­§�dµ§”Ÿ0Ƨ�üΧJG This panics if the span resulting from the new start position does notÁü�¨FC correspond to valid bounds in the haystack or the termination of aÁ\訂áOø¨�l€©¯Ö.’©�<š©þ×.ô¦©ã´\É©�üÑ©)“ð\üÿ©(¥µ\¼¬ª input.set_start(5);ÁüȪ(% assert_eq!(5..6, input.get_range());Á<õªþ×.L–«ðC ðC¿�Bÿ×  «× æ¸$¥«‚Åa ü©±%ü€¬EB Set the ending offset for the span for this search configuration.Áʬ�üÒ¬EB This is a convenience routine for only mutating the end of a spanÁüœ­*´ú\Ë­�dÓ­”Ÿ0ä­�üì­HE This panics if the span resulting from the new end position does notÁü¹®Fæû\\„¯‚áO”¯�lœ¯¯Ö.®¯�<¶¯þ×.ô¯ã´\å¯�üí¯)“ð\ü›°(¥µ\¬È° input.set_end(5);Áüâ°(% assert_eq!(0..5, input.get_range());Á<�±þ×.<°±ñC ñC¿�Bÿ× ¸±× ç¸$½±’åb üÀ¶.ü”²$! Set the anchor mode of a search.Á½²�üŲB? This is like [`Input::anchored`], except it mutates the searchÁÜŒ³ configuration in place.Á¬³�l´³¯Ö.Ƴ�<γþ×.üÚ³52 use regex_automata::{Anchored, Input, PatternID};Á”´�üœ´)“ð\üÊ´30 assert_eq!(Anchored::No, input.get_anchored());Á‚µ�üе! let pid = PatternID::must(5);Áü°µ/, input.set_anchored(Anchored::Pattern(pid));Áüäµ=: assert_eq!(Anchored::Pattern(pid), input.get_anchored());Á<¦¶þ×.dǶòC òC¿�Ø¥Bÿ× Ô¶× è¸$Ù¶¾»�c üäº)üš·DA Set whether the search should execute in "earliest" mode or not.Áã·�üë·B? This is like [`Input::earliest`], except it mutates the searchÁܲ¸“…]Ò¸�lÚ¸¯Ö.ì¸�<ô¸þ×.ô€¹ã´\£¹�ü«¹)“ð\üÙ¹# assert!(!input.get_earliest());Áì�º input.set_earliest(true);Áü£º" assert!(input.get_earliest());Á<ʺþ×.dëºóC óC¿�Bÿ× øº× é¸$ýºê d üν"ü¸»C@ Return a borrow of the underlying haystack as a slice of bytes.Á€¼�lˆ¼¯Ö.š¼�<¢¼þ×.ô®¼ã´\Ѽ�üÙ¼%–ÿ3üƒ½,) assert_eq!(b"foobar", input.haystack());Á<´½þ×.DÕ½ôC ôC¿� ¸ÈšBÿ× Þ½× ê¸$ß½äŽÃü”¾-* Return the start position of this search.Áƾ�üξB? This is a convenience routine for `search.get_span().start()`.Á•¿�ü�¿DA When [`Input::is_done`] is `false`, this is guaranteed to returnÁüæ¿FC an offset that is less than or equal to [`Input::end`]. Otherwise,Áü±À2/ the offset is one greater than [`Input::end`].ÁèÀ�lðÀ¯Ö.‚Á�<ŠÁþ×.ô–Áã´\¹Á�üÁÁ%–ÿ3üëÁ! assert_eq!(0, input.start());Á‘Â�ü™Â0- let input = Input::new("foobar").span(2..4);ÁüÎÂ! assert_eq!(2, input.start());Á<ôÂþ×.,•ÃõC õC¿�Bÿ× ›Ã× ë¸$œÃÔóÇüÖÃ+( Return the end position of this search.Á†Ä�üŽÄ@= This is a convenience routine for `search.get_span().end()`.ÁÓÄ�üÛÄHE This is guaranteed to return an offset that is a valid exclusive endÁü¨Å$! bound for this input's haystack.ÁÑÅ�lÙůÖ.ëÅ�<óÅþ×.ôÿÅã´\¢Æ�üªÆ%–ÿ3üÔÆ assert_eq!(6, input.end());ÁøÆ�ü€Ç0º”]üµÇ assert_eq!(4, input.end());Á<ÙÇþ×.úÇöC öC¿�Bÿ× þÇ× ì¸$ÿÇôßÌü·È2/ Return the span for this search configuration.ÁîÈ�üöÈJG If one was not explicitly set, then the span corresponds to the entireÁÔÅÉ range of the haystack.ÁäÉ�üìÉGD When [`Input::is_done`] is `false`, the span returned is guaranteedÁü¸Ê<9 to correspond to valid bounds for this input's haystack.ÁùÊ�l�˯Ö.“Ë�<›Ëþ×.ü§Ë&# use regex_automata::{Input, Span};ÁÒË�üÚË%–ÿ3ü„Ì<9 assert_eq!(Span { start: 0, end: 6 }, input.get_span());Á<ÅÌþ×.DæÌ÷C ÷C¿�ÅžBÿ× ïÌ× í¸$ðÌüµÑ'ü�Í=: Return the span as a range for this search configuration.ÁßÍ�üçÍJ°›]Զ΄œ]ÕÎ�üÝÎHE When [`Input::is_done`] is `false`, the range returned is guaranteedÁüªÏ<ˆ�]ëÏ�lóϯÖ.…Ð�<�Ðþ×.ô™Ðã´\¼Ð�üÄÐ%–ÿ3üîÐ(¥µ\<›Ñþ×.L¼ÑøC øC¿�… Bÿ× ÆÑ× î¸$ÇÑü±Ö&üŠÒ;8 Return the anchored mode for this search configuration.ÁÊÒ�üÒÒFC If no anchored mode was set, then it defaults to [`Anchored::No`].Á�Ó�l¥Ó¯Ö.·Ó�<¿Óþ×.üËÓ5ï…]…Ô�ü�Ô)“ð\ü»Ô3ˆ]óÔ�üûÔ!–‡]ü¡Õ/‡]üÕÕ=ü‡]<—Öþ×.d¸ÖùC ùC¿�Ø¥Bÿ× ÅÖ× ï¸$ÆÖü†Ù"üûÖA> Return whether this search should execute in "earliest" mode.ÁÁ×�lÉׯÖ.Û×�<ã×þ×.ôï×ã´\’Ø�üšØ%–ÿ3üÄØ#Ô‹]<ìØþ×.d�ÙúC úC¿�Bÿ× šÙ× ð¸$›ÙìãÝüÌÙEB Return true if and only if this search can never return any otherÁd–Ú matches.Á§Ú�ü¯ÚJG This occurs when the start position of this search is greater than theÁüþÚ end position of the search.Á¢Û�lªÛ¯Ö.¼Û�<ÄÛþ×.ôÐÛã´\óÛ�üûÛ)“ð\ô©Ü assert!(!input.is_done());Á¼ÌÜ input.set_start(6);ÁôèÜø«]¼‹Ý input.set_start(7);Áì§Ý assert!(input.is_done());Á<ÉÝþ×.<êÝûC ûC¿�Bÿ× òÝ× ñ¸$óÝü”ä5üÂÞJG Returns true if and only if the given offset in this search's haystackÁü‘ß63 falls on a valid UTF-8 encoded codepoint boundary.ÁÌß�üÔßIF If the haystack is not valid UTF-8, then the behavior of this routineÁœ¢à is unspecified.Áºà�lÂà¯Ö.Ôà�üÜàEB This shows where codepoint boundaries do and don't exist in validÁT¦á¥ŒGµá�<½áþ×.ôÉáã´\ìá�üôá"…ä3ü›â'$ assert!(input.is_char_boundary(0));ÁüÇâ(% assert!(!input.is_char_boundary(1));Áüôâ(% assert!(!input.is_char_boundary(2));Áü¡ã'$ assert!(input.is_char_boundary(3));ÁüÍã(% assert!(!input.is_char_boundary(4));Á<úãþ×.„›äüC üC¿�Bÿ× ¬ä× ò¸$­äÑ “i üˆå'¸ôô¿�õ gõ�åü¶å@¹åýCþCÿC ýC¿� þC€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÿC­àBÿó ½åó õ¸$¾åœ Äåü…æ"lšæü®è;¸ø„ùøùŒ’\4ºè�’\\Ãè¿�ú®ú³è ·èüðè%$ó豞¿�Bÿ÷÷ ú¸·žý�:j LÅñÅžüýþÿ€ü‰ò#üÕñ! Returns this span as a range.Á,�ò†D †DÅž… Bÿû –òû›Î)$—òô¯óüÕòGD Returns true when this span is empty. That is, when `start >= end`.ÁD¶ó‡D ‡DÅžBÿû ¿óûßß)$ÀóÔ‰õüúó$! Returns the length of this span.Á£ô�ü«ôKH This returns `0` in precisely the cases that `is_empty` returns `true`.Á�õˆD ˆDÅžBÿû ”õûêî $•õü—÷-üÝõEB Returns true when the given offset is contained within this span.Á§ö�ü¯öFC Note that an empty span contains no offsets and will always returnÁTúö false.ÁDž÷‰D ‰DÅžBÿû §÷û ÿ$¨÷Ñ Kp ü‡ù+ü™øKH Returns a new span with `offset` added to this span's `start` and `end`Á\éø values.Á4ŽùŠD ŠDŞŞBÿû •ùû €$–ùÑ ?q ô‚úÅž‚ g‚ü§ú@ªú‹DŒD�D ‹DÅž ŒD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�D­àBÿ� ®ú� ‚$¯úœ µúü¥û$Èš„…�ý‘ý…\Ðû4ÕûƒƒÈšü÷û%,úû€ŽD ŽDȚŞÞÃ]Bÿƒ €üƒ …$�ü÷5r üÅü'Èš‡ª#‡ü�ý1L„ý€�D �DȚŞâÄ]Bÿ† Žý† ‡$“ý÷*s üßý#‰Š�ý‘ýŠ\‰þ4Žþˆˆü¯þ$,²þ€�D �DÅž‡Æ]Bÿˆ ¸þˆ Š$¹þ÷t üüþ ÅžŒ®Œü±ÿ$$´ÿ… ÅžBÿ‹‹ ŒÙœÜt ü•€ … Ž®ŽüÊ€#$̀Ş… Bÿ�� ŽÅœ…u ü¬�%Åž�ù±�üæ�*é�‘D’D ‘DÅž ’D… Bÿ� ì�� �$í�Ùœ¢v üׂ%… ’ù±’ü‘ƒ!”ƒ“D”D “D…  ”DÅžBÿ‘ —ƒ‘ ’$˜ƒÅœßw tÜ‹ö ”•–—üÄŒ:üñ‹@= Create a new half match from a pattern ID and a byte offset.ÁËŒ›†ö Bÿ““áëîN5} Ñ ?} üÀ�7ü²�@áÉ]÷��üÿ�GD This is like [`HalfMatch::new`], but accepts a `usize` instead of aÁüËŽHE [`PatternID`]. This panics if the given `usize` is not representableÁ¬˜� as a `PatternID`.Á$Ç�ö Bÿ““ •îN-~ Ñ 7~ üò’"üÆ�/, Returns the ID of the pattern that matched.Áú��ü‚‘DA The ID of a pattern is derived from the position in which it wasÁüË‘IF originally inserted into the corresponding DFA. The first pattern hasÁü™’FC identifier `0`, and each subsequent pattern is `1`, `2` and so on.Á<ù’žD žDö ›†Bÿ“ �““è� $‚“줕ô·“ The position of the match.ÁÚ“�üâ“FC If this match was produced by a forward search, then the offset isÁü­”GD exclusive. If this match was produced by a reverse search, then theÁÄù” offset is inclusive.Á4«•ŸD ŸDö Bÿ“ ²•“ à$³•Tû›‹¢™›�žŸ ¡¢£üä¡?üŒœ41 Create a new match from a pattern ID and a span.ÁÅœ�üÍœB? This constructor is generic over how a span is provided. WhileÁü”�<ø”\ìÕ�Ôî\÷��dÿ�”Ÿ0�ž�ü˜ž! This panics if `end < start`.Á¾ž�lÆž¯Ö.Øž�üàžEB This shows how to create a match for the first pattern in a regexÁüªŸ)& object using convenient range syntax.ÁØŸ�<àŸþ×.üìŸ+( use regex_automata::{Match, PatternID};Áœ �ü¤ /, let m = Match::new(PatternID::ZERO, 5..10);ÁüØ *' assert_eq!(0, m.pattern().as_usize());Á쇡 assert_eq!(5, m.start());Áä©¡ assert_eq!(10, m.end());Á<Ê¡þ×.ë¡›†׉*‹¢Bÿ˜�šš˜þÆ׉* ï¡©׉*ÅžTò¡ŽŽ*îNx… Åœƒ… .0üت<ü¶£@= Create a new match from a pattern ID and a byte offset span.Áû£�üƒ¤B‚Ô]üʤ<ø”\ì‹¥Ôî\­¥�üµ¥C@ This is like [`Match::new`], but accepts a `usize` instead of aÁüý¥HçË]¬Ê¦¹Ì]ä¦�d즔Ÿ0ý¦�ü…§B? This panics if `end < start` or if `pattern > PatternID::MAX`.Á̧�lÔ§¯Ö.æ§�üî§EB This shows how to create a match for the third pattern in a regexÁü¸¨)¸Ö]æ¨�<î¨þ×.ôú¨ use regex_automata::Match;Á�©�ü¥©" let m = Match::must(3, 5..10);ÁüÌ©*' assert_eq!(3, m.pattern().as_usize());Áìû©¸Ø]ä�ªߨ]<¾ªþ×.$ߪ׉*‹¢Bÿ˜�œœ˜ÎÚ] äªàÚ]Tçª ›׉*îN ‡ Åœ‡ (*ü’®"üÕ«/§Í]‰¬�ü‘¬DîÍ]üÚ¬FC originally inserted into the corresponding regex engine. The firstÁü¥­KH pattern has identifier `0`, and each subsequent pattern is `1`, `2` andÁTõ­ so on.Á<™®©D ©D‹¢›†Bÿ˜ ¡®˜ûê$¢®äÚ¯ü×®'$ The starting position of the match.Áƒ¯�ü‹¯<9 This is a convenience routine for `Match::span().start`.Á,ᯪD ªD‹¢Bÿ˜ 篘ºò$è¯Ô�±üž°%" The ending position of the match.ÁȰ�üа:7 This is a convenience routine for `Match::span().end`.Á¤±«D «D‹¢Bÿ˜ ¨±˜µë$©±üá².üݱ&# Returns the match span as a range.Áˆ²�ü�²>; This is a convenience routine for `Match::span().range()`.Á,責D ¬D‹¢… Bÿ˜   $ï²Ôð³ü¹³$! Returns the span for this match.Á$÷³­D ­D‹¢ÅžBÿ˜ ü³˜í�*$ý³ôáµüª´63 Returns true when the span in this match is empty.Áå´�üí´GD An empty match can only be returned when the regex itself can matchÁ¬¹µ the empty string.ÁDèµ®D ®D‹¢Bÿ˜ ñµ˜§Ú$òµÔ¼·ü¬¶%" Returns the length of this match.ÁÖ¶�üÞ¶K�»]÷¯D ¯D‹¢Bÿ˜ Ç·˜ £$È·|£ÉÓ«Œ�É̉É¡£¥¦§¨©ª«¬­®ü×Î)ü¹ÉDA Create a new set of pattern identifiers with the given capacity.Á‚Ê�üŠÊHE The given capacity typically corresponds to (at least) the number ofÁü×Ê(% patterns in a compiled regex object.Á„Ë�dŒË”Ÿ0�Ë�ü¥ËKH This panics if the given capacity exceeds [`PatternID::LIMIT`]. This isÁüõËIF impossible if you use the `pattern_len()` method as defined on any ofÁüÃÌJG the regex engines in this crate. Namely, a regex will fail to build byÁü’ÍHE returning an error if the number of patterns given to it exceeds theÁüßÍGD limit. Therefore, the number of patterns in a valid regex is alwaysÁü«Î'$ a correct capacity to provide here.ÁÞΡ£Bÿ¤¤ ¥ïŒDâμÞÑü¡Ñ85 Clear this set such that it contains no pattern IDs.Á,åÑ·D ·D¡£Bÿ¤ ëѤ ¦$ðÑüÀÓ.üðÒKH Return true if and only if the given pattern identifier is in this set.ÁDÇÓ¸D ¸D¡£›†Bÿ¤ ÐÓ¤ §$ÑÓ¾¾×Óüý×0ü¸ÔJG Insert the given pattern identifier into this set and return `true` ifÁü‡Õ85 the given pattern ID was not previously in this set.ÁÄÕ�üÌÕKH If the pattern identifier is already in this set, then this is a no-op.ÁœÖ�ü¤ÖJG Use [`PatternSet::try_insert`] for a fallible version of this routine.ÁóÖ�dûÖ”Ÿ0Œ×�ü”×@= This panics if this pattern set has insufficient capacity toÁüÙ× store the given pattern ID.Á4„عD ¹D¡£›†Bÿ¤ ‹Ø¤®ü$�ؾ¾–Øü’ÜjüšÙJÈö]üéÙ8�÷]¦Ú�ü®ÚKí÷]þÚ�d†Û¯Ö0—Û�üŸÛJG This returns an error if this pattern set has insufficient capacity toÁüîÛ˜ú]T™ÜºD ºD¡£›†å¡ Bÿ¤ ­Ü¤“ž $²Ü¾¾ÀÜô‹çü½æIF Return true if and only if this set has no pattern identifiers in it.ÁD’ç»D »D¡£Bÿ¤ ›ç¤ ª$œçìÑìüÏçIF Return true if and only if this set has the maximum number of patternÁü�èIF identifiers in the set. This occurs precisely when `PatternSet::len()Áüëè == PatternSet::capacity()`.Á�é�ü—éJG This particular property is useful to test because it may allow one toÁüæéJG stop a search earlier than you might otherwise. Namely, if a search isÁüµêIF only reporting which patterns match a haystack and if you know all ofÁüƒëHE the patterns match at a given point, then there's no new informationÁüÐëHE that can be learned by continuing the search. (Because a pattern setÁü�ì/, does not keep track of offset information.)Á<Øì¼D ¼D¡£Bÿ¤ àì¤Öž $áìÔçíü¢í@= Returns the total number of pattern identifiers in this set.Áîí½D ½D¡£Bÿ¤ òí¤ ¬$óíüåðü îFC Returns the total number of pattern identifiers that may be storedÁ„ëî in this set.Á€ï�üˆïHE This is guaranteed to be less than or equal to [`PatternID::LIMIT`].ÁÕï�üÝïKH Typically, the capacity of a pattern set matches the number of patternsÁü­ð30 in a regex object with which you are searching.ÁDìð¾D ¾D¡£Bÿ¤ õ𤠭$öðü×ò(ü«ñA> Returns an iterator over all pattern identifiers in this set.Áññ�üùñHE The iterator yields pattern identifiers in ascending order, startingÁdÆò at zero.Á$Þò¿D ¿D¡£ž-ž-ô½ -ÛËÏöàØ±Z¿DBÿ¤ ãò¤ ®$äòüòö0Ó‰|àö¼Úö–¤üÁ÷1Ó«Œ­÷̧÷–¤±¥g±üù÷@ü÷ÄDÅDÆD ÄD–¤ ÅD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÆD­àBÿ° €ø° ±$�øœ ‡øü¸ý(Ó«Œ¤ýÌžýij³ú¤´µ¶ÅQÆQÊQ¶µ½ýLçý$ìý²²›†üƒþ'$†þËD ËDú¤ܧBÿ² ‹þ² µÄ$�þü¡‚-L¤‚ÌD ÌDú¤ð›>Bÿ² ®‚² ¶Ä$¯‚ü�ƒ3Ó«Œü‚Ìö‚ĸ¸ú¤¹ÕP¹•ƒüʃ,L̓ÍD ÍDú¤ܧBÿ· ׃· ¹Ä$܃lº­Ø¥»¼üÙ±!üέKH Returns true if and only if this anchor mode corresponds to any kind ofÁ¤ž® anchored search.Á·®�l¿®¯Ö.Ñ®�üÙ®IF This examples shows that both `Anchored::Yes` and `Anchored::Pattern`Áü§¯%" are considered anchored searches.Áѯ�<Ù¯þ×.üå¯.+ use regex_automata::{Anchored, PatternID};Á˜°�ü °)& assert!(!Anchored::No.is_anchored());Áüΰ)& assert!(Anchored::Yes.is_anchored());Áüü°>; assert!(Anchored::Pattern(PatternID::ZERO).is_anchored());Á<¿±þ×.\à±ÕD ÕDØ¥Bÿº 챺ˆû $í±ü¹¶*üƲIF Returns the pattern ID associated with this configuration if it is anÁü”³IF anchored search for a specific pattern. Otherwise `None` is returned.Áâ³�l곯Ö.ü³�<„´þ×.ü�´.‡•^ô�üË´-* assert_eq!(None, Anchored::No.pattern());Áüý´.+ assert_eq!(None, Anchored::Yes.pattern());Á°µ�ü¸µ!–‡]üÞµ<9 assert_eq!(Some(pid), Anchored::Pattern(pid).pattern());Á<Ÿ¶þ×.<À¶ÖD ÖDØ¥ܧBÿº ȶº ¼$ɶt¡íù¦¾üÔí6Ó«Œ¼í̶íÌâíÞD ÞDù¦Bÿ½ üí½ ¾$ýí|ĄۆÀÁÂÃÄÅü„†.üÚ„1. Create a new error value with the given kind.Á�…�ü˜…EB This is a more verbose version of the kind-specific constructors,Áìâ… e.g., `MatchError::quit`.Á‹†ȨÛ†Bÿ¿¿ À¦$�†ü½ˆ%üƒˆ52 Returns a reference to the underlying error kind.Á$ĈæD æDÛ† æDȨBÿ¿ Ɉ¿ Á$ʈüÄ‹2ü€‰HE Create a new "quit" error. The given `byte` corresponds to the valueÁü͉KH that tripped a search's quit condition, and `offset` corresponds to theÁü�Š63 location in the haystack at which the search quit.ÁØŠ�üàŠ85 This is the same as calling `MatchError::new` with aÁü�‹" [`MatchErrorKind::Quit`] kind.Á$ˋۆBÿ¿¿’Ø —»$ЋÑ 4Ú‹ü»Ž+üÃŒGD Create a new "gave up" error. The given `offset` corresponds to theÁü��96 location in the haystack at which the search gave up.ÁÍ��üÕ�8Þ¢^ü’Ž$! [`MatchErrorKind::GaveUp`] kind.Á<ÂŽÛ†Bÿ¿¿ØÖ Ñ 4ÊŽü®‘2ü¯�JG Create a new "haystack too long" error. The given `len` corresponds toÁüþ�41 the length of the haystack that was problematic.Á·��ü¿�8Þ¢^üü�-* [`MatchErrorKind::HaystackTooLong`] kind.ÁŒµ‘Û†Bÿ¿¿ ĶǑüÚ”9ü¯’JG Create a new "unsupported anchored" error. This occurs when the callerÁüþ’FC requests a search with an anchor mode that is not supported by theÁŒÉ“øÛ=ß“�üç“8Þ¢^ü¤”1. [`MatchErrorKind::UnsupportedAnchored`] kind.Á¤á”Ø¥Û†Bÿ¿¿“Õ ¾»$ö”üëª%Ó‰|Ùª¼ÓªÛ†ü•«&ۆȥgÈü«@Å«îDïDðD îDÛ† ïD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ðD­àBÿÇ É«Ç È$Ê«œ ЫÌÞ;Ó«ŒÊ;ÌÄ;Tí;ë-ò-ø-ù-–Ó0Ð=ÉË–ÉËüÝ0…CÉ̵¢<�0î)ÉÍ,Ë0TVDØ04üè 0%|Õ 0�ªÏÐÑÒÓüŽ 00œ 0�ªBÿÎÎ ÏïŒD  0üš404¨0õD õD�ªBÿÎ ¯0Î Ð$´0 new_capacityÁdº0ôÌ0,Ú0öD öD�ªBÿÎ à0Î Ñ$å0ìË0$Ù0÷D ÷D�ªBÿÎ Þ0Î Ò$ã0üý*0d‹0øD øD�ªBÿÎ ˜0Î Ó$™0tÔ0ݪÕÖרÙÚÛÜÝÞü¾ /0Ì 0ݪBÿÔÔ ÕïŒDÐ 0üÄ#404Ò#0úD úDݪBÿÔ Ù#0Ô Ö$Þ#0û¯^dä#0üý'&0D‹(0ûD ûDݪBÿÔ ”(0Ô ×$•(0üŒ)!0š)0üD üDݪBÿÔ ž)0Ô Ø$Ÿ)0ü‘*%0DŸ*0ýD ýDݪBÿÔ ¨*0Ô Ù$©*0üù.404‡/0þD þDݪÇBÿÔ Ž/0Ô Ú$“/0ˆC™/0ü¬420Dº40ÿD ÿDݪÇBÿÔ Ã40Ô Û$Ä40ˆCÊ40ô”60,¢60€E €EݪBÿÔ ¨60Ô Ü$­60üä6.0$ò60�E �Eݪø-ø-ù-ÝÃû-óÉ j@»0¬* A�EBÿÔ ÷60Ô Ý$ø60ü¯8*0d½80‚E ‚EݪBÿÔ Ê80Ô Þ$Ë80ü²9#0ݪà gàüÜ9@0ß90ƒE„E…E ƒEݪ „E€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡…E­àBÿß ã90ß à$ä90œ ê90üü<'0Äââ¶«ãäÅQÆQä�=0Lª=0$¯=0ááÇüý=%0$€>0‰E ‰E¶«¶àBÿá …>0á äÄ$Š>0Üù;dˆ;œ–;$¥;çíîïðñü¥)1d³1Bÿèñ"˜y¹ üÕ#1LÞ1戂%Bÿñ‚+ô1å1èè¼› 1$¡ 1戂%® 1ü˜>14¦1ŠE ŠEÈš¨‹#Bÿ ´1À†#öÆ·Ç üÒC1\à1‹E ‹EÈš¨‹#Bÿ ó1Ï�#öƾΠüª!1­1æØÚBÿ¡…+—»Ó üë91\ù1ŒE ŒEÈšBÿ Œ1¾Ó)öÆÇÔ ŸÐÔ üù&,1Ôü&1æBÿš™+˜¯Õ Œ‰ü˜>; The configuration used for building a [one-pass DFA](DFA).Á×�üÛOL A one-pass DFA configuration is a simple data object that is typically usedÁü«:7 with [`Builder::configure`]. It can be cheaply cloned.Áæ�üêHE A default configuration can be created either with `Config::new`, orÁü³41 perhaps more conveniently, with [`DFA::config`].Á4”ÑæC9?”}ܵ¸óôõöì¡T¡ òòÞ×üÄ%¼Ä òòߨÔïdï òòߨü�!T� òò“ÚF­ñÑæø†øF­F­ÿ- ÿ-ÑæÑæBÿ÷ñ÷ øF­ ®òÑæú gú ® ®€.�.‚. €.Ñæ �.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‚.­àBÿùøù ú ®œ ®æ±óÑæü÷üæ±æ±ÑæBÿûû ü”Ânüž^(% A builder for a [one-pass DFA](DFA).ÁÇ^�üË^MJ This builder permits configuring options for the syntax of a pattern, theÁü™_OL NFA construction and the DFA construction. This builder is different from aÁüé_MJ general purpose regex builder in that it permits fine grain configurationÁü·`JG of the construction process. The trade off for this is complexity, andÁü‚aMJ the possibility of setting a configuration that might not make sense. ForÁüÐa1. example, there are two different UTF-8 modes:Á‚b�ü†bJG * [`syntax::Config::utf8`](crate::util::syntax::Config::utf8) controlsÁüÑbMJ whether the pattern itself can contain sub-expressions that match invalidÁTŸc¥ŒGüªcLI * [`thompson::Config::utf8`] controls whether empty matches that split aÁü÷c*' Unicode codepoint are reported or not.Á¢d�ü¦dJG Generally speaking, callers will want to either enable all of these orÁÌñd disable all of these.Á‹e�l�e¯Ö.�e�ü¡eKH This example shows how to disable UTF-8 mode in the syntax and the NFA.ÁüíeDA This is generally what you want for matching on arbitrary bytes.Á²f�<¶fþ×.ü¾f=îõ.ÌüfŽØ.Ô–gˆ·/´±g‹Õ/¬Èg«Õ/tÞgÑ·/4íg÷Ø.ôg�Üøg’Ù.ü”h2‚Ö/üÇh6¿Ö/üþh&€×/ü¥iJ¶Ú.ði�üôi0Í×/ü¥j1ÁØ/ü×j63 // Notice that `(?-u:[^b])` matches invalid UTF-8,ÁüŽk85 // but the subsequent `.*` does not! Disabling UTF-8ÁüÇk" // on the syntax permits this.Á4êkßê/üñk41 // N.B. This example does not show the impact ofÁü¦l52 // disabling UTF-8 mode on a one-pass DFA Config,ÁüÜl0- // since that only impacts regexes that canÁü�m# // produce matches of length 0.Áü±m=ïè\ïm�üóm.áß.<¢nþ×.<Ín½çg§IÔ�¯þÿtÛn4Ûn ýýÑæäŽoÓí”õnÔïnDŽo ýý·¬ê²ô½ç�†�ê²ê²ˆ. ˆ.½ç½çBÿ€³n€ �ê²€³õ½çƒ gƒ€³€³‰.Š.‹. ‰.½ç Š.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‹.­àBÿ‚ºn‚ ƒ€³œ€³ÔÒ›|Ù› Ä……ˆèÓààƒŸ»Å°†‡ˆ‰Š‹Œ�Žé›D“œ“œ „„¡éüåŸ ”åŸ „„•öܬ£l¬£ „„•öüõ¦,õ¦ „„£÷|ا$ا „„ݪlü©<ü© „„tëª4ëª „„Ñædâ«â« „„ÓŸ/¤ï¬<ï¬ „„ªÓ-ºöÄ��ˆè‘ g‘9<-º-º”.•.–. ”.ˆè •.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡–.­àBÿ�Ê›� ‘Ä-ºœ-ºtÃü‚ÉJG A one-pass DFA for executing a subset of anchored regex searches whileÁüÍÉ resolving capturing groups.ÁíÉ�üñÉGD A one-pass DFA can be built from an NFA that is one-pass. An NFA isÁü¹ÊNK one-pass when there is never any ambiguity about how to continue a search.ÁüˆËHE For example, `a*a` is not one-pass because during a search, it's notÁüÑËKH possible to know whether to continue matching the `a*` or to move on toÁü�ÌMJ the single `a`. However, `a*b` is one-pass, because for every byte in theÁüëÌ>; input, it's always clear when to move on from `a*` to `b`.ÁªÍ�ü®Í*' # Only anchored searches are supportedÁÙÍ�üÝÍNK In this crate, especially for DFAs, unanchored searches are implemented byÁü¬ÎMJ treating the pattern as if it had a `(?s-u:.)*?` prefix. While the prefixÁüúÎNK is one-pass on its own, adding anything after it, e.g., `(?s-u:.)*?a` willÁüÉÏNK make the overall pattern not one-pass. Why? Because the `(?s-u:.)` matchesÁü˜ÐKH any byte, and there is therefore ambiguity as to when the prefix shouldÁüäÐ;8 stop matching and something else should start matching.Á Ñ�ü¤ÑLI Therefore, one-pass DFAs do not support unanchored searches. In additionÁüñÑLI to many regexes simply not being one-pass, it implies that one-pass DFAsÁü¾ÒMJ have limited utility. With that said, when a one-pass DFA can be used, itÁüŒÓJG can potentially provide a dramatic speed up over alternatives like theÁü×ÓOL [`BoundedBacktracker`](crate::nfa::thompson::backtrack::BoundedBacktracker)Áü§ÔLI and the [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM). In particular,ÁüôÔMJ a one-pass DFA is the only DFA capable of reporting the spans of matchingÁ¬ÂÕ capturing groups.ÁØÕ�üÜÕLI To clarify, when we say that unanchored searches are not supported, whatÁÜ©Ö that actually means is:ÁÅÖ�üÉÖNK * The high level routines, [`DFA::is_match`] and [`DFA::captures`], alwaysÁ̘× do anchored searches.Áü²×LI * Since iterators are most useful in the context of unanchored searches,Áüÿ×,) there is no `DFA::captures_iter` method.Áü¬ØIF * For lower level routines like [`DFA::try_search`], an error will beÁüöØOL returned if the given [`Input`] is configured to do an unanchored search orÁüÆÙNK search for an invalid pattern ID. (Note that an [`Input`] is configured toÁü•ÚHE do an unanchored search by default, so just giving a `Input::new` isÁüÞÚ# guaranteed to return an error.)Á‚Û�¼†Û # Other limitationsÁžÛ�ü¢ÛHE In addition to the [configurable heap limit](Config::size_limit) andÁüëÛJG the requirement that a regex pattern be one-pass, there are some otherÁ„¶Ü limitations:ÁÇÜ�üËÜJG * There is an internal limit on the total number of explicit capturingÁü–ÝMJ groups that appear across all patterns. It is somewhat small and there isÁüäÝOL no way to configure it. If your pattern(s) exceed this limit, then buildingÁì´Þ a one-pass DFA will fail.ÁüÒÞNK * If the number of patterns exceeds an internal unconfigurable limit, thenÁü¡ßKH building a one-pass DFA will fail. This limit is quite large and you'reÁ¼íß unlikely to hit it.Áü…àMJ * If the total number of states exceeds an internal unconfigurable limit,ÁüÓàIF then building a one-pass DFA will fail. This limit is quite large andÁô�á you're unlikely to hit it.Á¼á�üÀá41 # Other examples of regexes that aren't one-passÁõá�üùáKH One particularly unfortunate example is that enabling Unicode can causeÁüÅâKH regexes that were one-pass to no longer be one-pass. Consider the regexÁü‘ãHE `(?-u)\w*\s` for example. It is one-pass because there is exactly noÁüÚãGD overlap between the ASCII definitions of `\w` and `\s`. But `\w*\s`Áü¢äLI (i.e., with Unicode enabled) is *not* one-pass because `\w` and `\s` getÁüïäOL translated to UTF-8 automatons. And while the *codepoints* in `\w` and `\s`Áü¿åMJ do not overlap, the underlying UTF-8 encodings do. Indeed, because of theÁü�æMJ overlap between UTF-8 automata, the use of Unicode character classes willÁüÛæIF tend to vastly increase the likelihood of a regex not being one-pass.Á¥ç�ü©ç63 # How does one know if a regex is one-pass or not?Áàç�üäçOL At the time of writing, the only way to know is to try and build a one-passÁü´èEB DFA. The one-pass property is checked while constructing the DFA.Áúè�üþèNK This does mean that you might potentially waste some CPU cycles and memoryÁüÍéOL by optimistically trying to build a one-pass DFA. But this is currently theÁü�êNK only way. In the future, building a one-pass DFA might be able to use someÁüìêLI heuristics to detect common violations of the one-pass property and bailÁŒ¹ë more quickly.ÁËë�¤Ïë # Resource usageÁäë�üèëLI Unlike a general DFA, a one-pass DFA has stricter bounds on its resourceÁüµìFC usage. Namely, construction of a one-pass DFA has a time and spaceÁüüìOL complexity of `O(n)`, where `n ~ nfa.states().len()`. (A general DFA's timeÁüÌíJG and space complexity is `O(2^n)`.) This smaller time bound is achievedÁü—îIF because there is at most one DFA state created for each NFA state. IfÁüáîMJ additional DFA states would be required, then the pattern is not one-passÁü¯ï and construction will fail.ÁÏï�üÓïKH Note though that currently, this DFA uses a fully dense representation.ÁüŸðNK This means that while its space complexity is no worse than an NFA, it mayÁüîðNK in practice use more memory because of higher constant factors. The reasonÁü½ñMJ for this trade off is two-fold. Firstly, a dense representation makes theÁü‹òMJ search faster. Secondly, the bigger an NFA, the more unlikely it is to beÁüÙòEB one-pass. Therefore, most one-pass DFAs are usually pretty small.ÁŸó�l£ó¯Ö.±ó�üµóOL This example shows that the one-pass DFA implements Unicode word boundariesÁü…ôLI correctly while simultaneously reporting spans for capturing groups thatÁüÒôNK participate in a match. (This is the only DFA that implements full supportÁü¡õ! for Unicode word boundaries.)ÁÃõ�<Çõþ×.üÏõ=îõ.ü�ö9ŸÊ0Çö�üËöGD let re = DFA::new(r"\b(?P\w+)[[:space:]]+(?P\w+)\b")?;Áü“÷J¶Ú.Þ÷�üâ÷B? re.captures(&mut cache, "Шерлок ХолмÑ�", &mut caps);Áü¥ø>; assert_eq!(Some(Match::must(0, 0..23)), caps.get_match());ÁüäøIF assert_eq!(Some(Span::from(0..12)), caps.get_group_by_name("first"));Áü®ùIF assert_eq!(Some(Span::from(13..23)), caps.get_group_by_name("last"));Áüøù.áß.<§úþ×.¯ú�ijú # Example: iterationÁÌú�üÐúGD Unlike other regex engines in this crate, this one does not provideÁü˜ûKH iterator search functions. This is because a one-pass DFA only supportsÁüäûNK anchored searches, and so iterator functions are generally not applicable.Á³ü�ü·ü52 However, if you know that all of your matches areÁüíü85 directly adjacent, then an iterator can be used. TheÁü¦ýNK [`util::iter::Searcher`](crate::util::iter::Searcher) type can be used forÁŒõý this purpose:Á‡þ�<‹þþ×.ü“þ=îõ.ÌÑþŽØ.Ôëþˆ·/ì†ÿ�ôRô¤ÿ Anchored, Input, Span,Á4Ãÿ÷Ø.Êÿ�üÎÿ$! let re = DFA::new(r"\w(\d)\w")?;ÁüóÿF;Süº€@= let input = Input::new("a1zb2yc3x").anchored(Anchored::Yes);Áû€�üÿ€NK let mut it = Searcher::new(input).into_captures_iter(caps, |input, caps| {ÁüÎ�30 Ok(re.try_search(&mut cache, input, caps)?)Á¤‚‚ }).infallible();Áü—‚# let caps0 = it.next().unwrap();Áü»‚;8 assert_eq!(Some(Span::from(1..2)), caps0.get_group(1));Á÷‚�üû‚.áß.<ªƒþ×. ΃¡éqjáºj>%“”•–—˜™š›œtŠ„4Š„ ’’ÑæD»†»† ’’�»´²Œ,²Œ ’’³…¤ �4 � ’’•ö¬Ï‘dÏ‘ ’’Ǥ˜“<˜“ ’’ªÓœ“•d“• ’’t†–<†– ’’¤ÜœlÜœ ’’ÔíŸœíŸ ’’ÜÃ÷¡éž†žÜÃÜÞ. ž.¡é¡éBÿ�"»ƒ� žÜÃü¼Ä(¤ÃÄ Ä  Êê+¾›>mó Ì¡¢ØÄüâÄ<âÄ ŸŸƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄéëü¤Å!¤Å ŸŸ–‰ý�Ĥ¤Êꥠg¥þýýß.à.á. ß.Êê à.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡á.­àBÿ£S´Ä£ ¥Äýœý„¥Óü›ÎNK A cache represents mutable state that a one-pass [`DFA`] requires during aÁ\ê΂áOöÎ�üúÎOL For a given one-pass DFA, its corresponding cache may be created either viaÁüÊÏNK [`DFA::create_cache`], or via [`Cache::new`]. They are equivalent in everyÁü™ÐIF way, except the former does not require explicitly importing `Cache`.ÁãÐ�üçÐKH A particular `Cache` is coupled with the one-pass DFA from which it wasÁü³ÑHE created. It may only be used with that one-pass DFA. A cache and itsÁüüÑNK allocations may be re-purposed via [`Cache::reset`], in which case, it canÁüËÒA> only be used with the new one-pass DFA (and not the old one).Á),°Ó�ë°qhlçc?s§¨üõÖ(tõÖ ¦¦çºÄ…ÙŒ…Ù ¦¦1Ž�몆ª11ã. ã.�ë�ëBÿ©T–Ó© ª1Ï��묠g¬ÏÏä.å.æ. ä.�ë å.€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡æ.­àBÿ«U�Ó« ¬ÏœÏÛÕ +T§ó éëróÔ  Iº®¯éëBÿÛÕ 8 éëBÿ­­ ®²ó ­­hhh�éëh�é벆²hhí. í.éëéëBÿ±Wƒó± ²h XŠó‘éëß’éëµÎµßßßßî. î.éëBÿ´Y�ó´ µßh “éëh “éë¸ù±¸h h ï.ð. ï.éë ð.éëBÿ·Z”ó· ¸h î h +Ö 0|ý� êì–Èí8{c&Öº»êìBÿ+Ö 8 êìBÿ¹¹ º�Ž ¹¹   ˜êì ˜ê쾆¾  ø. ø.êìêìBÿ½cè�½ ¾  dï�™êì{Ö 5Dì¯ Äíà^–:t½�ÁÂÄíBÿ{Ö 8 ÄíBÿÀÀ Áõ¯ ÀÀ÷÷÷žÄí÷žÄíņÅ÷÷ü. ü.ÄíÄíBÿÄmׯÄ Å÷ nÞ¯ŸÄíËÖ :,ˆÌ žî$zNšË{Œ'ÈÉžîBÿËÖ 8 žîBÿÇÇ ÈŽÌ Çǽ½½¤žî½¤žî̆̽½€/ €/žîžîBÿËwóËË Ì½ xúË¥žî„áÛ?LèÛ øî¡¼·"޾ÌÏdøÛ,øÛ ÎΞî7¬øîÑ gÑ77…/†/‡/ …/øî †/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‡/­àBÿÐ…ÙÛÐ Ñ7œ7¬�äü„ßEB An error that occurred during the construction of a one-pass DFA.ÁÊß�üÎßJG This error does not provide many introspection capabilities. There areÁü™à1. generally only two things you can do with it:ÁËà�üÏàGD * Obtain a human readable message via its `std::fmt::Display` impl.Áü—áJG * Access an underlying [`thompson::BuildError`] type from its `source`ÁüâáOL method via the `std::error::Error` trait. This error only occurs when usingÁü²âLI convenience routines for building a one-pass DFA directly from a patternÁ\ÿâ¶ Z‹ã�ü�ãNK When the `std` feature is enabled, this implements the `std::error::Error`ÁTÞã¹þX@TŒä¸ïb÷­±Ñs(ÒÓ¤�ä$�ä ÒÒøï«­¸ïÕ†Õ««‰/ ‰/¸ï¸ïBÿÔ†òãÔ Õ«,®¸ï× g×,,Š/‹/Œ/ Š/¸ï ‹/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ/­àBÿÖ‡ùãÖ ×,œ,œ�åAt¢å øïGÆ ‹ŸéŠÜÙÚÜÝßáãåçÚÛ×°øïBÿÝÞÏóøïBÿàâäæè× A×  ØØ Ú× ×  ×°øïBÿØØüÌ_ü»å  ØØ×°l× Al×  ØØ Ýl× l×  ÏóøïBÿØØñÍ_Äçå ØØÏól†æA ØØøïT–æ,–æ ØØ|¨æA ØØøïTºæ,ºæ ØØ|ÌæA ØØøïTÞæ$Þæ ØØôíŒðæA ØØøïd„ç,„ç ØØT˜çA ØØøïŒ¥ç¥ç ØØ¥Ó1\¯øïê†ê\\�/ �/øïøïBÿ鈎åé ê\ °øïì gì  Ž/�/�/ Ž/øï �/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�/­àBÿ뉕åë ì œ Ô´IDÆ ëñŽ O3²r/îïŒô ô Ôíí•öœÅ!4Å!Ôíí®ò}¸ëññ gñ}}™/š/›/ ™/ëñ š/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡›/­àBÿð˜¬ð ñ}œ}”¬=J\³=Ô®ò Âá4׬³ïótŽ?<Ž?Ôòò ¹®òõ gõ   /¡/¢/  /®ò ¡/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¢/­àBÿô™¤=ô õ œ t‰%üù DA A hybrid NFA/DFA (also called a "lazy DFA") for regex searching.Á¾�üÂKH A lazy DFA is a DFA that builds itself at search time. It otherwise hasÁüŽMJ very similar characteristics as a [`dense::DFA`](crate::dfa::dense::DFA).ÁüÜMJ Indeed, both support precisely the same regex features with precisely theÁœª same semantics.Á¾�üÂOL Where as a `dense::DFA` must be completely built to handle any input beforeÁü’NK it may be used for search, a lazy DFA starts off effectively empty. DuringÁüáNK a search, a lazy DFA will build itself depending on whether it has alreadyÁü°LI computed the next transition or not. If it has, then it looks a lot likeÁüýMJ a `dense::DFA` internally: it does a very fast table based access to findÁüËNK the next transition. Otherwise, if the state hasn't been computed, then itÁüšOL does determinization _for that specific transition_ to compute the next DFAÁTêƲ8õ�üùEB The main selling point of a lazy DFA is that, in practice, it hasÁü¿HE the performance profile of a `dense::DFA` without the weakness of itÁüˆIF taking worst case exponential time to build. Indeed, for each byte ofÁüÒIF input, the lazy DFA will construct as most one new DFA state. Thus, aÁüœJG lazy DFA achieves worst case `O(mn)` time for regex search (where `m ~Áüç-* pattern.len()` and `n ~ haystack.len()`).Á•�ü™)& The main downsides of a lazy DFA are:ÁÃ�üÇIF 1. It requires mutable "cache" space during search. This is where theÁü‘41 transition table, among other things, is stored.ÁüÆKH 2. In pathological cases (e.g., if the cache is too small), it will runÁü’MJ out of room and either require a bigger cache capacity or will repeatedlyÁüàLI clear the cache and thus repeatedly regenerate DFA states. Overall, thisÁü­96 will tend to be slower than a typical NFA simulation.Áç�”ë # CapabilitiesÁþ�ü‚OL Like a `dense::DFA`, a single lazy DFA fundamentally supports the followingÁ|Ò operations:Áâ�äæ 1. Detection of a match.Áüƒ&# 2. Location of the end of a match.ÁüªNK 3. In the case of a lazy DFA with multiple patterns, which pattern matchedÁÄù is reported as well.Á’�ü–LI A notable absence from the above list of capabilities is the location ofÁüãIF the *start* of a match. In order to provide both the start and end ofÁü­NK a match, *two* lazy DFAs are required. This functionality is provided by aÁüü+( [`Regex`](crate::hybrid::regex::Regex).Á¨ �l¬ ¯Ö.º �ü¾ IF This shows how to build a lazy DFA with the default configuration andÁüˆ!OL execute a search. Notice how, in contrast to a `dense::DFA`, we must createÁüØ!.+ a cache and pass it to our search routine.Á‡"�<‹"þ×.ü“"=Ù£2Ñ"�üÕ"%Ýø2üû"'ÃÀ/£#�ü§#/, let expected = Some(HalfMatch::must(0, 8));Áü×#,) assert_eq!(expected, dfa.try_search_fwd(Áü„$.ßù24³$×è/üº$.áß.<é$þ×.K”%ïòPrlÁÃèg÷øùúûüýtž%4ž%ûöö¯ø”²%²%ûöö�»tÊ%<Ê%ûöö¼Þ%LÞ%ûööÅ�¤û%<û%ûööªÓ„•&<•&ûööÚ׬«&t«&ûöö-$ºïòÿ†ÿ-$-$©/ ©/ïòïòBÿþšú$þ ÿ-$˜%»ïò� g�˜%˜%ª/«/¬/ ª/ïò «/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¬/­àBÿ€›�%€ �˜%œ˜%„ò¼üŒ¶0- A cache represents a partially computed DFA.Á½¶�üÁ¶JG A cache is the key component that differentiates a classical DFA and aÁüŒ·MJ hybrid NFA/DFA (also called a "lazy DFA"). Where a classical DFA builds aÁüÚ·KH complete transition table that can handle all possible inputs, a hybridÁü¦¸KH NFA/DFA starts with an empty transition table and builds only the partsÁüò¸OL required during search. The parts that are built are stored in a cache. ForÁü¹NK this reason, a cache is a required parameter for nearly every operation onÁt‘º a [`DFA`].Á º�ü¤º:7 Caches can be created from their corresponding DFA viaÁüߺLI [`DFA::create_cache`]. A cache can only be used with either the DFA thatÁü¬»GD created it, or the DFA that was most recently used to reset it withÁüô»KH [`Cache::reset`]. Using a cache with any other DFA may result in panicsÁÌÀ¼ or incorrect results.ÁO,ý¼ûó´¼C9.߃„…†‡ˆ‰Š‹Œ�޼¶Â,¶Âû‚‚†¦ ļÇ4¼Çû‚‚†¦ ”åÉ4åÉû‚‚Øì ´èÏdèÏû‚‚Õí œìÐ<ìÐû‚‚�ª´÷Ñ,÷Ñû‚‚•öü»Ô(¬»Ôû‚‚Þš¼û×\û×û‚‚µ÷ÌÍÚ”ÍÚû‚‚”¿Ü\¿Üû‚‚¬íßtíßû‚‚üþâ Dþâû‚‚óñ ãxÀûó�†�ãxãxç/ ç/ûóûóBÿ�¦ã¼� �ãxl{Áûó’ g’l{l{è/é/ê/ è/ûó é/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ê/­àBÿ‘§ê¼‘ ’l{œl{¬Æ™VtÍ™ûËõ{dƒRTËD”•dâ™,â™û““Lô™ô™û““Ö‰ÄËõ—†—Ö‰Ö‰ô/ ô/ËõËõBÿ–°·™– —Ö‰hŠÅËõ™ g™hŠhŠõ/ö/÷/ õ/Ëõ ö/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡÷/­àBÿ˜±¾™˜ ™hŠœhŠœ‰¢W$�¢ûÂ3›Ì3œœ›™ö× Ó¯�ëê�ž•¢™¢d£¢£¢ûšš…Á5¤µ¢,µ¢ûšš�Á5ŒÆÂ3 Ì3¡¡ ™ö¢ g¢„†�ƒŒŒù/ú/û/ ù/™ö ú/€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡û/­àBÿŸ²�¢Ÿ ¢Â3Ì3ŒœŒ´Àíe<ÇíûÂ3¤Ì3¥¥¤çö²õ/ଆɯ¦§ÏíÓídÝíÝíû££…Á5„ïí,ïíû££¾Ú5ª�ÔÂ3©Ì3ª©ªçö« g«„†�ƒª�ª��0Ž0�0 �0çö Ž0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�0­àBÿ¨Ò¸í¨ «Â3Ì3ª�œª�|ó™hTø™ûµ÷~´¸•�“ÝW­®¯²³®°±³´°ÿµ÷Bÿ$˜›hû¬¬µ÷û¬¬µ÷4÷œhû¬¬µ÷|€�€�û¬¬°ÿd‘�,‘�û¬¬½™½× h½× û¬¬ ³½× ½× û°ÿµ÷Bÿ¬¬ö�`\²Ÿû¬¬°ÿ_–×µ÷¶†¶_–_–œ0 œ0µ÷µ÷Bÿµ×䙵 ¶_–”˜Øµ÷¸ g¸”˜”˜�0ž0Ÿ0 �0µ÷ ž0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ÿ0­àBÿ·Øë™· ¸”˜œ”˜Œµ¯ü†ª30 The configuration used for building a lazy DFA.Áºª�ü¾ªJG As a convenience, [`DFA::config`] is an alias for [`Config::new`]. TheÁü‰«IF advantage of the former is that it often lets you avoid importing theÁÜÓ« `Config` type directly.Áï«�üó«KH A lazy DFA configuration is a simple data object that is typically usedÁü¿¬  with [`Builder::configure`].Áà¬�üä¬JG The default configuration guarantees that a search will never return aÁü¯­KH "gave up" or "quit" error, although it is possible for a search to failÁüû­MJ if [`Config::starts_for_each_pattern`] wasn't enabled (which it is not byÁüÉ®JG default) and an [`Anchored::Pattern`] mode is requested via [`Input`].Ái4À¯¯øýªÜ²_•ùº»¼½¾¿ÀÁÂÃÄìì²Tì²û¹¹Þ×ô�³�³û¹¹ƒ¹ ü³³%¼³³û¹¹ߨÔÞ³dÞ³û¹¹ߨüþ³#¬þ³û¹¹ߨħ´<§´û¹¹ô» üÅ´%¼Å´û¹¹ߨìð´tð´û¹¹ØÚü“µ'Ì“µû¹¹ߨüÀµ0ÌÀµû¹¹“Úüöµ.¼öµû¹¹“ÚŸÙ¯øÆ†ÆŸŸ¢0 ¢0¯ø¯øBÿÅÙ�¯Å ÆŸÌ Ú¯øÈ gÈÌ Ì £0¤0¥0 £0¯ø ¤0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¥0­àBÿÇÚ¤¯Ç ÈÌ œÌ ©©Û¯øÊ÷Ê©©©©¯øBÿÉÉ Ê”›¾ ü¬¦ IF A builder for constructing a lazy deterministic finite automaton fromÁÄö¦  regular expressions.Á�§ �ü“§ LI As a convenience, [`DFA::builder`] is an alias for [`Builder::new`]. TheÁüà§ IГ`䪨  `Builder` type directly.ÁǨ �ü˨ *' This builder provides two main things:Áö¨ �üú¨ MJ 1. It provides a few different `build` routines for actually constructingÁüÈ© @= a DFA from different kinds of inputs. The most convenient isÁü‰ª NK [`Builder::build`], which builds a DFA directly from a pattern string. TheÁüت MJ most flexible is [`Builder::build_from_nfa`], which builds a DFA straightÁ„¦«  from an NFA.Áü·« :7 2. The builder permits configuring a number of things.Áüò« JG [`Builder::configure`] is used with [`Config`] to configure aspects ofÁü½¬ HE the DFA and the construction process itself. [`Builder::syntax`] andÁü†­ NK [`Builder::thompson`] permit configuring the regex parser and Thompson NFAÁüÕ­ KH construction, respectively. The syntax and thompson configurations onlyÁü¡® .+ apply when building from a pattern string.ÁЮ �üÔ® MJ This builder always constructs a *single* lazy DFA. As such, this builderÁü¢¯ IF can only be used to construct regexes that either detect the presenceÁüì¯ GD of a match or find the end location of a match. A single DFA cannotÁü´° JG produce both the start and end of a match. For that information, use aÁüÿ° MJ [`Regex`](crate::hybrid::regex::Regex), which can be similarly configuredÁüͱ LI using [`regex::Builder`](crate::hybrid::regex::Builder). The main reasonÁüš² NK to use a DFA directly is if the end location of a match is enough for yourÁüé² LI use case. Namely, a `Regex` will construct two lazy DFAs instead of one,Áü¶³ FC since a second reverse DFA is needed to find the start of a match.Áý³ �l�´ ¯Ö.�´ �ü“´ NK This example shows how to build a lazy DFA that uses a tiny cache capacityÁüâ´ -* and completely disables Unicode. That is:Á�µ �ü”µ IF * Things such as `\w`, `.` and `\b` are no longer Unicode-aware. `\w`ÁüÞµ HE and `\b` are ASCII-only while `.` matches any byte except for `\n`Áü§¶ IF (instead of any UTF-8 encoding of a Unicode scalar value except forÁüñ¶ JG `\n`). Things that are Unicode only, such as `\pL`, are not allowed.Áü¼· JG * The pattern itself is permitted to match invalid UTF-8. For example,Áü‡¸ JG things like `[^a]` that match any byte except for `a` are permitted.ÁÒ¸ �<Ö¸ þ×.ÌÞ¸ ŽØ.Ìø¸ •þ2´’¹ ‹Õ/¬©¹ «Õ/Ì¿¹ ¼›34Ù¹ ÷Ø.๠�ää¹ Œÿ2ü�º 74 .configure(DFA::config().cache_capacity(5_000))Áü¹º 6¿Ö/üðº A> .syntax(syntax::Config::new().unicode(false).utf8(false))Áü²»  .build(r"foo[^b]ar.*")?;ÁüÓ» 'ÃÀ/û» �üÿ» 2/ let haystack = b"\xFEfoo\xFFar\xE2\x98\xFF\n";Áü²¼ 0­öRüã¼ E”ƒ3ô©½ ±Ä2Ƚ �ü̽ .áß.<û½ þ×.k<¦¾ õù9ï�nuèC ÌÍt´¾ 4´¾ ûË˯øäç¾ Óí”ξ ÔȾ Dç¾ ûËË·¬Z«ÞõùφÏZ«Z«¹0 ¹0õùõùBÿÎጾ Î ÏZ«¬ßõùÑ gѬ¬º0»0¼0 º0õù »0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¼0­àBÿÐ⓾ РѬœ¬ÜÊù ü‚ò :7 Represents the current state of an overlapping search.Á½ò �üÁò KH This is used for overlapping searches since they need to know somethingÁü�ó OL about the previous search. For example, when multiple patterns match at theÁüÝó OL same position, this state tracks the last reported pattern so that the nextÁü­ô LI search knows whether to report another matching pattern or continue withÁüúô MJ the search at the next position. Additionally, it also tracks which stateÁüÈõ '$ the last search call terminated in.Áðõ �üôõ JG This type provides little introspection capabilities. The only thing aÁü¿ö NK caller can do is construct it and pass it around to permit search routinesÁüŽ÷ JG to use it to track state, and also ask whether a match has been found.ÁÙ÷ �üÝ÷ ?< Callers should always provide a fresh state constructed viaÁü�ø NK [`OverlappingState::start`] when starting a new search. Reusing state fromÁüìø 63 a previous search may result in incorrect results.Ám„Õù ÂúHsH¹SžJÓÔÕÖ×ü°û !»û ÒÒÄÜüŠÿ "•ÿ ÒÒÿè ¤×� â� ÒÒüé„ *„ô„ ÒÒØÚÄʼn <Љ ÒÒë´áÂúÙ†Ùë´ë´Å0 Å0ÂúÂúBÿØå¬ù Ø Ùë´ÛµâÂúÛ gÛÛµÛµÆ0Ç0È0 Æ0Âú Ç0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡È0­àBÿÚæ³ù Ú ÛÛµœÛµå¸ãÂúÝÎÝå¸å¸å¸å¸É0 É0ÂúBÿÜçºù Ü Ýå¸,»äÂú,»äÂúàù±à,»,»Ê0Ë0 Ê0Âú Ë0ÂúBÿßè¾ù ß à,»î ,»¬„üIGD An error that occurs when initial construction of a lazy DFA fails.Á‘�ü•MJ A build error can occur when insufficient cache capacity is configured orÁüãLI if something about the NFA is unsupported. (For example, if one attemptsÁü°NK to build a lazy DFA without heuristic Unicode support but with an NFA thatÁüÿ&# contains a Unicode word boundary.)Á¦�üªJÞÂ_üõ1³Ã_§�ü«GüÃ_Ôó * Access an underlyingÁüŽC@ [`nfa::thompson::BuildError`](crate::nfa::thompson::BuildError)ÁüÒOL type from its `source` method via the `std::error::Error` trait. This errorÁü¢GD only occurs when using convenience routines for building a lazy DFAÁüê# directly from a pattern string.ÁŽ�ü’NïÆ_Tá¹þXoT�ØûÎið±dÓ0⤠$ Ãáá™ü÷ÃçØûä†ä÷Ã÷ÃÖ0 Ö0ØûØûBÿãíõã ä÷ÃvÄèØûæ gævÄvÄ×0Ø0Ù0 ×0Øû Ø0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ù0­àBÿåîüå ævÄœvÄœÑptÖÙüZíÊ”»¶‹Fèéëîðñéê×°™üBÿìíïñò¥Ó1™üBÿØ pØ Ãçç éØ Ø Ã×°™üBÿçç‡Ö`ÌïÃçç×°Ì� pÃçç™üt« <« Ãççd» ,» ÃççÜÏ pÃçç™ü¬í í Ãççã€^Ø p^Ø Ãçç ñ^Ø ^Ø Ã¥Ó1™üBÿçç‡Ø`d– Ãçç¥Ó1£Åé™üô†ô£Å£ÅÚ0 Ú0™ü™üBÿóïÂó ô£ÅƒÈê™üö göƒÈƒÈÛ0Ü0Ý0 Û0™ü Ü0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý0­àBÿõðÉõ öƒÈœƒÈœ’!ü�HE An error that can occur when computing the start state for a search.ÁÖ�üÚ>; Computing a start state can fail for a few reasons, eitherÁü™=: based on incorrect configuration or even based on whetherÁü×96 the look-behind byte triggers a quit state. TypicallyÁü‘:7 one does not need to handle this error if you're usingÁüÌNK [`DFA::start_state_forward`](crate::hybrid::dfa::DFA::start_state_forward)Áü›HE (or its reverse counterpart), as that routine automatically convertsÁüä@= `StartError` to a [`MatchError`](crate::MatchError) for you.Á¥�ü©%" This error may be returned by theÁüÏGD [`DFA::start_state`](crate::hybrid::dfa::DFA::start_state) routine.Á—�ü›NK This error implements the `std::error::Error` trait when the `std` featureÁ|ê is enabled.Áú�üþJG This error is marked as non-exhaustive. New variants may be added in aÁôÉ  semver compatible release.Á:Œè tT›!Òýÿa�MÙoé-øúüùûý, "ü¬!FC An error that occurs when cache inefficiency has dropped below theÁü÷!$! configured heuristic thresholds.Át„÷÷Òý|æ"ü°"-* The underlying cache error that occurred.Áæ"÷÷Õþ$ó#ü‚#IF An error that occurs when a starting configuration's look-behind byteÁôÐ# is in this DFA's quit set.Át€÷÷ÒýD¬$ü‚$! The quit byte that was found.Á$¬$÷÷œ±%üÁ$GD An error that occurs when the caller requests an anchored mode thatÁü�% isn't supported by the DFA.Át€÷÷Òýtˆ&üÏ%0- The anchored mode given that is unsupported.Á$ˆ&÷÷Ø¥üÌîÒýÿ†ÿüÌüÌâ0 â0ÒýÒýBÿþ÷ƒ!þ ÿüÌ'ÏïÒý� g�'Ï'Ïã0ä0å0 ã0Òý ä0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡å0­àBÿ€øŠ!€ �'Ïœ'쨯 üô6A> An error that occurs when cache usage has become inefficient.Á¶7�üº7HE One of the weaknesses of a lazy DFA is that it may need to clear itsÁüƒ8NK cache repeatedly if it's not big enough. If this happens too much, then itÁüÒ8IF can slow searching down significantly. A mitigation to this is to useÁüœ9LI heuristics to detect whether the cache is being used efficiently or not.Áüé963 If not, then a lazy DFA can return a `CacheError`.Á :�ü¤:<9 The default configuration of a lazy DFA in this crate isÁüá:;8 set such that a `CacheError` will never occur. Instead,Áü�;:7 callers must opt into this behavior with settings likeÁüØ;eb [`dfa::Config::minimum_cache_clear_count`](crate::hybrid::dfa::Config::minimum_cache_clear_count)Á<¾< andÁüÆÕþÚª¥âù ;ƒ„ÕþBÿ®Ø 6ÃÕþBÿ‚‚ ƒµ>‚—ÒõÕþ†††—Ò—Òê0 ê0ÕþÕþBÿ…ƒ�>… †—ÒàÒöÕþˆ gˆàÒàÒë0ì0í0 ë0Õþ ì0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡í0­àBÿ‡„—>‡ ˆàÒœàÒýØ ü;8 A state identifier specifically tailored for lazy DFAs.Á<�ü@OL A lazy state ID logically represents a pointer to a DFA state. In practice,Áü�IF by limiting the number of DFA states it can address, it reserves someÁüÚJG bits of its representation to encode some additional information. ThatÁü¥HE additional information is called a "tag." That tag is used to recordÁüîLI whether the state it points to is an unknown, dead, quit, start or matchÁT»Ʋ8Æ�üÊGD When implementing a low level search routine with a lazy DFA, it isÁü’HE necessary to query the type of the current state to know what to do:ÁÛ�üß<9 * **Unknown** - The state has not yet been computed. TheÁüœ=: parameters used to get this state ID must be re-passed toÁüÚNK [`DFA::next_state`](crate::hybrid::dfa::DFA::next_state), which will neverÁü© return an unknown state ID.ÁüÉOL * **Dead** - A dead state only has transitions to itself. It indicates thatÁü™NK the search cannot do anything else and should stop with whatever result itÁDè has.ÁüñKH * **Quit** - A quit state indicates that the automaton could not answerÁü½OL whether a match exists or not. Correct search implementations must return aÁü� JG [`MatchError::quit`](crate::MatchError::quit) when a DFA enters a quitÁTØ Ʋ8üã GD * **Start** - A start state is a state in which a search can begin.Áü« B? Lazy DFAs usually have more than one start state. Branching onÁüî EB this isn't required for correctness, but a common optimization isÁü´ DA to run a prefilter when a search enters a start state. Note thatÁüù HE start states are *not* tagged automatically, and one must enable theÁü \Y [`Config::specialize_start_states`](crate::hybrid::dfa::Config::specialize_start_states)ÁüŸ A> setting for start states to be tagged. The reason for this isÁüá LI that a DFA search loop is usually written to execute a prefilter once itÁü®LI enters a start state. But if there is no prefilter, this handling can beÁüûOL quite disastrous as the DFA may ping-pong between the special handling codeÁüËNK and a possible optimized hot path for handling untagged states. When startÁüšKH states aren't specialized, then they are untagged and remain in the hotÁLæ path.ÁüðFC * **Match** - A match state indicates that a match has been found.Áü·KH Depending on the semantics of your search implementation, it may eitherÁüƒLI continue until the end of the haystack or a dead state, or it might quitÁüÐ%" and return the match immediately.Áö�üúKH As an optimization, the [`is_tagged`](LazyStateID::is_tagged) predicateÁüÆLI can be used to determine if a tag exists at all. This is useful to avoidÁü“@= branching on all of the above types for every byte searched.ÁÔ�lدÖ.æ�üêKH This example shows how `LazyStateID` can be used to implement a correctÁü¶MJ search routine with minimal branching. In particular, this search routineÁü„KH implements "leftmost" matching, which means that it doesn't immediatelyÁüÐMJ stop once a match is found. Instead, it continues until it reaches a deadÁTžƲ8©�ü­>; Notice also how a correct search implementation deals withÁüìB? [`CacheError`](crate::hybrid::CacheError)s returned by some ofÁü¯A> the lazy DFA routines. When a `CacheError` occurs, it returnsÁüñ85 [`MatchError::gave_up`](crate::MatchError::gave_up).Áª�<®þ×.̶ŽØ.üÐ" hybrid::dfa::{Cache, DFA},Áüó%" HalfMatch, MatchError, Input,Á4™÷Ø. �ܤ fn find_leftmost_first(Á”À dfa: &DFA,ÁÔÓ cache: &mut Cache,ÁÄî haystack: &[u8],Áü‡0- ) -> Result, MatchError> {Áü¸KH // The start state is determined by inspecting the position and theÁü„JG // initial bytes of the haystack. Note that start states can neverÁüÏGD // be match states (since DFAs in this crate delay matches by 1Áü—JG // byte), so we don't need to check if the start state is a match.Áüâ.+ let mut sid = dfa.start_state_forward(Á”‘ cache,Áü¤" &Input::new(haystack),Á\Ç )?;ÁüÓ" let mut last_match = None;ÁüöJG // Walk all the bytes in the haystack. We can quit early if we seeÁüÁFC // a dead or a quit state. The former means the automaton willÁüˆ IF // never transition to any other state. The latter means that theÁüÒ DA // automaton entered a condition in which its search failed.Áü—!41 for (i, &b) in haystack.iter().enumerate() {Á¬Ì! sid = dfaÁüâ!*' .next_state(cache, sid, b)Áü�"63 .map_err(|_| MatchError::gave_up(i))?;ÁüÄ"  if sid.is_tagged() {Áüå"# if sid.is_match() {Áü‰#52 last_match = Some(HalfMatch::new(Áü¿#96 dfa.match_pattern(cache, sid, 0),ÁÔù# i,Á¼”$ ));Áü¬$)& } else if sid.is_dead() {ÁüÖ$*' return Ok(last_match);Áü�%)& } else if sid.is_quit() {Áü«%FC // It is possible to enter into a quit state afterÁüò%GD // observing a match has occurred. In that case, weÁüº&C@ // should return the match instead of an error.Áüþ&-* if last_match.is_some() {Áü¬'.+ return Ok(last_match);Á¬Û' }Áüñ'74 return Err(MatchError::quit(b, i));ÁŒ©(ñ®3ü»(KH // Implementors may also want to check for start states andÁü‡)MJ // handle them differently for performance reasons. But it isÁüÕ)MJ // not necessary for correctness. Note that in order to checkÁü£*>; // for start states, you'll need to enable theÁüâ*IF // 'specialize_start_states' config knob, otherwise startÁü¬+-* // states will not be tagged.ÁlÚ+Œ¯3Lè+£¯3üò+KH // Matches are always delayed by 1 byte, so we must explicitly walkÁü¾,A> // the special "EOI" transition at the end of the search.ÁŒ€- sid = dfaÁü’-'$ .next_eoi_state(cache, sid)Áüº-?< .map_err(|_| MatchError::gave_up(haystack.len()))?;ÁÜú- if sid.is_match() {Áü–.-* last_match = Some(HalfMatch::new(ÁüÄ.1. dfa.match_pattern(cache, sid, 0),Áüö. haystack.len(),Á|–/ ));ÁL¦/£¯3´°/ Ok(last_match)Á,Ç/¶¯3Í/�üÑ/LI // We use a greedy '+' operator to show how the search doesn't just stopÁüž0HE // once a match is detected. It continues extending the match. UsingÁüç0GD // '[a-z]+?' would also work as expected and stop the search early.Áü¯1.+ // Greediness is built into the automaton.ÁüÞ1#–—7ü‚2'ÃÀ/üª20Ï‘7üÛ2HE let mat = find_leftmost_first(&dfa, &mut cache, haystack)?.unwrap();Áü¤3,) assert_eq!(mat.pattern().as_usize(), 0);ÁüÑ3! assert_eq!(mat.offset(), 10);Áó3�ü÷3DA // Here's another example that tests our handling of the specialÁü¼4FC // EOI transition. This will fail to find a match if we don't callÁüƒ5LI // 'next_eoi_state' at the end of the search since the match isn't foundÁüÐ5,) // until the final byte in the haystack.Áüý5%" let dfa = DFA::new(r"[0-9]{4}")?;Áü£6'ÃÀ/üË60Ï‘7üü6H­°aüÅ7,ÿ°aüò7! assert_eq!(mat.offset(), 15);Á”8�ü˜8HE // And note that our search implementation above automatically worksÁüá8KH // with multi-DFAs. Namely, `dfa.match_pattern(match_state, 0)` selectsÁü­9)& // the appropriate pattern ID for us.Áü×963 let dfa = DFA::new_many(&[r"[a-z]+", r"[0-9]+"])?;ÁüŽ:'ÃÀ/ü¶:0Ï‘7üç:H­°aü°;,) assert_eq!(mat.pattern().as_usize(), 1);ÁüÝ;  assert_eq!(mat.offset(), 3);Áüþ;NK let mat = find_leftmost_first(&dfa, &mut cache, &haystack[3..])?.unwrap();ÁüÍ<,ÿ°aüú<  assert_eq!(mat.offset(), 7);Áü›=OL let mat = find_leftmost_first(&dfa, &mut cache, &haystack[10..])?.unwrap();Áüë=,ø·aü˜>  assert_eq!(mat.offset(), 5);Á¹>�ü½>.áß.<ì>þ×.|\Ó?°ÿ49߯i튋°ÿBÿýØ 6ß°ÿBÿ‰‰ Šß?߉‰éÓéÓéÓø°ÿéÓø°ÿކŽéÓéÓñ0 ñ0°ÿ°ÿBÿ�‡‚?� ŽéÓ ˆ‰?ù°ÿKÔú°ÿ‘ g‘KÔKÔò0ó0ô0 ò0°ÿ ó0€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ô0­àBÿ�‰�?� ‘KÔœKÔxÕû°ÿ“÷“xÕxÕ°ÿBÿ’’ “éÕü°ÿ•ΕéÕéÕéÕéÕõ0 õ0°ÿBÿ”‹Ÿ?” •éÕ`Öý°ÿ—üh—`Ö`Öö0÷0 ö0°ÿ ÷0Ò­ Bÿ–ÿ˜˜Œ£?–þÆÒ­ `ÖƒiÒ­ `Ö —Ò­ `Öƒ`Ö`Ö`Ö+×þ°ÿ+×þ°ÿ›ù±›+×+×ø0ù0 ø0°ÿ ù0°ÿBÿš�©?š ›+×î +׈×ÿ°ÿ�±²�ˆ×ˆ×ú0û0 ú0°ÿ û0°ÿʱ BÿœŽ´?œ �ˆ×î ˆ×MÙ€°ÿŸîŸMÙMÙü0ý0 ü0°ÿ ý0°ÿİ Bÿž�À?ž ŸMÙî MÙüÖm"}„èmã€ndMÚ…¡tÿmLÿmß  "ó�〣†£"ó"ó‹1 ‹1ã€ã€Bÿ¢�¸m¢ £"óšó‚〥 g¥šóšóŒ1�1Ž1 Œ1〠�1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ž1­àBÿ¤‘¿m¤ ¥šóœšóÖôƒã€§Î§ÖôÖôÖôÖô�1 �1ã€Bÿ¦’Æm¦ §Öô_õ„ã€_õ„〪ù±ª_õ_õ�1‘1 �1〠‘1ã€Bÿ©“Êm© ª_õî _õ„šüÈLI A regular expression that uses hybrid NFA/DFAs (also called "lazy DFAs")Á”• for searching.Á¨�ü¬MJ A regular expression is comprised of two lazy DFAs, a "forward" DFA and aÁüúJG "reverse" DFA. The forward DFA is responsible for detecting the end ofÁüÅHE a match while the reverse DFA is responsible for detecting the startÁüŽ GD of a match. Thus, in order to find the bounds of any given match, aÁüÖ JG forward search must first be run followed by a reverse search. A matchÁü¡ KH found by the forward DFA guarantees that the reverse DFA will also findÁdí  a match.Áú �Œþ  # FallibilityÁ� �ü” JG Most of the search routines defined on this type will _panic_ when theÁüß MJ underlying search fails. This might be because the DFA gave up because itÁü­ KH saw a quit byte, whether configured explicitly or via heuristic UnicodeÁüù LI word boundary support, although neither are enabled by default. It mightÁüÆ OL also fail if the underlying DFA determines it isn't making effective use ofÁü–MJ the cache (which also never happens by default). Or it might fail becauseÁüäOL an invalid `Input` configuration is given, for example, with an unsupportedÁ´´ [`Anchored`] mode.ÁË�üÏOL If you need to handle these error cases instead of allowing them to triggerÁüŸOL a panic, then the lower level [`Regex::try_search`] provides a fallible APIÁ´ï that never panics.Á†�lНÖ.˜�üœF•ò6üãJG `\n` byte, and handle the error returned. This could be useful if, forÁü®HE example, you wanted to prevent a user supplied pattern from matchingÁÜ÷ across a line boundary.Á“�<—þ×.üŸ=îõ.üÝIF use regex_automata::{hybrid::{dfa, regex::Regex}, Input, MatchError};Á§�ì«úú8üÉ2/ .dfa(dfa::Config::new().quit(b'\n', true))Áüü#Óõ6ü &äÎ/Ç�üË'$ let input = Input::new("foo\nbar");ÁüóHÅö6ü¼G˜÷6ü„=ê÷6üÂ.²ø6üñ=: let got = re.try_search(&mut cache, &input).unwrap_err();Áô¯±Ä2Î�üÒ.áß.<�þ×.,¥á�õÈÂùdo¬­dö<öü««ïòd•<•ü««ïòºõ†á�¯ g¯ºõºõ–1—1˜1 –1á� —1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡˜1­àBÿ®–’® ¯ºõœºõüѱ"ü¦­JG An iterator over all non-overlapping matches for an infallible search.Áñ­�üõ­OL The iterator yields a [`Match`] value until no more matches could be found.ÁüÅ®IF If the underlying regex engine returns an error, then a panic occurs.Á�¯�ü“¯+( The lifetime parameters are as follows:Á¿¯�üï74 * `'r` represents the lifetime of the regex object.Áüû¯B? * `'h` represents the lifetime of the haystack being searched.Áü¾°63 * `'c` represents the lifetime of the regex cache.Áõ°�üù°FC This iterator can be created with the [`Regex::find_iter`] method.Áƒ\ܱæG±Ì3²¸³²±³£‚K}ŒgÒÊb´µ¶è±ì±ð±lú±ú±ü°° æGá�¤�²,�²ü°° Ì3�ƒ´§²§²ü°°³'³'É�µ'–`«¶'é�«RU6m©ü\>¸é ŒæG¸Ì3¹¸º¹º¸£‚» g»é é ¬1­1®1 ¬1£‚ ­1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡®1­àBÿ· ɱ· »æGÌ3¸é œé „Ü»üδDA A cache represents a partially computed forward and reverse DFA.Á“µ�ü—µJëõ_üâµMÀö_ü°¶K˜÷_üü¶Kî÷_üÈ·OÄø_ü˜¸Nžù_„ç¸ a [`Regex`].Áø¸�üü¸>; Caches can be created from their corresponding `Regex` viaÁü»¹MJ [`Regex::create_cache`]. A cache can only be used with either the `Regex`Áü‰ºKH that created it, or the `Regex` that was most recently used to reset itÁüÕºMJ with [`Cache::reset`]. Using a cache with any other `Regex` may result inÁü£»  panics or incorrect results.Á„,ç»�ƒØ�oýQœÁ½¾œó»<ó»ü¼¼û󜌼<Œ¼ü¼¼ûó°��ƒÀ gÀ°°°1±1²1 °1�ƒ ±1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡²1­àBÿ¿¡Í»¿ À°œ°ÄŽ�ƒÂ†ÂÄij1 ³1�ƒ�ƒBÿÁ¢Ô»Á ÂÄ”òëüâØ41 A builder for a regex based on a hybrid NFA/DFA.Á—Ù�ü›ÙMÄÉ^üéÙOL NFA construction, the lazy DFA construction and finally the regex searchingÁü¹ÚJG itself. This builder is different from a general purpose regex builderÁü„ÛLI in that it permits fine grain configuration of the construction process.ÁüÑÛJG The trade off for this is complexity, and the possibility of setting aÁüœÜGD configuration that might not make sense. For example, there are twoÁÔäÜ different UTF-8 modes:ÁÿÜ�üƒÝJ½Í^üÎÝM‘Î^TœÞ¥ŒGü§ÞLI * [`thompson::Config::utf8`] controls how the regex iterators themselvesÁüôÞKH advance the starting position of the next search when a match with zeroÁ¤Àß length is found.ÁÕß�üÙßJ‹Ð^̤àÞÐ^¾à�üÂàGD Internally, building a regex requires building two hybrid NFA/DFAs,ÁüŠáLI where one is responsible for finding the end of a match and the other isÁü×áLI responsible for finding the start of a match. If you only need to detectÁü¤âNK whether something matched, or only the end of a match, then you should useÁüóâMJ a [`dfa::Builder`] to construct a single hybrid NFA/DFA, which is cheaperÁôÁã than building two of them.Áàã�läã¯Ö.òã�üöãLI This example shows how to disable UTF-8 mode in the syntax and the regexÁüÃäLI itself. This is generally what you want for matching on arbitrary bytes.Á�å�<”åþ×.üœå=îõ.ÌÚåŽØ.üôåA—ú84¶æ÷Ø.½æ�ìÁæúú8üßæ2‚Ö/ü’ç6¿Ö/üÉç&€×/üðç&äÎ/—è�ü›è4åû8üÐè.£ü8üÿè,Ûü8ô¬é±Ä2üËé6·Ô^ü‚ê8÷Ô^ü»ê"¹Õ^üÞê@= assert_eq!(b"foo\xFFarzz", &haystack[got.unwrap().range()]);ÁŸë�ü£ë.áß.<Òëþ×.…<ýë݃ªA8ŒÄŒ‹ì‹ìüÃÃõùº�݃Ɔƺº¾1 ¾1݃݃BÿÅ£ãëŠƺ5�݃È gÈ55¿1À1Á1 ¿1݃ À1€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Á1­àBÿǤêëÇ È5œ5¬€ üW> ; An error that occurs when construction of a `Regex` fails.Á– �üšF C A build error is generally a result of one of two possible failureÁüáG D modes. First is a parse or syntax error in the concrete syntax of aÁü©L I pattern. Second is that the construction of the underlying regex matcherÁüöF C fails, usually because it gets too big with respect to limits likeÁü½D A [`Config::nfa_size_limit`](crate::meta::Config::nfa_size_limit).Á‚ �ü†H E This error provides very little introspection capabilities. You can:ÁÏ �üÓK H * Ask for the [`PatternID`] of the pattern that caused an error, if oneÁüŸN K is available. This is available for things like syntax errors, but not forÁüî* ' cases where build limits are exceeded.Áü™L I * Ask for the underlying syntax error, but only if the error is a syntaxÁTæ ¸ÄEüñM J * Ask for a human readable message corresponding to the underlying error.Áü¿C @ * The `BuildError::source` method (from the `std::error::Error`ÁüƒM J trait implementation) may be used to query for an underlying error if oneÁüÑF C exists. There are no API guarantees about which error is returned.Á˜ �üœ K H When the `std` feature is enabled, this implements `std::error::Error`.ÁšT‹ ©„Ê—]&­�ʤœ $œ öÉÉꄆ µ©„̆̆ † ƒ2 ƒ2©„©„BÿËíñ Ë Ì† !¶©„ΠgÎ!!„2…2†2 „2©„ …2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡†2­àBÿÍîø Í Î!œ!œÍ ›tÒ öê„Á}=R'W�öÐÓÔÑÒÔÕ×°ê„Bÿ4ç ›öÏÏê„tð ð öÏÏ›†Ä€ € öÏÏÐÆ LÙ ›LÙ öÏÏ ÔLÙ LÙ ö×°ê„BÿÏÏâ”b̤ öÏÏ×°2"·ê„׆×2"2"‡2 ‡2ê„ê„BÿÖï¾ Ö ×2"’$¸ê„Ù gÙ’$’$ˆ2‰2Š2 ˆ2ê„ ‰2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Š2­àBÿØðÅ Ø Ù’$œ’$ÔÏ' žTß' ì…]Óšl ¶I�ÛÜÞßÜÝ•‡ì…Bÿßàô‡ì…BÿœÙ žœÙ ÚÚ ÜœÙ œÙ •‡ì…BÿÚÚú˜bœú' ÚÚ•‡ìÙ žìÙ ÚÚ ßìÙ ìÙ ô‡ì…BÿÚÚî™bt™( ÚÚô‡X'»ì…â gâX'X'’2“2”2 ’2ì… “2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡”2­àBÿáõÇ' á âX'œX'<Ú ŸœÅ. •‡拎¦6%8ä啇Bÿ<Ú 7ö•‡Bÿãã äÙ. öãã…)¼•‡ç gç…)…)˜2™2š2 ˜2•‡ ™2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡š2­àBÿæö«. æ ç…)œ…)üÌ8 ¡tÞ8 ô‡”?‰Ï†n›jéló8 4ó8 öèè‰*¾ô‡ë gë‰*‰*ž2Ÿ2 2 ž2ô‡ Ÿ2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ 2­àBÿêùÄ8 ê ë‰*œ‰*„¶OüùHE A regex matcher that works by composing several other regex matchersÁ”  automatically.ÁÕ �üÙ JG In effect, a meta regex papers over a lot of the quirks or performanceÁü¤ OL problems in each of the regex engines in this crate. Its goal is to provideÁüô OL an infallible and simple API that "just does the right thing" in the commonÁLÄ  case.ÁÎ �üÒ IF A meta regex is the implementation of a `Regex` in the `regex` crate.Áüœ JG Indeed, the `regex` crate API is essentially just a light wrapper overÁüç @= this type. This includes the `regex` crate's `RegexSet` API!Á¨ �Œ¬  # CompositionÁ¾ �ü IF This is called a "meta" matcher precisely because it uses other regexÁüŒHE matchers to provide a convenient high level regex API. Here are someÁüÕ63 examples of how other regex matchers are composed:ÁŒ�ü�>; * When calling [`Regex::captures`], instead of immediatelyÁüÏ;8 running a slower but more capable regex engine like theÁü‹KH [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM), the meta regex engineÁü×NK will usually first look for the bounds of a match with a higher throughputÁü¦MJ regex engine like a [lazy DFA](crate::hybrid). Only when a match is foundÁüôLI is a slower engine like `PikeVM` used to find the matching span for eachÁ”Á capture group.ÁüÔEB * While higher throughout engines like the lazy DFA cannot handleÁüšLI Unicode word boundaries in general, they can still be used on pure ASCIIÁüçMJ haystacks by pretending that Unicode word boundaries are just plain ASCIIÁüµOL word boundaries. However, if a haystack is not ASCII, the meta regex engineÁü…OL will automatically switch to a (possibly slower) regex engine that supportsÁüÕ'$ Unicode word boundaries in general.ÁüýMJ * In some cases where a regex pattern is just a simple literal or a smallÁüËJG set of literals, an actual regex engine won't be used at all. Instead,Áü–DA substring or multi-substring search algorithms will be employed.ÁÛ�üßJG There are many other forms of composition happening too, but the aboveÁüªKH should give a general idea. In particular, it may perhaps be surprisingÁüöNK that *multiple* regex engines might get executed for a single search. ThatÁüÅKH is, the decision of what regex engine to use is not _just_ based on theÁü‘JG pattern, but also based on the dynamic execution of the search itself.ÁÜ�üàKH The primary reason for this composition is performance. The fundamentalÁü¬LI tension is that the faster engines tend to be less capable, and the moreÁüù&# capable engines tend to be slower.Á �ü¤IF Note that the forms of composition that are allowed are determined byÁüîOL compile time crate features and configuration. For example, if the `hybrid`Áü¾OL feature isn't enabled, or if [`Config::hybrid`] has been disabled, then theÁüŽ0- meta regex engine will never use a lazy DFA.Á¿�üÃ! # Synchronization and cloningÁå�üéHE Most of the regex engines in this crate require some kind of mutableÁü²KH "scratch" space to read and write from while performing a search. SinceÁüþIF a meta regex composes these regex engines, a meta regex also requiresÁüÈ DA mutable scratch space. This scratch space is called a [`Cache`].Á�!�ü‘!KH Most regex engines _also_ usually have a read-only component, typicallyÁüÝ!2/ a [Thompson `NFA`](crate::nfa::thompson::NFA).Á�"�ü”"JG In order to make the `Regex` API convenient, most of the routines hideÁüß"HE the fact that a `Cache` is needed at all. To achieve this, a [memoryÁü¨#IF pool](crate::util::pool::Pool) is used internally to retrieve `Cache`Áüò#MJ values in a thread safe way that also permits reuse. This in turn impliesÁüÀ$NK that every such search call requires some form of synchronization. UsuallyÁü�%LI this synchronization is fast enough to not notice, but in some cases, itÁüÜ%LI can be a bottleneck. This typically occurs when all of the following areÁL©& true:Á³&�ü·&HE * The same `Regex` is shared across multiple threads simultaneously,Áü€'LI usually via a [`util::lazy::Lazy`](crate::util::lazy::Lazy) or somethingÁüÍ'96 similar from the `once_cell` or `lazy_static` crates.Áü‡(@= * The primary unit of work in each thread is a regex search.ÁüÈ(/, * Searches are run on very short haystacks.Áø(�üü(JG This particular case can lead to high contention on the pool used by aÁüÇ)JG `Regex` internally, which can in turn increase latency to a noticeableÁü’*DA effect. This cost can be mitigated in one of the following ways:Á×*�üÛ*MJ * Use a distinct copy of a `Regex` in each thread, usually by cloning it.Áü©+KH Cloning a `Regex` _does not_ do a deep copy of its read-only component.Áüõ+IF But it does lead to each `Regex` having its own memory pool, which inÁü¿,PM turn eliminates the problem of contention. In general, this technique shouldÁü�-OL not result in any additional memory usage when compared to sharing the sameÁüà-30 `Regex` across multiple threads simultaneously.Áü”.MJ * Use lower level APIs, like [`Regex::search_with`], which permit passingÁüâ.MJ a `Cache` explicitly. In this case, it is up to you to determine how bestÁü°/NK to provide a `Cache`. For example, you might put a `Cache` in thread-localÁüÿ/+( storage if your use case allows for it.Á«0�ü¯0IF Overall, this is an issue that happens rarely in practice, but it canÁ\ù0 happen.Á…1�ü‰185 # Warning: spin-locks may be used in alloc-only modeÁÂ1�üÆ1NK When this crate is built without the `std` feature and the high level APIsÁü•2NK on a `Regex` are used, then a spin-lock will be used to synchronize accessÁüä2JG to an internal pool of `Cache` values. This may be undesirable becauseÁü¯3IF a spin-lock is [effectively impossible to implement correctly in userÁüù3LI space][spinlocks-are-bad]. That is, more concretely, the spin-lock couldÁÌÆ4 result in a deadlock.Áà4�üä4_\ [spinlocks-are-bad]: https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.htmlÁÄ5�üÈ5IF If one wants to avoid the use of spin-locks when the `std` feature isÁü’6LI disabled, then you must use APIs that accept a `Cache` value explicitly.Áüß6(% For example, [`Regex::search_with`].Áˆ7�lŒ7¯Ö.š7�<ž7þ×.ü¦7$‚Ÿ;Ë7�üÏ7:7 let re = Regex::new(r"^[0-9]{4}-[0-9]{2}-[0-9]{2}$")?;ÁüŠ8'$ assert!(re.is_match("2010-03-14"));Á²8�ü¶8.áß.<å8þ×.í8�ôñ8 # Example: anchored searchÁ�9�ü”9HE This example shows how to use [`Input::anchored`] to run an anchoredÁüÝ9JG search, even when the regex pattern itself isn't anchored. An anchoredÁü¨:LI search guarantees that if a match is found, then the start offset of theÁüõ:DA match corresponds to the offset at which the search was started.Áº;�<¾;þ×.üÆ;>; use regex_automata::{meta::Regex, Anchored, Input, Match};Á…<�ü‰<%" let re = Regex::new(r"\bfoo\b")?;Áü¯FC // surrounding context into account, even if it means looking backÁü€?'$ // before the start of your search.Ą́? let hay = "xxfoo xx";ÁüÂ?C@ let input = Input::new(hay).range(2..).anchored(Anchored::Yes);Áü†@%" assert_eq!(None, re.find(input));Áü¬@A> // Indeed, you cannot achieve the above by simply slicing theÁüî@<9 // haystack itself, since the regex engine can't see theÁü«A?< // surrounding context. This is why 'Input' permits settingÁôëA // the bounds of a search!ÁüŠB>; let input = Input::new(&hay[2..]).anchored(Anchored::Yes);ÁlÉB // WRONG!Áü×B;8 assert_eq!(Some(Match::must(0, 0..3)), re.find(input));Á“C�ü—C.áß.<ÆCþ×.ÎC�ôÒC # Example: earliest searchÁñC�üõCJG This example shows how to use [`Input::earliest`] to run a search thatÁüÀD96 might stop before finding the typical leftmost match.ÁúD�<þDþ×.ü†E>îÚbÅE�üÉE(% let re = Regex::new(r"[a-z]{3}|b")?;ÁüòE1. let input = Input::new("abc").earliest(true);Áü¤F;8 assert_eq!(Some(Match::must(0, 1..2)), re.find(input));ÁàF�üäFFC // Note that "earliest" isn't really a match semantic unto itself.Áü«GDA // Instead, it is merely an instruction to whatever regex engineÁüðGC@ // gets used internally to quit as soon as it can. For example,Áü´HA> // this regex uses a different search technique, and winds upÁüöH/, // producing a different (but valid) match!Áü¦I# let re = Regex::new(r"abc|b")?;ÁüÊI1ÌæbüüI;¥ãb¸J�ü¼J.áß.<ëJþ×.óJ�ü÷J)�£;¡K�ü¥KJ£;üðK(—¤;™L�<�Lþ×.ü¥L;Û˜;áL�ìåLúú8üƒM7�¥;ü»M<Ñ¥;ÔøM—¦;ä“N»¦;ü°N9â¦;êN�üîN.áß.<�Oþ×.­,ÁOÞˆ‹(¥&1Cíî„öOöOÛììîØ |ðU$ðUÛìì ÷:°+ÔÞˆð gð°+°+Æ2Ç2È2 Æ2Þˆ Ç2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡È2­àBÿï¡®Oï ð°+œ°+löV®4ýVÛ¢‰Q™ó=eI,òóÄßZ,ßZÛññàù@|•_$•_Ûñññ‰V.Õ¢‰õ gõV.V.É2Ê2Ë2 É2¢‰ Ê2€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ë2­àBÿô¢îVô õV.œV.ŒÚ ¯LÞÐñ‰?ÿ¾œÊcÙ÷øŽÓ ñ‰BÿŒÚ 9ÛŽÓ ñ‰Bÿöö ÷|èÐÛööŽÓ ‚iÖñ‰ú†ú‚i‚i…3 …3ñ‰ñ‰Bÿù£½Ðù ú‚ij×ñ‰ü güjj†3‡3ˆ3 †3ñ‰ ‡3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ˆ3­àBÿû¤ÄÐû üjœjŒ“ѰTšÑÛ¶ŠÝH}çç¹äþÿ€t«Ñ4«ÑÛýýÅ�Ü¿Ñ,¿ÑÛýýÜ× äàÑ\àÑÛýýóÇ lØ¶Š‚†‚ll‰3 ‰3¶Š¶ŠBÿ�¥„Ñ� ‚lølÙ¶Š„ g„ølølŠ3‹3Œ3 Š3¶Š ‹3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ3­àBÿƒ¦‹Ñƒ „ølœølô‹‚üãþ1. An iterator over all non-overlapping matches.Á•ÿ�ü™ÿO¡áaéÿ�üíÿ+Üâa™€�ü�€NK * `'r` represents the lifetime of the `Regex` that produced this iterator.Áüì€Báãa¯��ü³�Füäa³\–‚æG†¸‡‡†�‹@ZN·¼�¢mˆ‰Š¢‚¦‚l°‚°‚Û……�…>ÌÂ,ÂÛ……ÄÄÅ­àÉó¬ (! y?V¾�æGËŽ×÷:´â‚â‚Û……³'³'É�µ'–`«¶'é�«RU6m©ü\>¸n{ÚæGŒ¸��Œ�‹Ž gŽ n{n{�3ž3Ÿ3 �3�‹ ž3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ÿ3­àBÿ‹©ƒ‚‹ ŽæG¸n{œn{üé‘"ü�ŽNK An iterator over all non-overlapping leftmost matches with their capturingÁ\ÜŽ groups.ÁèŽ�üìŽKH The iterator yields a [`Captures`] value until no more matches could beÁT¸� found.ÁÃ��üÇ�+Üâaó��ü÷�NÝúbüÆ�Báãa‰‘�ü�‘JG This iterator can be created with the [`Regex::captures_iter`] method.Á´|ô‘æG�¸‘�‘�Œac ›‹ýq’“”•„’ˆ’l’’’’Û���…>Ì¥’,¥’Û��çýbtÄ’$Ä’Û��˜Û´Ø’Ø’Û��Âþb…ÛæG—¸˜˜—�Œ™ g™À½¿……¢3£3¤3 ¢3�Œ £3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¤3­àBÿ–ªá‘– ™æG¸…œ…ÄÇ¡ü©žB? Yields all substrings delimited by a regular expression match.Áìž�üðž85 The spans correspond to the offsets between matches.Á©Ÿ�ü­Ÿ+ÜâaÙŸ�üÝŸNÝúbü¬ Báãaï �üó B? This iterator can be created with the [`Regex::split`] method.Áµ,Ò¡æG›¸œœ›€� b…a®�žØ¡Ü¡Üæ¡4æ¡Ûšš�‹\‡¢$‡¢Ûšš¬‘ÜæG ¸¡ ¡€�¢ g¢ƒ…€‚¬‘¬‘§3¨3©3 §3€� ¨3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡©3­àBÿŸ«¿¡Ÿ ¢æG¸¬‘œ¬‘ÌÄ®üæªEB Yields at most `N` spans delimited by a regular expression match.Á¬«�ü°«NK The spans correspond to the offsets between matches. The last span will beÁüÿ«%" whatever remains after splitting.Á¥¬�ü©¬+ÜâaÕ¬�üÙ¬NÝúbü¨­Báãaë­�üï­C@ This iterator can be created with the [`Regex::splitn`] method.Á¶4Ï®æG¤¸¥¤¥å�® »ää-禧֮ڮ¬ä®4ä®Û££€�dÿ®,ÿ®Û££ð“ÝæG©¸ªª©å�« g«ƒ…€‚ð“ð“«3¬3­3 «3å� ¬3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡­3­àBÿ¨¬¼®¨ «æG¸ð“œð“„‹Èüæ·KH Represents mutable scratch space used by regex engines during a search.Á²¸�ü¶¸@= Most of the regex engines in this crate require some kind ofÁü÷¸EB mutable state in order to execute a search. This mutable state isÁü½¹>; explicitly separated from the core regex object (such as aÁüü¹MJ [`thompson::NFA`](crate::nfa::thompson::NFA)) so that the read-only regexÁüʺKH object can be shared across multiple threads simultaneously without anyÁü–»MJ synchronization. Conversely, a `Cache` must either be duplicated if usingÁüä»NK the same `Regex` from multiple threads, or else there must be some kind ofÁü³¼MJ synchronization that guarantees exclusive access while it's in use by oneÁ\�½ thread.Á�½�ü‘½KH A `Regex` attempts to do this synchronization for you by using a threadÁüݽLI pool internally. Its size scales roughly with the number of simultaneousÁœª¾ regex searches.Á¾¾�ü¾LI For cases where one does not want to rely on a `Regex`'s internal threadÁü�¿JG pool, lower level routines such as [`Regex::search_with`] are providedÁüÚ¿MJ that permit callers to pass a `Cache` into the search routine explicitly.Á¨À�ü¬ÀJG General advice is that the thread pool is often more than good enough.Áü÷ÀFC However, it may be possible to observe the effects of its latency,Áü¾ÁDA especially when searching many small haystacks from many threadsÁœƒÂ simultaneously.Á—Â�ü›Â>çëaüÚÂM°ìaü¨ÃKˆíaüôÃMÞíaüÂÄ ¶îaãÄ�lçįÖ.õÄ�<ùÄþ×.ü�Å4÷³;¶Å�üºÅ.“œ=üéÅ&äÎ/ü�Æ>Ûœ=|ÏÆ»ç/ü߯%²�=ü…Ç+¹Ø<4±Ç×è/¸Ç�ü¼Ç.áß.<ëÇþ×.·,–ÈËŽöÏ‚5×�è­®¯°±²ü¢ÈT­È¬¬˜ÛüÇÈ(4ÒȬ¬ó—üõÈ7L€É¬¬¬™ü²É*<½É¬¬åšüâÉ(4íɬ¬žœü�Ê2L›Ê¬¬Ëž4–ÞËŽ´ g´4–4–°3±3²3 °3ËŽ ±3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡²3­àBÿ³­üdz ´4–œ4–›œßËŽ¶†¶›œ›œ³3 ³3ËŽËŽBÿµ®ƒÈµ ¶›œŒýãüÅÜ85 An object describing the configuration of a `Regex`.ÁþÜ�ü‚Ý41 This configuration only includes options for theÁü·Ý@= non-syntax behavior of a `Regex`, and can be applied via theÁüøÝJG [`Builder::configure`] method. For configuring the syntax options, seeÁüÃÞ:7 [`util::syntax::Config`](crate::util::syntax::Config).ÁþÞ�ü‚ß'îœ;ªß�ü®ßNK In some cases, the default size limit might be too big. The size limit canÁüýßGD be lowered, which will prevent large regex patterns from compiling.ÁÅà�<Éàþ×.üÑà=îõ.ü�á$‚Ÿ;´á�ü¸á!¾Ÿ;üÚáFêŸ;ü¡âI» ;¼ë⎡;ìƒã¯¡;¡ã�ü¥ã.áß.<Ôãþ×.¸4ˆäÅ�ñhåÑ%ŠÕ¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈì´çT´çÛ··Þ×Ä×çT×çÛ··ߨ¬õç<õçÛ··ߨô�è�èÛ··ƒ¹ ü´è%t´èÛ··˜¿üßè%tßèÛ··“ÚüŠé)”ŠéÛ··“Úü¹é$¬¹éÛ··ØÚ¤ãé4ãéÛ··ߨŒýéýéÛ··ߨü”ê%t”êÛ··“Úü¿ê&|¿êÛ··“Ú¬ëê<ëêÛ··ߨ¼†ëL†ëÛ··ߨÔ£ëd£ëÛ··ߨÜÃë|ÃëÛ··ÈË ääëläëÛ··ØÚ3¢àÅ�ʆÊ3¢3¢¸3 ¸3Å�Å�BÿɯåãÉ Ê3¢ž¤áÅ�Ì gÌž¤ž¤¹3º3»3 ¹3Å� º3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡»3­àBÿ˰ìãË Ìž¤œž¤G±âÅ�Î÷ÎG±G±Å�BÿÍÍ Î”ö¡ü®†96 A builder for configuring and constructing a `Regex`.Áè†�üì†GD The builder permits configuring two different aspects of a `Regex`:Á´‡�ü¸‡IF * [`Builder::configure`] will set high-level configuration options asÁô‚ˆ described by a [`Config`].Áü¡ˆIF * [`Builder::syntax`] will set the syntax level configuration optionsÁüëˆLI as described by a [`util::syntax::Config`](crate::util::syntax::Config).Áü¸‰C@ This only applies when building a `Regex` from pattern strings.Áü‰�ü€ŠMJ Once configured, the builder can then be used to construct a `Regex` fromÁôΊ one of 4 different inputs:ÁíŠ�üñŠFC * [`Builder::build`] creates a regex from a single pattern string.Áü¸‹HE * [`Builder::build_many`] creates a regex from many pattern strings.Áü�Œ85 * [`Builder::build_from_hir`] creates a regex from aÁüºŒ*' [`regex-syntax::Hir`](Hir) expression.ÁüåŒ@= * [`Builder::build_many_from_hir`] creates a regex from manyÁü¦�+( [`regex-syntax::Hir`](Hir) expressions.ÁÒ��üÖ�KH The latter two methods in particular provide a way to construct a fullyÁü¢ŽHE feature regular expression matcher directly from an `Hir` expressionÁüëŽOL without having to first convert it to a string. (This is in contrast to theÁü»�MJ top-level `regex` crate which intentionally provides no such API in orderÁü‰�85 to avoid making `regex-syntax` a public dependency.)ÁÂ��üÆ�OL As a convenience, this builder may be created via [`Regex::builder`], whichÁü–‘# may help avoid an extra import.Áº‘�ü¾‘)�£;è‘�üì‘NK This example shows how to enable multi-line mode by default and change theÁü»’$! line terminator to the NUL byte:Áà’�<ä’þ×.üì’;Û˜;¨“�쬓úú8üÊ“7�¥;ü‚”<Ñ¥;Ô¿”—¦;äÚ”»¦;ü÷”9â¦;±•�üµ•.áß.<ä•þ×.ì•�üð•(% # Example: disable UTF-8 requirementÁ™–�ü�–IF By default, regex patterns are required to match UTF-8. This includesÁüç–MJ regex patterns that can produce matches of length zero. In the case of anÁüµ—NK empty match, by default, matches will not appear between the code units ofÁô„˜ a UTF-8 encoded codepoint.Á£˜�ü§˜JG However, it can be useful to disable this requirement, particularly ifÁüò˜NK you're searching things like `&[u8]` that are not known to be valid UTF-8.ÁÁ™�<Å™þ×.üÍ™;Û˜;‰š�ü�š'$ let mut builder = Regex::builder();ÁüµšC@ // Disables the requirement that non-empty matches match UTF-8.Áüùš63 builder.syntax(syntax::Config::new().utf8(false));Áü°›JG // Disables the requirement that empty matches match UTF-8 boundaries.Áüû›96 builder.configure(Regex::config().utf8_empty(false));Áµœ�ü¹œEB // We can match raw bytes via \xZZ syntax, but we need to disableÁüÿœGD // Unicode mode to do that. We could disable it everywhere, or justÁüÇ�" // selectively, as shown here.Áüê�85 let re = builder.build(r"(?-u:\xFF)foo(?-u:\xFF)")?;Á죞 let hay = b"\xFFfoo\xFF";ÁüÁž96 assert_eq!(Some(Match::must(0, 0..5)), re.find(hay));Áûž�üÿž,) // We can also match between code units.Áü¬Ÿ! let re = builder.build(r"")?;Á¤ÎŸÝò;üãŸ?< assert_eq!(re.find_iter(hay).collect::>(), vec![Á죠´¸>ìÁ ¹º>ìß àº>ìý Û¸><›¡í¦9£¡�ü§¡.áß.<Ö¡þ×.¹<�¢Ó‘5$|Áir°ÐÑÒt�¢4�¢ÛÏÏÅ�ô£¢£¢ÛÏÏÜçüÇ¢&Ç¢ÛÏτ鈴ãÓ‘Ô†Ôˆ´ˆ´Ï3 Ï3Ó‘Ó‘BÿÓ²ç¡Ó Ôˆ´hµäÓ‘Ö gÖhµhµÐ3Ñ3Ò3 Ð3Ó‘ Ñ3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ò3­àBÿÕ³î¡Õ Öhµœhµü¶% !ÁtÈ%!¬’ŒUíë8°­®ØÙÚ´Ý%!4è%!×׉ô̪&!µ&!××äüü�)!!D›)!××¢Âêß鬒ܠgÜêßêßß3à3á3 ß3¬’ à3€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡á3­àBÿÛ¿®%!Û Üêßœêßl½<ÜÄ<‚ŒÞÞ¹Ž/ È<ù’ð•]±p¢i„ßà "4Ñ<Ñ<‚Ýݵ“¬Ý<TÝ<‚ÝÝýÝûâ…Œâ⹎/‰…µ“øÈ<ù’ã†ã¬®ûâûâš4 š4ù’ù’Bÿáø®<á 㵓ûâ¸ã†Œå幎/8Ÿgµ“ùÈ<ù’æ gæ\_¸ã¸ã›4œ4�4 ›4ù’ œ4€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�4­àBÿäùµ<ä æµ“¸ãœ¸ã\¢�à$©�‚Ø“§¶°szÒlÕèéêëìíîïð|´�$´�‚ççñ‰´É�É�‚ççȹ Då�å�‚çç�»œó�4ó�‚ççßÿÄŒ�4Œ�‚ççÿ–üª�'Lª�‚ç縘Ô×�<×�‚ççñ™Ä÷�4÷�‚ç窛”•‘•‘‚çç㜸þŠØ“ò gò¸þ¸þÀ4Á4Â4 À4Ø“ Á4€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Â4­àBÿñ€š�ñ ò¸þœ¸þ´„ �|‹ ‚ý”ÿŒëò¸—þôT¡ $¡ ‚óóØ“Ž/«ý”ö göŽ/Ž/ø4ù4ú4 ø4ý” ù4€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ú4­àBÿõÁüŸõ öŽ/œŽ/¤�â�lˆâ‚¾•ë­H‚L=-³øùTœâ$œâ‚÷÷Ø“t¬â¬â‚÷÷äü»L»¾•û gû»L»Lœ5�5ž5 œ5¾• �5€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ž5­àBÿúÞùáú û»Lœ»Lœ�Ù­d”Ù‚Œ–ºPRý®ðýþÿ€ � T§Ù$§Ù‚üüØ“œ·ÙD·Ù‚üüäü\ÐÙ4ÐÙ‚üü�»üáÙ4áÙ‚üü×�̆Ú†Ú‚üü�ŸÀ�댖ƒ  gƒ À�À�Ê5Ë5Ì5 Ê5Œ– Ë5€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ì5­àBÿ‚ µ…Ù‚ ƒ À�œÀ�ÝÚ Ë4à ÿ–V>N ièà… † ¹—ÿ–BÿÝÚ 8£ ¹—ÿ–Bÿ„ „ … dç £ „ „ ¹—!½‘ ÿ–ˆ  gˆ !½!½ù5ú5û5 ù5ÿ– ú5€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡û5­àBÿ‡ üÆ ‡ ˆ !½œ!½-Û ÌdË ¹—Ã!`Á­¶ÂŠ ‹ ðĹ—Bÿ-Û 8£ ðĹ—Bÿ‰ ‰ Š tØ £ ‰ ‰ ðÄ޾’ ¹—�  g� ޾޾€6�6‚6 €6¹— �6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‚6­àBÿŒ ý± Œ � ޾œ޾}Û Î\ü ó—Î~‚Lî“m� � ÿ‚ó—Bÿ}Û 8£ ÿ‚ó—BÿŽ Ž � ¬ˆ £ Ž Ž ÿ‚nÁ” ó—’ †’ nÁnÁ“6 “6ó—ó—Bÿ‘ €Û ‘ ’ nÁêÁ• ó—”  g” êÁêÁ”6•6–6 ”6ó— •6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡–6­àBÿ“ �â “ ” êÁœêÁÍÛ Ï”�# ¸˜FV9÷åi>– — Ÿ‡¸˜BÿÍÛ 8£ Ÿ‡¸˜Bÿ• • – ü£# £ • • Ÿ‡ó– ¸˜™  g™ óÂóœ6�6ž6 œ6¸˜ �6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ž6­àBÿ˜ ‚ö" ˜ ™ óœóÂÜ ÐÄš1 ò˜êäW!â”D› œ «¡ò˜BÿÜ 8£ «¡ò˜Bÿš š › ìÚ1 ÓŽ÷A̾1 ü¸1! £ š š «¡JÄ— ò˜ž  gž JÄJÄ¥6¦6§6 ¥6ò˜ ¦6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡§6­àBÿ� ƒ€1 � ž JÄœJÄoÜ Ò¼�J ¬™W´Mï‚­  ¡ 심™BÿoÜ 8£ 심™BÿŸ Ÿ   ÄÎJ ÓŽ÷A̲J ü¬J! £ Ÿ Ÿ ì‹ÛÅ™ ¬™£ †£ ÛÅÛÅ´6 ´6¬™¬™Bÿ¢ †îI ¢ £ ÛÅWÆ𠬙¥  g¥ WÆWƵ6¶6·6 µ6¬™ ¶6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡·6­àBÿ¤ ‡õI ¤ ¥ WÆœWÆÀÜ Ó<’S ñ™D,%L�q§ ¨ ‹�ñ™BÿÀÜ 8£ ‹�ñ™Bÿ¦ ¦ § ¬šS £ ¦ ¦ ‹�`Ç› ñ™ª  gª `Ç`ǽ6¾6¿6 ½6ñ™ ¾6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¿6­àBÿ© ˆøR © ª `Çœ`ÇÝ ÔlŒY «š³ÖXöW´B¬ ­ ¡é«šBÿÝ 8£ ¡é«šBÿ« « ¬ d¿Y Óù.¼¥Y üŸY £ « « ¡éFÌœ «š¯  g¯ FÌFÌÇ6È6É6 Ç6«š È6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡É6­àBÿ® ‰òX ® ¯ FÌœFÌaÝ Ødøw 嚤©‚À­…xò± ² úœåšBÿaÝ 8£ úœåšBÿ° ° ± ´ªx Óù.¼�x üŠx £ ° ° úœiΠ åš´ †´ iÎiÎÓ6 Ó6åšåšBÿ³ �×w ³ ´ iÎåΡ åš¶  g¶ åÎåÎÔ6Õ6Ö6 Ô6åš Õ6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ö6­àBÿµ ‘Þw µ ¶ åΜåÎ±Ý Ù4‡� ª›çJÛ˜£Š¸ ¹ ›¡ª›Bÿ±Ý 9£ ›¡ª›Bÿ· · ¸ ¤Ž� £ · · ›¡îÏ¢ ª›»  g» îÏîÏÛ6Ü6Ý6 Û6ª› Ü6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ý6­àBÿº ’í€ º » îÏœîÏÞ Úd׆ ä›SŒ¿çðÜ�½ ¾ á�ä›BÿÞ 9£ á�ä›Bÿ¼ ¼ ½ ¤„‡ Óª+”ï† Ôé† £ ¼ ¼ á�©Ó£ ä›À  gÀ ©Ó©Óæ6ç6è6 æ6ä› ç6€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡è6­àBÿ¿ “½† ¿ À ©Óœ©ÓSÞ Þ\œÃ žœ5ÆFÃüóß à ĪžœBÿSÞ 9£ ĪžœBÿÁ Á  äÈà Ӫ+”³Ã Ô­Ã £ Á Á Ī]ç§ žœÅ †Å ]ç]ç…7 …7žœžœBÿÄ šûÂ Ä Å ]çÛç¨ žœÇ  gÇ ÛçÛç†7‡7ˆ7 †7žœ ‡7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ˆ7­àBÿÆ ›‚Ã Æ Ç ÛçœÛç¤Þ ßúË ãœ•t}bÓLxøÉ Ê ”ÓãœBÿ¤Þ 9£ ”ÓãœBÿÈ È É ŒþË £ È È ”Óèè© ãœÌ  gÌ èèèè�7Ž7�7 �7㜠Ž7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�7­àBÿË œàË Ë Ì èèœèèõÞ àLÂÑ ��Z5îÓõŸzºÎ Ï ��BÿõÞ 8£ ��BÿÍ Í Î ©Ò Ó� ¬�Ò ¼�Ò ü†Ò" !£ Í Í �ìª ��Ñ  gÑ �ì�ì˜7™7š7 ˜7�� ™7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡š7­àBÿÐ �¨Ñ Ð Ñ �ìœ�ìEß èlú‘ ×�#š7õíìÞÓ Ô ìä×�BÿEß 9£ ìä×�BÿÒ Ò Ó Üˆ’ £ Ò Ò ìä¿ñ² ×�Ö  gÖ ¿ñ¿ñ²7³7´7 ²7×� ³7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡´7­àBÿÕ ³à‘ Õ Ö ¿ñœ¿ñ—ß éœ�— ‘žyÔ ; The configuration used for building a bounded backtracker.Áµ �ü¹G D A bounded backtracker configuration is a simple data object that isÁü�/ , typically used with [`Builder::configure`].Áñ4Ý „ åö“²å\ýDî ï ôê ê ² í í ƒ¹ üŽ „Ž ² í í ØÚ¾¼ „ ñ †ñ ¾¾â7 â7„ „ Bÿð ú ð ñ ¾w½ „ ó  gó wwã7ä7å7 ã7„  ä7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡å7­àBÿò ÄÁ ò ó wœwP¾ „ õ ÷õ PP„ Bÿô ô õ ”ÚP üÃ?( % A builder for a bounded backtracker.Áì? �üð?M ÄÉ^ü¾@L I NFA construction and the `BoundedBacktracker` construction. This builderÁü‹AM J is different from a general purpose regex builder in that it permits fineÁüÙAN K grain configuration of the construction process. The trade off for this isÁü¨BM J complexity, and the possibility of setting a configuration that might notÁüöBA > make sense. For example, there are two different UTF-8 modes:Á¸C �ü¼CJ ½Í^ü‡DM ‘Î^TÕD ¥ŒGüàDL €÷aü­EK ×÷a¤ùE ¬øaŽF �ü’FJ ‹Ð^ÌÝF ÞÐ^÷F �lûF ¯Ö.‰G �ü�GL ƒýaüÚGL Úýa§H �<«H þ×.̳H ŽØ.üÍH= §þC¬‹I «Õ/t¡I Ñ·/4°I ÷Ø.·I �ü»I* ë±CüæI2 ‚Ö/ü™J6 ¿Ö/üÐJ& €×/ü÷J& äÎ/žK �ü¢K4 åû8ü×K2 / let expected = Some(Ok(Match::must(0, 1..9)));ÁüŠL< 9 let got = re.try_find_iter(&mut cache, haystack).next();ÁôÇL ±Ä2üæL6 ·Ô^ü�M8 ÷Ô^üÖM" ¹Õ^4ùM ßê/ü€N4 òÕ^üµNF C // disabling UTF-8 mode on a BoundedBacktracker Config, since thatÁüüN7 4 // only impacts regexes that can produce matches ofÁ„´O // length 0.ÁüÅOA > assert_eq!(b"foo\xFFarzz", &haystack[got.unwrap()?.range()]);Á‡P �ü‹P. áß.<ºP þ×.ò<åP Þ ~-71ªÃnì÷ ø tóP 4óP ² ö ö „ ä¦Q Óí”�Q Ô‡Q D¦Q ² ö ö ·¬«¿ Þ ú †ú ««é7 é7Þ Þ Bÿù ÆËP ù ú «dÀ Þ ü  gü ddê7ë7ì7 ê7Þ  ë7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ì7­àBÿû ÇÒP û ü dœd쮆 üœgN K A backtracking regex engine that bounds its execution to avoid exponentialÁdëg blow-up.Áøg �üügH E This regex engine only implements leftmost-first match semantics andÁüÅhL I only supports leftmost searches. It effectively does the same thing as aÁü’iN K [`PikeVM`](thompson::pikevm::PikeVM), but typically does it faster becauseÁüáiM J it doesn't have to worry about copying capturing group spans for most NFAÁü¯jO L states. Instead, the backtracker can maintain one set of captures (providedÁüÿjM J by the caller) and never needs to copy them. In exchange, the backtrackerÁüÍkK H bounds itself to ensure it doesn't exhibit worst case exponential time.Áü™lM J This results in the backtracker only being able to handle short haystacksÁüçl"  given reasonable memory usage.ÁŠm �üŽm# # Searches may return an error!Á²m �ü¶mG D By design, this backtracking regex engine is bounded. This bound isÁüþmL I implemented by not visiting any combination of NFA state ID and positionÁüËnJ G in a haystack more than once. Thus, the total memory required to boundÁü–oJ G backtracking is proportional to `haystack.len() * nfa.states().len()`.ÁüáoM J This can obviously get quite large, since large haystacks aren't terriblyÁü¯pJ G uncommon. To avoid using exorbitant memory, the capacity is bounded byÁüúpJ G a fixed limit set via [`Config::visited_capacity`]. Thus, if the totalÁüÅqH E capacity required for a particular regex and a haystack exceeds thisÁüŽr; 8 capacity, then the search routine will return an error.ÁÊr �üÎrL I Unlike other regex engines that may return an error at search time (likeÁü›sO L the DFA or the hybrid NFA/DFA), there is no way to guarantee that a boundedÁüësJ G backtracker will work for every haystack. Therefore, this regex engineÁü¶tM J _only_ exposes fallible search routines to avoid the footgun of panickingÁü„u8 5 when running a search on a haystack that is too big.Á½u �üÁuE B If one wants to use the fallible search APIs without handling theÁü‡vB ? error, the only way to guarantee an error won't occur from theÁüÊvD A haystack length is to ensure the haystack length does not exceedÁü�w- * [`BoundedBacktracker::max_haystack_len`].Á½w �üÁw& # # Example: Unicode word boundariesÁèw �üìwK H This example shows that the bounded backtracker implements Unicode wordÁü¸x$ ! boundaries correctly by default.ÁÝx �<áx þ×.üéx= îõ.ü§yN K use regex_automata::{nfa::thompson::backtrack::BoundedBacktracker, Match};Áöy �üúy2 / let re = BoundedBacktracker::new(r"\b\w+\b")?;Áü­z& äÎ/Ôz �üØzI F let mut it = re.try_find_iter(&mut cache, "Шерлок ХолмÑ�");Áü¢{; 8 assert_eq!(Some(Ok(Match::must(0, 0..12))), it.next());ÁüÞ{< 9 assert_eq!(Some(Ok(Match::must(0, 13..23))), it.next());Áü›| ƒ÷8ü¼|. áß.<ë| þ×.ó| �ü÷|& # # Example: multiple regex patternsÁž} �ü¢}D A The bounded backtracker supports searching for multiple patternsÁüç}N K simultaneously, just like other regex engines. Note though that because itÁü¶~M J uses a backtracking strategy, this regex engine is unlikely to scale wellÁü„O L as more patterns are added. But then again, as more patterns are added, theÁüÔK H maximum haystack length allowed will also shorten (assuming the visitedÁü €  capacity remains invariant).ÁÁ€ �<Å€ þ×.üÍ€N ˜Ídœ� �ü �B âäCüã�& äÎ/Š‚ �üŽ‚G ËåCüÖ‚: �æCü‘ƒ: âæCü̃: §çCü‡„< ìçCüÄ„< ³èCü�…< úèCü¾… ƒ÷8üß…. áß.<ކ þ×.󔹆 «¡I… M~rfÖþ ÿ tÒ† 4Ò† ² ý ý „ Dæ† æ† ² ý ý �»b Á «¡�!†�!b b õ7 õ7«¡«¡Bÿ€!ÈŸ† €! �!b   «¡ƒ! gƒ!  ö7÷7ø7 ö7«¡ ÷7€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ø7­àBÿ‚!ɦ† ‚! ƒ! œ üÄà% ü§ÜG ©èSïÜ �üóÜH E The iterator yields a `ResultB ? uses internally to translate a regex's high-level intermediateÁüÙ># representation into an [`NFA`].Áý> �ü�?I F The primary function of this builder is to abstract away the internalÁüË?K H representation of an NFA and make it difficult to produce NFAs are thatÁü—@K H internally invalid or inconsistent. This builder also provides a way toÁüã@H E add "empty" states (which can be thought of as unconditional epsilonÁü¬AL I transitions), despite the fact that [`thompson::State`](nfa::State) doesÁüùAK H not have any "empty" representation. The advantage of "empty" states isÁüÅBN K that they make the code for constructing a Thompson NFA logically simpler.Á”C �ü˜CN K Many of the routines on this builder may panic or return errors. GenerallyÁüçCN K speaking, panics occur when an invalid sequence of method calls were made,Áü¶DO L where as an error occurs if things get too big. (Where "too big" might meanÁü†EN K exhausting identifier space or using up too much heap memory in accordanceÁüÕEA > with the configured [`size_limit`](Builder::set_size_limit).)Á—F �t›F # OverviewÁªF �ü®F  ## Adding multiple patternsÁÎF �üÒFA > Each pattern you add to an NFA should correspond to a pair ofÁü”GJ G [`Builder::start_pattern`] and [`Builder::finish_pattern`] calls, withÁüßGK H calls inbetween that add NFA states for that pattern. NFA states may beÁü«HM J added without first calling `start_pattern`, with the exception of addingÁ¬ùH  capturing states.Á�I �Ä“I  ## Adding NFA statesÁ¬I �ü°IM J Here is a very brief overview of each of the methods that add NFA states.ÁüþI% " Every method adds a single state.Á¤J �ü¨JB ? * [`add_empty`](Builder::add_empty): Add a state with a singleÁüëJ6 3 unconditional epsilon transition to another state.Áü¢KH E * [`add_union`](Builder::add_union): Adds a state with unconditionalÁüëKG D epsilon transitions to two or more states, with earlier transitionsÁô³L  preferred over later ones.ÁüÒLJ G * [`add_union_reverse`](Builder::add_union_reverse): Adds a state withÁü�MG D unconditional epsilon transitions to two or more states, with laterÁüåM, ) transitions preferred over earlier ones.Áü’NN K * [`add_range`](Builder::add_range): Adds a state with a single transitionÁüáNK H to another state that can only be followed if the current input byte isÁÜ­O  within the range given.ÁüÉOH E * [`add_sparse`](Builder::add_sparse): Adds a state with two or moreÁü’PJ G range transitions to other states, where a transition is only followedÁüÝPJ G if the current input byte is within one of the ranges. All transitionsÁü¨QK H in this state have equal priority, and the corresponding ranges must beÁ¤ôQ  non-overlapping.Áü‰RO L * [`add_look`](Builder::add_look): Adds a state with a single *conditional*ÁüÙRI F epsilon transition to another state, where the condition depends on aÁü£S!  limited look-around property.ÁüÅSJ G * [`add_capture_start`](Builder::add_capture_start): Adds a state withÁü�TH E a single unconditional epsilon transition that also instructs an NFAÁüÙTM J simulation to record the current input position to a specific location inÁü§UN K memory. This is intended to represent the starting location of a capturingÁTöU  group.Áü�VF C * [`add_capture_end`](Builder::add_capture_end): Adds a state withÁüÈVH Сeü‘WM ¢¢eüßWL I memory. This is intended to represent the ending location of a capturingÁT¬X Уeü·XM J * [`add_fail`](Builder::add_fail): Adds a state that never transitions toÁ”…Y  another state.Áü˜YO L * [`add_match`](Builder::add_match): Add a state that indicates a match hasÁüèYL I been found for a particular pattern. A match state is a final state withÁäµZ  no outgoing transitions.ÁÒZ �üÖZ- * ## Setting transitions between NFA statesÁ„[ �üˆ[L I The [`Builder::patch`] method creates a transition from one state to theÁüÕ[K H next. If the `from` state corresponds to a state that supports multipleÁü¡\L I outgoing transitions (such as "union"), then this adds the correspondingÁüî\N K transition. Otherwise, it sets the single transition. (This routine panicsÁü½]O L if `from` corresponds to a state added by `add_sparse`, since sparse statesÁü�^$ ! need more specialized handling.)Á²^ �l¶^ ¯Ö.Ä^ �üÈ^I F This annotated example shows how to hand construct the regex `[a-z]+`Áü’_# (without an unanchored prefix).Á¶_ �<º_ þ×.ÌÂ_ ŽØ.üÜ_= ¼•Füš`" ™ŒFt½` Ñ·/4Ì` ÷Ø.Ó` �ü×`% ��Füý`L I // Before adding NFA states for our pattern, we need to tell the builderÁüÊa( % // that we are starting the pattern.Áìóa Ì�Fü‘bM J // Since we use the Pike VM below for searching, we need to add capturingÁüßbO L // states. If you're just going to build a DFA from the NFA, then capturingÁü¯c& # // states do not need to be added.ÁüÖcC ±ŽFüšd. + let range = builder.add_range(Transition {ÁüÉdN K // We don't know the state ID of the 'next' state yet, so we just fillÁü˜e# // in a dummy 'ZERO' value.Áü¼e4 ç FDñe ‰›FüúeO L // This state will point back to 'range', but also enable us to move ahead.ÁüÊfO L // That is, this implements the '+' repetition operator. We add 'range' andÁüšg, ) // then 'end' below to this alternation.ÁüÇg) æœFüñgJ G // The final state before the match state, which serves to capture theÁü¼h!  // end location of the match.ÁüÞh9 6 let end = builder.add_capture_end(StateID::ZERO, 0)?;Áü˜i' $ // The match state for our pattern.ÁüÀi# let mat = builder.add_match()?;Áüäi5 2 // Now we fill in the transitions between states.Áüšj!  builder.patch(start, range)?;Áü¼j  builder.patch(range, alt)?;ÁüÜjG D // If we added 'end' before 'range', then we'd implement non-greedyÁä¤k  // matching, i.e., '+?'.ÁüÁk  builder.patch(alt, range)?;Áìák  builder.patch(alt, end)?;Áìÿk  builder.patch(end, mat)?;Áü�lN K // We must explicitly finish pattern and provide the starting state ID forÁüìl  // this particular pattern.ÁüŒm# Ä’Fü°mM J // Finally, when we build the NFA, we provide the anchored and unanchoredÁüþmK H // starting state IDs. Since we didn't bother with an unanchored prefixÁüÊnO L // here, we only support anchored searching. Thus, both starting states areÁ„šo // the same.Áü«o+ ( let nfa = builder.build(start, start)?;Á×o �üÛoM J // Now build a Pike VM from our NFA, and use it for searching. This showsÁü©pH E // how we can use a regex engine without ever worrying about syntax!Áüòp( ™—Hü›q& äÎ/üÂq( •Ï/üëq. †ì0üšr/ , re.captures(&mut cache, "foo0", &mut caps);ÁüÊr+ Þ½/ör �üúr. áß.<©s þ×.þ<Ýs �©hŬgï•ÜÛ!Ü!Ý!Þ!ß!à!á!â!ã!ì´u T´u ¯ Ú!Ú!ܧ”‡x 4‡x ¯ Ú!Ú!°—Üêz lêz ¯ Ú!Ú!•öüÆ~$ DÆ~ ¯ Ú!Ú!㘤‹� l‹� ¯ Ú!Ú!TÌ‚ $Ì‚ ¯ Ú!Ú!lšƒ <šƒ ¯ Ú!Ú!Ìäƒ däƒ ¯ Ú!Ú!‚óÌÃ… TÃ… ¯ Ú!Ú!ØÚú�Ï �©å!†å!ú�ú�Ö8 Ö8�©�©Bÿä!Úºs ä! å!ú�±�Ð �©ç! gç!±�±�×8Ø8Ù8 ×8�© Ø8€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ù8­àBÿæ!ÛÁs æ! ç!±�œ±�,—Ñ �©é!÷é!,—,—�©Bÿè!è! é!Œõ üœ7 4 The configuration used for a Thompson NFA compiler.Áˆ4€ ±ª欢�6”½ë!ì!í!î!ï!ð!”� $� é ê!ê!ߨ¬¥ <¥ é ê!ê!ߨüÀ% tÀ é ê!ê!“Ú¤ë 4ë é ê!ê!ߨü…% t… é ê!ê!˜¿ü°! d° é ê!ê!�´þ™Ú ±ªò!†ò!þ™þ™ö8 ö8±ª±ªBÿñ!ñÝ ñ! ò!þ™ ›Û ±ªô! gô! › ›÷8ø8ù8 ÷8±ª ø8€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ù8­àBÿó!òä ó! ô! ›œ ›† Ü ±ªö!÷ö!† † ±ªBÿõ!õ! ö!´—¡ ü±ž- * A configuration indicating which kinds ofÁüßžO L [`State::Capture`](crate::nfa::thompson::State::Capture) states to include.Á¯Ÿ �ü³ŸM J This configuration can be used with [`Config::which_captures`] to controlÁü� : 7 which capture states are compiled into a Thompson NFA.Á¼  �üÀ 8 5 The default configuration is [`WhichCaptures::All`].Á‰l ¡ ¼«ï™¶­’n›qø!ù!ú!û!ü!ý!ù!û!ý!Æ¢ ü´¡J G All capture states, including those corresponding to both implicit andÁüƒ¢> ; explicit capture groups, are included in the Thompson NFA.Á‰¦÷!÷!¼«º¼÷!÷!¼«Dè¦ üÏ¢D A Only capture states corresponding to implicit capture groups areÁü˜£H E included. Implicit capture groups appear in every pattern implicitlyÁüå£5 2 and correspond to the overall match of a pattern.ÁŸ¤ �ü§¤C @ This is useful when one only cares about the overall match of aÁüï¤F C pattern. By excluding capture states from explicit capture groups,Áüº¥I F one might be able to reduce the memory usage of a multi-pattern regexÁüˆ¦K H substantially if it was otherwise written to have many explicit captureÁ\ئ ÷€c‰N÷!÷!¼«cf÷!÷!¼«$•² üö¦9 6 No capture states are compiled into the Thompson NFA.Á´§ �ü¼§J G This is useful when capture states are either not needed (for example,Áü‹¨J G if one is only trying to build a DFA) or if they aren't supported (forÁäÚ¨  example, a reverse NFA).Áû¨ �lƒ© # WarningÁ•© �ü�©7 4 Callers must be exceedingly careful when using thisÁüÙ©8 5 option. In particular, not all regex engines supportÁü–ª> ; reporting match spans when using this option (for example,ÁüÙª7 4 [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM) orÁü•«Q N [`BoundedBacktracker`](crate::nfa::thompson::backtrack::BoundedBacktracker)).Áë« �üó«< 9 Perhaps more confusingly, using this option with such anÁü´¬? < engine means that an `is_match` routine could report `true`Áüø¬? < when `find` reports `None`. This is generally not somethingÁü¼­? < that _should_ happen, but the low level control provided byÁü€®!  this crate makes it possible.Á¦® �ü®®K H Similarly, any regex engines (like [`meta::Regex`](crate::meta::Regex))Áüþ®H E should always return `None` from `find` routines when this option isÁü˯E B used, even if _some_ of its internal engines could find the matchÁü•°E B boundaries. This is because inputs from user data could influenceÁüß°I F engine selection, and thus influence whether a match is found or not.Áü­±I F Indeed, `meta::Regex::find` will always return `None` when configuredÁ¬û±  with this option.Á‰A÷!÷!¼«VY÷!÷!¼«=¡=¡=¡Ý ¼«=¡Ý ¼«€"†€"=¡=¡ƒ9 ƒ9¼«¼«Bÿÿ!ô‚¡ ÿ! €"=¡ õ‰¡ Þ ¼«ž¡ß ¼«ƒ" gƒ"ž¡ž¡„9…9†9 „9¼« …9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡†9­àBÿ‚"ö�¡ ‚" ƒ"ž¡œž¡œÇÚ ü»ÅI F A builder for compiling an NFA from a regex's high-level intermediateÁÌ…Æ  representation (HIR).ÁŸÆ �ü£ÆL I This compiler provides a way to translate a parsed regex pattern into anÁüðÆO L NFA state graph. The NFA state graph can either be used directly to executeÁüÀÇN K a search (e.g., with a Pike VM), or it can be further used to build a DFA.Á�È �ü“ÈO L This compiler provides APIs both for compiling regex patterns directly fromÁüãÈ? < their concrete syntax, or via a [`regex_syntax::hir::Hir`].Á£É �ü§É@ = This compiler has various options that may be configured viaÁüèÉ!  [`thompson::Config`](Config).ÁŠÊ �üŽÊM J Note that a compiler is not the same as a [`thompson::Builder`](Builder).ÁüÜÊI F A `Builder` provides a lower level API that is uncoupled from a regexÁü¦ËL I pattern's concrete syntax or even its HIR. Instead, it permits stitchingÁüóË7 4 together an NFA by hand. See its docs for examples.Á«Ì �ü¯Ì/ , # Example: compilation from concrete syntaxÁßÌ �üãÌO L This shows how to compile an NFA from a pattern string while setting a sizeÁü³ÍO L limit on how big the NFA is allowed to be (in terms of bytes of heap used).ÁƒÎ �<‡Î þ×.Ì�Î ŽØ.ü©Î- * nfa::thompson::{NFA, pikevm::PikeVM},Át×Î Ñ·/4æÎ ÷Ø.íÎ �üñÎ; ‹»/ü­ÏC ¾–HñÏ �üõÏ( ™—HüžÐ& äÎ/üÅÐ( •Ï/üîÐ. ’ïCü�Ñ2 ù—HüÐÑ+ Þ½/üÑ �ü€Ò. áß.<¯Ò þ×.·Ò �ü»Ò# # Example: compilation from HIRÁßÒ �üãÒN K This shows how to hand assemble a regular expression via its HIR, and thenÁü²Ó$ ! compile an NFA directly from it.Á×Ó �<ÛÓ þ×.üãÓF Ñ•HüªÔE ø·/ðÔ �üôÔ; Õ¸/ü°Õ) ›¹/üÚÕ) Ϲ/ü„Ö) ƒº/ü®Ö) ·º/LØÖ êº/âÖ �üæÖ; ‹»/ü¢×F Ñ»/é× �üí×( ™—Hü–Ø& äÎ/ü½Ø( •Ï/üæØ. ’ïCü•Ù2 ù—HüÈÙ+ Þ½/ôÙ �üøÙ. áß.<§Ú þ×.‹DÒÚ ·¬i/úuÛ…"†"‡"ˆ"‰"Š"¬¼Û 4¼Û é „"„"߯tûÛ 4ûÛ é „"„"±ªÌŒÝ <ŒÝ é „"„"�Èô‚ß T‚ß é „"„"ˆÉôñß Tñß é „"„"�Êü“á# \“á é „"„"ûÊa¥à ·¬Œ"†Œ"a¥a¥‰9 ‰9·¬·¬Bÿ‹"ø¸Ú ‹" Œ"a¥Ϧá ·¬Ž" gŽ"ϦϦŠ9‹9Œ9 Š9·¬ ‹9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ9­àBÿ�"ù¿Ú �" Ž"ϦœϦ죔 “\µ” ¸­ËE†Š~> �"‘"ÌÇ” ,Ò” �"�"Ç¼æ” ñ” �"�"Ç’í’í’íå ¸­’íå ¸­”"†”"’í’íÈ9 È9¸­¸­Bÿ“"…Ž” “" ”"’í †•” æ ¸­ùíç ¸­—" g—"ùíùíÉ9Ê9Ë9 É9¸­ Ê9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ë9­àBÿ–"‡›” –" —"ùíœùí¼¾ž ”dÅž é Ä™"™"™®Q¤iC…›š"›"œ"Òž ÄÜž <Üž é ˜"˜"ÅäHÄúž ,úž é ˜"˜"ÏäH|˜Ÿ 4˜Ÿ é ˜"˜"Ç—ïè Äž"ž"™®Ÿ" gŸ"Ž�—ï—ïÌ9Í9Î9 Ì9™® Í9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Î9­àBÿ�"ˆ¶ž �" Ÿ"ėï„ÄŸ •LËŸ é í®çkêFýr&\¡"¢"ÄÛŸ DÛŸ é  " "�·ÌùŸ TùŸ é  " "Éå³òé í®¤"†¤"³ò³òÏ9 Ï9í®í®Bÿ£"‰µŸ £" ¤"³òzóê í®¦" g¦"zózóÐ9Ñ9Ò9 Ð9í® Ñ9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ò9­àBÿ¥"мŸ ¥" ¦"zóœzó|¯  –D¶  é ¼¯¢J–c!q [¨"©"´Å  ,Å  é §"§"‹Îüá  $á  é §"§"çë×õë ¼¯«"†«"×õ×õÓ9 Ó9¼¯¼¯Bÿª"‹   ª" «"×õ›öì ¼¯­" g­"›ö›öÔ9Õ9Ö9 Ô9¼¯ Õ9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ö9­àBÿ¬"Œ§  ¬" ­"›öœ›öÌž¡ —”¥¡ é Š°¿þ§ä°Á‹í¯"°"L¾¡ ,¾¡ é ®"®"<Í¡ Í¡ é ®"®"‚øí а²"†²"‚ø‚ø×9 ×9ааBÿ±"��¡ ±" ²"‚øùî Š°´" g´"ùùØ9Ù9Ú9 Ø9а Ù9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ú9­àBÿ³"Ž–¡ ³" ´"ùœù¬ê"üQI"F An error that can occurred during the construction of a thompson NFA.Á›"�üŸJ"ÞÂ_üê1"³Ã_œ"�ü G"üÃ_üèI"F * Access an underlying [`regex_syntax::Error`] type from its `source`Áü²O"£Å_ü‚L"I convenience routines for building an NFA directly from a pattern string.ÁÏ"�üÓI"F Otherwise, errors typically occur when a limit has been breached. ForÁü�J"G example, if the total heap usage of the compiled NFA exceeds the limitÁüèI"F set by [`Config::nfa_size_limit`](crate::nfa::thompson::Config), thenÁü²" building the NFA will fail.Á Tõ"×°ÛRƒÜ&·Âa¶"¤†"$†"ó µ"µ"˜±ïúï ×°¸"†¸"ïúïúè9 è9×°×°Bÿ·"›Û"·" ¸"ïúkûð ×°º" gº"kûkûé9ê9ë9 é9×° ê9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ë9­àBÿ¹"œâ"¹" º"kûœkûœ†"¡t‹"ó ˜±…­ Ë–Û’;¼"½"¿"À"Â"Ã"Å"È"Ë"Í"Ï"Ð"½"¾"ÐÆ ˜±BÿÀ"Á"¶ß˜±BÿÃ"Ä"Ïó˜±BÿÆ"Ç"É"Ê"Ì"Î"Ð"Ýà Óí”ð "Ôê "¡Ýà ó »"»" ½"Ýà Ýà ó ÐÆ ˜±Bÿ»"»"Ô˜fœ� "ó »"»"ÐÆ -á ¡-á ó »"»" À"-á -á ó ¶ß˜±Bÿ»"»"Ë™fÄÚ "ó »"»"¶ß}á ¡}á ó »"»" Ã"}á }á ó Ïó˜±Bÿ»"»"šfô¿"ó »"»"Ïó|¾"¡ó »"»"˜±d›",›"ó »"»"dâ",â"ó »"»"lÊ"¡ó »"»"˜±dÂ",Â"ó »"»"d‡",‡"ó »"»"Œû"¡ó »"»"˜±dÃ",Ã"ó »"»"œŸ"¡ó »"»"˜±Të",ë"ó »"»"œÝ"Óí”Ä"Ô¾"¡ó »"»"˜±02ó »"»"˜±˜üñ ˜±Ò"†Ò"˜ü˜üì9 ì9˜±˜±BÿÑ"�÷"Ñ" Ò"˜ükò ˜±Ô" gÔ"kkí9î9ï9 í9˜± î9€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ï9­àBÿÓ"žþ"Ó" Ô"kœkìù! ª\‹" ¿³Ò#:͸ ÙÖ"×"”›$ 4›$ ‰ Õ"Õ"ê“L¡% ¡% ‰ Õ"Õ"ô û ¿³Ù"†Ù"ô ô ö9 ö9¿³¿³BÿØ"¯ñ! Ø" Ù"ô „…k ²,Œk ‰ ÄÛ"Û"Ž´é�Ÿ‘hŒÑ Ü"Ý"Þ"ß"’k ÜÔk 4Ôk ‰ Ú"Ú"ɵüÐm. \Ðm ‰ Ú"Ú"�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄ«¶œøp ,øp ‰ Ú"Ú"•öüÔr! 4Ôr ‰ Ú"Ú"‹Î• ÿ Äá"á"Ž´â" gâ"ôö• • ÿ9€:�: ÿ9Ž´ €:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�:­àBÿà"ºýj à" â"Ä• œ• dà µ,ʃ ‰ ï´ùÚH•´Pvaä"å"äÖƒ \Öƒ ‰ ã"ã"˜�Üøƒ 4øƒ ‰ ã"ã"”ž€ ï´ç"†ç"‚: ‚:ï´ï´Bÿæ"½²ƒ æ" ç"� ï´é"÷é"ï´Bÿè"è" é"Ô´š º|»š ‰ Äë"ë"ɵ 4b;ÍýB2ì"í"î"Ëš ìÕš \Õš ‰ ê"ê"Ã�Iüøš- 4øš ‰ ê"ê"�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄÏžü«› 4«› ‰ ê"ê"‚ŽI©† Äð"ð"ɵñ" gñ"ßá©©‹:Œ:�: ‹:ɵ Œ:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�:­àBÿï"Ǭš ï" ñ"Ä©œ©Œ�Ÿ »T”Ÿ ‰ «¶_ÀÖ3j&`Kó"ô"D¥Ÿ $¥Ÿ ‰ ò"ò"l³Ÿ $³Ÿ ‰ ò"ò"Çeee‡ «¶e‡ «¶÷"†÷"ee�: �:«¶«¶Bÿö"Èÿž ö" ÷"e ɆŸ ˆ «¶ÌŠ #½t• #�·)�ÓÊsÇáú"û"ü"d£##<£##³ ù"ù"|í##Dí##³ ù"ù"Ô€%#€%#³ ù"ù"ï©ØŠ �·þ"†þ"ØØ“: “:�·�·Bÿý"Ìû#ý" þ"Ø‘‹ �·€# g€#‘‘”:•:–: ”:�· •:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡–:­àBÿÿ"Í‚ #ÿ" €#‘œ‘¼Ú%#¾„á%#³ é·bjªäø€wN‚#ƒ#„#dÆ'#<Æ'#³ �#�#¤¨(#¨(#³ �#�#‹Îd¤)#¤)#³ �#�#Ç-Œ é·†#††#--—: —:é·é·Bÿ…#ÎÂ%#…# †#-� é·ˆ# gˆ#˜:™:š: ˜:é· ™:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡š:­àBÿ‡#ÏÉ%#‡# ˆ#œ{Ž é·Š#÷Š#{{é·Bÿ‰#‰# Š#ÄÖ@#Ãlá@#θ̾hZŒ#�#Ž#dÖB#<ÖB#³ ‹#‹#| C#D C#³ ‹#‹#̳D#³D#³ ‹#‹#ò¹Û� θ�#†�#ÛÛ¡: ¡:θθBÿ�#ÖÇ@#�# �#Û�� θ’# g’#��¢:£:¤: ¢:θ £:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¤:­àBÿ‘#×Î@#‘# ’#�œ�ÄŽF#Äl™F#¨¹¿5ìNMÊ\”#•#–#Œ­F#$±F#“#“#ÇlÄF#,ÈF#“#“#\×F#ÛF#“#“# ‘ ¨¹˜#†˜#  ¥: ¥:¨¹¨¹Bÿ—#ØçE#—# ˜# Ä ’ ¨¹š# gš#Ä Ä ¦:§:¨: ¦:¨¹ §:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¨:­àBÿ™#ÙîE#™# š#Ä œÄ 0#“ ¨¹œ#÷œ#0#0#¨¹Bÿ›#›# œ#Â#” ¨¹ž#Ξ#Â#Â#Â#Â#©: ©:¨¹Bÿ�#ÛþE#�# ž#Â#%• ¨¹%• ¨¹¡#ù±¡#%%ª:«: ª:¨¹ «:¨¹Bÿ #Ü‚F# # ¡#%î %´¢G#Å|©G#³ ªºx¯WøBw£#¤#¥#d�I#<�I#³ ¢#¢#”æI#æI#³ ¢#¢#¨¹d½J#½J#³ ¢#¢#ÇC&– ªº§#†§#C&C&¬: ¬:ªºªºBÿ¦#ÝŠG#¦# §#C&ò&— ªº©# g©#ò&ò&­:®:¯: ­:ªº ®:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¯:­àBÿ¨#Þ‘G#¨# ©#ò&œò&a)˜ ªº«#÷«#a)a)ªºBÿª#ª# «#Íá ü¼FC A byte oriented Thompson non-deterministic finite automaton (NFA).Áƒ�ü‡OL A Thompson NFA is a finite state machine that permits unconditional epsilonÁü×IF transitions, but guarantees that there exists at most one non-epsilonÁü¡?< transition for each element in the alphabet for each state.Áá�üåGD An NFA may be used directly for searching, for analysis or to buildÁü­+( a deterministic finite automaton (DFA).ÁÙ�”Ý # Cheap clonesÁð�üôHE Since an NFA is a core data type in this crate that many other regexÁü½MJ engines are based on top of, it is convenient to give ownership of an NFAÁü‹ JG to said regex engines. Because of this, an NFA uses reference countingÁüÖ NK internally. Therefore, it is cheap to clone and it is encouraged to do so.Á¥ �”© žç_¼ �üÀ &# Using an NFA for searching via theÁüç MJ [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM) provides the most amountÁüµ IF of "power" of any regex engine in this crate. Namely, it supports theÁÜÿ  following in all cases:Á› �äŸ Âè_ü¼ IF 2. Location of a match, including both the start and end offset, in aÁü†  single pass of the haystack.Áü§ -* 3. Location of matching capturing groups.ÁüÕ NK 4. Handles multiple patterns, including (1)-(3) when multiple patterns areÁd¤ present.Á±�´µ # Capturing GroupsÁÌ�üÐOL Groups refer to parenthesized expressions inside a regex pattern. They lookÁü 1. like this, where `exp` is an arbitrary regex:ÁÒ�üÖ+( * `(exp)` - An unnamed capturing group.Áü‚B? * `(?Pexp)` or `(?exp)` - A named capturing group.ÁüÅ(% * `(?:exp)` - A non-capturing group.Áüî96 * `(?i:exp)` - A non-capturing group that sets flags.Á¨�ü¬B? Only the first two forms are said to be _capturing_. CapturingÁüïGD means that the last position at which they match is reportable. TheÁü·JG [`Captures`](crate::util::captures::Captures) type provides convenientÁü‚MJ access to the match positions of capturing groups, which includes lookingÁüÐ&# up capturing groups by their name.Á÷�œû # Byte orientedÁ��ü“JG This NFA is byte oriented, which means that all of its transitions areÁüÞLI defined on bytes. In other words, the alphabet of an NFA consists of theÁô« 256 different byte values.ÁÊ�üÎGD While DFAs nearly demand that they be byte oriented for performanceÁü–NK reasons, an NFA could conceivably be *Unicode codepoint* oriented. Indeed,ÁüåMJ a previous version of this NFA supported both byte and codepoint orientedÁü³OL modes. A codepoint oriented mode can work because an NFA fundamentally usesÁüƒKH a sparse representation of transitions, which works well with the largeÁüÏ'$ sparse space of Unicode codepoints.Á÷�üûJG Nevertheless, this NFA is only byte oriented. This choice is primarilyÁüÆJG driven by implementation simplicity, and also in part memory usage. InÁü‘IF practice, performance between the two is roughly comparable. However,ÁüÛMJ building a DFA (including a hybrid DFA) really wants a byte oriented NFA.Áü©LI So if we do have a codepoint oriented NFA, then we also need to generateÁüöHE byte oriented NFA in order to build an hybrid NFA/DFA. Thus, by onlyÁü¿OL generating byte oriented NFAs, we can produce one less NFA. In other words,Áü�NK if we made our NFA codepoint oriented, we'd need to *also* make it supportÁüÞMJ a byte oriented mode, which is more complicated. But a byte oriented modeÁܬ can support everything.ÁÈ�ÜÌ # Differences with DFAsÁè�üìMJ At the theoretical level, the precise difference between an NFA and a DFAÁüºLI is that, in a DFA, for every state, an input symbol unambiguously refersÁü‡ JG to a single transition _and_ that an input symbol is required for eachÁüÒ LI transition. At a practical level, this permits DFA implementations to beÁüŸ!NK implemented at their core with a small constant number of CPU instructionsÁüî!MJ for each byte of input searched. In practice, this makes them quite a bitÁü¼"OL faster than NFAs _in general_. Namely, in order to execute a search for anyÁüŒ#KH Thompson NFA, one needs to keep track of a _set_ of states, and executeÁüØ#JG the possible transitions on all of those states for each input symbol.Áü£$NK Overall, this results in much more overhead. To a first approximation, oneÁüò$EB can expect DFA searches to be about an order of magnitude faster.Á¸%�ü¼%KH So why use an NFA at all? The main advantage of an NFA is that it takesÁüˆ&NK linear time (in the size of the pattern string after repetitions have beenÁü×&MJ expanded) to build and linear memory usage. A DFA, on the other hand, mayÁü¥'IF take exponential time and/or space to build. Even in non-pathologicalÁüï'OL cases, DFAs often take quite a bit more memory than their NFA counterparts,Áü¿(LI _especially_ if large Unicode character classes are involved. Of course,ÁüŒ)KH an NFA also provides additional capabilities. For example, it can matchÁüØ)JG Unicode word boundaries on non-ASCII text and resolve the positions ofÁ¬£*Õî^¹*�ü½*OL Note that a [`hybrid::regex::Regex`](crate::hybrid::regex::Regex) strikes aÁü�+OL good balance between an NFA and a DFA. It avoids the exponential build timeÁüÝ+MJ of a DFA while maintaining its fast search time. The downside of a hybridÁü«,OL NFA/DFA is that in some cases it can be slower at search time than the NFA.Áüû,MJ (It also has less functionality than a pure NFA. It cannot handle UnicodeÁüÉ-KH word boundaries on non-ASCII text and cannot resolve capturing groups.)Á•.�l™.¯Ö.§.�ü«.OL This shows how to build an NFA with the default configuration and execute aÁìû. search using the Pike VM.Á™/�<�/þ×.ü¥/?‡¤Iå/�üé/(ܤIü’0&äÎ/ü¹0(•Ï/â0�üæ0.ˆØ/ü•14¶¥IüÊ1+Þ½/ö1�üú1.áß.<©2þ×.±2�üµ2)& # Example: resolving capturing groupsÁß2�üã2EB This example shows how to parse some simple dates and extract theÁü©31. components of each date via capturing groups.ÁÛ3�<ß3þ×.üç3=îõ.Ì¥4ŽØ.ü¿4&Ÿ¾Iüæ4!ò„=4ˆ5÷Ø.�5�ü“5EB let vm = PikeVM::new(r"(?P\d{4})-(?P\d{2})-(?P\d{2})")?;ÁüÙ5&ä±F€6�ü„6;8 let haystack = "2012-03-14, 2013-01-01 and 2014-07-05";ÁüÀ6.+ let all: Vec = vm.captures_iter(Áüï6'$ &mut cache, haystack.as_bytes()Á„—7 ).collect();Áü¨7,) // There should be a total of 3 matches.ÁìÕ7 assert_eq!(3, all.len());Áüó70- // The year from the second match is '2013'.Áü¤863 let span = all[1].get_group_by_name("y").unwrap();ÁüÛ8(% assert_eq!("2013", &haystack[span]);Á„9�üˆ9.áß.<·9þ×.¿9�üÃ9GD This example shows that only the last match of a capturing group isÁü‹:IF reported, even if it had to match multiple times for an overall matchÁlÕ: to occur.Áã:�<ç:þ×.üï:>�ÉL®;�ü²;)& let re = PikeVM::new(r"([a-z]){4}")?;ÁüÜ;&äÎ/üƒ<(•Ï/¬<�ܰ< let haystack = b"quux";ÁüÌ<1ÁØ/ìþ<ØÅ;üœ=:7 assert_eq!(Some(Span::from(3..4)), caps.get_group(1));Á×=�üÛ=.áß.<Š>þ×.Ê®>�»Ô;úRéüŽ­#®#¸Õ�»BÿÍá 7Î ¸Õ�»Bÿ¬#¬# ­#T¥DÎ ¬#¬#¸Õ¬*™ �»°#†°#¬*¬*¶: ¶:�»�»Bÿ¯#å›>¯# °#¬*¼Ê÷Í,Ü÷± Ô»¥&¼p_�˘²#³#´#µ#¶#·#¸#¹#º#»#¼#½#¾#¿#À#”µú4µúÎ ±#±#Øæ¼þútþúÎ ±#±#ÇÌÎû„ÎûÎ ±#±#Çܸþl¸þÎ ±#±#•ö¬ôÿTôÿÎ ±#±#ýÝäá…tá…Î ±#±#Š×Ì©Šd©ŠÎ ±#±#ªÓŒ�‹\�‹Î ±#±#|Þ‹LÞ‹Î ±#±#T¹Ž$¹ŽÎ ±#±#lŒ�<Œ�Î ±#±#ÌÚ�dÚ�Î ±#±#‚ó¬Ç‘dǑΠ±#±#¯ñäâ’œâ’Î ±#±#¯ñœ´–d´–Î ±#±#µ@š Ô»Â#÷Â#µ@µ@Ô»BÿÁ#Á# Â#tÀç´ØÞ A state in an NFA.ÁïÞ�üóÞMJ In theory, it can help to conceptualize an `NFA` as a graph consisting ofÁüÁßMJ `State`s. Each `State` contains its complete set of outgoing transitions.Á�à�ü“àGD In practice, it can help to conceptualize an `NFA` as a sequence ofÁüÛàNK instructions for a virtual machine. Each `State` says what to do and whereÁ|ªá to go next.Áºá�ü¾áLI Strictly speaking, the practical interpretation is the most correct one,Áü‹âIF because of the [`Capture`](State::Capture) state. Namely, a `Capture`ÁüÕâNK state always forwards execution to another state unconditionally. Its onlyÁü¤ãIF purpose is to cause a side effect: the recording of the current inputÁüîãHE position at a particular location in memory. In this sense, an `NFA`Áü·äIF has more power than a theoretical non-deterministic finite automaton.Á�å�ü…åMJ For most uses of this crate, it is likely that one may never even need toÁüÓåLI be aware of this type at all. The main use cases for looking at `State`sÁü æNK directly are if you need to write your own search implementation or if youÁüïæ0- need to do some kind of analysis on the NFA.Á×,ÉçȽ^! Ù ŸÄ#Æ#Ç#É#Ê#Ì#Ï#Ñ#Ô#Ù#Ú#Û#Å#Ç#È#‘ÀȽBÿÊ#Ë#÷ÀȽBÿÍ#Î#Ð#Ò#Ó#Õ#Ö#×#Ø#Ú#Ü#LÜèüÕçJG A state with a single transition that can only be taken if the currentÁü¤è30 input symbol is in a particular range of bytes.Á×›Ã#Ã#ȽŒ¨éüðè/, The transition from this state to the next.Á,¨éÃ#Ã#ÝÁâ üÆéKH A state with possibly many transitions represented in a sparse fashion.Áü–êJG Transitions are non-overlapping and ordered lexicographically by inputÁTåê range.Áôê�üüêJG In practice, this is used for encoding UTF-8 automata. Its presence isÁüËëGD primarily an optimization that avoids many additional unconditionalÁü—ìFC epsilon transitions (via [`Union`](State::Union) states), and thusÁüâìGD decreases the overhead of traversing the NFA. This can improve bothÁü®í,) matching time and DFA construction time.Á×â Ã#Ã# Ç#â â ‘ÀȽBÿÃ#Ã#ÁœgŒæíÃ#Ã#‘Ànâ üþí@= A dense representation of a state with multiple transitions.Á×nâ Ã#Ã# Ê#nâ nâ ÷ÀȽBÿÃ#Ã#þ�g„ÉîÃ#Ã#÷À$âòüàî?< A conditional epsilon transition satisfied via some sort ofÁü¤ïC@ look-around. Look-around is limited to anchor and word boundaryÁ|ìï assertions.Á€ð�üˆðIF Look-around states are meant to be evaluated while performing epsilonÁüÖðJG closure (computing the set of states reachable from a particular stateÁü¥ñJG via only epsilon transitions). If the current position in the haystackÁüôñHE satisfies the look-around assertion, then you're permitted to followÁäÁò that epsilon transition.Á×=Ã#Ã#ȽTÓóüñòB? The look-around assertion that must be satisfied before movingÁt¼ó to `next`.Á$ÓóÃ#Ã#ôílÅôüçó>; The state to transition to if the look-around assertion isÁt®ô satisfied.Á$ÅôÃ#Ã#Ç,¤öüßôFC An alternation such that there exists an epsilon transition to allÁüªõGD states in `alternates`, where matches found via earlier transitionsÁüöõ)& are preferred over later transitions.Á×ßÃ#Ã#ȽÔü÷ü´öEB An ordered sequence of unconditional epsilon transitions to otherÁü‚÷B? states. Transitions earlier in the sequence are preferred overÁüÍ÷&# transitions later in the sequence.ÁTü÷Ã#Ã#ƒ‰\‚üü£øEB An alternation such that there exists precisely two unconditionalÁüíøJG epsilon transitions, where matches found via `alt1` are preferred overÁì¼ù matches found via `alt2`.ÁÞù�üæùGD This state exists as a common special case of Union where there areÁü²úGD only two alternates. In this case, we don't need any allocations toÁüþúEB represent the state. This saves a bit of memory and also saves anÁüÈû52 additional memory access when traversing the NFA.Á×Ã#Ã#Ƚl‰ýü˜üB? An unconditional epsilon transition to another NFA state. ThisÁìãü is preferred over `alt2`.Á$‰ýÃ#Ã#Çléþü ýEB An unconditional epsilon transition to another NFA state. MatchesÁüîýFC reported via this transition should only be reported if no matchesÁü½þ# were found by following `alt1`.Á$éþÃ#Ã#Ç<�…üƒÿ30 An empty state that records a capture location.Á»ÿ�üÃÿIF From the perspective of finite automata, this is precisely equivalentÁü‘€EB to an unconditional epsilon transition, but serves the purpose ofÁüÛ€JG instructing NFA simulations to record additional state when the finiteÁüª�96 state machine passes through this epsilon transition.Áè��üð�DA `slot` in this context refers to the specific capture group slotÁü¹‚EB offset that is being recorded. Each capturing group has two slotsÁüƒƒFC corresponding to the start and end of the matching portion of thatÁT΃Уe݃�üåƒJG The pattern ID and capture group index are also included in this stateÁü´„FC in case they are useful. But mostly, all you'll need is `next` andÁ\ÿ„ `slot`.Á×cÃ#Ã#ȽlÚ…ü¡…0- The state to transition to, unconditionally.Á$Ú…Ã#Ã#Ǭª†üñ…0- The pattern ID that this capture belongs to.ÁTª†Ã#Ã#›†¼ÀˆüɆGD The capture group index that this capture belongs to. Capture groupÁü™‡B? indices are local to each pattern. For example, when capturingÁüä‡B? groups are enabled, every pattern has a capture group at indexÁD¯ˆò†R\ÀˆÃ#Ã#×�„Ú‹üáˆB? The slot index for this capture. Every capturing group has twoÁü¬‰@= slots: one for the start haystack offset and one for the endÁüõ‰C@ haystack offset. Unlike capture group indices, slot indices areÁüÁŠFC global across all patterns in this NFA. That is, each slot belongsÁü�‹A> to a single pattern, but there is only one slot at index `i`.Á$Ú‹Ã#Ã#×�$™�ü÷‹HE A state that cannot be transitioned out of. This is useful for casesÁüÄŒKH where you want to prevent matching from occurring. For example, if yourÁü”�GD regex parser permits empty character classes, then one could chooseÁüà�FC a `Fail` state to represent them. (An empty character class can beÁü«ŽJG thought of as an empty set. Since nothing is in an empty set, they canÁÔúŽ never match anything.)Á×ÍÃ#Ã#ȽâåÃ#Ã#Ƚ,©�ü£�JG A match state. There is at least one such occurrence of this state forÁüò�2/ each regex that can match that is in this NFA.ÁךÃ#Ã#Ƚ¬Þ�ä¹� The matching pattern ID.ÁTÞ�Ã#Ã#›†kB¥ ȽÞ#†Þ#kBkBÝ: Ý:ȽȽBÿÝ#ý©çÝ# Þ#kBùI¦ Ƚà#Îà#ùIùIùIùIÞ: Þ:ȽBÿß#þ°çß# à#ùIcJ§ ȽcJ§ Ƚã#ù±ã#cJcJß:à: ß:Ƚ à:ȽBÿâ#ÿ´çâ# ã#cJî cJäšÁüá½?< A sequence of transitions used to represent a sparse state.Á¡¾�ü¥¾LI This is the primary representation of a [`Sparse`](State::Sparse) state.Áüò¾KH It corresponds to a sorted sequence of transitions with non-overlappingÁü¾¿LI byte ranges. If the byte at the current position in the haystack matchesÁü‹ÀIF one of the byte ranges, then the finite state machine should take theÁìÕÀ corresponding transition.Á匥Á‘Àº ÑB›ÿ¢å#üùÁ"ü½Á74 The sorted sequence of non-overlapping transitions.Á\ýÁä#ä#ʹ¸\µ ‘Àç#†ç#¸\¸\è: è:‘À‘ÀBÿæ#šüÀæ# ç#¸\6]¶ ‘Àé# gé#6]6]é:ê:ë: é:‘À ê:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ë:­àBÿè#›ƒÁè# é#6]œ6]^· ‘Àë#Îë#^^^^ì: ì:‘ÀBÿê#œŠÁê# ë#^/_¸ ‘À/_¸ ‘Àî#ù±î#/_/_í:î: í:‘À î:‘ÀBÿí#�ŽÁí# î#/_î /_ܸÚü‘Ö>; A sequence of transitions used to represent a dense state.ÁÐÖ�üÔÖMJ This is the primary representation of a [`Dense`](State::Dense) state. ItÁü¢×LI provides constant time matching. That is, given a byte in a haystack andÁüï×LI a `DenseTransitions`, one can determine if the state matches in constantÁL¼Ø time.ÁÆØ�üÊØHE This is in contrast to `SparseTransitions`, whose time complexity isÁü“ÙOL necessarily bigger than constant time. Also in contrast, `DenseTransitions`ÁüãÙ-* usually requires (much) more heap memory.Áæ„ÃÚ÷À:wÑÈú¥°†ð#üÆÛüÚÚHE A dense representation of this state's transitions on the heap. ThisÁÔ§Û always has length 256.Á\ÊÛï#ï#ƒ‰zf¹ ÷Àò#†ò#zfzfó: ó:÷À÷ÀBÿñ#žšÚñ# ò#zfõfº ÷Àô# gô#õfõfô:õ:ö: ô:÷À õ:€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ö:­àBÿó#Ÿ¡Úó# ô#õfœõf;h» ÷Àö#Îö#;h;h;h;h÷: ÷:÷ÀBÿõ# ¨Úõ# ö#;hëh¼ ÷Àëh¼ ÷Àù#ù±ù#ëhëhø:ù: ø:÷À ù:÷ÀBÿø#¡¬Úø# ù#ëhî ëh¬îðü’ï)& A single transition to another state.Á¼ï�üÀïLI This transition may only be followed if the current byte in the haystackÁü�ð41 falls in the inclusive range of bytes specified.ÁçTùðÝÁ{”I{õõ¼û#ü#ý#l¹ñüŠñ*' The inclusive start of the byte range.Á,½ñú#ú#\ùñüÌñ(% The inclusive end of the byte range.Áýñú#ú#ŒÀòüŠò1. The identifier of the state to transition to.Á$Äòú#ú#Çãqãqãq½ ÝÁãq½ ÝÁ€$†€$ãqãqÿ: ÿ:ÝÁÝÁBÿÿ#¢Ëðÿ# €$ãq £Òð¾ ÝÁcr¿ ÝÁƒ$΃$crcrcrcr€; €;ÝÁBÿ‚$¤Øð‚$ ƒ$cràrÀ ÝÁ…$üh…$àràr�;‚; �;ÝÁ ‚;Ò­ Bÿ„$ÿ†$†$¥Üð„$ªÃaàr»Ãaàr …$Ò­ àrƒàràràr uÁ ÝÁ uÁ ÝÁ‰$ù±‰$ u uƒ;„; ƒ;ÝÁ „;ÝÁBÿˆ$¦âðˆ$ ‰$ uî  uÔ©ÿü¹ý/, An iterator over all pattern IDs in an NFA.Áéý�üíý2/ This iterator is created by [`NFA::patterns`].Á þ�ü¤þLI The lifetime parameter `'a` refers to the lifetime of the NFA from whichÁüñþ&# this pattern iterator was created.Áê\´ÿÄ‹$‹$õÂÿsÁ­ËNœXŒ$�$ÀÿŒÊÿÊÿÎ Š$Š$üŠü­‚*<­‚Î Š$Š$„!„!…!Àìo$z�é - ijuÄ Ä�$�$õÂ�$ g�$ž ³u³uŒ;�;Ž; Œ;õ �;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ž;­àBÿŽ$«¡ÿŽ$ �$ijuœ³uŒ…ü 52 The configuration used for building a [`PikeVM`].ÁÖ�üÚNK A PikeVM configuration is a simple data object that is typically used withÁü©52 [`Builder::configure`]. It can be cheaply cloned.Áß�üãH¶Ã^ü¬74 perhaps more conveniently, with [`PikeVM::config`].Áë4�ÊìOÿ,ŠÇy’$“$ì�T�Å‘$‘$Þ×ôÀÀÅ‘$‘$ƒ¹ =xÅ ÊÕ$†•$=x=x�; �;ÊÃÊÃBÿ”$¬í”$ •$=xÒxÆ Ê×$ g—$ÒxÒx‘;’;“; ‘;Êà ’;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡“;­àBÿ–$­ô–$ —$ÒxœÒx©zÇ ÊÙ$÷™$©z©zÊÃBÿ˜$˜$ ™$”¥Hì…8 A builder for a `PikeVM`.Á£8�ü§8IF This builder permits configuring options for the syntax of a pattern,Áüñ8GD the NFA construction and the `PikeVM` construction. This builder isÁü¹9JG different from a general purpose regex builder in that it permits fineÁü„:N“¬düÓ:Më¬dü¡;A­dã;�üç;GD * [`util::syntax::Config::utf8`](crate::util::syntax::Config::utf8)Áü¯�ü�>J‹Ð^ÌØ>ÞÐ^ò>�lö>¯Ö.„?�üˆ?LƒýaüÕ?LÚýa¢@�<¦@þ×.Ì®@ŽØ.üÈ@.¦£G¬÷@«Õ/t�AÑ·/4œA÷Ø.£A�ô§A¢©GüÆA2‚Ö/üùA6¿Ö/ü°B&€×/ü×B&äÎ/þB�ü‚C4åû8ü·C.£ü8üæC85 let got = re.find_iter(&mut cache, haystack).next();ÁôŸD±Ä2ü¾D6·Ô^üõD8÷Ô^ü®E"¹Õ^4ÑEßê/üØE4òÕ^ü�F:7 // disabling UTF-8 mode on a PikeVM Config, since thatÁüÈF7¾³d„€Gþ³dü‘G@Ò€bÒG�üÖG.áß.<…Hþ×.ì<°H£ÄB­´M‰Ú›$œ$t¾H4¾HÅš$š$ÊÃäñHÓí”ØHÔÒHDñHÅš$š$·¬Š{È £Äž$†ž$Š{Š{—; —;£Ä£ÄBÿ�$¯–H�$ ž$Š{C|É £Ä $ g $C|C|˜;™;š; ˜;£Ä ™;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡š;­àBÿŸ$°�HŸ$  $C|œC|Œîuü©]IF A virtual machine for executing regex searches with capturing groups.Áó]�¬÷] # Infallible APIsÁ�^�ü‘^NK Unlike most other regex engines in this crate, a `PikeVM` never returns anÁüà^LI error at search time. It supports all [`Anchored`] configurations, neverÁü­_52 quits and works on haystacks of arbitrary length.Áã_�üç_,) There are two caveats to mention though:Á”`�ü˜`NK * If an invalid pattern ID is given to a search via [`Anchored::Pattern`],Áüç`MJ then the PikeVM will report "no match." This is consistent with all otherÁüµa  regex engines in this crate.ÁüÖaLI * When using [`PikeVM::which_overlapping_matches`] with a [`PatternSet`]Áü£bLI that has insufficient capacity to store all valid pattern IDs, then if aÁüðbJG match occurs for a `PatternID` that cannot be inserted, it is silentlyÁü»c# dropped as if it did not match.Áßc�dãc # AdviceÁðc�üôcMJ The `PikeVM` is generally the most "powerful" regex engine in this crate.ÁüÂdNK "Powerful" in this context means that it can handle any regular expressionÁü‘eKH that is parseable by `regex-syntax` and any size haystack. Regrettably,ÁüÝeKH the `PikeVM` is also simultaneously often the _slowest_ regex engine inÁü©fMJ practice. This results in an annoying situation where one generally triesÁü÷fHE to pick any other regex engine (or perhaps none at all) before beingÁüÀg&# forced to fall back to a `PikeVM`.Áçg�üëgJG For example, a common strategy for dealing with capturing groups is toÁü¶hIF actually look for the overall match of the regex using a faster regexÁü€iLI engine, like a [lazy DFA](crate::hybrid::regex::Regex). Once the overallÁüÍiKH match is found, one can then run the `PikeVM` on just the match span toÁü™jIF find the spans of the capturing groups. In this way, the faster regexÁüãjKH engine does the majority of the work, while the `PikeVM` only lends itsÁü¯k! power in a more limited role.ÁÑk�üÕkNK Unfortunately, this isn't always possible because the faster regex enginesÁü¤lKH don't support all of the regex features in `regex-syntax`. This notablyÁüðlIF includes (and is currently limited to) Unicode word boundaries. So ifÁüºmGD your pattern has Unicode word boundaries, you typically can't use aÁü‚nKH DFA-based regex engine at all (unless you [enable heuristic support forÁüÎnKH it](crate::hybrid::dfa::Config::unicode_word_boundary)). (The [one-passÁüšoIF DFA](crate::dfa::onepass::DFA) can handle Unicode word boundaries forÁüäoNK anchored searches only, but in a cruel sort of joke, many Unicode featuresÁü³p74 tend to result in making the regex _not_ one-pass.)Áëp�lïp¯Ö.ýp�ü�qKH This example shows that the `PikeVM` implements Unicode word boundariesÁÌÍq correctly by default.Áçq�<ëqþ×.üóq=îõ.ü±r?‡¤Iñr�üõr&# let re = PikeVM::new(r"\b\w+\b")?;Áüœs&äÎ/Ãs�üÇsEB let mut it = re.find_iter(&mut cache, "Шерлок ХолмÑ�");Áü�t74 assert_eq!(Some(Match::must(0, 0..12)), it.next());ÁüÅt85 assert_eq!(Some(Match::must(0, 13..23)), it.next());Áüþt ƒ÷8üŸu.áß.<Îuþ×.í4ùuðÄÃ~à+[„íw¢$£$t†v4†vÅ¡$¡$ÊÃDšvšvÅ¡$¡$�»“�Ê ðÄ¥$†¥$“�“�£; £;ðÄðÄBÿ¤$±ßu¤$ ¥$“�I‚Ë ðħ$ g§$I‚I‚¤;¥;¦; ¤;ðÄ ¥;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¦;­àBÿ¦$²æu¦$ §$I‚œI‚üùÁ"ü›¾IF An iterator over all non-overlapping matches for a particular search.Áå¾�üé¾O¡áa¹¿�ü½¿+Üâaé¿�üí¿1. * `'r` represents the lifetime of the PikeVM.ÁüŸÀ96 * `'c` represents the lifetime of the PikeVM's cache.ÁüÙÀBáãaœÁ�ü ÁGD This iterator can be created with the [`PikeVM::find_iter`] method.Áþ\„ÂæG©$Ì3ª$¸«$«$ª$©$½Å6·¡I y¬$­$®$¯$�”˜Ât¢Â¢ÂŨ$¨$ æGðĤ¶Â,¶ÂŨ$¨$ Ì3±ÇtÐÂ$ÐÂŨ$¨$˜Û´äÂäÂŨ$¨$”èaбÐ æG±$Ì3²$¸³$±$³$²$½Å´$ g´$âäßáÜÞббø;ù;ú; ø;½Å ù;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ú;­àBÿ°$ÉñÁ°$ ´$æGÌ3¸бœбü¸Ë&ü¤ÇO�âdüôÇ$! groups, for a particular search.Á™È�ü�ÈKš�cTéÈï�côÈ�üøÈ+Üâa¤É�ü¨É1¯�hüÚÉ9ë�hü”ÊBáãa×Ê�üÛÊKH This iterator can be created with the [`PikeVM::captures_iter`] method.Áÿ|ÃËæG¶$Ì3·$¸¸$¸$¶$·$·ÆÆçìs};"™¹$º$»$¼$ÓË×ËÛËtåËåËŵ$µ$œ¡h¤ùË,ùËŵ$µ$Á¡ht“Ì$“Ìŵ$µ$˜Û´§Ì§Ìŵ$µ$”èa¢·Ñ æG¾$Ì3¿$¸À$¿$À$¾$·ÆÁ$ gÁ$ÔÖÑÓÎТ·¢·ü;ý;þ; ü;·Æ ý;€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡þ;­àBÿ½$ʰ˽$ Á$æGÌ3¸¢·œ¢·„ÙÖüÞÑHE A cache represents mutable state that a [`PikeVM`] requires during aÁ\§Ò‚áO³Ò�ü·ÒMJ For a given [`PikeVM`], its corresponding cache may be created either viaÁü…ÓKH [`PikeVM::create_cache`], or via [`Cache::new`]. They are equivalent inÁüÑÓOL every way, except the former does not require explicitly importing `Cache`.Á¡Ô�ü¥ÔEB A particular `Cache` is coupled with the [`PikeVM`] from which itÁüëÔHE was created. It may only be used with that `PikeVM`. A cache and itsÁü´ÕN•®_üƒÖ=: only be used with the new `PikeVM` (and not the old one).Á€,äÖ±ÇG˜xa®ƒªÃ$Ä$Å$Ì�Ø,�ØÅÂ$Â$Éþ”›Ù$›ÙÅÂ$Â$ŒÈ”¢Ú$¢ÚÅÂ$Â$ŒÈ¨¿Ò ±ÇÇ$†Ç$¨¿¨¿€< €<±Ç±ÇBÿÆ$ËÊÖÆ$ Ç$¨¿ŸÀÓ ±ÇÉ$ gÉ$ŸÀŸÀ�<‚<ƒ< �<±Ç ‚<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ƒ<­àBÿÈ$ÌÑÖÈ$ É$ŸÀœŸÀœüû‚dƒüŌȖ€'{rÊÌË$Ì$tÄýÄýÅÊ$Ê$ݪ¬™ÿT™ÿÅÊ$Ê$ÛÈ-ÃÔ ŒÈÎ$†Î$-Ã-É< ‰<ŒÈŒÈBÿÍ$ÎíûÍ$ Î$-ÃéÃÕ ŒÈÐ$ gÐ$éÃéÊ<‹<Œ< Š<ŒÈ ‹<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ<­àBÿÏ$ÏôûÏ$ Ð$éÜéÄ�”ƒL—”ÅÛÈI¥ ’olb¶Ò$Ó$Ô$üÌ”,Ì”ÅÑ$Ñ$纴ԕ|Ô•ÅÑ$Ñ$̦—”¦—ÅÑ$Ñ$ ÆÖ ÛÈÖ$†Ö$ Æ Æ’< ’<ÛÈÛÈBÿÕ$Ð�”Õ$ Ö$ ÆÀÆ× ÛÈØ$ gØ$ÀÆÀÆ“<”<•< “<ÛÈ ”<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡•<­àBÿ×$ш”×$ Ø$ÀÆœÀÆ”ëdžlðÇÅ·Éȹ°SH^jÚ$Û$Ý$Û$Ü$Ç·ÉBÿÞ$ß$¿â †¿â ÅÙ$Ù$ Û$¿â ¿â ÅÇ·ÉBÿÙ$Ù$©»h<ÅÈÅÙ$Ù$Çt¡É†ÅÙ$Ù$·É„²É$²ÉÅÙ$Ù$×�ÜÄÉ4ÄÉÅÙ$Ù$•¦ÑÈÙ ·Éá$†á$ÑÈÑÈœ< œ<·É·ÉBÿà$ÕÜÇà$ á$ÑÈÖÊÚ ·Éã$ gã$ÖÊÖÊ�<ž<Ÿ< �<·É ž<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ÿ<­àBÿâ$ÖãÇâ$ ã$ÖÊœÖʤÄ@‡LÏ@¢Ê+G÷^¡å$æ$ç$è$é$ê$”ŠB4ŠBÊä$ä$™ž„èC$èCÊä$ä$™žüéD"TéDÊä$ä$ÌŸüÕE$\ÕEÊä$ä$„¡Ì•GT•GÊä$ä$ô¢ìœHdœHÊä$ä$ð£ÚÑÛ ¢Êì$†ì$ÚÑÚÑ <  <¢Ê¢ÊBÿë$×¼@ë$ ì$ÚÑdðHˆ,÷HÊšËW çß¿Lî$ä�J\�JÊí$í$ˆ¨ñÓÜ šËð$†ð$ñÓñÓ¡< ¡<šËšËBÿï$ØèHï$ ð$ñÓŒïK‰TöKÊÑËšX Njºñªò$ó$„ŸL,ŸLÊñ$ñ$ú¡„ÞL<ÞLÊñ$ñ$ÇâÔÝ ÑËõ$†õ$âÔâÔ¢< ¢<ÑËÑËBÿô$ÙçKô$ õ$âÔ|±Î—D¸Îʕ̿áÈjžrUS÷$ø$|ïÎ4ïÎÊö$ö$Ç|ÃÏ4ÃÏÊö$ö$ÇèÕà •Ìú$†ú$èÕèÕ´< ´<•Ì•ÌBÿù$í¢Îù$ ú$èÕÖá •Ìü$ gü$ÖÖµ<¶<·< µ<•Ì ¶<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡·<­àBÿû$î©Îû$ ü$ÖœÖ|èИDïÐÊäÌ;2Án7ãtâþ$ÿ$ŒþÐDþÐÊý$ý$Ç\•Ñ$•ÑÊý$ý$xØâ äÌ�%†�%xØxظ< ¸<äÌäÌBÿ€%ïÙЀ% �%xØÙã ä̃% gƒ%ÙÙ¹<º<»< ¹<äÌ º<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡»<­àBÿ‚%ðàЂ% ƒ%ٌٜ”Ó™T›ÓʲÍJÏg¼ò!Á…%†%ˆ%Œ®ÔD®ÔÊ„%„%Ç´£Õ4£ÕÊ„%„%Š· ·Õ<öÕöÕÊ„%„%eÛä ²ÍŠ%†Š%eÛeÛ¼< ¼<²Í²ÍBÿ‰%ñ…Ó‰% Š%eÛÜå ²ÍŒ% gŒ%Üܽ<¾<¿< ½<²Í ¾<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¿<­àBÿ‹%òŒÓ‹% Œ%ÜœÜdÔ‚œ,Û‚ÊŒÎì)ý»›gèŽ%�%Üç‚Tç‚Ê�%�%æ½ €ƒTˆƒˆƒÊ�%�%ÁÞæ ŒÎ’%†’%ÁÞÁÞÆ< Æ<ŒÎŒÎBÿ‘%÷¶‚‘% ’%ÁÞZßç ŒÎ”% g”%ZßZßÇ<È<É< Ç<ŒÎ È<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡É<­àBÿ“%ø½‚“% ”%ZßœZß áè ŒÎ–%Ζ% á á á áÊ< Ê<ŒÎBÿ•%ùÄ‚•% –% áDâé ŒÎDâé ŒÎš%ù±š%DâDâË<Ì< Ë<ŒÎ Ì<ŒÎBÿ™%úÈ‚™% š%Dâî Dâ|Œ„�T‘„Ê�Ï(¶ü0Ê—Äœ%�%Ÿ% %¢%£%�%ž%ú¡�ÏBÿ %¡%ú¡�ÏBÿ£%¤%ú¡�ÏBÿã �ã Ê›%›% �%ã ã Êú¡�ÏBÿ›%›%¦×hL¦„Ê›%›%ú¡aã �aã Ê›%›%  %aã aã Êú¡�ÏBÿ›%›%žØhLº„Ê›%›%ú¡²ã �²ã Ê›%›% £%²ã ²ã Êú¡�ÏBÿ›%›%–ÙhLτʛ%›%ú¡ÀâÀâÀâê �ÏÀâê �ϧ%†§%ÀâÀâÍ< Í<�Ï�ÏBÿ¦%û胦% §%Àâ üïƒë �Ï'ãì �Ϫ% gª%'ã'ãÎ<Ï<Ð< Î<�Ï Ï<€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ð<­àBÿ©%ýõƒ©% ª%'ãœ'ã2æí �Ϭ%ά%2æ2æ2æ2æÑ< Ñ<�ÏBÿ«%þüƒ«% ¬%2æræî �Ïræî �ϯ%ù±¯%ræræÒ<Ó< Ò<�Ï Ó<�ÏBÿ®%ÿ€„®% ¯%ræî ræä üáJG Unit represents a single unit of haystack for DFA based regex engines.Á¬�ü°KH It is not expected for consumers of this crate to need to use this typeÁüüGD unless they are implementing their own DFA. And even then, it's notÁüÄMJ required: implementors may use other techniques to handle haystack units.Á’�ü–JG Typically, a single unit of haystack for a DFA would be a single byte.ÁüáMJ However, for the DFAs in this crate, matches are delayed by a single byteÁü¯MJ in order to handle look-ahead assertions (`\b`, `$` and `\z`). Thus, onceÁüýMJ we have consumed the haystack, we must run the DFA through one additionalÁüËB? transition using a unit that indicates the haystack has ended.ÁŽ�ü’JG There is no way to represent a sentinel with a `u8` since all possibleÁüÝFC values *may* be valid haystack units to a DFA, therefore this typeÁü¤.+ explicitly adds room for a sentinel value.ÁÓ�ü×EB The sentinel EOI value is always its own equivalence class and isÁü�NK ultimately represented by adding 1 to the maximum equivalence class value.ÁüìJG So for example, the regex `^[a-z]+$` might be split into the followingÁÄ· equivalence classes:ÁÐ�\Ô ```textÁŒà 0 => [\x00-`]Átò 1 => [a-z]ÁŒ� 2 => [{-\xFF]Át“ 3 => [EOI]Á<¢þ×.ª�ü®EB Where EOI is the special sentinel value that is always in its ownÁüô  singleton equivalence class.Á¥$×ÞÐZF¦°»�±%²%ðÑÞÐBÿä 7–ðÑÞÐBÿ°%°% ±%DÜ–°%°%ðÑ{ë{ë{ë÷ ÞÐ{ë÷ Þе%†µ%{ë{ëÞ< Þ<ÞÐÞÐBÿ´%� ž´% µ%{ë ‘ ¥ø ÞÐõëù Þи%θ%õëõëõëõëß< ß<ÞÐBÿ·%’ «·% ¸%õë¡ìú ÞСìú Þл%ù±»%¡ì¡ìà<á< à<ÞÐ á<ÞÐBÿº%“ ¯º% »%¡ìî ¡ì íû Þн%±²½% í íâ<ã< â<ÞÐ ã<ÞÐʱ Bÿ¼%” º¼% ½% íî  í%îü Þп%î¿%%î%îä<å< ä<ÞÐ å<ÞÐİ Bÿ¾%• ƾ% ¿%%îî %îlŸ¦D¤–ðÑ`÷8>ŽsðçÁ%Â%Ä%Å%Â%Ã%ðÑBÿÅ%Æ%ðÑBÿSä ¦Sä –À%À% Â%Sä Sä –ðÑBÿÀ%À%“ôh¤ –À%À%¢ä ¦¢ä –À%À% Å%¢ä ¢ä –ðÑBÿÀ%À%ˆõh¥"–À%À%ŠîŠîŠîý ðÑŠîý ðÑÉ%†É%ŠîŠîæ< æ<ðÑðÑBÿÈ%– ñÈ% É%Šî — øþ ðÑïÿ ðÑÌ%ÎÌ%ïïïïç< ç<ðÑBÿË%˜ þË% Ì%ïLï€ ðÑLï€ ðÑÏ%ù±Ï%LïLïè<é< è<ðÑ é<ðÑBÿÎ%™ ‚Î% Ï%Lïî Lï'ó� ðÑÑ%±²Ñ%'ó'óê<ë< ê<ðÑ ë<ðÑʱ BÿÐ%š �Ð% Ñ%'óî 'óÕó‚ ðÑÓ%îÓ%ÕóÕóì<í< ì<ðÑ í<ðÑİ BÿÒ%› ™Ò% Ó%Õóî Õóñä ü�=:7 A representation of byte oriented equivalence classes.ÁØ=�üÜ=NK This is used in a DFA to reduce the size of the transition table. This canÁü«>OL have a particularly large impact not only on the total size of a dense DFA,Áôû> but also on compile times.Áš?�üž?LI The essential idea here is that the alphabet of a DFA is shrunk from theÁüë?LI usual 256 distinct byte values down to a set of equivalence classes. TheÁü¸@NK guarantee you get is that any byte belonging to the same equivalence classÁü‡AJG can be treated as if it were any other byte in the same class, and theÁüÒA'$ result of a search wouldn't change.ÁúA�lþA¯Ö.ŒB�ü�B63 This example shows how to get byte classes from anÁüÇBNK [`NFA`](crate::nfa::thompson::NFA) and ask for the class of various bytes.Á–C�<šCþ×.ü¢C+®ÆGÎC�üÒC"žõIüõC%ËõIü›D8ûõIüÔD5¾öIüŠEþöIüªE5¨÷IàE�üäE.áß.<“Fþ×.ª\½FªÓ‚âkPWpuÕ%Ö%­òªÓBÿñä 7–­òªÓBÿÔ%Ô% Õ%LÉF–Ô%Ô%­òÎFÓ÷Ó÷Ó÷‡ ªÓÓ÷‡ ªÓÚ%†Ú%Ó÷Ó÷ñ< ñ<ªÓªÓBÿÙ%¤ ¤FÙ% Ú%Ó÷¹ ¥ «Fˆ ªÓäΟü–�,) An iterator over each equivalence class.ÁÃ��üÇ�JG The last element in this iterator always corresponds to [`Unit::eoi`].Á’ž�ü–ž85 This is created by the [`ByteClasses::iter`] method.ÁÏž�üÓžJG The lifetime `'a` refers to the lifetime of the byte classes that thisÁôžŸ iterator was created from.Á´lÙŸÄÞ%Þ%�Ô!´ã ÅÒTß%à%çŸÄñŸ<ñŸ–Ý%Ý% ĪÓD�  � –Ý%Ý%v’ Äâ%â%�Ôã% gã%vxvv„=…=†= „=�Ô …=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡†=­àBÿá%¸ ÆŸá% ã%Ävœvüé¥'üÛ£FC An iterator over representative bytes from each equivalence class.Á¢¤�ü¦¤C@ This is created by the [`ByteClasses::representatives`] method.Áê¤�üî¤J—ˆiô¹¥ëˆiµÄô¥Äå%å%äÔ”º¥�F mæ%ç%è%é%�¦Ä—¦<—¦–ä%ä%åŠi|µ¦Dµ¦–ä%ä%¼Ê¦Dʦ–ä%ä%ØÚ´ç¦T禖ä%ä%ÈË “ Äë%ë%äÔì% gì%«­ˆ=‰=Š= ˆ=äÔ ‰=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Š=­àBÿê%¹ á¥ê% ì%Äœü¤³ ü©±:7 An iterator over all elements in an equivalence class.Áä±�üè±<9 This is created by the [`ByteClasses::elements`] method.Á¥²�ü©²J—ˆiôô²ëˆi¶Œ¯³Äî%î%ÓÕ.´` &-xï%ð%ñ%Á³Ä˳<˳–í%í%åŠi\é³,é³–í%í%ÞÐ\ú³$ú³–í%í%ž” Äó%ó%ÓÕô% gô%��žžŒ=�=Ž= Œ=ÓÕ �=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ž=­àBÿò%º œ³ò% ô%Äžœžü¤¹!·´«¹–Äö%ö%µÖï{“ò yª÷%ø%¹ü̹D̹–õ%õ%ÓÕÜñ¹,ñ¹–õ%õ%°¯°• Äú%ú%µÖû% gû%qs°°�=‘=’= �=µÖ ‘=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡’=­àBÿù%» œ¹ù% û%İœ°Aå Ó«ŒŸË̙˸dÝËŠ×Y[}ýE?ÇOý%þ%Ú׊×BÿAå 9–Ú׊×Bÿü%ü% ý%<êË–ü%ü%Ú×– Š×€&†€&”= ”=Š×Š×Bÿÿ%¼ ¼Ëÿ% €&›— Š×‚& g‚&››•=–=—= •=Š× –=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡—=­àBÿ�&½ ÃË�& ‚&›œ›ÌÌÙº<ÞÙÚ׳o¹Y"<Є&dìÙ$ìÙ–ƒ&ƒ&ãØ¨¨¨š Úרš Úׇ&†‡&¨¨œ= œ=Ú×Ú×Bÿ†& ŸÙ†& ‡&¨ à ¦Ù› Ú× œ Ú׊& gŠ&  �=ž=Ÿ= �=Ú× ž=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ÿ=­àBÿ‰&Ä ¬Ù‰& Š& œ g� Ú׌&÷Œ&ggÚ×Bÿ‹&‹& Œ&Üž Ú׎&ÎŽ&ÜÜÜÜ =  =Ú×Bÿ�&Æ ¼Ù�& Ž&Ü‹Ÿ Ú׋Ÿ Úב&ù±‘&‹‹¡=¢= ¡=Ú× ¢=Ú×Bÿ�&Ç ÀÙ�& ‘&‹î ‹’å »4ÃÛ–ãØŒèT&ï¬ö÷“&”&’¾ãØBÿ’å :–’¾ãØBÿ’&’& “&LÊÛ–’&’&’¾ ÑÛ  ãØ  ãØ˜&†˜&£= £=ãØãØBÿ—&È –Û—& ˜&» É �Û¡ ãØ®¢ ãØœ&÷œ&®®ãØBÿ›&›& œ&#£ ãØž&Ξ&####¤= ¤=ãØBÿ�&Ë ¬Û�& ž&#Ìæ¤ ãØæ¤ ãØ¢&ù±¢&ææ¥=¦= ¥=ãØ ¦=ãØBÿ¡&Ì °Û¡& ¢&æî æü—û!¾\©ûĤ&¤&ðÙ™B¡½¢Ùy%¥&¦&µû„¿û¿û–£&£& ÄÚ×DÕû Õû–£&£&³!§ Ĩ&¨&ðÙ©& g©&vx³!³!µ=¶=·= µ=ðÙ ¶=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡·=­àBÿ§&Ñ �û§& ©&ij!œ³!üµþ&¿„ÇþÄ«&«&ÄÚ¹uÒöÙ¬&­&Øþ„âþâþ–ª&ª&®«iDøþ øþ–ª&ª&’#¨ į&¯&ÄÚ°& g°&oq’#’#¹=º=»= ¹=ÄÚ º=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡»=­àBÿ®&Ò ­þ®& °&Ä’#œ’#œ¸+ü�FC The span offsets of capturing groups after a match has been found.Á×�üÛHE This type represents the output of regex engines that can report theÁü¤HE offsets at which capturing groups matches or "submatches" occur. ForÁüíOL example, the [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM). When a matchÁü½LI occurs, it will at minimum contain the [`PatternID`] of the pattern thatÁüŠKH matched. Depending upon how it was constructed, it may also contain theÁüÖJG start/end offsets of the entire match of the pattern and the start/endÁü¡C@ offsets of each capturing group that participated in the match.Áå�üéNK Values of this type are always created for a specific [`GroupInfo`]. It isÁü¸MJ unspecified behavior to use a `Captures` value in a search with any regexÁü†LI engine that has a different `GroupInfo` than the one the `Captures` wereÁŒÓ created with.Áå�”é # ConstructorsÁü�ü€HE There are three constructors for this type that control what kind ofÁüÉ*' information is available upon a match:Áô�üøMJ * [`Captures::all`]: Will store overall pattern match offsets in additionÁüÆFC to the offsets of capturing groups that participated in the match.Áü�@= * [`Captures::matches`]: Will store only the overall patternÁüÎOL match offsets. The offsets of capturing groups (even ones that participatedÁüž$! in the match) are not available.ÁüÃJG * [`Captures::empty`]: Will only store the pattern ID that matched. NoÁüŽ'$ match offsets are available at all.Á¶�üºNK If you aren't sure which to choose, then pick the first one. The first oneÁü‰&# is what convenience routines like,Áü°WT [`PikeVM::create_captures`](crate::nfa::thompson::pikevm::PikeVM::create_captures),Á܈ will use automatically.Á¤�ü¨LI The main difference between these choices is performance. Namely, if youÁüõNK ask for _less_ information, then the execution of regex search may be ableÁÄÄ to run more quickly.ÁÝ�\á # NotesÁí�üñNK It is worth pointing out that this type is not coupled to any one specificÁüÀKH regex engine. Instead, its coupling is with [`GroupInfo`], which is theÁüŒMJ thing that is responsible for mapping capturing groups to "slot" offsets.ÁüÚOL Slot offsets are indices into a single sequence of memory at which matchingÁüªNK haystack offsets for the corresponding group are written by regex engines.Áù�lý¯Ö.‹ �ü� OL This example shows how to parse a simple date and extract the components ofÁüß " the date via capturing groups:Á‚!�<†!þ×.üŽ!>�ÉLÍ!�üÑ!AóÉLü“"J¶Ú.Þ"�üâ"5ÛÊLì˜#ØÅ;ü¶#:€Æ;üñ#:ÅÆ;ü¬$;ŠÇ;è$�üì$.áß.<›%þ×.£%�ü§%%" # Example: named capturing groupsÁÍ%�üÑ%IF This example is like the one above, but leverages the ability to nameÁü›&=: capturing groups in order to make the code a bit clearer:ÁÙ&�<Ý&þ×.üå&>�ÉL¤'�ü¨'PM let re = PikeVM::new(r"^(?P[0-9]{4})-(?P[0-9]{2})-(?P[0-9]{2})$")?;Áüù'J¶Ú.Ä(�üÈ(5ÛÊLìþ(ØÅ;üœ)DA assert_eq!(Some(Span::from(0..4)), caps.get_group_by_name("y"));Áüá)DA assert_eq!(Some(Span::from(5..7)), caps.get_group_by_name("m"));Áü¦*EB assert_eq!(Some(Span::from(8..10)), caps.get_group_by_name("d"));Áì*�üð*.áß.<Ÿ+þ×.ÀDÃ+˜Û£Ùº¸Eü²&³&´&¬¿-T¿-ô±&±&ýÝ´È.È.ô±&±&ܧüŒ>,Œ>ô±&±&çº&© ˜Û¶&†¶&&&½= ½=˜Û˜ÛBÿµ&Ó °+µ& ¶&&üׄ"üï�@= An iterator over all capturing groups in a `Captures` value.Á°‚�ü´‚IF This iterator includes capturing groups that did not participate in aÁüþ‚KH match. See the [`Captures::iter`] method documentation for more detailsÁŒÊƒ and examples.Á܃�üàƒHE The lifetime parameter `'a` refers to the lifetime of the underlyingÁ¬©„ `Captures` value.ÁÇœâ„ĸ&¸&ˆÝCkŠË@Õœ2¹&º&ö„”€…$€…ô·&·&êÞPü˜…7,˜…ô·&·&ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—ÌáoK¬ ļ&¼&ˆÝ½&†½&°²oKoKä= ä=ˆÝˆÝBÿ»&Ü È„»& ½&ÄoKL­ Ä¿&¿&ˆÝÀ& gÀ&?BLLå=æ=ç= å=ˆÝ æ=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ç=­àBÿ¾&Ý Ï„¾& À&ÄLœL}æ üÖ‰FC Represents information about capturing groups in a compiled regex.Á�Š�ü¡ŠLI The information encapsulated by this type consists of the following. ForÁŒîŠ each pattern:Á€‹�ü„‹LI * A map from every capture group name to its corresponding capture groupÁTÑ‹ index.ÁüÜ‹MJ * A map from every capture group index to its corresponding capture groupÁLªŒ name.Áü´ŒLI * A map from capture group index to its corresponding slot index. A slotÁü��NK refers to one half of a capturing group. That is, a capture slot is eitherÁüÐ�JG the start or end of a capturing group. A slot is usually the mechanismÁü›ŽMJ by which a regex engine records offsets for each capturing group during aÁ\鎂áOõŽ�üùŽIF A `GroupInfo` uses reference counting internally and is thus cheap toÁTÃ� clone.ÁÎ��üÒ�*' # Mapping from capture groups to slotsÁý��ü��KH One of the main responsibilities of a `GroupInfo` is to build a mappingÁüÍ�MJ from `(PatternID, u32)` (where the `u32` is a capture index) to somethingÁü›‘GD called a "slot." As mentioned above, a slot refers to one half of aÁüã‘GD capturing group. Both combined provide the start and end offsets ofÁü«’30 a capturing group that participated in a match.Áß’�üã’MJ **The mapping between group indices and slots is an API guarantee.** ThatÁü±“DA is, the mapping won't change within a semver compatible release.Áö“�üú“IF Slots exist primarily because this is a convenient mechanism by whichÁüÄ”GD regex engines report group offsets at search time. For example, theÁüŒ•KH [`nfa::thompson::State::Capture`](crate::nfa::thompson::State::Capture)ÁüØ•NK NFA state includes the slot index. When a regex engine transitions throughÁü§–OL this state, it will likely use the slot index to write the current haystackÁü÷–KH offset to some region of memory. When a match is found, those slots areÁü×NK then reported to the caller, typically via a convenient abstraction like aÁ¼’˜ [`Captures`] value.Áª˜�ü®˜NK Because this crate provides first class support for multi-pattern regexes,Áüý˜HE and because of some performance related reasons, the mapping betweenÁüÆ™MJ capturing groups and slots is a little complex. However, in the case of aÁü”šMJ single pattern, the mapping can be described very simply: for all captureÁüâšNK group indices `i`, its corresponding slots are at `i * 2` and `i * 2 + 1`.Áü±›JG Notice that the pattern ID isn't involved at all here, because it onlyÁüü›B? applies to a single-pattern regex, it is therefore always `0`.Á¿œ�üÜMJ In the multi-pattern case, the mapping is a bit more complicated. To talkÁü‘�EB about it, we must define what we mean by "implicit" vs "explicit"Á¬×� capturing groups:Áí��üñ�KH * An **implicit** capturing group refers to the capturing group that isÁü½žKH present for every pattern automatically, and corresponds to the overallÁü‰ŸJG match of a pattern. Every pattern has precisely one implicit capturingÁüÔŸNK group. It is always unnamed and it always corresponds to the capture groupÁt£  index `0`.Áü² HE * An **explicit** capturing group refers to any capturing group thatÁüû JG appears in the concrete syntax of the pattern. (Or, if an NFA was handÁüÆ¡OL built without any concrete syntax, it refers to any capturing group with anÁä–¢ index greater than `0`.)Á³¢�”·¢ Some examples:ÁÊ¢�ü΢HE * `\w+` has one implicit capturing group and zero explicit capturingÁ\—£÷€cü££<9 * `(\w+)` has one implicit group and one explicit group.Áüà£MJ * `foo(\d+)(?:\pL+)(\d+)` has one implicit group and two explicit groups.Á®¤�ü²¤EB Turning back to the slot mapping, we can now state it as follows:Áø¤�üü¤KH * Given a pattern ID `pid`, the slots for its implicit group are alwaysÁüÈ¥# at `pid * 2` and `pid * 2 + 1`.Áüì¥EB * Given a pattern ID `0`, the slots for its explicit groups startÁü²¦&# at `group_info.pattern_len() * 2`.ÁüÙ¦KH * Given a pattern ID `pid > 0`, the slots for its explicit groups startÁü¥§NK immediately following where the slots for the explicit groups of `pid - 1`ÁDô§ end.Áý§�ü�¨MJ In particular, while there is a concrete formula one can use to determineÁüϨJG where the slots for the implicit group of any pattern are, there is noÁüš©JG general formula for determining where the slots for explicit capturingÁüå©KH groups are. This is because each pattern can contain a different numberÁt±ª of groups.ÁÀª�üĪJG The intended way of getting the slots for a particular capturing groupÁü�«DA (whether implicit or explicit) is via the [`GroupInfo::slot`] orÁüÔ«  [`GroupInfo::slots`] method.Áõ«�üù«JG See below for a concrete example of how capturing groups get mapped toÁTĬ slots.ÁϬ�lÓ¬¯Ö.á¬�üå¬F€úP„¬­èè4½­�<Á­þ×.üÉ­KH use regex_automata::util::{captures::GroupInfo, primitives::PatternID};Á•®�ü™®#ÄûPü½® òûPœÞ®œüPüò®2ºüPü¥¯&÷üPD̯¯ƒ1üÕ¯,¶ýPü‚°&íýPü©°96 // We can query the number of groups for any pattern.Áüã°63 assert_eq!(2, info.group_len(PatternID::must(0)));Áüš±63 assert_eq!(1, info.group_len(PatternID::must(1)));Áüѱ63 assert_eq!(5, info.group_len(PatternID::must(2)));Áüˆ²63 assert_eq!(3, info.group_len(PatternID::must(3)));Áü¿²1. // An invalid pattern always has zero groups.Áüñ²85 assert_eq!(0, info.group_len(PatternID::must(999)));Áγ�þPüó$ÀþPè³�üì³HE // We can map a group index for a particular pattern to its name, ifÁ”µ´ // one exists.ÁüÈ´A> assert_eq!(Some("foo"), info.to_name(PatternID::must(3), 2));Áüе:7 assert_eq!(None, info.to_name(PatternID::must(2), 4));Áüŵ(% // Or map a name to its group index.ÁüîµB? assert_eq!(Some(1), info.to_index(PatternID::must(0), "foo"));Áü±¶B? assert_eq!(Some(2), info.to_index(PatternID::must(3), "foo"));Áô¶�üø¶.áß.<§·þ×.¯·�ü³·30 # Example: mapping from capture groups to slotsÁç·�üë·JG This example shows the specific mapping from capture group indices forÁü¶¸LI each pattern to their corresponding slots. The slot values shown in thisÁüƒ¹,) example are considered an API guarantee.Á°¹�<´¹þ×.ü¼¹KÓ€jˆº�üŒº#ÄûPü°º òûPœÑºœüPüåº2ºüPü˜»&÷üPD¿»¯ƒ1È»�üÌ»A> // We first show the slots for each pattern's implicit group.Áü޼@= assert_eq!(Some((0, 1)), info.slots(PatternID::must(0), 0));Áüϼ@= assert_eq!(Some((2, 3)), info.slots(PatternID::must(1), 0));Áü�½@= assert_eq!(Some((4, 5)), info.slots(PatternID::must(2), 0));Áüѽ@= assert_eq!(Some((6, 7)), info.slots(PatternID::must(3), 0));Á’¾�ü–¾C@ // And now we show the slots for each pattern's explicit group.ÁüÚ¾@= assert_eq!(Some((8, 9)), info.slots(PatternID::must(0), 1));Áü›¿B? assert_eq!(Some((10, 11)), info.slots(PatternID::must(2), 1));ÁüÞ¿B? assert_eq!(Some((12, 13)), info.slots(PatternID::must(2), 2));Áü¡ÀB? assert_eq!(Some((14, 15)), info.slots(PatternID::must(2), 3));ÁüäÀB? assert_eq!(Some((16, 17)), info.slots(PatternID::must(2), 4));Áü§ÁB? assert_eq!(Some((18, 19)), info.slots(PatternID::must(3), 1));ÁüêÁB? assert_eq!(Some((20, 21)), info.slots(PatternID::must(3), 2));Á­Â�ü±ÂLI // Asking for the slots for an invalid pattern ID or even for an invalidÁüþÂKH // group index for a specific pattern will return None. So for example,ÁüÊÃNK // you're guaranteed to not get the slots for a different pattern than theÁ¬™Ä // one requested.Áü¯Ä85 assert_eq!(None, info.slots(PatternID::must(5), 0));ÁüèÄ85 assert_eq!(None, info.slots(PatternID::must(1), 1));Á¡Å�ü¥Å.áß.<ÔÅþ×.ÈLˆÆýÝ+É@Ž@ÛwSÂ&Ã&ÏœýÝBÿ}æ 8ôÏœýÝBÿÁ&Á& Â&œ’ÆôÁ&Á&ÏœCN® ýÝÅ&†Å&CNCNê= ê=ýÝýÝBÿÄ&Þ åÅÄ& Å&CNÁN¯ ýÝÇ& gÇ&ÁNÁNë=ì=í= ë=ýÝ ì=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡í=­àBÿÆ&ß ìÅÆ& Ç&ÁNœÁNôO° ýÝÉ&÷É&ôOôOýÝBÿÈ&È& É&¬“¤Ìtš¤ôÍÞdÓ4Jš[MºË&Ì&Í&Î&ü¯¤*\¯¤ôÊ&Ê&ϼüߤ"lߤôÊ&Ê&•¾ü‡¥)l‡¥ôÊ&Ê&㘜¶¥d¶¥ôÊ&Ê&V�± ÍÞÐ& gÐ&V�V�ü=ý=þ= ü=ÍÞ ý=€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡þ=­àBÿÏ&ä ‚¤Ï& Ð&V�œV�n�² ÍÞÒ&÷Ò&n�n�ÍÞBÿÑ&Ñ& Ò&Ì„ßü�Ü85 An error that may occur when building a `GroupInfo`.ÁÆÜ�üÊÜDA Building a `GroupInfo` does a variety of checks to make sure theÁü�ÝNK capturing groups satisfy a number of invariants. This includes, but is notÁüÞÝKH limited to, ensuring that the first capturing group is unnamed and thatÁüªÞA> there are no duplicate capture groups for a specific pattern.ÁÓt�ß¶ß<8/Æ^“–OÔ&Ĥß$¤ßôÓ&Ó&÷ß#¦³ ¶ßÖ&†Ö&#¦#¦…> …>¶ß¶ßBÿÕ&ì õÞÕ& Ö&#¦¡¦´ ¶ßØ& gØ&¡¦¡¦†>‡>ˆ> †>¶ß ‡>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ˆ>­àBÿ×&í üÞ×& Ø&¡¦œ¡¦¼ùàÔ”þàô÷ß¿&®VÇ�]Ú&Ü&ß&á&ã&Û&Ý&Þ&à&â&ä&å&|ŒâÔôÙ&Ù&÷ßœžâžâôÙ&Ù&ú‰lžãÔôÙ&Ù&÷ß”òã<òãôÙ&Ù&›†tóä<óäôÙ&Ù&lðæÔôÙ&Ù&÷ß”Èç<ÈçôÙ&Ù&›†”ŽéÔôÙ&Ù&÷ß”�ê<�êôÙ&Ù&›†L­íÔôÙ&Ù&÷ß”Žî<ŽîôÙ&Ù&›†dÊî$ÊîôÙ&Ù&‹ÏÒ§µ ÷ßç&†ç&Ò§Ò§‰> ‰>÷ß÷ßBÿæ&î êàæ& ç&Ò§ã«¶ ÷ßé& gé&ã«ã«Š>‹>Œ> Š>÷ß ‹>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ>­àBÿè&ï ñàè& é&㫜ã«ü…‡$üå„MJ An iterator over capturing groups and their names for a specific pattern.Á³…�ü·…=: This iterator is created by [`GroupInfo::pattern_names`].Áõ…�üù…IF The lifetime parameter `'a` refers to the lifetime of the `GroupInfo`ÁüÆ)& from which this iterator was created.ÁÚ¬�‡Äë&ë&Ìá#Ã/6$Ûì&¦‡ü°‡+°‡ôê&ê&�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄÙ™e²¼ Äî&î&Ìáï&†ï&¢¤e²e²’> ’>ÌáÌáBÿí&ú ö†í& ï&Äe²è²½ Äñ&ñ&Ìáò& gò&14è²è²“>”>•> “>Ìá ”>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡•>­àBÿð&û ý†ð& ò&Ä貜è²üÕŽ üÅŒHE An iterator over capturing groups and their names for a `GroupInfo`.ÁŽ��ü’�96 This iterator is created by [`GroupInfo::all_names`].ÁÌ��üÐ�I̯jüšŽ) °jÛŒàŽÄô&ô&µâªõ*ßÿçÅõ&ö&÷&ø&òŽÌüŽTüŽôó&ó& ÄýÝœ›�$›�ôó&ó&üŠô´�\´�ôó&ó&ܧüØ�?,Ø�ôó&ó&řǙș­É™Ê™àË™óG*¤�R{9 ÜÓi´¾ Äú&ú&µâû& gû&ùû´´˜>™>š> ˜>µâ ™>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡š>­àBÿù&ü ÍŽù& û&Ä´œ´Îæ ü–<$9 Provides a convenient `Debug` implementation for a `u8`.ÁÓ$�ü×L$I The `Debug` impl treats the byte as an ASCII, and emits a human readableÁü¤M$J representation of it. If the byte isn't ASCII, then it's emitted as a hexÁ¤ò$ escape sequence.ÁÜL©$¢ã¶©zßr†Aý&þ&¢ãBÿÎæ 6¢ãBÿü&ü& ý&4³$ü&ü&¨¶¨¶¨¶¿ ¢ã¨¶¿ ¢ã�'†�'¨¶¨¶œ> œ>¢ã¢ãBÿ€'ý �$€' �'¨¶ þ —$À ¢ã¬ñ;çTø;”Ä„'„'·äMj'Õ÷É«A…'†'ƒ<d�<�<”ƒ'ƒ'ÈåTŸ<Ÿ<”ƒ'ƒ'[Ï[Ï[ÏÍ Äˆ'ˆ'·ä~€[ÏÍ ÄŠ'Š'·ä‹'†‹'¯±[Ï[Ï«> «>·ä·äBÿ‰'— Í;‰' ‹'Ä[Ï ˜ Ô;Î Ä�'�'·ä47ÆÏÏ Ä�'�'·ä�' g�'gjÆÏÆÏ¬>­>®> ¬>·ä ­>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡®>­àBÿŽ'™ Ú;Ž' �'ÄÆÏœÆÏwÑÐ Ä’'’'·ä“'Γ'VYwÑwÑwÑwѯ> ¯>·äBÿ‘'š á;‘' “'ÄwÑ–ÒÑ Ä•'•'·äùü–ÒÑ Ä—'—'·ä˜'ù±˜'-0–Ò–Ò°>±> °>·ä ±>·äBÿ–'› å;–' ˜'Ä–Òî –Òd²=è·=”Äš'š'Èå˜qûî_†`í›'œ'ž'Ÿ'œ'�'ðæÈåBÿŸ' 'ÈåBÿ»=�ç è�ç ”™'™' œ'Ä�ç �ç ”ðæÈåBÿ™'™'™Éj<Ë=”™'™'ðæïç èïç ”™'™' Ÿ'Äïç ïç ”ÈåBÿ™'™'—Êj,à=”™'™'ÓÓÓÒ Ä¢'¢'ÈåADÓÒ Ä¤'¤'Èå¥'†¥'twÓÓ²> ²>ÈåÈåBÿ£'œ Ž=£' ¥'ÄÓ � •=Ó Ä§'§'ÈåûþxÓÔ Ä©'©'Èåª' gª'.1xÓxÓ³>´>µ> ³>Èå ´>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡µ>­àBÿ¨'ž ›=¨' ª'ÄxÓœxÓ«ÕÕ Ä¬'¬'Èå­'έ' «Õ«Õ«Õ«Õ¶> ¶>ÈåBÿ«'Ÿ ¢=«' ­'Ä«ÕðÕÖ Ä¯'¯'ÈåÀÃðÕÖ Ä±'±'Èå²'ù±²'ô÷ðÕðÕ·>¸> ·>Èå ¸>ÈåBÿ°'  ¦=°' ²'ÄðÕî ðÕ¼©8%üïK%H A searcher for creating iterators and performing lower level iteration.Á»%�ü¿L%I This searcher encapsulates the logic required for finding all successiveÁüŒJ%G non-overlapping matches in a haystack. In theory, iteration would lookÁÄ×% something like this:Áð%�üô)%& 1. Setting the start position to `0`.Áüž:%7 2. Execute a regex search. If no match, end iteration.ÁüÙK%H 3. Report the match and set the start position to the end of the match.Á´¥% 4. Go back to (2).Á¼%�üÀJ%G And if this were indeed the case, it's likely that `Searcher` wouldn'tÁü‹ O%L exist. Unfortunately, because a regex may match the empty string, the aboveÁüÛ K%H logic won't work for all possible regexes. Namely, if an empty match isÁü§ J%G found, then step (3) would set the start position of the search to theÁüò 8%5 position it was at. Thus, iteration would never end.Á« %�ü¯ H%E Instead, a `Searcher` knows how to detect these cases and forcefullyÁüø H%E advance iteration in the case of an empty match that overlaps with aÁœÁ % previous match.ÁÕ %�üÙ N%K If you know that your regex cannot match any empty string, then the simpleÁü¨ 2%/ algorithm described above will work correctly.ÁÛ %�üß J%¦ÓSüªN%ûÓS¤ù%ÓÔSŽ%�ü’O%L In particular, a `Searcher` is not itself an iterator. Instead, it providesÁüâN%K `advance` routines that permit moving the search along explicitly. It alsoÁü±I%F provides various routines, like [`Searcher::into_matches_iter`], thatÁüûL%I accept a closure (representing how a regex engine executes a search) andÁüÈ$%! returns a conventional iterator.Áí%�üñB%? The lifetime parameters come from the [`Input`] type passed toÁ´´% [`Searcher::new`]:ÁË%�üÏ6%ØÒS†%�ÔŠ% # Searcher vs IteratorÁ¥%�ü©M%J Why does a search type with "advance" APIs exist at all when we also haveÁü÷J%G iterators? Unfortunately, the reasoning behind this split is a complexÁüÂ(%% combination of the following things:Áë%�üïM%J 1. While many of the regex engines expose their own iterators, it is alsoÁü½O%L nice to expose this lower level iteration helper because it permits callersÁü�O%L to provide their own `Input` configuration. Moreover, a `Searcher` can workÁüÝK%H with _any_ regex engine instead of only the ones defined in this crate.Áü©G%D This way, everyone benefits from a shared iteration implementation.ÁüñL%I 2. There are many different regex engines that, while they have the sameÁü¾I%F match semantics, they have slightly different APIs. Iteration is justÁüˆM%J complex enough to want to share code, and so we need a way of abstractingÁüÖN%K over those different regex engines. While we could define a new trait thatÁü¥N%K describes any regex engine search API, it would wind up looking very closeÁüôM%J to a closure. While there may still be reasons for the more generic traitÁüÂJ%G to exist, for now and for the purposes of iteration, we use a closure.Áü�M%J Closures also provide a lot of easy flexibility at the call site, in thatÁüÛO%L they permit the caller to borrow any kind of state they want for use duringÁ¬«% each search call.ÁüÁN%K 3. As a result of using closures, and because closures are anonymous typesÁü�J%G that cannot be named, it is difficult to encapsulate them without bothÁüÛJ%G costs to speed and added complexity to the public API. For example, inÁü¦"% defining an iterator type likeÁüÉ@%= [`dfa::regex::FindMatches`](crate::dfa::regex::FindMatches),ÁüŠ N%K if we use a closure internally, it's not possible to name this type in theÁüÙ L%I return type of the iterator constructor. Thus, the only way around it isÁü¦!N%K to erase the type by boxing it and turning it into a `Box`.Áüõ!L%I This boxed closure is unlikely to be inlined _and_ it infects the publicÁüÂ"N%K API in subtle ways. Namely, unless you declare the closure as implementingÁü‘#J%G `Send` and `Sync`, then the resulting iterator type won't implement itÁüÜ#H%E either. But there are practical issues with requiring the closure toÁü¥$J%G implement `Send` and `Sync` that result in other API complexities thatÁüð$9%6 are beyond the scope of this already long exposition.Áüª%I%F 4. Some regex engines expose more complex match information than justÁüô%J%G "which pattern matched" and "at what offsets." For example, the PikeVMÁü¿&I%F exposes match spans for each capturing group that participated in theÁü‰'K%H match. In such cases, it can be quite beneficial to reuse the capturingÁüÕ'M%J group allocation on subsequent searches. A proper iterator doesn't permitÁü£(O%L this API due to its interface, so it's useful to have something a bit lowerÁüó(K%H level that permits callers to amortize allocations while also reusing aÁü¿)B%? shared implementation of iteration. (See the documentation forÁü‚*L%I [`Searcher::advance`] for an example of using the "advance" API with theÁdÏ*% PikeVM.)ÁÜ*%�üà*J%G What this boils down to is that there are "advance" APIs which requireÁü«+M%J handing a closure to it for every call, and there are also APIs to createÁüù+F%C iterators from a closure. The former are useful for _implementing_ÁüÀ,L%I iterators or when you need more flexibility, while the latter are usefulÁü�-9%6 for conveniently writing custom iterators on-the-fly.ÁÇ-%�üË-&%# # Example: iterating with capturesÁò-%�üö-J%G Several regex engines in this crate over convenient iterator APIs overÁüÁ.L%I [`Captures`] values. To do so, this requires allocating a new `Captures`ÁüŽ/K%H value for each iteration step. This can perhaps be more costly than youÁüÚ/G%D might want. Instead of implementing your own iterator to avoid thatÁü¢0J%G cost (which can be a little subtle if you want to handle empty matchesÁüí0=%: correctly), you can use this `Searcher` to do it for you:Á«1%�<¯1%þ×.Ì·1%ŽØ.üÑ1&%Ÿ¾Iìø1%�ôR¤–2% Input, Span,Á4«2%÷Ø.²2%�ü¶24%ðÔLüë2'%ßË;“3%�ü—3(%•Ï/üÀ3&%äÎ/ìç3%ލ3ü…4;%8 let mut searcher = Searcher::new(Input::new(haystack));ÁüÁ42%/ while let Some(_) = searcher.advance(|input| {Áüô40%Œ�Sä¥5%Å�SDÂ5% }) {ÁüË5K%’Ö;ü—6A%> matches.push(caps.get_group_by_name("numbers").unwrap());Á,Ù6%¶¯3ìß6%Ñ¥9Ìý6%Ü×;Ô—7%ÿ×;ܲ7%£Ø;<Î7%í¦9Ö7%�üÚ7.%áß.<‰8%þ×.ëD´8%¸´'´'ÛçRU6m©ü\>µ'¶'½8%„Õ9%,Õ9%«³'³'¿�ìµ;%tµ;%«³'³'ØÚ2Ú× ¸¸'¸'Ûç¹'†¹'km2Ú2Ú»> »>ÛçÛçBÿ·'£ š8%·' ¹'¸2ÚÆÚØ ¸»'»'Ûç¼' g¼'ùûÆÚÆÚ¼>½>¾> ¼>Ûç ½>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¾>­àBÿº'¤ ¡8%º' ¼'¸ÆÚœÆÚ@è üúàO%L An iterator over all non-overlapping half matches for an infallible search.ÁÊá%�üÎáL%I The iterator yields a [`HalfMatch`] value until no more matches could beÁT›â%ï�c¦â%�üªâ'%ìÐSÒâ%�üÖâD%«ÑS›ã%�üŸã9%‡ÒSÙã%�üÝã6%ØÒS”ä%�ü˜äJ%¦ÓSüãäN%ûÓS¤²å%ÓÔSÇå%�üËåH%E This iterator is created by [`Searcher::into_half_matches_iter`] andÁü”æ4%1 then calling [`TryHalfMatchesIter::infallible`].Áï|åæ%¸¿'‚À'¿'À'Ø´M ùæ%ŠéÛì�CÆÒ2®¾'Á'¯èŠéBÿ@è `«¯èŠéBÿ½'½' ¾'¸òèõæ%{}Ìüæ%«½'½'¯è¿Ý ¸Ã'‚Ä'Ä'Ã'Ø´MÔŸgòè¯ ùæ%ŠéÅ' gÅ'„†üþ¿¿Þ>ß>à> Þ>Šé ß>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡à>­àBÿÂ'¯ Òæ%Â' Å'¸ò远¿˜è üšþJ%¿àaåþ%�üéþO%¡áa¹ÿ%�ü½ÿ'%ìÐSåÿ%�üéÿD%«ÑS®€%�ü²€9%‡ÒSì€%�üð€6%ØÒS§�%�ü«�J%¦ÓSüö�N%ûÓS¤Å‚%ÓÔSÚ‚%�üÞ‚C%@ This iterator is created by [`Searcher::into_matches_iter`] andÁü¢ƒ0%- then calling [`TryMatchesIter::infallible`].Áñ\ïƒ%¸È'‚É'È'É'Ø´M ÿƒ%²êµœYŒ[ˆ{Ç'Ê'Ùé²êBÿ˜è `«Ùé²êBÿÆ'Æ' Ç'¸òèûƒ%{}¬‚„%«Æ'Æ'Ùéþ à ¸Ì'‚Í'Ì'Í'Ø´MÔ�’k´ ÿƒ%²êÎ' gÎ'|~ôöþ þ ê>ë>ì> ê>²ê ë>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ì>­àBÿË'´ ܃%Ë' Î'¸òèþ œþ ïè ü£œK%H An iterator over all non-overlapping captures for an infallible search.Áïœ%�üóœK%š�cT¿�%ï�cÊ�%�üÎ�'%ìÐSö�%�üú�D%«ÑS¿ž%�üÞ9%‡ÒSýž%�ü�Ÿ6%ØÒS¸Ÿ%�ü¼ŸJ%¦ÓSü‡ N%ûÓS¤Ö %ÓÔSë %�üï I%F This iterator is created by [`Searcher::into_captures_iter`] and thenÁü¹¡,%) calling [`TryCapturesIter::infallible`].ÁÓ«Œì¡%Ìæ¡%ódœ¢%¸Ñ'‚Ò'Ñ'Ò'Ø´M ­¢%çëZ„ý¾äP�Ð'Ó'�ëçëBÿïè `«�ëçëBÿÏ'Ï' Ð'¸òè©¢%{}´°¢%«Ï'Ï'�ë¶ã ¸Õ'‚Ö'Ö'Õ'Ø´MÔ�’k¹ ­¢%çë×' g×'|~ôö¶¶÷>ø>ù> ÷>çë ø>€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ù>­àBÿÔ'¹ ‰¢%Ô' ×'¸òè¶œ¶lÚäÌ A look-around assertion.Áé�üíHE An assertion matches at a position between characters in a haystack.Áü¶ OL Namely, it does not actually "consume" any input as most parts of a regularÁü† MJ expression do. Assertions are a way of stating that some property must beÁüÔ /, true at a particular point during matching.Á„ �üˆ 2/ For example, `(?m)^[a-z]+$` is a pattern that:Á» �ü¿ LI * Scans the haystack for a position at which `(?m:^)` is satisfied. ThatÁüŒ LI occurs at either the beginning of the haystack, or immediately followingÁ¬Ù  a `\n` character.Áüï 30 * Looks for one or more occurrences of `[a-z]`.Áü£ KH * Once `[a-z]+` has matched as much as it can, an overall match is onlyÁüï 41 reported when `[a-z]+` stops just before a `\n`.Á¤�ü¨HE So in this case, `abc` and `\nabc\n` match, but `\nabc1\n` does not.Áñ�üõMJ Assertions are also called "look-around," "look-behind" and "look-ahead."ÁüÃNK Specifically, some assertions are look-behind (like `^`), other assertionsÁü’NK are look-ahead (like `$`) and yet other assertions are both look-ahead andÁäá look-behind (like `\b`).Áþ�Ô‚ # Assertions in an NFAÁ��ü¡IF An assertion in a [`thompson::NFA`](crate::nfa::thompson::NFA) can beÁüëNK thought of as a conditional epsilon transition. That is, a matching engineÁüºJG like the [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM) only permitsÁü…GD moving through conditional epsilon transitions when their conditionÁüÍIF is satisfied at whatever position the `PikeVM` is currently at in theÁl—ÈÖ<¥�ü©KH How assertions are handled in a `DFA` is trickier, since a DFA does notÁüõMJ have epsilon transitions at all. In this case, they are compiled into theÁüÃOL automaton itself, at the expense of more states than what would be requiredÁÌ“ without an assertion.Áõ$ãôí3à.c¶šÙ'Ú'Ü'Ý'ß'à'â'ã'å'æ'è'é'ë'ì'î'ï'ñ'ò'ô'õ'÷'ø'ú'û'ý'þ'€(�(ƒ(„(†(‡(‰(Š(Œ(�(Û'Ú'Þ'Ý'á'à'ä'ã'ç'æ'ê'é'í'ì'ð'ï'ó'ò' ö'õ' ù'ø' ü'û' ÿ'þ' ‚(�(…(„(ˆ(‡(‹(Š(Ž(�(,ÝüîKH Match the beginning of text. Specifically, this matches at the startingÁÔ¾ position of the input.ÁõØ'Ø'ôí“•Ø'Ø'ôíU6ØüñC@ Match the end of text. Specifically, this matches at the endingÁԹ˴kõaØ'Ø'ôíuwØ'Ø'ôí07<·üêIF Match the beginning of a line or the beginning of text. Specifically,Áü¸JG this matches at the starting position of the input, or at the positionÁü‡+( immediately following a `\n` character.ÁõãØ'Ø'ôí÷ùØ'Ø'ôí 8,‰üÍJG Match the end of a line or the end of text. Specifically, this matchesÁüœDA at the end position of the input, or at the position immediatelyÁüå preceding a `\n` character.ÁõÒØ'Ø'ôíæèØ'Ø'ôíæ8L­ü�Iñ¶küëJÄ·küºJG immediately following either a `\r` or `\n` character, but never afterÁü‰ a `\r` when a `\n` follows.Áõ Ø'Ø'ôí´¶Ø'Ø'ôíÁ9< üÅJ¡¹kü”Dõ¹küÝKH preceding a `\r` or `\n` character, but never before a `\n` when a `\r`Á„­  precedes it.Áõ‘Ø'Ø'ôí¥§Ø'Ø'ôíœ:L·"üØ GD Match an ASCII-only word boundary. That is, this matches a positionÁü¤!B? where the left adjacent character and right adjacent characterÁüë!GD correspond to a word and non-word or a non-word and word character.ÁõõØ'Ø'ôí  Ø'Ø'ôíw;|ˆ#üÏ"41 Match an ASCII-only negation of a word boundary.ÁõEØ'Ø'ôíY[Ø'Ø'ôíR<\‡%ü¦#IF Match a Unicode-aware word boundary. That is, this matches a positionÁüô#BÜ¿kü»$G¨ÀkõvØ'Ø'ô튌Ø'Ø'ôí-=ŒÜ%ü¡%63 Match a Unicode-aware negation of a word boundary.ÁõGØ'Ø'ôí[]Ø'Ø'ôí>tþ'üü%KH Match the start of an ASCII-only word boundary. That is, this matches aÁüÌ&JG position at either the beginning of the haystack or where the previousÁü›'KH character is not a word character and the following character is a wordÁtë' character.ÁõØ'Ø'ôí14Ø'Ø'ôíã>d–*üœ(GD Match the end of an ASCII-only word boundary. That is, this matchesÁüè(FC a position at either the end of the haystack or where the previousÁü³)KH character is a word character and the following character is not a wordÁtƒ*µÇkõ Ø'Ø'ôí"Ø'Ø'ôí¾?„°,ü²*GD Match the start of a Unicode word boundary. That is, this matches aÁüþ*J�ÆküÍ+KáÆkt�,µÇkõ�Ø'Ø'ôí•—Ø'Ø'ôí™@tÆ.üÐ,EB Match the end of a Unicode word boundary. That is, this matches aÁüš-DA position at either the end of the haystack or where the previousÁüã-KÅÉkt³.µÇkõ¿Ø'Ø'ôíÓÕØ'Ø'ôítA”³0üä.FC Match the start half of an ASCII-only word boundary. That is, thisÁü¯/KH matches a position at either the beginning of the haystack or where theÁüÿ//, previous character is not a word character.ÁõåØ'Ø'ôíùûØ'Ø'ôíOB„�2üÕ0DA Match the end half of an ASCII-only word boundary. That is, thisÁüž1EB matches a position at either the end of the haystack or where theÁüè10- following character is not a word character.ÁõÞØ'Ø'ôíòôØ'Ø'ôí*C¤ˆ4ü½2JG Match the start half of a Unicode word boundary. That is, this matchesÁüŒ3C@ a position at either the beginning of the haystack or where theÁüÔ3/ýÏkõ¶Ø'Ø'ôíÊÌØ'Ø'ôíD”ð5ü¬4HE Match the end half of a Unicode word boundary. That is, this matchesÁüù4GD a position at either the end of the haystack or where the followingÁüÅ5&# character is not a word character.ÁõÚØ'Ø'ôíîðØ'Ø'ôíàD»E»E»Eæ ôí»Eæ ôí‘(†‘(»E»E‰? ‰?ôíôíBÿ�(¾ ¶�( ‘(»E ¿ ½ç ôíFè ôí”( g”(FFŠ?‹?Œ? Š?ôí ‹?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Œ?­àBÿ“(À Ó( ”(FœF…Ié ôí–(Ζ(…I…I…I…I�? �?ôíBÿ•(Á Ê•( –(…I¾Iê ôí¾Iê ôí™(ù±™(¾I¾IŽ?�? Ž?ôí �?ôíBÿ˜( Î˜( ™(¾Iî ¾I”ú[üÒY@= LookSet is a memory-efficient set of look-around assertions.Á“Z�ü—ZGD This is useful for efficiently tracking look-around assertions. ForÁüßZOL example, a [`thompson::NFA`](crate::nfa::thompson::NFA) provides propertiesÁܯ[ that return `LookSet`s.Áö<…\¯ñŠƒ^¤É_a:›(lº`ü“\IF The underlying representation this set is exposed to make it possibleÁüá\A> to store it somewhere efficiently. The representation is thatÁü§]<9 of a bitset, where each assertion occupies bit `i` whereÁÔè] `i = Look::as_repr()`.Á‡^�ü�^HE Note that users of this internal representation must permit the fullÁüÜ^EB range of `u16` values to be represented. For example, even if theÁü¦_KH current implementation only makes use of the 10 least significant bits,Áüö_?< it may use more bits in a future semver compatible release.Á$¾`š(š(ïbïbïbë ¯ñïbë ¯ñž(†ž(ïbïb�? �?¯ñ¯ñBÿ�(à Ô[�( ž(ïb Ä Û[ì ¯ñscí ¯ñ¡(÷¡(scsc¯ñBÿ ( ( ¡(äcî ¯ñ£(Σ(äcäcäcäc‘? ‘?¯ñBÿ¢(Æ ê[¢( £(äcmdï ¯ñmdï ¯ñ¦(ù±¦(mdmd’?“? ’?¯ñ “?¯ñBÿ¥(Ç î[¥( ¦(mdî md´…§üô¥A> An iterator over all look-around assertions in a [`LookSet`].Á¶¦�üº¦2/ This iterator is created by [`LookSet::iter`].Áù\�§µòˆ ÛšGç¨(d¢§¢§Ø§(§(¯ñ¦‡ò µòª(†ª(¦‡¦‡£? £?µòµòBÿ©(Ì ö¦©( ª(¦‡$ˆó µò¬( g¬($ˆ$ˆ¤?¥?¦? ¤?µò ¥?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¦?­àBÿ«(Í ý¦«( ¬($ˆœ$ˆ´Ò³ü£«)& A matcher for look-around assertions.ÁÍ«�üÑ«NK This matcher permits configuring aspects of how look-around assertions areÁd ¬ matched.Á­¬�l±¬¯Ö.¿¬�üìOL A `LookMatcher` can change the line terminator used for matching multi-lineÁü“­*' anchors such as `(?m:^)` and `(?m:$)`.Á¾­�<­þ×.ÌÊ­ŽØ.üä­.¦£Gü“® ‚øG¬´®ßíD4Ê®÷Ø.Ñ®�üÕ®'ÖøGüý®'ˆùG¥¯�ô©¯¢©Güȯ>ÕùGü‡°!žúGü©°&äÎ/а�üÔ°9æúG|ޱ»ç/üž±#¸ûGü±,æûG4ï±×è/üö±:«üG|±²»ç/lÁ²Š›6üϲ(ŒýG4ø²×è/ÿ²�üƒ³.áß.<²³þ×.ú\ݳ‚ó´z��ÙPE®(œï³Dï³Ø­(­(¢ã-Žô ‚ó°(†°(-Ž-ލ? ¨?‚ó‚óBÿ¯(Πó¯( °(-ލŽõ ‚ó²( g²(¨Ž¨Ž©?ª?«? ©?‚ó ª?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡«?­àBÿ±(Ï Ê³±( ²(¨Žœ¨ŽŸé üÑ‚JG An error that occurs when the Unicode-aware `\w` class is unavailable.Áœƒ�ü ƒMJ This error can occur when the data tables necessary for the Unicode awareÁüîƒHE Perl character class `\w` are unavailable. The `\w` class is used toÁü·„LI determine whether a codepoint is considered a word character or not whenÁü„…NK determining whether a Unicode aware `\b` (or `\B`) matches at a particularÁlÓ…²¬Iá…�üå…IF This error can only occur when the `unicode-word-boundary` feature isÁl¯† disabled.ÁüÄà†Ïó)¯ätUŠ´(µ(ÏóBÿŸé 7ØÏóBÿ³(³( ´(ù†Ø³(³(ÿßö Ïó·(†·(ÿßÿßÜ? Ü?ÏóÏóBÿ¶(Ò Æ†¶( ·(ÿßEà÷ Ïó¹( g¹(EàEàÝ?Þ?ß? Ý?Ïó Þ?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ß?­àBÿ¸(Ó Í†¸( ¹(EàœEàùØ Çg.aLº�ß—ð#ùÙ Ô&eÙÙ ×eßBÿê÷#Ìúº(ç¼(¼(º(çÑÙ ¦eº(�½(�½(�½(½(º(ùö#ùÙ ®Oe¹Ù µe ß�g�g¹ø#�g�ûf‘gƒûf§~Ÿ½[l(ÚÃÿÿÿÿÿÿÑÙ ‚!eº(�¿(�¿(�¿(¿(º(�÷#ùÙ Š"Ne¹Ù ‘"e ߯ù#Ãÿÿÿÿÿÿ¤ê ÿLî™ß�Ã(Ã(�ÀM ø™Îõä;|¤•¯ŽÂ(Ä(éìÎõBÿ¤ê UßéìÎõBÿÁ(Á( Â(éìnp û™ßÁ(Á(éìºüÿ �Æ(Æ(�ÀMº“¯TÞ ø™ÎõÇ( gÇ(ÖØºüºüï?ð?ñ? ï?Îõ ð?€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ñ?­àBÿÅ(Þ Á™Å( Ç(éìºüœºüìi&„\{&ÿ÷ˆEÆMÅø‰É(ì‹&Óperf-literal-multisubstringÁüÝ'&ü×/&‹&²È(È(»î$27 „ ÿ÷Ë(†Ë(27 27 ƒ@ ƒ@ÿ÷ÿ÷BÿÊ(ç Z&Ê( Ë(27 ¯7 … ÿ÷Í( gÍ(¯7 ¯7 „@…@†@ „@ÿ÷ …@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡†@­àBÿÌ(è a&Ì( Í(¯7 œ¯7 ùê †<{'Ìø<¥÷qÈ?Ï(Ð(ˆ‚%ÌøBÿùê 7È‚%ÌøBÿÎ(Î( Ï(\ƒ'ÃÎ(Î(ˆ‚%Š'¥@ ‡ ÌøÓ(†Ó(¥@ ¥@ �@ �@ÌøÌøBÿÒ(ë Z'Ò( Ó(¥@ (A ˆ ÌøÕ( gÕ((A (A �@‘@’@ �@Ìø ‘@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡’@­àBÿÔ(ì a'Ô( Õ((A œ(A Hë ‡4{(œù(uêrE+š¿×(Ø(œùBÿHë 6ÕœùBÿÖ(Ö( ×(‚(ÕÖ(Ö(¯G ‰ œùÚ(†Ú(¯G ¯G ›@ ›@œùœùBÿÙ(í Z(Ù( Ú(¯G (H Š œùÜ( gÜ((H (H œ@�@ž@ œ@œù �@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ž@­àBÿÛ(î a(Û( Ü((H œ(H –ë ˆ<¸ (ìùÑG¬öùñ—Þ(ß(à(ìùBÿ–ë ;ÕìùBÿÝ(Ý( Þ(À (ÕÝ(Ý(Ä (ÕÝ(Ý(CM ‹ ìùâ(†â(CM CM §@ §@ìùìùBÿá(ï — (á( â(CM ÖM Œ ìùä( gä(ÖM ÖM ¨@©@ª@ ¨@ìù ©@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ª@­àBÿã(ð ž (ã( ä(ÖM œÖM ïë ‰<ñ(ÈúçõËq�¶Ãøæ(ç(è(é(ÈúBÿïë ?ÕÈúBÿå(å( æ(ù(Õå(å(ý(Õå(å(�(Õå(å(LU � Èúë(†ë(LU LU ³@ ³@ÈúÈúBÿê(ñ Ð(ê( ë(LU ÷U Ž Èúí( gí(÷U ÷U ´@µ@¶@ ´@Èú µ@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¶@­àBÿì(ò ×(ì( í(÷U œ÷U Äi)Š4{)°ûºðÝ&Öï.ï(ü¨')Ó‰|í)Ó’üþ")üì5)üã@)4¨)ûî(î(¸ ¸ ³½%º  Ž%ž» ™›ž~ûP’Î[“_ � °ûñ(†ñ(_ _ ¿@ ¿@°û°ûBÿð(ó Z)ð( ñ(_ �_ � °ûó( gó(�_ �_ À@Á@Â@ À@°û Á@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Â@­àBÿò(ô a)ò( ó(�_ œ�_ ¼i*‹,{*ýûz /·¼‹õ(ö(÷(ü€(*Óð†lüÒ'*üÌ/*D€*‹ô(ô(�È%ü¨ #*Óð†lüú '*üô /*\¨ *‹ô(ô(¿É%”  *Óð†lüò '*üì /*\  *‹ô(ô(‹e ‘ ýûù(†ù(‹e ‹e Ë@ Ë@ýûýûBÿø(õ Z*ø( ù(‹e jf ’ ýûû( gû(jf jf Ì@Í@Î@ Ì@ýû Í@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Î@­àBÿú(ö a*ú( û(jf œjf ¤ð(+üÍ0+- A prefilter for accelerating regex searches.Áþ+�ü‚C+@ If you already have your literals that you want to search with,ÁüÆC+@ then the vanilla [`Prefilter::new`] constructor is for you. ButÁüŠD+A if you have an [`Hir`] value from the `regex-syntax` crate, thenÁüÏL+I [`Prefilter::from_hir_prefix`] might be more convenient. Namely, it usesÁüœL+I the [`regex-syntax::hir::literal`](regex_syntax::hir::literal) module toÁüéO+L extract literal prefixes for you, optimize them and then select and build aÁ´¹+ prefilter matcher.ÁÐ+�üÔH+E A prefilter must have **zero false negatives**. However, by its veryÁü�K+H nature, it may produce false positives. That is, a prefilter will neverÁüéK+H skip over a position in the haystack that corresponds to a match of theÁüµG+D original regex pattern, but it *may* produce a match for a positionÁüýI+F in the haystack that does *not* correspond to a match of the originalÁüÇJ+G regex pattern. If you use either the [`Prefilter::from_hir_prefix`] orÁü’H+E [`Prefilter::from_hirs_prefix`] constructors, then this guarantee isÁüÛL+I upheld for you automatically. This guarantee is not preserved if you useÁü¨N+K [`Prefilter::new`] though, since it is up to the caller to provide correctÁü÷?+< literal strings with respect to the original regex pattern.Á·+�l»+ # CloningÁÉ+�üÍN+K It is an API guarantee that cloning a prefilter is cheap. That is, cloningÁüœG+D it will not duplicate whatever heap memory is used to represent theÁ¼ä+ underlying matcher.Áü+�l€+¯Ö.Ž+�ü’9+6 This example shows how to attach a `Prefilter` to theÁüÌK+H [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM) in order to accelerateÁl˜+ searches.Á¦+�<ª+þ×.̲+ŽØ.üÌ&+Ÿ¾Iüó#+ø’6Ì—+ÇÌ>4±+÷Ø.¸+�ü¼C+@ let pre = Prefilter::new(MatchKind::LeftmostFirst, &["Bruce "])Áü€ +ÏÍ>ô  +¢©Gü¿ 9+6 .configure(PikeVM::config().prefilter(Some(pre)))Áôù +šÁ>ü˜!&+äÎ/|¿!+»ç/üÏ!$+! Some(Match::must(0, 6..23)),Áüô!8+5 re.find(&mut cache, "Hello Bruce Springsteen!"),Á4­"+×è/ü´".+áß.<ã"+þ×.ë"+�üï"J+G But note that if you get your prefilter incorrect, it could lead to anÁ¬º#+ incorrect result!ÁÐ#+�<Ô#+þ×.ÌÜ#+ŽØ.üö#&+Ÿ¾Iü�$#+ø’6ÌÁ$+ÇÌ>4Û$+÷Ø.â$+�üæ$+ // This prefilter is wrong!Áü†%C+@ let pre = Prefilter::new(MatchKind::LeftmostFirst, &["Patti "])ÁüÊ%+ÏÍ>ôê%+¢©Gü‰&9+޲lôÃ&+šÁ>üâ&&+äÎ/ü‰'9+6 // We find no match even though the regex does match.Á|Ã'+»ç/lÓ'+Š›6üá'8+§³l4š(+×è/ü¡(.+áß.<Ð(+þ×.ŒLû(+äüáª74™p ý(þ(ÿ(ÄÝ)+Ó«ŒÅ)+Ì¿)+Ý)+±ü(ü(„K„KK‡Kí ä7ˆKÞüä7‰K«ä7ƒ¢3à6ú�Ä�þl™*+Ó«Œ�*+Ìû)+<™*+±ü(ü(¬Ê*+Ó«Œ²*+̬*+tÊ*+±ü(ü(“v “ äü�)†�)“v “v ×@ ×@äüäüBÿ€)÷ á(+€) �)“v Uw ” äüƒ) gƒ)Uw Uw Ø@Ù@Ú@ Ø@äü Ù@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡Ú@­àBÿ‚)ø è(+‚) ƒ)Uw œUw ´Æ�+�4Ö�+Ãþ¥ÛÍq:CÒo…)†)ˆ)‰)‹)Œ)Ž)�)‘)’)”)•)—)˜)†)‡)œùÃþBÿ‰)Š)ìùÃþBÿŒ)�)ÈúÃþBÿ�)�)°ûÃþBÿ’)“)ýûÃþBÿ•)–)ÌøÃþBÿ˜)™)ÿ÷ÃþBÿRì �Rì „)„) †)Rì Rì œùÃþBÿ„)„)÷¿l4ê�+„)„)œù£ì �£ì „)„) ‰)£ì £ì ìùÃþBÿ„)„)ìÀl<ÿ�+„)„)ìùôì �ôì „)„) Œ)ôì ôì ÈúÃþBÿ„)„)áÁl<•ž+„)„)ÈúEí �Eí „)„) �)Eí Eí °ûÃþBÿ„)„)ÖÂl4ªž+„)„)°û–í �–í „)„) ’)–í –í ýûÃþBÿ„)„)ËÃl,½ž+„)„)ýûçí �çí „)„) •)çí çí ÌøÃþBÿ„)„)ÀÄl<Ñž+„)„)Ìø8î �8î „)„) ˜)8î 8î ÿ÷ÃþBÿ„)„)µÅl\ëž+„)„)ÿ÷؈ • Ãþ›)†›)؈ ؈ ó@ ó@ÃþÃþBÿš)ù ·�+š) ›)؈ _� – Ãþ�) g�)_� _� ô@õ@ö@ ô@Ãþ õ@€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ö@­àBÿœ)ú ¾�+œ) �)_� œ_� ‰î ü—-,* A `usize` that can never be `usize::MAX`.ÁÅ,�üÉO,L This is similar to `core::num::NonZeroUsize`, but instead of not permittingÁü™3,0 a zero value, this does not permit a max value.ÁÍ,�üÑM,J This is useful in certain contexts where one wants to optimize the memoryÁüŸI,F usage of things that contain match offsets. Namely, since Rust slicesÁüéL,I are guaranteed to never have a length exceeding `isize::MAX`, we can useÁü¶K,H `usize::MAX` as a sentinel to indicate that no match was found. Indeed,Áü‚N,K types like `Option` have exactly the same size in memory as aÁdÑ, `usize`.ÁÞ,�üâ6,3 This type is defined to be `repr(transparent)` forÁü™=,: `core::num::NonZeroUsize`, which is in turn defined to beÁü×$,! `repr(transparent)` for `usize`.Áœ\Ù,¯€"i”òŠŸ) )´Ù#¯€Bÿ‰î 7Ù´Ù#¯€Bÿž)ž)àÐ&då,Ùž)ž)´Ù#�£ �£ �£ ¥ ¯€�£ ¥ ¯€£)†£)�£ �£ ú@ ú@¯€¯€Bÿ¢)— …,¢) £)�£ ˜ Œ,¦ ¯€ ¤ § ¯€¦)Φ) ¤  ¤  ¤  ¤ û@ û@¯€Bÿ¥)™ ’,¥) ¦) ¤ �¤ ¨ ¯€¨)üh¨)�¤ �¤ ü@ý@ ü@¯€ ý@Ò­ Bÿ§)ÿ©)©)š –,§)ªÃa�¤ »Ãa�¤ ¨)Ò­ �¤ ƒ�¤ �¤ �¤ o¥ © ¯€o¥ © ¯€¬)ù±¬)o¥ o¥ þ@ÿ@ þ@¯€ ÿ@¯€Bÿ«)› œ,«) ¬)o¥ î o¥ Ô¥ ª ¯€®)±²®)Ô¥ Ô¥ €A�A €A¯€ �A¯€ʱ Bÿ­)œ §,­) ®)Ô¥ î Ô¥ 𦠫 ¯€°)î°)ð¦ 𦠂AƒA ‚A¯€ ƒA¯€İ Bÿ¯)� ³,¯) °)ð¦ î ð¦ Ùî ü®+,( A type that represents a "small" index.ÁÚ,�üÞM,J The main idea of this type is to provide something that can index memory,Áü¬J,G but uses less memory than `usize` on 64-bit systems. Specifically, itsÁü÷M,J representation is always a `u32` and has `repr(transparent)` enabled. (SoÁüÅ@,= it is safe to transmute between a `u32` and a `SmallIndex`.)Á†,�üŠN,K A small index is typically useful in cases where there is no practical wayÁüÙL,I that the index will overflow a 32-bit integer. A good example of this isÁü¦K,H an NFA state. If you could somehow build an NFA with `2^30` states, itsÁüòJ,G memory usage would be exorbitant and its runtime execution would be soÁü½ M,J slow as to be completely worthless. Therefore, this crate generally deemsÁü‹!L,I it acceptable to return an error if it would otherwise build an NFA thatÁüØ!N,K requires a slice longer than what a 32-bit integer can index. In exchange,Áü§"J,G we can use 32-bit indices instead of 64-bit indices in various places.Áò",�üö"O,L This type ensures this by providing a constructor that will return an errorÁüÆ#J,G if its argument cannot fit into the type. This makes it much easier toÁü‘$M,J handle these sorts of boundary cases that are otherwise extremely subtle.Áß$,�üã$L,I On all targets, this type guarantees that its value will fit in a `u32`,Áü°%I,F `i32`, `usize` and an `isize`. This means that on 16-bit targets, forÁüú%F,C example, this type's maximum value will never overflow an `isize`,ÁüÁ&G,D which means it will never overflow a `i16` even though its internalÁü‰'$,! representation is still a `u32`.Á®',�ü²'K,H The purpose for making the type fit into even signed integer types likeÁüþ'M,J `isize` is to guarantee that the difference between any two small indicesÁüÌ(K,H is itself also a small index. This is useful in certain contexts, e.g.,Á¼˜), for delta encoding.Á°),�Œ´), # Other typesÁÆ),�üÊ)M,J The following types wrap `SmallIndex` to provide a more focused use case:Á˜*,�üœ*D,A * [`PatternID`] is for representing the identifiers of patterns.Áüá*I,F * [`StateID`] is for representing the identifiers of states in finiteÁü«+0,- automata. It is used for both NFAs and DFAs.ÁÜ+,�¤à+, # RepresentationÁõ+,�üù+J,G This type is always represented internally by a `u32` and is marked asÁüÄ,N,K `repr(transparent)`. Thus, this type always has the same representation asÁü“-M,J a `u32`. It is thus safe to transmute between a `u32` and a `SmallIndex`.Áá-,�tå-, # IndexingÁô-,�üø-D,A For convenience, callers may use a `SmallIndex` to index slices.Á½.,�dÁ.,íÉ4Î.,�üÒ.O,L While a `SmallIndex` is meant to guarantee that its value fits into `usize`Áü¢/I,F without using as much space as a `usize` on all targets, callers mustÁüì/L,I not rely on this property for safety. Callers may choose to rely on thisÁü¹0O,L property for correctness however. For example, creating a `SmallIndex` withÁü‰1O,L an invalid value can be done in entirely safe code. This may in turn resultÁüÙ1',$ in panics or silent logical errors.ÁžTõ2,×�“hXVï%²)³)×�BÿÙî 6Ù×�Bÿ±)±) ²)€3,Ù±)±) ©  ©  © ­ ×� © ­ ×�¶)†¶) ©  © ‡A ‡A×�×�Bÿµ)  �2,µ) ¶) © ¡ –2,® ×�ª ¯ ×�¹) g¹)ª ª ˆA‰AŠA ˆA×� ‰A€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ŠA­àBÿ¸)¢ œ2,¸) ¹)ª œª &« ° ×�»)÷»)&« &« ×�Bÿº)º) »)—« ± ×�½)ν)—« —« —« —« ‹A ‹A×�Bÿ¼)¤ ¬2,¼) ½)—« ¬ ² ×�¿)üh¿)¬ ¬ ŒA�A ŒA×� �AÒ­ Bÿ¾)ÿÀ)À)¥ °2,¾)ªÃa¬ »Ãa¬ ¿)Ò­ ¬ ƒ¬ ¬ ¬ ˬ ³ ×�ˬ ³ ×�Ã)ù±Ã)ˬ ˬ ŽA�A ŽA×� �A×�BÿÂ)¦ ¶2,Â) Ã)ˬ î ˬ (­ ´ ×�Å)±²Å)(­ (­ �A‘A �A×� ‘A×�ʱ BÿÄ)§ Á2,Ä) Å)(­ î (­ <® µ ×�Ç)îÇ)<® <® ’A“A ’A×� “A×�İ BÿÆ)¨ Í2,Æ) Ç)<® î <® Ô¨l,ü�jB,? This error occurs when a small index could not be constructed.Áàj,�üäjN,K This occurs when given an integer exceeding the maximum small index value.Á³k,�ü·kI,F When the `std` feature is enabled, this implements the `Error` trait.ÁŸ|³l,Є7`â¿åSÞÉ)tÉl,LÉl,ÙÈ)È)Á ¶ ЄË)†Ë)Á Á žA žAЄЄBÿÊ)© Šl,Ê) Ë)Á úÁ · ЄÍ) gÍ)úÁ úÁ ŸA A¡A ŸAЄ  A€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¡A­àBÿÌ)ª ‘l,Ì) Í)úÁ œúÁ 7à ¸ ЄÏ)ÎÏ)7à 7à 7à 7à ¢A ¢AЄBÿÎ)« ˜l,Î) Ï)7à Àà ¹ ЄÀà ¹ ЄÒ)ù±Ò)Àà Àà £A¤A £AЄ ¤AЄBÿÑ)¬ œl,Ñ) Ò)Àà î Àà ü‹q ,¡t�q,Î…ªª3`€ß¿Ô)ä²q,²q,ÙÓ)Ó)… WÄ » Î…Ö)†Ö)WÄ WÄ ©A ©AÎ…Î…BÿÕ)¯ üp,Õ) Ö)WÄ ÖÄ ¼ Î…Ø) gØ)ÖÄ ÖÄ ªA«A¬A ªAÎ… «A€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¬A­àBÿ×)° ƒq,×) Ø)ÖÄ œÖÄ (ï üîÄG,D The identifier of a regex pattern, represented by a [`SmallIndex`].Á¶Å,�üºÅK,H The identifier for a pattern corresponds to its relative position amongÁü†ÆJ,G other patterns in a single finite state machine. Namely, when buildingÁüÑÆK,H a multi-pattern regex engine, one must supply a sequence of patterns toÁü�ÇH,E match. The position (starting at 0) of each pattern in that sequenceÁüæÇN,K represents its identifier. This identifier is in turn used to identify andÁüµÈ3,0 report matches of that pattern in various APIs.ÁéÈ,�üíÈL,I See the [`SmallIndex`] type for more information about what it means forÁüºÉ',$ a pattern ID to be a "small index."ÁâÉ,�üæÉ),& Note that this type is defined in theÁü�ÊH,E [`util::primitives`](crate::util::primitives) module, but it is alsoÁüÙÊ:,7 re-exported at the crate root due to how common it is.Á¢LúË,›†[,­tÆ·˜Ú)Û)×�›†Bÿ(ï 8Ù×�›†BÿÙ)Ù)¤¢'T„Ì,ÙÙ)Ù)×�Æ Æ Æ ½ ›†Æ ½ ›†Þ)†Þ)Æ Æ ®A ®A›†›†BÿÝ)± �Ë,Ý) Þ)Æ ² ¤Ë,¾ ›†�Æ ¿ ›†á)÷á)�Æ �Æ ›†Bÿà)à) á)Ç À ›†ã)Îã)Ç Ç Ç Ç ¯A ¯A›†Bÿâ)´ ³Ë,â) ã)Ç }Ç Á ›†å)ühå)}Ç }Ç °A±A °A›† ±AÒ­ Bÿä)ÿæ)æ)µ ·Ë,ä)ªÃa}Ç »Ãa}Ç å)Ò­ }Ç ƒ}Ç }Ç }Ç lÈ  ›†lÈ  ›†é)ù±é)lÈ lÈ ²A³A ²A›† ³A›†Bÿè)¶ ½Ë,è) é)lÈ î lÈ ÒÈ à ›†ë)±²ë)ÒÈ ÒÈ ´AµA ´A›† µA›†ʱ Bÿê)· ÈË,ê) ë)ÒÈ î ÒÈ ìÉ Ä ›†í)îí)ìÉ ìÉ ¶A·A ¶A›† ·A›†İ Bÿì)¸ ÔË,ì) í)ìÉ î ìÉ yï ü’Ì@,= The identifier of a finite automaton state, represented by aÁœÓÌ, [`SmallIndex`].ÁçÌ,�üëÌN,K Most regex engines in this crate are built on top of finite automata. EachÁüºÍN,K state in a finite automaton defines transitions from its state to another.Áü‰ÎJ,G Those transitions point to other states via their identifiers, i.e., aÁüÔÎL,I `StateID`. Since finite automata tend to contain many transitions, it isÁü¡ÏD,A much more memory efficient to define state IDs as small indices.ÁæÏ,�üêÏL,׌mü·Ð%," a state ID to be a "small index."Á£<ÃÑ,Çqpß—–Æ›¤ï)ð)×�ÇBÿyï 8Ù×�ÇBÿî)î)·â'TËÑ,Ùî)î)×�RÊ RÊ RÊ Å Ã‡RÊ ŠÇó)†ó)RÊ RÊ ¸A ¸AÇÇBÿò)¹ æÐ,ò) ó)RÊ º íÐ,Æ Ã‡ÖÊ Ç Ã‡ö)÷ö)ÖÊ ÖÊ ÇBÿõ)õ) ö)KË È Ã‡ø)Îø)KË KË KË KË ¹A ¹AÇBÿ÷)¼ üÐ,÷) ø)KË ºË É Ã‡ú)ühú)ºË ºË ºA»A ºAÇ »AÒ­ Bÿù)ÿû)û)½ €Ñ,ù)ªÃaºË »ÃaºË ú)Ò­ ºË ƒºË ºË ºË žÌ Ê Ã‡žÌ Ê Ã‡þ)ù±þ)žÌ žÌ ¼A½A ¼AÇ ½AÇBÿý)¾ †Ñ,ý) þ)žÌ î žÌ Í Ë Ã‡€*±²€*Í Í ¾A¿A ¾AÇ ¿AÇʱ Bÿÿ)¿ ‘Ñ,ÿ) €*Í î Í Î Ì Ã‡‚*î‚*Î Î ÀAÁA ÀAÇ ÁAÇİ Bÿ�*À �Ñ,�* ‚*Î î Î PÁ ¨v,¤›†„*…*†*‡*ˆ*‰*Š*‹*Œ*�*Ž*�*�*’*”*–* Á äv,°Á Áv,÷¡XÁ îv,ƒ*ƒ*›†°Á äw,øÁ  w7,™£X(Á îw,ƒ*ƒ*¨Á ½x,˜Á �x,·¤X Á Çx,ƒ*ƒ*›†¨Á Ãy,øÁ ûx;,Ø¥X Á Íy,ƒ*ƒ*øÁ Ý{/,øÁ úy>,ü¦XÁ Åz,�øÁ ÕzC,ЧX¨Á ¥{,�¨XÁ ä{,÷ÉBÿƒ*ƒ*®¨�NÑ øÁ š�1,øÁ ê|B,•«XÀÁ ¹},á«XÁ Þ},�øÁ î};,ެXøÁ ¶~:,Ó¬XøÁ ý~@,—­XøÁ Ê(,á­XÁ ÿ,�øÁ �€?,Ÿ®XàÁ Û€,é®XhÁ §�,›†Bÿƒ*ƒ* ‰*�mÒ øÁ ÿ‚",øÁ ¡‚;,˜±X Á †ƒ,›†Bÿƒ*ƒ*¾�*�!Ô øÁ ô…%,øÁ è„A,ö´XØÁ ¶…,µX@Á �†,ÂA ÂA›†Bÿƒ*Á І,ƒ*Á½ Á ‹†,øÁ Û‡!,øÁ Ù†?,Á·X˜Á ¥‡,‹¸X0Á è‡,ÃA ÃA›†Bÿƒ*Á ï‡,ƒ* Œ* Á ð‡,øÁ ‰!,øÁ ºˆ?,‚ºXÈÁ †‰,¶„X0Á ω,ÄA ÄA›†Bÿƒ*Á Ö‰,ƒ* �* Á ׉,øÁ «‹!,øÁ ¡Š>,´¼XàÁ ìŠ,ý¼X0Á ¸‹,ÅA ÅA›†Bÿƒ*Á ¿‹,ƒ* Ž* Á À‹,øÁ ´Ž,øÁ ŠŒ0,ý¾XÁ ÇŒ,�øÁ ׌@,Å¿XøÁ ¤�A,�ÀXøÁ ò�,ÜÀX@Á »Ž,ÆA ÆA›†Bÿƒ*Á ÄŽ,ƒ* �* Á ÅŽ,øÁ Ì‘;,øÁ “�B,ÕÂXøÁ â�&,—ŠXÁ •�,�øÁ ¥�@,¾ÃXøÁ ò�7,‰ÄXhÁ Ó‘,¬�"÷ÉBÿƒ*ƒ* �*öÆ Û Á í‘,øÁ µ•7,øÁ ï’B,ÕÂXøÁ ¾“&,—ŠXÁ ñ“,�øÁ �”B,¡ÈXøÁ ДB,îÈX¸Á ¼•,¬�"›†Bÿƒ*ƒ* ’*öÆïÛ Á à•,øÁ Æ—$,øÁ Ì–?,áËXXÁ ˜—,¢�XXÁ Í—,ÇA ÇA›†¬�"Bÿƒ*Á Ù—,ƒ* ”* Á Ú—,Á è—,øÁ “š', Á ¡š,üŠBÿƒ*ƒ*Ùù¶Á ¦š,øÁ ý›,¤›†˜* g˜*øÁ «œ@,Á ®œ,ÈAÉAÊA ÈA›† ÉA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÊA­àBÿ—*Á ²œ,—* ˜* Á ³œ,œÁ ¹œ,øÁ ß�',¤�š*š*�ÀMÁ ä�,‹ƒ›*œ*�ý‘ýœ*!XÁ •ž,0Á šž,™*™*éìøÁ Éž#,(Á Ìž,€ËA ËA‹ƒ›† ËAéìBÿ™*Á Òž,™* œ*éì Á Óž,÷ÌÝ øÁ ¸Ÿ*,¤�ž*ž*�ÀMÁ ½Ÿ,‹ƒŸ*ª#Ÿ*øÁ ‡ /,HÁ Š ,€ÌA ÌA‹ƒ›† ÌAéìBÿ�*Á ” ,�* Ÿ*éì Á ™ ,÷üÞ øÁ ¨¡*,Ó«ˆÁ Œ¡,ÈÁ †¡,¤�¡*¡*�ÀMÁ ­¡,«ƒ¢*£*�ý‘ý£*!XÁ á¡,0Á æ¡, * *éìøÁ •¢#,(Á ˜¢,€ÍA ÍA«ƒ›† ÍAéìBÿ *Á ž¢, * £*éì Á Ÿ¢,÷ à øÁ ¦£-,Ó«ˆÁ Š£,ÈÁ „£,¤�¥*¥*�ÀMÁ «£,«ƒ¦*ª#¦*øÁ ø£/,HÁ û£,€ÎA ÎA«ƒ›† ÎAéìBÿ¤*Á …¤,¤* ¦*éì Á Ф,÷ á ¸Á ÷¤,¤›†¨*®¨*ØÁ �¥, Á  ¥,›†Bÿ§*§* ¨*�(Á ¥¥,ØÁ ‹¦,¤›†ª*«*µ¶«*PÁ µ¦,(Á º¦,©*©*ú‰øÁ Õ¦.,@Á ئ,÷ÉBÿ©*©* «*�(Á á¦,ØÁ ì§,¤›†­*®*µ¶®*PÁ –¨,(Á ›¨,¬*¬*ú‰øÁ ¶¨.,@Á ¹¨,÷ÉBÿ¬*¬* ®*�(Á ¨,ØÁ Í©,¤›†°*±*µ¶±*PÁ ÷©,(Á ü©,¯*¯*ú‰øÁ —ª.,@Á šª,÷ÉBÿ¯*¯* ±*�(Á £ª,èÁ ®«,¤›†³*´*µ¶´*PÁ Ú«,(Á ß«,²*²*ú‰øÁ ú«0,@Á ý«,÷ÉBÿ²*²* ´*�(Á †¬,HÁ Õ±,¤ú‰¶*ðÁ µ²,øÁ í±;,€YHÁ ¼²,ÖA ÖAú‰Bÿµ*Á Ʋ,µ* ¶* Á Dz,øÁ º³,Ó‰xÁ  ³,¸Á š³,¤ú‰øÁ æ³ ,¤ú‰¹*¥g¹*øÁ •´@,Á ˜´,×AØAÙA ×Aú‰ ØA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÙA­àBÿ¸*Á œ´,¸* ¹* Á �´,œÁ £´,PÁ ·,¤üŠ»*ØÁ Û·,Á Þ·,ÙüŠBÿº*º* »*¶Á â·,¸Á Þº,¤üн*¾*ÅQÆQ¾*HÁ „», Á ‰»,¼*¼*›†øÁ ¤»#, Á §»,ÞA ÞAüŠܧBÿ¼*Á ¬»,¼* ¾* Á ±»,øÁ Ç¿2,¤…À*À*�ÁHÁ Ì¿,œÅH@Á Ï¿,ŽQ‰ŒˆÁ Ú¿,Ì‹Á*,.èÁ ˆÀ,Á ‹À,Ù‰ŒÌ‹Bÿ¿*¿* Á*‰ŒÛËðé øÁ  Á?,¤…Ã*Ã*�ÁHÁ ¥Á,œÅH@Á ¨Á,øËmˆÁ ³Á,Ì‹Ä*Å*ÅQÆQÅ*35HÁ îÁ, Á óÁ,Â*Â*›Ù'øÁ ™Â., Á œÂ,ãA ãAÌ‹ÖØ'BÿÂ*Á ¡Â,Â* Å*‰Œ Á ¦Â,Êï øÁ á®<,¯üXÁ ¦¯,�øÁ ²¯C,ƒýXPÁ þ¯,õªOÁ ‘°,�øÁ �°B,ìýXPÁ è°,¹þXÏ töÑ,ú‰µÙak÷Ç*È*Єú‰BÿÊï 8ÙЄú‰BÿÆ*Æ*ô¢'xÁ º±,ÙÆ*Æ*Є˜á Õ ú‰Ê*†Ê*˜á ˜á ÏA ÏAú‰ú‰BÿÉ*Å „±,É* Ê*˜á â Ö ú‰Ì* gÌ*â â ÐAÑAÒA ÐAú‰ ÑA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÒA­àBÿË*Æ ‹±,Ë* Ì*â œâ 6ã × ú‰Î*ÎÎ*6ã 6ã 6ã 6ã ÓA ÓAú‰BÿÍ*Ç ’±,Í* Î*6ã åã Ø ú‰åã Ø ú‰Ñ*ù±Ñ*åã åã ÔAÕA ÔAú‰ ÕAú‰BÿÐ*È –±,Ð* Ñ*åã î åã ð Ñ l†Ò,üŠÅþ·¸QàÓ*Ô*Î…üŠBÿð 9ÙÎ…üŠBÿÒ*Ò* Ó*pÁ ¨·,ÙÒ*Ò*Î…†ä Û üŠÖ*†Ö*†ä †ä ÚA ÚAüŠüŠBÿÕ*Ì ù¶,Õ* Ö*†ä å Ü üŠØ* gØ*å å ÛAÜAÝA ÛAüŠ ÜA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÝA­àBÿ×*Í €·,×* Ø*å œå øÁ è¾U,Ó Œ•Ò,…Ú*Ú*�ÁHÁ „¿,Ì‹FÝ™�''àëÛ*Ü*#%(Á •¿,Á •¿,ÙÙ*Ù*‰ŒPÁ ¨¿,Á ¨¿,ÙÙ*Ù*üЉæ à …Þ*Þ*�ÁH˜…‰ŒÓ „¿,Ì‹ß*†ß*¼¾‰æ ‰æ ßA ßA̋̋BÿÝ*Ó Ñ¾,Ý* ß*‰Œ‰æ Lç á …á*á*�ÁHIŸg‰ŒÔ „¿,Ì‹â* gâ*nqLç Lç àAáAâA àAÌ‹ áA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡âA­àBÿà*Ô Ø¾,à* â*‰ŒLç œLç PÕ ¨v,¥Çä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ò*ô*ö* Õ äv,°Õ Áv,÷¡XÕ îv,ã*ã*Ç°Õ äw,øÕ  w7,™£X(Õ îw,ã*ã*¨Õ ½x,˜Õ �x,·¤X Õ Çx,ã*ã*Ç¨Õ Ãy,øÕ ûx;,Ø¥X Õ Íy,ã*ã*øÕ Ý{/,øÕ úy>,ü¦XÕ Åz,�øÕ ÕzC,ЧX¨Õ ¥{,�¨XÕ ä{,Òã'Bÿã*ã*Üè'�´ñ øÕ š�1,øÕ ê|B,•«XÀÕ ¹},á«XÕ Þ},�øÕ î};,ެXøÕ ¶~:,Ó¬XøÕ ý~@,—­XøÕ Ê(,á­XÕ ÿ,�øÕ �€?,Ÿ®XàÕ Û€,é®XhÕ §�,ÇBÿã*ã*£��Óò øÕ ÿ‚",øÕ ¡‚;,˜±X Õ †ƒ,ÇBÿã*ã* ê*�‰ô øÕ ô…%,øÕ è„A,ö´XØÕ ¶…,µX@Õ �†,äA äAÇBÿã*Õ Š†,ã*…ü' Õ ‹†,øÕ Û‡!,øÕ Ù†?,Á·X˜Õ ¥‡,‹¸X0Õ è‡,åA åAÇBÿã*Õ ï‡,ã* ì* Õ ð‡,øÕ ‰!,øÕ ºˆ?,‚ºXÈÕ †‰,¶„X0Õ Ï‰,æA æAÇBÿã*Õ Ö‰,ã* í* Õ ×‰,øÕ «‹!,øÕ ¡Š>,´¼XàÕ ìŠ,ý¼X0Õ ¸‹,çA çAÇBÿã*Õ ¿‹,ã* î* Õ À‹,øÕ ´Ž,øÕ ŠŒ0,ý¾XÕ ÇŒ,�øÕ ׌@,Å¿XøÕ ¤�A,�ÀXøÕ ò�,ÜÀX@Õ »Ž,èA èAÇBÿã*Õ ÄŽ,ã* ï* Õ ÅŽ,øÕ Ì‘;,øÕ “�B,ÕÂXøÕ â�&,—ŠXÕ •�,�øÕ ¥�@,¾ÃXøÕ ò�7,‰ÄXhÕ Ó‘,¬�"Òã'Bÿã*ã* ð*öÆnû Õ í‘,øÕ µ•7,øÕ ï’B,ÕÂXøÕ ¾“&,—ŠXÕ ñ“,�øÕ �”B,¡ÈXøÕ ДB,îÈX¸Õ ¼•,¬�"ÇBÿã*ã* ò*öÆOü Õ à•,øÕ Æ—$,øÕ Ì–?,áËXXÕ ˜—,¢�XXÕ Í—,éA éAǬ�"Bÿã*Õ Ù—,ã* ô* Õ Ú—,Õ è—,øÕ “š', Õ ¡š,½ŽBÿã*ã*‚”(¶Õ ¦š,øÕ ý›,¥Çø* gø*øÕ «œ@,Õ ®œ,êAëAìA êAÇ ëA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ìA­àBÿ÷*Õ ²œ,÷* ø* Õ ³œ,œÕ ¹œ,øÕ ß�',¥�ú*ú*�ÀMÕ ä�,‹ƒû*ü*�ý‘ýü*!XÕ •ž,0Õ šž,ù*ù*éìøÕ Éž#,(Õ Ìž,€íA íA‹ƒÇ íAéìBÿù*Õ Òž,ù* ü*éì Õ Óž,÷,þ øÕ ¸Ÿ*,¥�þ*þ*�ÀMÕ ½Ÿ,‹ƒÿ*ª#ÿ*øÕ ‡ /,HÕ Š ,€îA îA‹ƒÇ îAéìBÿý*Õ ” ,ý* ÿ*éì Õ ™ ,÷\ÿ øÕ ¨¡*,Ó«ˆÕ Œ¡,ÈÕ †¡,¥��+�+�ÀMÕ ­¡,«ƒ‚+ƒ+�ý‘ýƒ+!XÕ á¡,0Õ æ¡,€+€+éìøÕ •¢#,(Õ ˜¢,€ïA ïA«ƒÇ ïAéìBÿ€+Õ ž¢,€+ ƒ+éì Õ Ÿ¢,÷l øÕ ¦£-,Ó«ˆÕ Š£,ÈÕ „£,¥�…+…+�ÀMÕ «£,«ƒ†+ª#†+øÕ ø£/,HÕ û£,€ðA ðA«ƒÇ ðAéìBÿ„+Õ …¤,„+ †+éì Õ Š¤,÷l ¸Õ ÷¤,¥Çˆ+®ˆ+ØÕ �¥, Õ  ¥,ÇBÿ‡+‡+ ˆ+�(Õ ¥¥,ØÕ ‹¦,¥ÇŠ+‹+µ¶‹+PÕ µ¦,(Õ º¦,‰+‰+»�øÕ Õ¦.,@Õ Ø¦,Òã'Bÿ‰+‰+ ‹+�(Õ á¦,ØÕ ì§,¥Ç�+Ž+µ¶Ž+PÕ –¨,(Õ ›¨,Œ+Œ+»�øÕ ¶¨.,@Õ ¹¨,Òã'BÿŒ+Œ+ Ž+�(Õ Â¨,ØÕ Í©,¥Ç�+‘+µ¶‘+PÕ ÷©,(Õ ü©,�+�+»�øÕ —ª.,@Õ šª,Òã'Bÿ�+�+ ‘+�(Õ £ª,èÕ ®«,¥Ç“+”+µ¶”+PÕ Ú«,(Õ ß«,’+’+»�øÕ ú«0,@Õ ý«,Òã'Bÿ’+’+ ”+�(Õ †¬,HÕ Õ±,¥»�–+ðÕ µ²,øÕ í±;,€YHÕ ¼²,øA øA»�Bÿ•+Õ Æ²,•+ –+ Õ Ç²,øÕ º³,Ó‰xÕ  ³,¸Õ š³,¥»�øÕ æ³ ,¥»�™+¥g™+øÕ •´@,Õ ˜´,ùAúAûA ùA»� úA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ûA­àBÿ˜+Õ œ´,˜+ ™+ Õ �´,œÕ £´,PÕ Â·,¥½Ž›+ØÕ Û·,Õ Þ·,Ù½ŽBÿš+š+ ›+¶Õ â·,¸Õ Þº,¥½Ž�+ž+ÅQÆQž+HÕ „», Õ ‰»,œ+œ+ÇøÕ ¤»#, Õ §»,€B €B½Ž¶àBÿœ+Õ ¬»,œ+ ž+ Õ ±»,øÕ Ç¿2,¥… + +�ÁHÕ Ì¿,œÅH@Õ Ï¿,øËmˆÕ Ú¿,��¡+$&èÕ ˆÀ,Õ ‹À,Ù‰Œ��BÿŸ+Ÿ+ ¡+‰ŒÛË* øÕ  Á?,¥…£+£+�ÁHÕ ¥Á,œÅH@Õ ¨Á,øËmˆÕ ³Á,��¤+¥+ÅQÆQ¥+35HÕ îÁ, Õ óÁ,¢+¢+�™(øÕ ™Â., Õ œÂ,…B …B��¼˜(Bÿ¢+Õ ¡Â,¢+ ¥+‰Œ Õ ¦Â,rð øÕ á®<,¯üXÕ ¦¯,�øÕ ²¯C,ƒýXPÕ þ¯,õªOÕ ‘°,�øÕ �°B,ìýXPÕ è°,¹þXä dÄÒ,»�»¾67Ãæë§+¨+Є»�Bÿrð 8ÙЄ»�Bÿ¦+¦+‡ã'xÕ º±,Ù¦+¦+Єò ê »�ª+†ª+ò ò ñA ñA»�»�Bÿ©+Ù „±,©+ ª+ò p ë »�¬+ g¬+p p òAóAôA òA»� óA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ôA­àBÿ«+Ú ‹±,«+ ¬+p œp � ì »�®+ή+� � � � õA õA»�Bÿ­+Û ’±,­+ ®+� 3 í »�3 í »�±+ù±±+3 3 öA÷A öA»� ÷A»�Bÿ°+Ü –±,°+ ±+3 î 3 Æð æ \ÒÒ,½Žr'Œk®¬N³+´+Î…½ŽBÿÆð 9ÙÎ…½ŽBÿ²+²+ ³+pÕ ¨·,Ù²+²+Î…Î 𠽎¶+†¶+Î Î üA üA½Ž½ŽBÿµ+à ù¶,µ+ ¶+Î L ñ ½Ž¸+ g¸+L L ýAþAÿA ýA½Ž þA€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÿA­àBÿ·+á €·,·+ ¸+L œL øÕ è¾U,è |ßÒ,…º+º+�ÁHÕ „¿,��¨$KPߢ»+¼+#%(Õ •¿,Õ •¿,Ù¹+¹+‰ŒPÕ ¨¿,Õ ¨¿,Ù¹+¹+½ŽÊ õ …¾+¾+�ÁH˜�Ûmç „¿,��¿+†¿+´¶Ê Ê �B �B����Bÿ½+ç Ѿ,½+ ¿+‰ŒÊ Š ö …Á+Á+�ÁHAÁÜmè „¿,��Â+ gÂ+^aŠ Š ‚BƒB„B ‚B�� ƒB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡„B­àBÿÀ+è Ø¾,À+ Â+‰ŒŠ œŠ ŒÕ!üÏIF The configuration used to determine a DFA's start state for a search.Á™�ü�OL A DFA has a single starting state in the typical textbook description. ThatÁüíOL is, it corresponds to the set of all starting states for the NFA that builtÁü½LI it, along with their epsilon closures. In this crate, however, DFAs haveÁüŠ41 many possible start states due to a few factors:Á¿�üÃMJ * DFAs support the ability to run either anchored or unanchored searches.Áü‘MJ Each type of search needs its own start state. For example, an unanchoredÁüßGD search requires starting at a state corresponding to a regex with aÁü§;8 `(?s-u:.)*?` prefix, which will match through anything.ÁüãJG * DFAs also optionally support starting an anchored search for any oneÁü®EB specific pattern. Each such pattern requires its own start state.ÁüôLI * If a look-behind assertion like `^` or `\b` is used in the regex, thenÁüÁNK the DFA will need to inspect a single byte immediately before the start ofÁü� 1. the search to choose the correct start state.Á �üÆ OL Indeed, this configuration precisely encapsulates all of the above factors.Áü– IF The [`Config::anchored`] method sets which kind of anchored search toÁüà JG perform while the [`Config::look_behind`] method provides a way to setÁü« DA the byte that occurs immediately before the start of the search.Áð �üô NK Generally speaking, this type is only useful when you want to run searchesÁüà JG without using an [`Input`]. In particular, an `Input` wants a haystackÁüŽ GD slice, but callers may not have a contiguous sequence of bytes as aÁüÖ KH haystack in all cases. This type provides a lower level of control suchÁü¢MJ that callers can provide their own anchored configuration and look-behindÁ¤ð byte explicitly.Á…�l‰¯Ö.—�ü›KH This shows basic usage that permits running a search with a DFA withoutÁüç" using the `Input` abstraction.ÁŠ�<Žþ×.Ì–ŽØ.ü°  dfa::{Automaton, dense},Á¤Ñ util::start,ÁŒæ Anchored,Á4ø÷Ø.ÿ�üƒ0- let dfa = dense::DFA::new(r"(?-u)\b\w+\b")?;Áä´ let haystack = "quartz";ÁÑ�üÕ>; let config = start::Config::new().anchored(Anchored::Yes);Áü”.+ let mut state = dfa.start_state(&config)?;ÁüÃ*' for &b in haystack.as_bytes().iter() {Áüî)& state = dfa.next_state(state, b);Á,˜¶¯3üž&# state = dfa.next_eoi_state(state);ÁüÅ'$ assert!(dfa.is_match_state(state));Áí�üñ.áß.< þ×.¨�ü¬JG This example shows how to correctly run a search that doesn't begin atÁü÷KH the start of a haystack. Notice how we set the look-behind byte, and asÁüÃ0- a result, the `\b` assertion does not match.Áô�<øþ×.Ì€ŽØ.ü𠙤n¤»¤nŒÐߤn4â÷Ø.é�üí0“¥näžÌ¥n»�ü¿%" let config = start::Config::new()Áüå  .anchored(Anchored::Yes)Áü†! .look_behind(Some(b'q'));Áü¨.Ʀnü×2/ for &b in haystack.as_bytes().iter().skip(1) {ÁüŠ)²§n,´¶¯3üº&ò§n„á // No match!Áüò(% assert!(!dfa.is_match_state(state));Á›�üŸ.áß.<Îþ×.Ö�üÚKH If we had instead not set a look-behind byte, then the DFA would assumeÁü¦OL that it was starting at the beginning of the haystack, and thus `\b` shouldÁüöFC match. This in turn would result in erroneously reporting a match:Á½�<Áþ×.ÌÉŽØ.üã ™¤n¤„¤nŒ™ߤn4«÷Ø.²�ü¶0“¥näçÌ¥n„�üˆ-* // Whoops, forgot the look-behind byte...Áü¶>þ¥nüõ.Ʀnü¤2‰­nü×)²§n,� ¶¯3ü‡ &ò§nü® +( // And now we get a match unexpectedly.ÁüÚ '¢¨n‚!�ü†!.áß.<µ!þ×.¦4à!ö�Ññ”¿7Ä+Å+¼í!\í!£Ã+Ã+ÈË ”Š"DŠ"£Ã+Ã+Ø¥) ÷ ö�Ç+†Ç+) ) †B †Bö�ö�BÿÆ+é Æ!Æ+ Ç+) » ø ö�É+ gÉ+» » ‡BˆB‰B ‡Bö� ˆB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡‰B­àBÿÈ+ê Í!È+ É+» œ» ô§<§d¹<Å�a¾k[ ¿±UË+ŒÌ<Ì<£Ê+Ê+ü¥(Ù<´ ù Å�Î+†Î+´ ´ �B �BÅ�Å�BÿÍ+ë Ÿ<Í+ Î+´ ¬Îf¬,Þf†‘‹ÉpÍïÐÐ+Ñ+Ó+Ô+Ö+×+Ù+Ú+Ü+Ý+ß+à+Ò+Ñ+Õ+Ô+Ø+×+Û+Ú+Þ+Ý+á+à+\·g¬Ï+Ï+†‘Ï+Ï+†‘ ÅgD»h¬Ï+Ï+†‘Ï+Ï+†‘ Æh$Ài¬Ï+Ï+†‘Ï+Ï+†‘ Çi4Ðj¬Ï+Ï+†‘Ï+Ï+†‘ Ùj4âk¬Ï+Ï+†‘Ï+Ï+†‘ ëk¤ûo¬Ï+Ï+†‘Ï+Ï+†‘ ’pÒ Ò Ò þ †‘Ò þ †‘ä+†ä+Ò Ò šB šB†‘†‘Bÿã+ô ªfã+ ä+Ò õ ±fÿ †‘. € †‘ç+ gç+. . ›BœB�B ›B†‘ œB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡�B­àBÿæ+ö ·fæ+ ç+. œ. Ü � †‘é+Îé+Ü Ü Ü Ü žB žB†‘Bÿè+÷ ¾fè+ é+Ü  ‚ †‘ ‚ †‘ì+ù±ì+  ŸB B ŸB†‘  B†‘Bÿë+ø Âfë+ ì+ î  ŒÒ"-üáN-K A common set of configuration options that apply to the syntax of a regex.Á°-�ü´L-I This represents a group of configuration options that specifically applyÁü�I-F to how the concrete syntax of a regular expression is interpreted. InÁüË3-0 particular, they are generally forwarded to theÁüÿ\-Y [`ParserBuilder`](https://docs.rs/regex-syntax/*/regex_syntax/struct.ParserBuilder.html)ÁTÜ- in theÁüç2-/ [`regex-syntax`](https://docs.rs/regex-syntax)Áüš B-? crate when building a regex from its concrete syntax directly.ÁÝ -�üá O-L These options are defined as a group since they apply to every regex engineÁü±!N-K in this crate. Instead of re-defining them on every engine's builder, theyÁü€"3-0 are instead provided here as one cohesive unit.Á®4Ý"-Ý’“öû9§/î+ï+ð+ñ+ò+ó+ô+õ+ö+÷+ø+´ê"-„ê"-Æí+í+„†#-T†#-Æí+í+Ôœ#-¤œ#-Æí+í+T¼#-$¼#-Æí+í+œÌ#-|Ì#-Æí+í+„å#-Tå#-Æí+í+¼û#-Œû#-Æí+í+l˜$-<˜$-Æí+í+T«$-$«$-Æí+í+|»$-T»$-Æí+í+\Ð$-,Ð$-Æí+í+† † † ƒ Ý’† ƒ Ý’û+†û+† † ©B ©BÝ’Ý’Bÿú+ú ½"-ú+ û+† û Ä"-„ Ý’ô … Ý’þ+ gþ+ô ô ªB«B¬B ªBÝ’ «B€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡¬B­àBÿý+ü Ê"-ý+ þ+ô œô üÑ ü¶>; A hack to align a smaller type `B` with a bigger type `T`.Áõ�üùDA The usual use of this is with `B = [u8]` and `T = u32`. That is,Áü¾FC it permits aligning a sequence of bytes on a 4-byte boundary. ThisÁü…FC is useful in contexts where one wants to embed a serialized [denseÁüÌMJ DFA](crate::dfa::dense::DFA) into a Rust a program while guaranteeing theÁüš# alignment required for the DFA.Á¾�üÂMJ See [`dense::DFA::from_bytes`](crate::dfa::dense::DFA::from_bytes) for anÁü�$! example of how to use this type.Á¯<Üþ€,��,�,€,ÿÆø”4çì“V ïÁ”õó. Ʊr,‚,„, ä/1”µüø85 A zero-sized field indicating the alignment we want.Á4¹ÿ+ÿ+æÑ( Åd�üÍ>; A possibly non-sized field containing a sequence of bytes.Á,”ÿ+ÿ+ø”&( † þ†,�‡,†,‡,ôÕnDì“VCŸgø”ý äןVý ïÁ”ˆ, gˆ,QT€ƒ&( &( ¾B¿BÀB ¾BÁ” ¿B€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÀB­àBÿ…,ý É…, ˆ,ø”¥õ&( œ&( Ì ü¡DA An error that occurs when serializing an object from this crate.Áæ�üêKH Serialization, as used in this crate, universally refers to the processÁü¶HE of transforming a structure (like a DFA) into a custom binary formatÁüÿOL represented by `&[u8]`. To this end, serialization is generally infallible.ÁüÏNK However, it can fail when caller provided buffer sizes are too small. WhenÁüž30 that occurs, a serialization error is reported.ÁÒ�üÖGD A `SerializeError` provides no introspection capabilities. Its onlyÁüžHE supported operation is conversion to a human readable error message.Áç�üëJG This error type implements the `std::error::Error` trait only when theÁü¶DA `std` feature is enabled. Otherwise, this type is defined in allÁœû configurations.Á°t«‰•´l�aâŽWŠ,”û%$û%ô‰,‰,¥Ó1Ú) ‡ ‰•Œ, gŒ,Ú) Ú) ÁBÂBÃB ÁB‰• ÂB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÃB­àBÿ‹,þ ˜‹, Œ,Ú) œÚ) ñ ü«)LI An error that occurs when deserializing an object defined in this crate.Áø)�üü)K¿ÚnüÈ*H”Ûnü‘+KH represented by `&[u8]`. Deserialization, then, refers to the process ofÁüÝ+HE cheaply converting this binary format back to the object's in-memoryÁü¦,DA representation as defined in this crate. To the extent possible,Áüë,GD deserialization will report this error whenever this process fails.Á³-�ü·-IF A `DeserializeError` provides no introspection capabilities. Its onlyÁü�.H±ÞnÊ.�üÎ.J�ßnü™/DãßnœÞ/°àn²„Ž0Ö•û“¾‡ôŽ,�,�–Ö•Bÿñ 7ô�–Ö•Bÿ�,�, Ž,¤Ÿ0ô�,�,�– + ‰ Ö•‘, g‘, +  + ÇBÈBÉB ÇBÖ• ÈB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÉB­àBÿ�,� û/�, ‘, + œ + ÌÈ0³¤Í0ô�–Ámø)óc×±“,•,—,™,œ,Ÿ,¢,¤,¦,©,”,–,˜,š,›,�,ž, ,¡,£,¥,§,¨,  ª,«,<è0³ô’,’,�–Œò0ò0ô’,’,¥Ó1t‹1³ô’,’,�–”œ1$œ1ô’,’,¥Ó1d¶1³ô’,’,�–”Å1$Å1ô’,’,¥Ó1|ß1³ô’,’,�–lñ1Dñ1ô’,’,T€2,€2ô’,’,t’2³ô’,’,�–l£2D£2ô’,’,T²2,²2ô’,’,ŒÄ2³ô’,’,�–„Ø2LØ2ô’,’,tê2<ê2ô’,’,l€3³ô’,’,�–´�3D�3ô’,’,¥Ó1”®3³ô’,’,�–”Ã3$Ã3ô’,’,¥Ó1LÝ3³ô’,’,�–œé3é3ô’,’,ú‰”þ3$þ3ô’,’,¥Ó1<˜4³ô’,’,�–Œ¢4¢4ô’,’,»�”µ4$µ4ô’,’,¥Ó1, Š �–­, g­,, , ÊBËBÌB ÊB�– ËB€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÌB­àBÿ¬,‚ À0¬, ­,, œ, €–¡�®,�®,�®,®,¡®,êÏKjñ É,¥-½™ú½4JûUGò°,±,Žô(½™Bÿjñ 8óŽô(½™Bÿ¯,¯, °,L«-ó¯,¯,Žô(: ž ½™³,†³,: : öB öB½™½™Bÿ²,¯ å,², ³,: “: Ÿ ½™µ,ε,“: “: “: “: ÷B ÷B½™Bÿ´,° ì,´, µ,“:  ;   ½™·,üh·, ;  ; øBùB øB½™ ùBÒ­ Bÿ¶,ÿ¸,¸,± ð,¶,ªÃa ; »Ãa ; ·,Ò­  ; ƒ ;  ;  ; õ; ¡ ½™õ; ¡ ½™»,ù±»,õ; õ; úBûB úB½™ ûB½™Bÿº,² ö,º, »,õ; î õ; Z< ¢ ½™½,±²½,Z< Z< üBýB üB½™ ýB½™ʱ Bÿ¼,³ �-¼, ½,Z< î Z< v= £ ½™¿,î¿,v= v= þBÿB þB½™ ÿB½™İ Bÿ¾,´ �-¾, ¿,v= î v= ºñ ÊŒ›@Þšo2‰É=ªÍÁ,Â,ñ”ÞšBÿºñ 8óñ”ÞšBÿÀ,À, Á,<­@óÀ,À,ñ”> ¤ ÞšÄ,†Ä,> > �C �CÞšÞšBÿÃ,µ ú?Ã, Ä,> “> ¥ ÞšÆ, gÆ,“> “> �C‘C’C �CÞš ‘C€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡’C­àBÿÅ,¶ �@Å, Æ,“> œ“>  ò Ìœ�F£›@„Zã"G·È,É,ñ”£›Bÿ ò 8óñ”£›BÿÇ,Ç, È,<¡FóÇ,Ç,ñ”Ò? ¦ £›Ë,†Ë,Ò? Ò? •C •C£›£›BÿÊ,¸ óEÊ, Ë,Ò? üþR!Í|�Sè›ßú ÈlpÅÍ,Î,l¦S$¦SóÌ,Ì,ñ”Ô¹SŒ¹SóÌ,Ì,Ç»@ § è›Ð,†Ð,»@ »@  C  Cè›è›BÿÏ,¹ öRÏ, Ð,»@ ¤¹&üäGD The parameters for a regex search including the haystack to search.Á¬�ü°NK It turns out that regex searches have a few parameters, and in most cases,ÁüÿKH those parameters have defaults that work in the vast majority of cases.ÁüËIF This `Input` type exists to make that common case seamless while alsoÁü•OL providing an avenue for changing the parameters of a search. In particular,ÁüåMJ this type enables doing so without a combinatorial explosion of differentÁü³>; methods and/or superfluous parameters in the common cases.Áò�üö85 An `Input` permits configuring the following things:Á¯�ü³MJ * Search only a substring of a haystack, while taking the broader contextÁü�63 into account for resolving look-around assertions.Áü¸EB * Indicating whether to search for all patterns in a regex, or toÁüþ.+ only search for one pattern in particular.Áü­ :7 * Whether to perform an anchored on unanchored search.Áüè 52 * Whether to report a match as early as possible.Áž �ü¢ KH All of these parameters, except for the haystack, have sensible defaultÁüî MJ values. This means that the minimal search configuration is simply a callÁü¼ HE to [`Input::new`] with your haystack. Setting any other parameter isÁl…  optional.Á“ �ü— GD Moreover, for any `H` that implements `AsRef<[u8]>`, there exists aÁüß JG `From for Input` implementation. This is useful because many of theÁüª IF search APIs in this crate accept an `Into`. This means you canÁüô JG provide string or byte strings to these routines directly, and they'llÁü¿85 automatically get converted into an `Input` for you.Áø�üüGD The lifetime parameter `'h` refers to the lifetime of the haystack.ÁÄ�”È # OrganizationÁÛ�üß;8 The API of `Input` is split into a few different parts:Á›�üŸFC * A builder-like API that transforms a `Input` by value. Examples:Áüæ,) [`Input::span`] and [`Input::anchored`].Áü“GD * A setter API that permits mutating parameters in place. Examples:ÁüÛ41 [`Input::set_span`] and [`Input::set_anchored`].Áü�HE * A getter API that permits retrieving any of the search parameters.ÁüÙ>; Examples: [`Input::get_span`] and [`Input::get_anchored`].Áü˜NK * A few convenience getter routines that don't conform to the above namingÁüçFC pattern due to how common they are. Examples: [`Input::haystack`],Áü®(% [`Input::start`] and [`Input::end`].Áü×HE * Miscellaneous predicates and other helper routines that are usefulÁü <9 in some contexts. Examples: [`Input::is_char_boundary`].ÁÝ�üáOL A `Input` exposes so much because it is meant to be used by both callers ofÁü±OL regex engines _and_ implementors of regex engines. A constraining factor isÁü�NK that regex engines should accept a `&Input` as its lowest level API, whichÁüÐKH means that implementors should only use the "getter" APIs of a `Input`.Áœ�ü )& # Valid bounds and search terminationÁÊ�üÎ@= An `Input` permits setting the bounds of a search via eitherÁü�IF [`Input::span`] or [`Input::range`]. The bounds set must be valid, orÁüÙ=: else a panic will occur. Bounds are valid if and only if:Á—�ü›C@ * The bounds represent a valid range into the input's haystack.ÁüßIF * **or** the end bound is a valid ending bound for the haystack *and*Áü©@= the start bound is exactly one greater than the start bound.Áê�üîMJ In the latter case, [`Input::is_done`] will return true and indicates anyÁü¼KH search receiving such an input should immediately return with no match.Áˆ�üŒKH Note that while `Input` is used for reverse searches in this crate, theÁüØIF `Input::is_done` predicate assumes a forward search. Because unsignedÁü¢NK offsets are used internally, there is no way to tell from only the offsetsÁüñ,) whether a reverse search is done or not.Áž�Ô¢ # Regex engine supportÁ½�üÁMJ Any regex engine accepting an `Input` must support at least the followingÁ\�  things:Á› �üŸ &# * Searching a `&[u8]` for matches.ÁüÆ GD * Searching a substring of `&[u8]` for a match, such that any matchÁüŽ!85 reported must appear entirely within that substring.ÁüÇ!B? * For a forwards search, a match should never be reported whenÁüŠ"NK [`Input::is_done`] returns true. (For reverse searches, termination shouldÁüÙ"# be handled outside of `Input`.)Áý"�ü�#JG Supporting other aspects of an `Input` are optional, but regex enginesÁüÌ#LI should handle aspects they don't support gracefully. How this is done isÁü™$MJ generally up to the regex engine. This crate generally treats unsupportedÁüç$LI anchored modes as an error to report for example, but for simplicity, inÁü´%KH the meta regex engine, trying to search with an invalid pattern ID justÁü€&'$ results in no match being reported.ÁÒ¬ô ¸Ò,Ò,¿�´�¾Ú&õaÓ,Ô,Õ,Ö,Ê&”Ô&DÔ&ÏÑ,Ñ,â�]Tì&$ì&ÏÑ,Ñ,Åž”ü&Dü&ÏÑ,Ñ,Ø¥t”'D”'ÏÑ,Ñ,ÿP ¨ ¸Ø,Ø,¿�Ù,†Ù,¡£ÿP ÿP íC íC¿�¿�Bÿ×,¿ ±&×, Ù,¸ÿP |¦ðü¾é:7 A representation of a span reported by a regex engine.Áùé�üýéEB A span corresponds to the starting and ending _byte offsets_ of aÁüÃêJG contiguous region of bytes. The starting offset is inclusive while theÁüŽëHE ending offset is exclusive. That is, a span is a half-open interval.Á×ë�üÛëKH A span is used to report the offsets of a match, but it is also used toÁü§ìJG convey which region of a haystack should be searched via routines likeÁ¤òì [`Input::span`].Á‡í�ü‹íKH This is basically equivalent to a `std::ops::Range`, except thisÁü×íNK type implements `Copy` which makes it more ergonomic to use in the contextÁü¦îNK of this crate. Like a range, this implements `Index` for `[u8]` and `str`,ÁüõîNK and `IndexMut` for `[u8]`. For convenience, this also impls `From`,ÁüÄï52 which means things like `Span::from(5..10)` work.ÁÔ¾ô ÅžÕ–LqV…OfÛ,Ü,„íðü¼ð,) The start offset of the span, inclusive.Á,ñðÚ,Ú,t²ñüƒñ*' The end offset of the span, exclusive.Á¶ñÚ,Ú,gj gj gj « Åžgj « Åžß,†ß,gj gj €D €DŞŞBÿÞ,Ä ƒðÞ, ß,gj Å Šð¬ Åžáj ­ Åžâ,Îâ,áj áj áj áj �D �DÅžBÿá,Æ �ðá, â,áj Xk ® Åžä,ühä,Xk Xk ‚DƒD ‚DÅž ƒDÒ­ Bÿã,ÿå,å,Ç ”ðã,ªÃaXk »ÃaXk ä,Ò­ Xk ƒXk Xk Xk âl ¯ Åžâl ¯ Åžè,ù±è,âl âl „D…D „DÅž …DÅžBÿç,È šðç, è,âl î âl ¤è‰ü÷ƒ<9 A representation of "half" of a match reported by a DFA.Á´„�ü¸„OL This is called a "half" match because it only includes the end location (orÁüˆ…LI start location for a reverse search) of a match. This corresponds to theÁüÕ…LI information that a single DFA scan can report. Getting the other half ofÁü¢†96 the match requires a second scan with a reversed DFA.Á܆�üà†GD A half match also includes the pattern that matched. The pattern isÁü¨‡NK identified by an ID, which corresponds to its position (starting from `0`)Áü÷‡OL relative to other patterns used to construct the corresponding DFA. If onlyÁüLjOL a single pattern is provided to the DFA, then all matches are guaranteed toÁì—‰ have a pattern ID of `0`.ÁÖÑô ö ²MìÜ­‰áê,ë,”›Š<›ŠÏé,é,›†lÊ‹4Ê‹Ïé,é,4x 4x 4x ± ö 4x ± ö î,†î,4x 4x •D •Dö ö Bÿí,Ë ¾‰í, î,4x Ì Å‰² ö žx ³ ö ñ, gñ,žx žx –D—D˜D –Dö  —D€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡˜D­àBÿð,Í Ë‰ð, ñ,žx œžx Qz ´ ö ó,Îó,Qz Qz Qz Qz ™D ™Dö Bÿò,Î Ò‰ò, ó,Qz Ðz µ ö õ,ühõ,Ðz Ðz šD›D šDö  ›DÒ­ Bÿô,ÿö,ö,Ï Ö‰ô,ªÃaÐz »ÃaÐz õ,Ò­ Ðz ƒÐz Ðz Ðz r| ¶ ö r| ¶ ö ù,ù±ù,r| r| œD�D œDö  �Dö Bÿø,Р܉ø, ù,r| î r| „‚›üá•;8 A representation of a match reported by a regex engine.Á�–�ü¡–KH A match has two essential pieces of information: the [`PatternID`] thatÁüí–96 matches, and the [`Span`] of the match in a haystack.Á§—�ü«—IF The pattern is identified by an ID, which corresponds to its positionÁüõ—HE (starting from `0`) relative to other patterns used to construct theÁü¾˜NK corresponding regex engine. If only a single pattern is provided, then allÁü�™74 matches are guaranteed to have a pattern ID of `0`.ÁÅ™�üÉ™KH Every match reported by a regex engine guarantees that its span has itsÁü•š96 start offset as less than or equal to its end offset.Á×äô ‹¢@±«‡Ì�û,ü,”±›<±›Ïú,ú,›†Tì›$ì›Ïú,ú,Åž] ] ] · ‹¢] · ‹¢ÿ,†ÿ,] ]  D  D‹¢‹¢Bÿþ,Ñ Øšþ, ÿ,] Ò ßš¸ ‹¢Ç ¹ ‹¢‚- g‚-Ç Ç ¡D¢D£D ¡D‹¢ ¢D€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡£D­àBÿ�-Ó åš�- ‚-Ç œÇ � º ‹¢„-΄-� � � � ¤D ¤D‹¢Bÿƒ-Ô ìšƒ- „-� ô� » ‹¢†-üh†-ô� ô� ¥D¦D ¥D‹¢ ¦DÒ­ Bÿ…-ÿ‡-‡-Õ ðš…-ªÃaô� »Ãaô� †-Ò­ ô� ƒô� ô� ô� ºƒ ¼ ‹¢ºƒ ¼ ‹¢Š-ù±Š-ºƒ ºƒ §D¨D §D‹¢ ¨D‹¢Bÿ‰-Ö öš‰- Š-ºƒ î ºƒ ¬Ê¿Ôü· A set of `PatternID`s.Á—¸�ü›¸LI A set of pattern identifiers is useful for recording which patterns haveÁüè¸HE matched a particular haystack. A pattern set _only_ includes patternÁü±¹85 identifiers. It does not include offset information.Áê¹�lÖ.ü¹�ü€º$! This shows basic usage of a set.Á¥º�<©ºþ×.ü±º0- use regex_automata::{PatternID, PatternSet};Áâº�üæº" let pid1 = PatternID::must(5);Áü‰»" let pid2 = PatternID::must(8);Áô¬» // Create a new empty set.ÁüË»&# let mut set = PatternSet::new(10);ÁÔò» // Insert pattern IDs.Á¬�¼ set.insert(pid1);Á¬£¼ set.insert(pid2);Á¼¹¼ // Test membership.ÁüѼ  assert!(set.contains(pid1));Áüò¼  assert!(set.contains(pid2));Á¼“½ // Get all members.Á|«½»ç/œ»½ vec![5, 8],ÁüϽA> set.iter().map(|p| p.as_usize()).collect::>(),Á4‘¾×è/¬˜¾ // Clear the set.Á„®¾ set.clear();Áü¿¾$! // Test that it is indeed empty.Áää¾ assert!(set.is_empty());Á<�¿þ×.Ó«Œ�¿̉¿Ù÷ô ¡£ÍÅÉéñ¿Œ-�-T À ÀÏ‹-‹-üäÈ ,äÈÏ‹-‹-­™*™Œ ¿ ¡£�-†�-™Œ ™Œ °D °D¡£¡£BÿŽ-Û ¬¿Ž- �-™Œ 1� À ¡£‘- g‘-1� 1� ±D²D³D ±D¡£ ²D€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡³D­àBÿ�-Ü ³¿�- ‘-1� œ1� éŽ Á ¡£“-Γ-éŽ éŽ éŽ éŽ ´D ´D¡£Bÿ’-Ý º¿’- “-éŽ �  ¡£�  ¡£–-ù±–-� � µD¶D µD¡£ ¶D¡£Bÿ•-Þ ¾¿•- –-� î � ü…ö üÈóC@ An error that occurs when a `PatternID` failed to insert into aÁŒŒô `PatternSet`.Ážô�ü¢ôNK An insert fails when the given `PatternID` exceeds the configured capacityÁÄñô of the `PatternSet`.ÁŠõ�üŽõDA This error is created by the [`PatternSet::try_insert`] routine.ÁÓ«ŒÙõÌÓõÜ õ –¤U�©}yš×â˜-™-¤¬öL¬öÏ—-—-›†|ÆöDÆöÏ—-—-×� Å –¤›-†›-×� ×� ÀD ÀD–¤–¤Bÿš-ä öõš- ›-×� m‘ Æ –¤�- g�-m‘ m‘ ÁDÂDÃD ÁD–¤ ÂD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÃD­àBÿœ-å ýõœ- �-m‘ œm‘ ì¿üüŸúA> An iterator over all pattern identifiers in a [`PatternSet`].Ááú�üåúOL The lifetime parameter `'a` refers to the lifetime of the pattern set beingÁ”µû iterated over.ÁÈû�üÌû@= This iterator is created by the [`PatternSet::iter`] method.ÁÓ«Œ“üÌ�üÞõ ÄŸ-Ÿ-ú¤öàØ±Z -Ùüüãü6ãüÏž-ž-ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄГ È Ä¢-¢-ú¤£-†£-ßáГ Г ÇD ÇDú¤ú¤Bÿ¡-è °ü¡- £-ÄГ „” É Ä¥-¥-ú¤¦- g¦-nq„” „” ÈDÉDÊD ÈDú¤ ÉD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÊD­àBÿ¤-é ·ü¤- ¦-Ä„” œ„” ŒÁ¨üð‡+( The type of anchored search to perform.Áœˆ�ü ˆOL This is *almost* a boolean option. That is, you can either do an unanchoredÁüðˆOL search for any pattern in a regex, or you can do an anchored search for anyÁ¼À‰ pattern in a regex.Á؉�ü܉NK A third option exists that, assuming the regex engine supports it, permitsÁü«Š85 you to do an anchored search for a specific pattern.ÁäŠ�üèŠHE Note that there is no way to run an unanchored search for a specificÁü±‹MJ pattern. If you need that, you'll need to build separate regexes for eachÁdÿ‹ûœ/ŒŒ�d�Œ¯Ö0�Œ�ü¡ŒKH If a regex engine does not support the anchored mode selected, then theÁüíŒIF regex engine will return an error. While any non-trivial regex engineÁü·�LI should support at least one of the available anchored modes, there is noÁü„ŽLI singular mode that is guaranteed to be universally supported. Some regexÁüÑŽIF engines might only support unanchored searches (DFAs compiled withoutÁü›�GD anchored starting states) and some regex engines might only supportÁüã�.+ anchored searches (like the one-pass DFA).Á’��ü–�:7 The specific error returned is a [`MatchError`] with aÁüÑ�GD [`MatchErrorKind::UnsupportedAnchored`] kind. The kind includes theÁü™‘/, `Anchored` value given that is unsupported.ÁÉ‘�üÍ‘HE Note that regex engines should report "no match" if, for example, anÁü–’JG `Anchored::Pattern` is provided with an invalid pattern ID _but_ whereÁüá’OL anchored searches for a specific pattern are supported. This is smooths outÁü±“LI behavior such that it's possible to guarantee that an error never occursÁüþ“JG based on how the regex engine is configured. All regex engines in thisÁüÉ”OL crate report "no match" when searching for an invalid pattern ID, but whereÁü™•<9 searching for a valid pattern ID is otherwise supported.ÁÖ•�lÚ•¯Ö.è•�üì•GD This example shows how to use the various `Anchored` modes to run aÁü´–GD search. We use the [`PikeVM`](crate::nfa::thompson::pikevm::PikeVM)Áüü–KH because it supports all modes unconditionally. Some regex engines, likeÁüÈ—LI the [`onepass::DFA`](crate::dfa::onepass::DFA) cannot support unanchoredÁl•˜§°l£˜�<§˜þ×.ü¯˜=îõ.Ì혎Ø.ü‡™&Ÿ¾Iü®™*‰èD4Ù™÷Ø.à™�üä™ ÷ìL¤…š r"Mrs. \w+",Á¤šš r"Miss \w+",Áœ¯š r"Mr. \w+",ÁœÃš r"Ms. \w+",ÁDך¯ƒ1üàš&äÎ/ü‡›'$ let hay = "Hello Mr. Springsteen!";Á¯›�ü³›1. // The default is to do an unanchored search.Áüå›FC assert_eq!(Some(Match::must(2, 6..21)), re.find(&mut cache, hay));Áü¬œ>; // Explicitly ask for an unanchored search. Same as above.Áüëœ74 let input = Input::new(hay).anchored(Anchored::No);Áü£�FÊ�pê��üî�GD // Now try an anchored search. Since the match doesn't start at theÁü¶ž41 // beginning of the haystack, no match is found!Áüëž85 let input = Input::new(hay).anchored(Anchored::Yes);Áü¤Ÿ1´ìKÖŸ�üÚŸJG // We can try an anchored search again, but move the location of whereÁü¥ GD // we start the search. Note that the offsets reported are still inÁüí IF // terms of the overall haystack and not relative to where we startedÁ”·¡ // the search.ÁüÊ¡C@ let input = Input::new(hay).anchored(Anchored::Yes).range(6..);ÁüŽ¢HE assert_eq!(Some(Match::must(2, 6..21)), re.find(&mut cache, input));Á×¢�üÛ¢IF // Now try an anchored search for a specific pattern. We specificallyÁü¥£KH // choose a pattern that we know doesn't match to prove that the searchÁüñ£-* // only looks for the pattern we provide.ÁüŸ¤ let input = Input::new(hay)Áü¿¤85 .anchored(Anchored::Pattern(PatternID::must(1)))Á¤ø¤ .range(6..);Áü�¥1´ìK¿¥�üÃ¥LI // But if we switch it to the pattern that we know matches, then we findÁŒ�¦ // the match.Áü¢¦Ù–pü¦85 .anchored(Anchored::Pattern(PatternID::must(2)))Á¤û¦Å—pü�§H—”pÙ§�üݧ.áß.<Œ¨þ×.ß0õ Ø¥«È¦ec*¨-©-ª-«-¬-­-©-«-­-®-›†Ø¥Bÿ¤ªüÙ¨IF Run an unanchored search. This means a match may occur anywhere at orÁü§©+( after the start position of the search.Áש�üß©@= This search can return a match for any pattern in the regex.Áßê§-§-Ø¥þ§-§-Ø¥é«ü¬ªEB Run an anchored search. This means that a match must begin at theÁüöª! start position of the search.Áœ«�ü¤«@ù›pß §-§-Ø¥´¶§-§-Ø¥có üò«JG Run an anchored search for a specific pattern. This means that a matchÁüÁ¬IF must be for the given pattern and must begin at the start position ofÁ|�­ the search.Áßcó §-§- ­-có có ›†Ø¥Bÿ§-§-´¡pL«­§-§-›†¶• ¶• ¶• Ê Ø¥¶• Ê Ø¥±-†±-¶• ¶• ÎD ÎDإإBÿ°-ê �¨°- ±-¶• ë ¤¨Ë Ø¥– Ì Ø¥´- g´-– – ÏDÐDÑD ÏDØ¥ ÐD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÑD­àBÿ³-ì ª¨³- ´-– œ– ,˜ Í Ø¥¶-ζ-,˜ ,˜ ,˜ ,˜ ÒD ÒDØ¥Bÿµ-í ±¨µ- ¶-,˜ l˜ Πإl˜ Πإ¹-ù±¹-l˜ l˜ ÓDÔD ÓDØ¥ ÔDØ¥Bÿ¸-î µ¨¸- ¹-l˜ î l˜ ”¹ãü×·;8 The kind of match semantics to use for a regex pattern.Á“¸�ü—¸JG The default match kind is `LeftmostFirst`, and this corresponds to theÁüâ¸DA match semantics used by most backtracking engines, such as Perl.Á§¹�ü«¹:7 # Leftmost first or "preference order" match semanticsÁæ¹�üê¹KH Leftmost-first semantics determine which match to report when there areÁü¶ºNK multiple paths through a regex that match at the same position. The tie isÁü…»OL essentially broken by how a backtracker would behave. For example, considerÁüÕ»NK running the regex `foofoofoo|foofoo|foo` on the haystack `foofoo`. In thisÁü¤¼OL case, both the `foofoo` and `foo` branches match at position `0`. So shouldÁüô¼'$ the end of the match be `3` or `6`?Áœ½�ü ½KH A backtracker will conceptually work by trying `foofoofoo` and failing.Áüì½GD Then it will try `foofoo`, find the match and stop there. Thus, theÁü´¾LI leftmost-first match position is `6`. This is called "leftmost-first" orÁü�¿JG "preference order" because the order of the branches as written in theÁüÌ¿:7 regex pattern is what determines how to break the tie.Á‡À�ü‹ÀKH (Note that leftmost-longest match semantics, which break ties by alwaysÁü×ÀKH taking the longest matching string, are not currently supported by thisÁü£ÁJG crate. These match semantics tend to be found in POSIX regex engines.)ÁîÁ�üòÁIF This example shows how leftmost-first semantics work, and how it evenÁü¼Â%" applies to multi-pattern regexes:ÁâÂ�<æÂþ×.ÌîÂŽØ.üˆÃ&Ÿ¾It¯ÃÑ·/4¾Ã÷Ø.ÅÃ�üÉà ÷ìL¬êà r"foofoofoo",Á”€Ä r"foofoo",Á|“Ä r"foo",ÁD£Ä¯ƒ1ü¬Ä&äÎ/üÓÄGD let got: Vec = re.find_iter(&mut cache, "foofoo").collect();Áü›Å.+ let expected = vec![Match::must(1, 0..6)];ÁôÊűÄ2éÅ�üíÅ.áß.<œÆþ×.¤Æ�Œ¨Æ # All matchesÁºÆ�ü¾ÆLI The `All` match semantics report any and all matches, and generally willÁü‹ÇNK attempt to match as much as possible. It doesn't respect any sort of matchÁüÚÇJG priority at all, so things like non-greedy matching don't work in thisÁL¥È mode.Á¯È�ü³ÈMJ The fact that non-greedy matching doesn't work generally makes most formsÁü�ÉMJ of unanchored non-overlapping searches have unintuitive behavior. Namely,ÁüÏÉJG unanchored searches behave as if there is a `(?s-u:.)*?` prefix at theÁüšÊMJ beginning of the pattern, which is specifically non-greedy. Since it willÁüèÊLI be treated as greedy in `All` match semantics, this generally means thatÁüµËNK it will first attempt to consume all of the haystack and is likely to windÁÄ„Ì up skipping matches.Á�Ì�ü¡ÌGD Generally speaking, `All` should only be used in two circumstances:ÁéÌ�üíÌOL * When running an anchored search and there is a desire to match as much asÁü½ÍLI possible. For example, when building a reverse regex matcher to find theÁüŠÎLI start of a match after finding the end. In this case, the reverse searchÁü×ÎDA is anchored to the end of the match found by the forward search.ÁüœÏIF * When running overlapping searches. Since `All` encodes all possibleÁüæÏNK matches, this is generally what you want for an overlapping search. If youÁüµÐOL try to use leftmost-first in an overlapping search, it is likely to produceÁü…ÑMJ counter-intuitive results since leftmost-first specifically excludes someÁüÓÑ52 matches from its underlying finite state machine.Á‰Ò�ü�ÒOL This example demonstrates the counter-intuitive behavior of `All` semanticsÁüÝÒ52 when using a standard leftmost unanchored search:Á“Ó�<—Óþ×.ÌŸÓŽØ.ü¹Ó&Ÿ¾IÌàÓÇÌ>4úÓ÷Ø.�Ô�ô…Ô¢©Gü¤Ô?»üL¼äÔ .build("foo")?;ÁüüÔ)& let hay = "first foo second foo wat";Áü¦Õ&äÎ/üÍÕB? let got: Vec = re.find_iter(&mut cache, hay).collect();Áü�Ö74 // Notice that it completely skips the first 'foo'!ÁüÈÖ0- let expected = vec![Match::must(0, 17..20)];ÁôùÖ±Ä2˜×�üœ×.áß.<Ë×þ×.Ó×�ü××OL This second example shows how `All` semantics are useful for an overlappingÁü§ØIF search. Note that we use lower level lazy DFA APIs here since the NFAÁüñØMJ engines only currently support a very limited form of overlapping search.Á¿Ù�<ÃÙþ×.ÌËÙŽØ.üåÙ-ÞÐ3ü“Ú$ÿ¥34¸Ú÷Ø.¿Ú�ÜÃÚ’Ù.üßÚKH // If we didn't set 'All' semantics here, then the regex would onlyÁü«ÛKH // match 'foo' at offset 3 and nothing else. Why? Because the stateÁü÷ÛNK // machine implements preference order and knows that the 'foofoo' andÁüÆÜMJ // 'foofoofoo' branches can never match since 'foo' will always matchÁü”Ý-* // when they match and take priority.ÁüÂÝ<÷Í/üÿÝ)& .build(r"foo|foofoo|foofoofoo")?;Áü©Þ&äÎ/üÐÞ.ÒÒ3üÿÞ(% let input = Input::new("foofoofoo");Ą́ß let mut got = vec![];ÁTÂßµ¨3üÍßGD re.try_search_overlapping_fwd(&mut cache, &input, &mut state)?;Áü•à)& let m = match state.get_match() {ÁÔ¿à‹©3ÌÚà Some(m) => m,ÁTôà };Á¤ÿà got.push(m);Á,”ᶯ3Äšá�°3ô³á£°3ôÒá HalfMatch::must(0, 6),Áôñá HalfMatch::must(0, 9),Á4�âó°3ô—â±Ä2¶â�üºâ.áß.<éâþ×.:ŒñâáCõ ù¦rMH„9�T»-¼-Ê-Ë-¼-Ë-÷ãüÒã  Report all possible matches.Áá3º-º-ù¦GIº-º-ù¦øœ øœ øœ Ï ù¦øœ Ï ù¦¿-†¿-øœ øœ ×D ×Dù¦ù¦Bÿ¾-ð Œã¾- ¿-øœ ñ “ãÐ ù¦€� Ñ ù¦Â-÷Â-€� €� ù¦BÿÁ-Á- Â-§� Ò ù¦Ä- gÄ-§� §� ØDÙDÚD ØDù¦ ÙD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ÚD­àBÿÃ-ó ¢ãÃ- Ä-§� œ§� Éž Ó ù¦Æ-ÎÆ-Éž Éž Éž Éž ÛD ÛDù¦BÿÅ-ô ©ãÅ- Æ-Éž Ÿ Ô ù¦Ÿ Ô ù¦É-ù±É-Ÿ Ÿ ÜDÝD ÜDù¦ ÝDù¦BÿÈ-õ ­ãÈ- É-Ÿ î Ÿ V� ü€äKH Report only the leftmost matches. When multiple leftmost matches exist,ÁüÐäHE report the match corresponding to the part of the regex that appearsÁÄ�å first in the syntax.Á><¼åTºåÕ V� º-º-ù¦V� V� º-º-ù¦´ó ü¶îHE An error indicating that a search stopped before reporting whether aÁÄÿî match exists or not.Á˜ï�üœïLI To be very clear, this error type implies that one cannot assume that noÁüéïJG matches occur, since the search stopped before completing. That is, ifÁü´ðJG you're looking for information about where a search determined that noÁüÿðOL match can occur, then this error type does *not* give you that. (Indeed, atÁüÏñMJ the time of writing, if you need such a thing, you have to write your ownÁ¤�ò search routine.)Á²ò�ü¶òHE Normally, when one searches for something, the response is either anÁüÿòKH affirmative "it was found at this location" or a negative "not found atÁüËóNK all." However, in some cases, a regex engine can be configured to stop itsÁüšôNK search before concluding whether a match exists or not. When this happens,ÁüéôOL it may be important for the caller to know why the regex engine gave up andÁü¹õOL where in the input it gave up at. This error type exposes the 'why' and theÁd‰ö 'where.'Á–ö�üšöMJ For example, the DFAs provided by this library generally cannot correctlyÁüèöIF implement Unicode word boundaries. Instead, they provide an option toÁü²÷IF eagerly support them on ASCII text (since Unicode word boundaries areÁüü÷LI equivalent to ASCII word boundaries when searching ASCII text), but willÁüÉøHE "give up" if a non-ASCII byte is seen. In such cases, one is usuallyÁü’ùHE required to either report the failure to the caller (unergonomic) orÁüÛùNK otherwise fall back to some other regex engine (ergonomic, but potentiallyÁdªú costly).Á·ú�ü»úOL More generally, some regex engines offer the ability for callers to specifyÁü‹ûMJ certain bytes that will trigger the regex engine to automatically quit ifÁ”Ùû they are seen.Áìû�üðûJG Still yet, there may be other reasons for a failed match. For example,Áü»üLI the hybrid DFA provided by this crate can be configured to give up if itÁüˆýOL believes that it is not efficient. This in turn permits callers to choose aÁÜØýè–?ôý�üøýNK (Note that DFAs are configured by default to never quit or give up in thisÁüÇþKH fashion. For example, by default, a DFA will fail to build if the regexÁü“ÿNK pattern contains a Unicode word boundary. One needs to opt into the "quit"Áôâÿ behavior via options, likeÁü�€gd [`hybrid::dfa::Config::unicode_word_boundary`](crate::hybrid::dfa::Config::unicode_word_boundary).)Áé€�üí€*' There are a couple other ways a searchÁü˜�)& can fail. For example, when using theÁüÂ�OÍì^ü’‚KH with a haystack that is too long, or trying to run an unanchored searchÁüÞ‚/, with a [one-pass DFA](crate::dfa::onepass).ÁâVõ Û†ÁdSjj©ÓÍ-Î-ÒÀ*Û†Bÿ´ó Võ ÏÒÀ*Û†BÿÌ-Ì- Í-üêƒ!Ó«ŒÖƒÌЃÏÌ-Ì-ÒÀ*?  Ö Û†Ð-†Ð-?  ?  ßD ßDÛ†Û†BÿÏ-ö —ƒÏ- Ð-?  ½  × Û†Ò- gÒ-½  ½  àDáDâD àDÛ† áD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡âD­àBÿÑ-÷ žƒÑ- Ò-½  œ½  á¡ Ø Û†Ô-ÎÔ-á¡ á¡ á¡ á¡ ãD ãDÛ†BÿÓ-ø ¥ƒÓ- Ô-á¡ ‘¢ Ù Û†‘¢ Ù Û†×-ù±×-‘¢ ‘¢ äDåD äDÛ† åDÛ†BÿÖ-ù ©ƒÖ- ×-‘¢ î ‘¢ ¼¿—üå•,) The underlying kind of a [`MatchError`].Á’–�ü––NK This is a **non-exhaustive** enum. That means new variants may be added inÁüå–  a semver-compatible release.Á:Œ†—ãiõ Ȩ‡ì) ºÙ-Ü-Þ-à-Ú-Û-Ý-ß-á-$¸˜üÝ—C@ The search saw a "quit" byte at which it was instructed to stopÁt¥˜ searching.ÁãnØ-Ø-ȨD•™üǘEB The "quit" byte that was observed that caused the search to stop.Á$•™Ø-Ø-lã™ü§™30 The offset at which the quit byte was observed.Á4ã™Ø-Ø-4çœüý™GD The search, based on heuristics, determined that it would be betterÁüÉšEB to stop, typically to provide the caller an opportunity to use anÁì“› alternative regex engine.Áµ›�ü½›EB Currently, the only way for this to occur is via the lazy DFA andÁü‡œIF only when it is configured to do so (it will not return this error byÁlÕœ default).Áã™Ø-Ø-Ȩl†žüøœC@ The offset at which the search stopped. This corresponds to theÁüÄ�96 position immediately following the last byte scanned.Á4†žØ-Ø-|—¡ü žGD This error occurs if the haystack given to the regex engine was tooÁüìžEB long to be searched. This occurs, for example, with regex enginesÁü¶ŸIF like the bounded backtracker that have a configurable fixed amount ofÁü„ HE capacity that is tied to the length of the haystack. Anything beyondÁüÑ A> that configured limit will result in an error at search time.Áã�Ø-Ø-ȨTñ¡ü±¡74 The length of the haystack that exceeded the limit.Áñ¡Ø-Ø-œâ©üˆ¢EB An error indicating that a particular type of anchored search wasÁüÒ¢=: requested, but that the regex engine does not support it.Á”£�üœ£FC When this error occurs with [`Anchored::Pattern`], then one commonÁüç£GD cause is that the underlying regex engine was built without supportÁü³¤HE for anchored starting states for each pattern. For DFA engines, thisÁü€¥  typically means enabling theÁü¥¥if [`hybrid::dfa::Config::starts_for_each_pattern`](crate::hybrid::dfa::Config::starts_for_each_pattern)Á4“¦ orÁüž¦gd [`dfa::dense::Config::starts_for_each_pattern`](crate::dfa::dense::Config::starts_for_each_pattern)ÁüЧIF configuration option, depending on which regex engine is being built.Áا�üà§HE Note that this error should not be returned by a regex engine simplyÁü­¨KH because the pattern ID is invalid (i.e., equal to or exceeds the numberÁüý¨KH of patterns in the regex). In that case, the regex engine should reportÁ„Í© a non-match.Áã>Ø-Ø-Ȩt¹ªü€ª0Îç`$¹ªØ-Ø-Ø¥õ¢ Ú È¨ã-†ã-õ¢ õ¢ çD çDȨȨBÿâ-ú ¡—â- ã-õ¢ ¼¥ Û È¨å- gå-¼¥ ¼¥ èDéDêD èDȨ éD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡êD­àBÿä-û ¨—ä- å-¼¥ œ¼¥ —ª Ü È¨ç-Îç-—ª —ª —ª —ª ëD ëDȨBÿæ-ü ¯—æ- ç-—ª 㪠Ý È¨㪠Ý È¨ê-ù±ê-㪠㪠ìDíD ìDȨ íDȨBÿé-ý ³—é- ê-㪠î 㪠äó 0êT… 0�ªµ£=ø©ÕCì-í-Ô– 0$¡ 0ë-ë-ݪÔ¶ 0$Á 0ë-ë-ݪ®² ä �ªï-†ï-®² ®² ñD ñD�ª�ªBÿî-Š ä 0î- ï-®² d³ å �ªñ- gñ-d³ d³ òDóDôD òD�ª óD€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ôD­àBÿð-‹ ë 0ð- ñ-d³ œd³ ܦ0ëL¸0ݪß\¢x’YMÛó-ô-õ-Tþ0þ0Éò-ò-œ×0,×0Éò-ò-•ö¤»04»0Éò-ò-•ö‘µ æ ݪ÷-†÷-‘µ ‘µ ùD ùDݪݪBÿö-Œ ž0ö- ÷-‘µ ô ðlÈ<0Äú-ú-¶«j@»0¬* Aù-û-�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÄǶ«Bÿô –ɼŸq¶«Bÿø-ø- ù-ÄÖ<0ôÚ<0Éø-ø-¼Ÿqa¶ ë Äý-ý-¶«þ- gþ-MOa¶ a¶ †E‡EˆE †E¶« ‡E€g€gŠ‚gê ûcƒg¾‚ûcØ«q¢1È¡ˆE­àBÿü-— ®<0ü- þ-Äa¶ œa¶ ­­ðØé¬ðØñ¬ðØ ®ðØÍ¿ ðØ�À ðذÁ ðØ5à ð؋à ðØY¤ðØ•£ðØ�£ðØ€³ðØ]Å ðØ ©sðØ°Æ ðØ ‘vðØ1Ê ðØáÊ ðØÏÌ ðØÙÎ ðØ«¡ðØ³¡ðØ-ºðØÐ ðØÞÐ ðØ ´‘ðØÒ ðØ’Ò ðØúÒ ðØÁÓ ðØ ðØØÖ ðØšÙ ðØ?ï ðØÖð ðØ÷ ðØ ¥ëðز÷ ðØJø ðØFù ðغú ðØè ðØ¨ ðØÖ ðØ‹ ðØP ðØ €­ðØÑ! ðØ êÄðØM( ðØ ™ÜðØ ÅÜðØ„9 ðØ ë†ðØ †‡ðØ�‡ðØ  ‡ðØRF ðØ æ¢ðØ �£ð؈£ðØ œ£ðØWG ðØ íðØ Þ­ðØå­ðØ ù­ðØvH ðØ ÞºðØ ùºðØ€»ðØ ”»ðØ–I ðØ ÌòðØ çòðØîòðØ «óðØ ÜóðØZJ ðØK ðØmK ðØßK ðؘL ðØüL ðØbM ðØÕM ðØ5N ðØ‘N ðØO ðØ3P ðØ ’°ðØL¢°ðØîP ðØL‡±ðØ £±ðØTðØ\ðØýðدQ ðذ{ðØëzðØózðØÏðØÛS ðØIW ðØ ²éðØ�X ðØñX ðØLY ðØõyðØRyðؾxðØÆxðØ[ ðØg[ ðØÁ[ ðØ"\ ðØñ\ ðØ ž…ðØL®…ðØÉwðØž` ðØ ¿¤ðØLϤðØ�vðØ«c ðØ ±ºðØLÁºðØquðØe ðØvf ðØ íØðØLýØðØktðØstðØ7ðØg ðØìpðØ&pðØ.pðØ,ðØ7mðØqlðØylðØ ðØj ðØêj ðØ ÏñðØéñðØTl ðØ­l ðØ m ðØŽm ðØŽkðØ–kðØ}ðØkn ðØ„o ðØ ¢'ðØ'p ðبjðذjðØ ðØ-q ðØŽq ðØ¡r ðØõr ðØPs ðØÊs ðØ·\ðØò[ðØú[ðؘ%ðØ�“ ðØá• ðØÙ£ ðØ§© ðØ ¿bðØ’­ ðØ"± ðØµ± ðØ ² ðØs² ðØȲ ðØ¶ ðØéÈ ðØ ůðØ à¯ðØç¯ðØ"Ý ðØ •îðØ °îðØ·îðØví ðØ Š–ðØ ¥–ðØ¬–ðØ À–ðØ¥÷ ðØ †ÂðØ ¡ÂðبÂðØ ¼ÂðØß ðØ †ßðØ ¡ßðبßðØ ½ßðØÉ ðØ ‡ùðØÇ ðØ ѦðØý& ðØ áÂðØ…0 ðØ ÕáðØ!8 ðØ ºòðØ ÖòðØe< ðØ ”ÿðØ ¯ÿðضÿðØ‹> ðØ ׋ðØ ò‹ðØù‹ðØMJ ðØ ”¨ðØÒN ðØ ‰±ðØñWðØ+WðØ3WðØl{ð؈P ðØÝS ðØ ÐøðØOV ðØPX ðØ4Y ðØõ[ ðØú] ðØŒ^ ðØ¡VðØÛUðØãUðØhŠðØ)_ ðØhTðØpTðØŒðØOa ðØ;b ðؾb ðØÀc ðØ©d ðØRe ðØ f ðØtf ðØÛf ðؤg ðØ,i ðØži ðØ j ðØ�j ðØk ðØ¢k ðØ l ðØiSðØqSðت�ðØMm ðØÔm ðØHn ðغn ðØ#o ðØŒo ðØöo ðØxp ðØ ‹ŒðØúp ðØ ù�ðØnq ðØçQðØ!QðØ)QðØ”˜ðؼr ðØs ðØ,LðØfKðØnKðØÌ ðØçü ðØÝý ðØRþ ðØÓþ ðØéÿ ðØNðØoðØ ðجðØðØ´ðØ ðØ Ôƒ ðØJ ðØ �ˆ ðØ ®ˆ ðØ ðØ Ü“ ðØƒ ðØQ>ðØ‹=ðØ“=ðجðØ}ðØ ú ðØyðØ ÞÅ ðØ•ðØFðØvðØðØa8ðØ›7ðØ£7ðØÛµðØ7ðØ�6ð؉6ðØ(ðØ Ó ðØÊ“ ðØ Ï“ ðØðØÚ’ ðØ ê’ ðØ¢ðØ ðØ Ô¬ ðØß2ðØ2ðØ"2ðØvÄðØÓ/ðØ/ðØ/ð؃ÈðØ¶ðØ€ ðØ ÏðØéðØâ'ðØ'ðØ%'ðØ'ÏðØB"ðØ #ðØ ¬+ðØÆ+ðØt"ðد!ðØ·!ðØàÒðØŽ$ðØ ø@ðØ’AðØþðØ@ýðØHýðØKÔðØeüðØÖûðØÞûðØ ûðØûðØ‹úðØ“úðØ úðØúðØÀ&ðØ'ðØi'ðØÁ'ðØ(ðØq(ðØÉ(ðØÿ)ðØj+ðØÒ,ð؉.ðØÜ,ðØh,ðؼùðØ÷øðØÿøðØšóðØsøðØß÷ðØç÷ðØ>,ðØV+ðØ ÈpðØLØpðØæíðØîíðغõðØC%ðØù!ðØàðØÕðØ ßEðØðØ «VðØúðØ ÓhðØ6ðØ ЈðØ ëˆðØòˆðØ€ðØ î¡ðØõ¡ðØÆðØôðØeðØâéðØêéðØé ðØ«ÿ ðØVæðØ^æðذðØïåðØÆý ðØçú ðØ ßËðØTú ðØÂù ðØ–ø ðØÑ÷ ðØ ÷ ðØZö ðØhõ ðØØÝðØÝðØÝðØ5ðØ ô ðØ šïðØMó ðØ ÿððØì ðØBë ðØ[ê ðØÙè ðØˆæ ðØ –5ðØ ­5ðØ´5ðØiå ðØ â 5ðØ ù 5ðØ€ 5ðØ– 5ðØGâ ðØ Ão5ðØ Úo5ðØáo5ðØá ðØ ¼r5ðØ Ór5ðØÚr5ðØ`Þ ðØ ï›5ðØ †œ5ðØ�œ5ðØ �œ5ðØ-Ý ðØ ¸ 5ðØ Ï 5ðØÖ 5ðØì 5ðØ †¡5ðØõÛ ðØ ¨¿5ðØ ¿¿5ðØÆ¿5ðØ Ö¿5ðØÐÚ ðØ ‰Ü5ðØ  Ü5ðاÜ5ðØÚ ðØ ÷Þ5ðØ Žß5ðØ•ß5ðØÙ ðØ äá5ðØ ûá5ðØ‚â5ðØ �â5ðØ «â5ðØk× ðØ ±ë5ðØ Èë5ðØÏë5ðØ Ýë5ðØ øë5ðØãÕ ðØ šÿ5ðØ ±ÿ5ðظÿ5ðØJÙðØ…ØðØ�ØðØ!ðØ×ðØCÖðØKÖðØ’$ðØ&È ðØ£Æ ðØŽÅ ðØÞà ðØà ðØ ± ðØË ðØÔð؇ÔðØX'ðØT ðØ ­) ðØÇ) ðØLÓðØTÓðØ…)ðØÛÀ ðØ æ0 ðØ€1 ðØ]ÒðØeÒð؉*ðØY¿ ðØ �; ðØ©; ðØé¼ ðØ �-ðØ º-ðØÁ-ðØ&» ðØ ¨GðØ ÓGðØÚGðØ èGðØ ’HðØภðØ Ì7ðØ Î7ðØÛ· ðØ Š8ðØ3· ðØ¶ ðØ °8ðØû´ ðØ ž8ðØá³ ðØH³ ðØî² ðØ ô$8ðØF² ðØì± ðØ µ+8ðØˆ± ðØ È28ðØİ ðØ ú38ðØð® ðØB® ðØD­ ðØê«ðØò«ðذ+ðØĪðØ̪ðØV.ðØ+¤ ðØZ– ðØ‹… ðØ›ƒ ðØ� ðØ ѵðØFV ðØ ¼‘ðØÑðØØP ðØ �§ðØ–§ðØLI ðØ ¶ÄðؽÄðØ ÈÄðØvB ðØ …ÛðØŒÛðØ  ÛðØË< ðØ áïðØèïðØ ýïðØ?7 ðØ ÏýðØ êýðØñýðØ=4 ðØ –‰ðØ ±‰ðظ‰ðØ. ðØ Õ¨ðØ ð¨ðØ÷¨ðØ Š©ðØ* ðØ ïºðØ Š»ðØ‘»ðØ ¥»ð؆& ðØ –ÊðØ ±ÊðظÊðØ ÍÊðØp ðØ ðØ@ ðØë ðØå ðØRú ðØù ðØ.ï ðØäê ðØvê ðØ³«ðØíªðØõªðØjðØ÷©ðØ1©ðØ9©ðØølðØÀé ðØ ÝÓðØdé ðØ é ðØ­è ðØ^è ðØ è ðØçæ ðØ ÐÞðØ×ÞðØ¡æ ðØGæ ðØîå ðØ+å ðØ ŒòðØ“òðØ˜¦ðØ ¦ðØn{ðØoä ðØÜá ðØS£ðØ[£ðØ…ðØà ðØ—Þ ðØ  ðØ¨ ðØ¬‘ðØÏÛ ðØ›�ðØ£�ðØð“ðØêÙ ðØ‡Ù ðØŸ”ðØ§”ðØ4–ðØ8”ðØ{Ø ðØ6Õ ðØ ü×ðØ«Ô ðØ–ŽðØÐ�ðØØ�ðØž¤ðØOt ðØcs ðØ„r ðØbq ðØ�p ðØ×o ðØo ðØ'n ðØnm ðØzl ðئk ðØÃj ðØñi ðØgg ðØ•f ðصe ðØÊd ðØxd ðØ#d ðØ�~ðØÉ}ðØÑ}ðØhµðØa ðØ ïªðØ^ ðØ ×µðØW ðØ ÅÍðØ O ðØ �àðØ J ðØÕF ðØWE ðØ †!ðØê|ðØò|ðØêßðØQD ðØ ê)!ðØÁC ðØ2C ð؇B ðض@ ðØ ‡ðØ –ðØ@ ðØ ÞðØn? ðØ ²ðØ«> ðØ Â!ðØ­< ðØ ˆ%ðØ ³%ðغ%ðØT; ðØ û;ðØ ¦<ðØ­<ðØ »<ðØ å<ðØ”4 ðØ64 ðØâ3 ðØ}3 ðØ žðØ+3 ðØØ2 ðØ2 ðØ •ðØ ¨ðدðØ01 ðØ ùðØ ”ðØ›ðØb0 ðØ ÛðØ îðØõðØ/ ðØ ·ðØ ÒðØÙðØ íðØ�. ðØ æðØ �ð؈ðØ �ðØ�- ðØ ëðØ íðØ€}ðØ|ð؇|ðظãðØÑ+ ðØ èHðØ]+ ðØ ÉjðØ ËjðØQ* ðØñ) ðØ�) ðØ8) ðØ ÓðØå( ðØ�( ðز' ðØ Ï�ðØ â�ðØé�ðØ@& ðØ �†ðØ «†ðز†ðØ % ðØ ‚ˆðØ •ˆðØœˆðØ:$ ðØ ʉðØ å‰ðØì‰ðØ €ŠðØV# ðØ Ñ�ðØ ì�ðØó�ðØ ˆŽðØ�{ðØ—{ðظþðØ‘" ðØ �’ðت! ðØ ü´ðØ —µðØžµðØà ðØ  ¹ðØ »¹ðعðØ ðØ –ÄðØ ±ÄðظÄðØ5 ðØ °ÈðØ ËÈðØÒÈðØ æÈðØk ðØ ÆÏðØ ÙÏðØàÏðØ# ðØ< ðØÝ ðØˆ ðØ" ðØ „ÝðØÒ ðØ ðØ~ ðØ ØâðØ ëâðØòâðØ° ðØ ßëðØ úëðØ�ìðØä ðØ ¥õðØ ¸õðØ¿õðØ ðØ ªþðØ ÅþðØÌþðØ àþðØ$ ðØ Œ–ðØ §–ðØ®–ðØ ÖðØM|ðØU|ðØŽ/ðØ¹ ðØ Ï®ðØ ê®ðØñ®ðØæ ðØ‡ ðØ2 ðØÌ ðØ ¢¾ðØ| ðØ* ðØQ ðØ úÁðØ �ÂðØ”ÂðØƒ ðØ ŽÇðØ ©ÇðذÇðØ· ðØ ÌÏðØ ßÏðØæÏðØÖ ðØ ‰ÔðØ ¤ÔðØ«ÔðØ ¿ÔðØ÷ ðØ ¬ÞðØ ÇÞðØÎÞðØ ãÞðØ=|ðØE|ðØ»LðØB ðØ óâðØ ðØ ©‡ðØ ćðØˇðØ> ðØ Ð�ðØ ë�ðØò�ðØo ðØ ÿ•ðØ š–ðØ¡–ðØ“ ðØ4 ðØß ðØy ðØ ‘¡ðØ) ðØ× ðØþ ðØ Ò£ðØ å£ðØì£ðØ0 ðØ ¯±ðØ ʱðØѱðØd ðØ æÃðØ ùÃðØ€ÄðØƒ ðØ ¢ÊðØ ½ÊðØÄÊðØ ØÊðØ¤ ðØ á×ðØ ü×ðØƒØðØ ˜ØðØ#|ðØ+|ðØÀ�ðØï ðØ ×ÚðØ¸ ðØ ˜…ðØ ³…ðØº…ðØë ðØ ˆšðØ £šðتšðØ ðØ É ðØ ä ðØë ðØAÿ ðØâþ ðØ�þ ðØ'þ ðØ ã¬ðØ×ý ðØ…ý ðجü ðØ ¶°ðØ ɰðØаðØÞû ðØ “¶ðØ ®¶ðص¶ðØû ðØ ƼðØ Ù¼ðØà¼ðØ1ú ðØ ÌÂðØ çÂðØîÂðØ ‚ÃðØRù ðØ ïÎðØ ŠÏðØ‘ÏðØ ¦ÏðØ ù ðØP|ðØX|ðØ!½ðØŠõ ðØ ã ðØ1õ ðØÙô ðØ"{ðØ*{ðØ޾ðØô ðØ Ü ðØAó ðØ ó ðØ ” ðØ› ðØbò ðØ é ðØ Š ðØ‘ ðØ ¥ ðØ„ñ ðØ § ðØ È ðØÏ ðØ ä ðØ«zðØæyðØîyðØêÁðØùð ðØ « ðØ®ð ðØàï ðØ ƒ" ðØ¿xðØÇxðØóÂðØÂî ðØ ¿$ ðØiî ðØZí ðØ ¬' ðس' ðØŒwðØ”wðØJÄðØ¥ì ðØ ª3 ðØÈë ðØ Š; ðØ ·; ðؾ; ðØéê ðØ ü@ ðØ ©A ðذA ðØ ÄA ðØ¡ê ðØàvðØvðØ#vðØWÆðØ ê ðØ öM ðØÂé ðØßè ðØ íQ ðØõtðØýtðØ`ÇðØè ðØ ïS ðØÃç ðØ´æ ðØ ôU ðØûU ðØqæ ðØÊsðØÒsðØFÌðبå ðØ ÀZ ðØ¿ä ðØ •l ðØ ·l ðؾl ðØ Òl ðØzä ðØ ä ðØsðØArðØIrðØåÎðØŸã ðØÝâ ðØ Ã} ðØ’â ðØqðØqðØîÏðØsá ðØ Ó‚ ðØ é‚ ðØá ðØà ðØ ý„ ðØ„… ðØ¼ß ðØïoðØ÷oðØ©ÓðØ2ß ðØ ¸ˆ ðØ Έ ðØLÞ ðØ Т ðØ ñ¢ ðØø¢ ðØ1Ý ðØ »§ ðØ ܧ ðØã§ ðØÜ ðØ ú¬ ðØ ›­ ðØ¢­ ðØJÛ ðØ Þ² ðØ ÿ² ðØ†³ ðØ-Ú ðØ ž¸ ðØ ¿¸ ðØƸ ðØHÙ ðØ ü½ ðØ �¾ ðØ¤¾ ðØ ¹¾ ðØÕoðØoðØoðØÛçðØ|Ø ðØ³× ðØ ÆÈ ðØd× ðØßmðØçmðØèèðØBÖ ðØ ·Í ðØ ÍÍ ðØ Õ ðØ ûÎ ðØ‚Ï ðØÛÔ ðØŠÔ ðعlðØÁlðØ�ìðØ™Ó ðØ  Ó ðØ ¶Ó ðØÆÒ ðØ †ó ðØ�ó ðØ Ò ðØ œ÷ ðØ£÷ ðØQÑ ðØ òû ðØùû ðØ—Ð ðØ Å€ ðØÌ€ ðØÚÏ ðØ �… ðØ¤… ðØÏ ðØ ‰Š ðØ�Š ðØ ¥Š ðØÁÎ ðØ/lðØ7lðØ¿ñðØÎ ðØ »“ ðØÆÍ ðØ³Ì ðØ ó• ðØú• ðØüjðØkðØuõðØYÌ ðØ ݘ ðØ{Ë ðØ Á¥ ðØ é¥ ðØð¥ ðØ!jðØ[iðØciðØÆùðØõÊ ðØ,Ê ðØ ° ðØÝÉ ðØ+hðØ3hðØÓúðØÐÈ ðØ ¯µ ðØ¸Ç ðØ â¶ ðØé¶ ðØsÇ ðØ"Ç ðØüfðØgð؉þðØVÆ ðØ ‡» ðØŠÅ ðØ ÐÐ ðØ×Ð ðØ<Å ðØÑ¢ ðØ ™ ðØ  ðØšeðØÕdðØÝdðØwðØ¥“ ðØ¦’ ðØB’ ðØF^ðØ�]ð؉]ðØdðØq� ðØ àU ðج� ðØ çW ðØŽ ðØd� ðØ5Œ ðØþŠ ðØÐMðØ MðØMðØ ðØ|ˆ ðØà„ ðØt ðØ r ðØ�m ðØ –× ðØèh ðØNh ðØçg ðØÒ` ðØDY ðØ ›� ðØ?U ðØ ôš ðØþQ ðØ Á° ðØ í° ðØ™@ ðØ ýé ðØ ˜ê ðØŸê ðØ ²ê ðØh: ðØ Ò… ðØ í… ðØô… ðØ ˆ† ðØP8 ðØ ‹” ðØ ¦” ðØ­” ðØ Á” ðز6 ðØ ìœ ðØ ‡� ðØŽ� ðØ ¢� ðØÊ5 ðØ ž´ ðØ ¹´ ðØÀ´ ðØ ‚µ ðØÎ4 ðØ ʾ ðØ å¾ ðØì¾ ðØ ±¿ ðØæJðØîJðØÖDðØ¥3 ðØrGðØzGðØÅLðØŠ2 ðØcCðØ�BðØ¥BðØáXðØ80 ðØ/- ðØ äŠ ðؤ, ðØÍ+ ðØ «“ ðØ Ï“ ðØÖ“ ð؇AðØÁ@ðØÉ@ðØé\ðØì?ðØ&?ðØ.?ðØ›aðØ€+ ðØ(+ ðذ* ðØ ±± ðØÚ) ðØ Å´ ðØ é´ ðØð´ ðØ-) ðئ;ðØá:ðØé:ðØlðØ]:ðØÉ9ðØÑ9ðØé& ðØ›& ðØ)ðØdðØlðر�ðØ=$ ðØj ðØ& ðØK ðØî ðØß ðØW ðØ ðØb ðØ¨ ðØ< ðØÑÿ ðØRà ðØ�Ý ðØ˜Û ðØ‚Ø ðØ,Ø ðØZÓ ðØJÊ ðØMÉ ðØûÆ ðØéÅ ðØ(Ä ðØà ðØ…Á ðØzÀ ðØ…¾ ðØ2¾ ðØdðØŸðØ§ðØ ›ð؉~ ðØæ} ðØ#} ðØŸ| ðØ·{ ðØ{ ðØŒz ðØ=z ðØêy ðØ) ðØK ðØS ðØž¡ðØ`x ðØ9w ðØ…ðØ¿ðØÇðØϦðØ0r ðØ ¶î ðØio ðØ Àö ðØak ðØ £… ðØðf ðØ ï‘ ð؇e ðØ?b ðØKa ðØ Ï¡ ðØ,` ðØ ”´ ðØP_ ðØ–^ ðØ ûÅ ðØf] ðØi\ ðØ ·Ü ðØ ÌÜ ðØý[ ðØ ¸ã ðØ‘[ ðØ §é ðØ [ ðØ Šü ðØ8Z ðØ  • ðØÇY ðØ ·™ ðØðX ðØ ÍŸ ðØŠX ðØ Ö¨ ðØ­W ðØ ºÝ ðØGW ðØ Ëé ðØÜV ðØ �ô ðØV ðغU ðØiU ðØU ðØ®T ðØZT ðØÿS ðتS ðØBS ðØâR ðØ…R ðØ4R ð؉Q ðØ ãŒ ðØ*Q ðØÍP ðØzP ðØ,P ðؤðØÆðØÎðØùíðØQÿðØYÿðØ—ïðØuþðدýðØ·ýðØzóðØØüðØüðØüðØ›öðØ>ûðØxúðØ€úðØùðØP ðØÊN ðØ^N ðØ –¨ ðØ&M ðØÀL ðØHL ðØ ÷± ðØïK ðØ’K ðØ/K ðØÓJ ðØYJ ðظ÷ðØóöðØûöðØkûðØÿòðØ:òðØBòðØkðØI ðضH ðزE ðØðD ðØ ½*"ðØ×*"ðØžñðØØB ðØ ‡+ ð؃B ðØRA ðØ ¬8 ðØ�@ ðØ Œc ðØLœc ðØüïðØððØ• ðØ!ïðØÌ? ðØ|? ðØÚ> ðØ}> ðØ+> ðØý< ðØ ô“ ðØL„” ðØ>íðØFíðØ©ðØ*< ðØ7ìðØe; ðØ �  ðØL‘  ðØGëðØ‚êðØŠêðØ‘ðØ–éðØÑèðØÙèðØðØÜ9 ðØ~9 ðØ  4#ðØ9 ðØ ‚9#ðØ¿8 ðØÁçðØüæðØçðØ�ðØæðØTåðØ\åðØÄ ðØyäðØåãðØíãðØñâðØ,âðØ4âðØò&ðØo8 ðØ8 ðØ åS#ðØ…7 ðØ þY#ðØ(7 ðØÂðØß0 ðغ. ðØ ðØI ðØÉ ðØ¹ ðØZ ðØõ ðØ= ðØæ ðØI ðØHú ðØ ó ðعã ðØxÞ ðØ†Ø ðØrÏ ðØ™Ë ðØAà ðØ¼ ðØê¹ ðØ¹ ðØ £óðØ·óðØQ¸ ðØý· ðØ‰· ðØ ´ÄðØ"· ðØƶ ðØh¶ ðØúµ ðØ ÈÍðØG´ ðØ °ÔðØw³ ðØ °×ðØÄ×ðØ £ðØ£ðØ~¢ð؆¢ðا® ðØU® ðØñ­ ðØ é¤ðØ+­ ðØ î­ðØ‚®ðØæŸðØ ŸðØ(ŸðØ6]ðØ›žðØžðØžðØª ðØ £ÅðØª ðØ ¨ ðØ”šðØΙðØÖ™ðØõfðØI™ðØ´˜ðؼ˜ðØP§ ðØ ùÞðØ¤¦ ðØw¥ ðØ¥ ðØ:–ðØ••ðØ•ðØ •ðØK”ðØS”ðØd¡ ðØ ½ôðØ០ðØÀž ðØò� ðØ ßùðØóùðØä‘ðØì‘ðسuðØa� ðØÛ�ðØ�ðØ�ðØÒxðØ� ðØt� ðØ#� ðØa‰ðØœˆðؤˆðØC|ðØj� ðØ ‚MðØ±Œ ðØ ëNðØÚ‹ ðØ7‹ ðØŠ ðØH‰ ðØ zðØÛyðØãyðØI‚ðØK‡ ðØ€… ðØÂv ðØWu ðØšq ðØ ÀÀðؼm ðØ.m ðØÅl ðØ×g ðØ åÞðØpd ðØ –ïðØÏa ðØ õüðØ ¡ýðاT ðØ ò­ðØ �®ðØ”®ðØ §®ðØ›O ðØ àÅðØ ûÅðØ‚ÆðØ –ÆðØ!N ðØ ¡ØðØ ¼ØðØÃØðØ רðØ«H ðØ �îðØ ¨îðدîðØ ÄîðØ£G ðØ ùñðØ ”òðØ›òðØ ¯òðØÃF ðØ þºðØ ™»ðØ »ðØ µ»ðØ»E ðØ öÓðØ �ÔðØ ¾ÔðØ àÔðØçÔðØ ŽÕðاD ðØ ôÛðØ ›ÜðØ ¼ÜðØ ÞÜðØåÜðØ �ÝðØ C ðØ íëðØ ŸìðØ ½ìðØ ßìðØæìð؃B ðØ „ƒðØ ±ƒðØ ÛƒðØ ýƒðØ„„ðØkA ðØ é”ðØ –•ðØ À•ðØ â•ðØé•ðØQ@ ðØ Ù¹ðØà¹ðØ'yðØ/yðØбðØ ? ðØvðØ"vðØ¢·ðØ…> ðØŸrðØÙqðØáqðØŸÀðØ< ðØ÷9 ðØ ŸéðØl9 ðØ9 ðØ,qðØfpðØnpðØéÃðØ¢8 ðØ<8 ðØ ‹„ðØé7 ðØ•7 ðØšoðØÔnðØÜnðØÀÆðØç6 ðØ ÚðØ06 ðØÜ5 ðØr5 ðØ 5 ðØmðعlðØÁlðØÖÊðØqkðظjðØáiðØ3 ðØ ñSðØH2 ðØ Ó}ðØc1 ðØ  cðØ‘0 ðØ;0 ðØÖ/ ðØT/ ðØÏ. ðØH. ðØß- ðØh- ðØ ‚ÇðØõ, ðØ«+ ðØ�iðØÇhðØÏhðØÖðØògðØ,gðØ4gðØÙðØ'fðØaeðØieðØÜðØ–+ ðØþ* ðØ ‹ÝðØ ±ÝðØ¥* ðØH* ðØ®dðØècðØðcðØZßðØccðØÀbðØÈbðØC`ðØe_ðØm_ðØ'ãðØà^ðØK^ðØS^ðØ' ðØN& ðØ À�ðØÔ�ðØ‘% ðØ � ðØ¡ ðØo$ ðØ ¹¢ðØÍ¢ðØèðØ ¨ÒðØëçðØ©@ðØË?ðØÓ?ðØ ðØï>ðØZ>ðØb>ðØ=ðØ <ðØg;ðØo;ðØkçðØçðØ²æðØVæðØSåðØÀäðØnäðØÇãðØGãðØ ˆòðØÀâðØùáðØ ƒùðØL“ùðØw:ðØ:ðس!ðØsáðØ%9ðØ-9ðØ’#ðØ•àðØ­)ðØYÆðØ×ÁðØ;ðØ/µðØ=±ðØ ñ©ðØʨðØD¤ðØ‘›ðØš•ðØ ÿèðØ šéðØ'’ðØ æ÷ðØ �øðØ ”øðØp�ðØ ªˆðØ ƈðØø‰ðØ �—ðØ «—ðØ ¿—ðØ ®¨ðØ …¹ðØ.tðØ3nðØfðØMdð؈cðØ äöðØLôöðØ*bðØ •ûðØL¥ûðØ<`ðØ ÅüðØLÕüðØ(ðØ0'ðØ8'ðØLðØ\_ðØ_ðصðØïðØ÷ðØÁNðØ??ðØ ç�ðØ>8ðØ—4ðØ*.ðØ0)ðØ>&ðØF#ðØmðØôðØÔðØ^ðØï ðØ° ðØšðØ¢ðØV�ðØ ðØ¤ ðØ± ðØû ðØ¨ ðØM ðØ%ðØ_ÿðØgÿðØ¡¦ðØ6ýðØpüðØxüðØã«ðØ�ðسðØìðØ ¤úðؾúðØ+úðØKùðØSùðØè²ðØŒðØÏðØ¥öðØ­öðØ´ðØSðØgôðØÝÿðØ ø$ðØLˆ$ðØ!ýðØ ø$ðØLˆ$ðØyíðØ ððØ ŸðØ ÏðØèðØ þ0ðØ ¬0ðØ Ý0ðØ~óðØuòðØ}òðØÆÏðØ×ñðØñðØñðØáîðØØíðØàíðØxÓðØ:íðØyìðØ�ìðØÈåðØ÷äðØvÐðØ™ÏðØ¡ÏðØÆÚðØ ßY%ðØæY%ðØLÕðØ ùx%ðØ€y%ðØËðØ ·~%ðؾ~%ðØÉðØ ¸…%ðØ¿…%ðØÇðØ ý•%ðØ„–%ðØ ó¢%ðØú¢%ðØ ·¸%ðØ¾¸%ðØ ø%ðØ ν%ðØÕ½%ðØ„°ðØ ÜÎ%ðØãÎ%ðØO¯ðØ ØÜ%ðØßÜ%ðØž¥ðØ’¤ðØ ªß%ðØÄß%ðØ©ÌðرÌðØ¿ðØ êê%ðØñê%ðØ7¢ðØ ‘ú%ðؘú%ðØ³œðØ§›ðØ Îü%ðØèü%ðØ«ÉðسÉðØþ ðØ ä‡%ðØë‡%ðØM™ðØ �•%ðØˆ•%ðØ �•%ðØ”ðØ§’ðØ ¯š%ðØÉš%ðØJÆðØRÆðØ¶ðØ ¤£%ðØ«£%ðØ °£%ðØ6‘ðØR�ðØc€ðØ/ðØ �ðØL—ðØ€{ðØãzðØÁyðØ —@ðØL¡@ðØyðØ«ðØ,ªðØ4ªðØFðØ¨©ðØ©ðØ©ðØ¶¤ðØ¼£ðØ(£ðØ0£ðØ(lðØ>kðØþiðØiðØ6hðØ cðØzaðØô_ðØ—^ðØ/]ðØ\ðØ[ðØLVðØ „¤ðØL”¤ðØQ¢ðØ‹¡ðØ“¡ðØ$ˆðØãUðØÚ�ðØ�ðØ�ðØ¨ŽðØRRðØRPðØåKðØ £ÆðØjKðØ îÎðØ}IðØ äãðØIðØ  æðØvHðØ ã€ðسFðØ Ï—ðØŸEðØ ºšðØ“DðØ »�ðØ€CðØ æ ðØrBðØ “¤ðØfAðØ ²¨ðØX@ðØ ¬ðØD?ðØ �±ðØ<=ðØ „¶ðض;ðØ ·¼ðØ£:ðØ ¥ÔðØ’9ðØ ߨðØ*8ðØ ŽßðØÄ6ðØ ¼åðز5ðØ —êðØ¢4ðØ üíðØ63ðØ ÛóðØÌ1ðØ „ýðØr›ðجšðØ´šðØEàðØè/ðØ �‹ðØ©‹ðØù.ðØ .ðØjðØNðØ ¼YðØLÌYðØÉ ðØ® ðØµ ðØ_ ðØ ¸cðØLÈcðØ£—ðØ«—ðغüðØ[ðØ_ðØùðØíðØ9ðØ…ÿðØcþðØ í’ðØ‡“ðØLüðØÞûðØ/ûðØÌúðØÔùðØzøðØ ŽÇðØLžÇðØL—ðØˆ–ðØ�–ðد7 ðØRïðØ�îðØîðØ ’&ðØíðØ ï &ðØdìðØìðØÄ•ðØ•ðØ•ðØ(A ðØ_ëðØŽêðØ+êðØ €'ðØþèðØ � 'ðاèðØ\èðØN”ðØŠ“ðØ’“ðØ(H ðØšçðØÞæðØ{æðØ ‡(ðسåðØ  (ðØ\åðØåðØ¸’ðØó‘ðØû‘ðØÖM ðØ»äðرãðØNãðØ ¨(ð؆âðØ ì(ðØ/âðØäáðØ‘ðØ<�ðØD�ðØ÷U ðØŽáðØ„àðØ!àðØ –(ðØYßðØ â"(ðØßðØ·ÞðØj�ðØ¦ŽðØ®ŽðØ�_ ðØÿÝðØCÝðØàÜðØ �)ðØÜðØ Š )ðؼÛðØqÛðغ�ðØöŒðØþŒðØjf ðعÚðذÙðØMÙðØ „*ðØ†ØðØ ò *ðØÌ×ðØx×ðØ[€ðØ–ðØžðØUw ðØ*ÎðØ£ÉðØFÄðØÀðØ ‰c+ðØÈ»ðØ Àp+ðØ »ðØ�ºðØȵðØ}´ðØ´ðØ �ˆ+ðØš³ðØ æŠ+ðØ9³ðØå²ðØõ±ð؇±ðØ –�+ðرðØ À�+ðØ¯°ðØY°ðØð{ðØ*{ðØ2{ðØ_� ðØú¯ðدðØt®ðرvðØvðØuð؇uðØÆtðØÎtðØEtðØMtðØÅsðØÍsðØޤðØ Í,ðØLÝ,ðØueðØ™dðØ¡dðØª ðؾcðØ/cðØ7cðØvbðØ~bðØõaðØýaðØuaðØ}aðØÝžðØ.žðØn�ðØ’œðØd›ðØ'˜ðØY—ðØ¯–ðØÏ•ðØ•ðØ`ðØ;_ðØC_ðØúÁ ðØ·^ðØ#^ðØ+^ðØ.’ðØF‘ðØ Šo,ðØLšo,ðØŠ]ðØÅ\ðØÍ\ðØÖÄ ðØâ�ðØêWðØîVðØ^VðØfVðؤUðجUðØ"UðØ*UðØ¡TðØ©TðØQðØPðØtOðØ|OðغNðØÂNðØ8NðØ@NðØ·MðØ¿MðØŠJðØJðØ–IðØIðØnHðØ–FðØhEðØÁ ¼œ,ðØHÁ Ìœ,ðØ™DðØÜCðØÝBðØBð؈9ðØÂ8ðØÊ8ðØâ ðØ=8ðب7ðذ7ðØû>ðØù=ðØÁ ¦´,ðØHÁ ¶´,ðØÊ6ðØ6ðØ 6ðØå ðØ=ðØÍ4ðØÊ3ðØÒ3ðØLç ðد;ðØ©0ðØ00ðص/ðØ:/ðØ�.ðص,ð؇+ðØÕ ¼œ,ðØHÕ Ìœ,ðظ*ðØû)ðØü(ðØ&(ðدðØéðØñðØp ðØdðØÏðØ×ðØ%ðØ$ðØÕ ¦´,ðØHÕ ¶´,ðØñðØ+ðØ3ðØL ðØ=#ðØüðØðØ ðØŠ ðØÖ!ðØëðØ&ðØ.ðØ» ðØ„MðØŸ'ðØ”KðØ€,ðØáGðØYGðØ—ðØôFð؇FðØÛEðØeEðØ îUðØEðØUDðØ ˆZðØL˜ZðؾðØâðØêðØ. ðØ^ðØÊðØÒðØcCðØCðؤ=ðد:ðØú7ðØ ¸-ðØó4ðØ æ-ðØÂýðØåüðØìüðØô ðØðØ� ðØ ðØy ðØú ðØg ðØá ðØT ðØÖ ðØ[ ðØÚðØ{ðØ ’-ðØðØ ûƒ-ðØ¹ðØ ¸†-ðØžøðØ¥øðØ&( ðØ&ôðØ-ôðØÚ) ðØÜðØ Þ'ðØLî'ð؉ððØ�ððØ + ðØ~ìðØ…ìðØ, ðØèÿðØ ÅCðØLÕCðØ•ÿðØBÿðØìþðØAþðØàýðØÃüðØôûðØ ²�ðØ©ûðØ\ûðØÿúðØXúðØàùðØØøðØøðد÷ðØÚöðØ€öðضõðØWõð؆ôðØóðØ)ñðØ|ððØÌïðØtïðØïðغîðØGîðØ¡ëðØ>ëðØÛêðØÈéðØjéðØ éðØzèðØèðؾçðØsìðØæëðØVëðØ]ëðØ›êðØ¢êðØêðØêðØ–éðØ�éðØMäðØ‹ãðØ À1ðØLÐ1ðØÙâðØ�âðØAâðØóáðØ¥áðØXáðØ áðØ2àðØÒßðØ;ßðصÞðØ éðØGèðØNèðØ“> ðØëÝðØžÝðØ^çðØãÜðØ ñFðØL�GðØ1ÜðØäÛðØ–ÛðØ2Ûð؉ÚðØúÙðØsÙðØÖæðظØðØ ™TðØL©TðØEØðØ´×ðØS×ðØÀÖðØ>ÖðØÝÕðØWÕðØÐÔðØŠÓðØ6ÓðØáÒðØŠÒðØ1ÒðØØÑðØ€ÑðØ$ÑðØÁÐðØëÏðØ2ÏðØŒÎðØ3ÎðØQÍðØ ø¯ðØLˆ°ðØdËðØ ËðسÊðØ[ÊðØÊðØ©ÉðØ9ÉðØqÈðØßÇðØ|ÇðØÇðØ ™äðØoÆðØÆðؽÅðØmÅðØÅðØÅÄðØ&ÄðØ Œ!<ðØ ¨!<ðØ Æ!<ðØÂðØ •ƒ<ðØ ±ƒ<ð؃ÁðØ Ï�<ðØ è�<ðØYÀðØ ÍØ<ðØ âØ<ðØ éI.ðØðI.ðØ­ºðØõH.ðØ ¦L.ðØ­L.ðØþ¸ðزK.ðØ ×N.ðØÞN.ðØM·ðØÛM.ðØò¥ðØ�¥ðØ9¥ðØФðØx¤ðؤðØCÓðØÂqðØ©nð؇kðØiðØZfðØRdðØøbðØ`ðØÇ]ðØ/[ðØyYðØÅWðئVðØRTðØQðØ&PðØ ÇåðØL×åðØŒÎðØæÍðØUÍðØ\ÍðØ™ÌðØ ÌðØóNðØUNðØvMðØeLðØŸKðØÑJðØ ¸úðØLÈúðØAJðØÅIðØ*IðØ×GðØ ú�ðØVGðØ ¤ƒðØÒÈðØóÇðØúÇðØžx ðØlÇðØÛÆðØâÆðØÆðØ&ÆðØ%DðØÞBðØ;ÂðØ\ÁðØcÁðØÇ ðØÕÀðØDÀðØKÀðØˆ¿ðØ�¿ðØó:ðØ :ðØQ9ðØ{8ðØü7ðØñ6ðØX6ðØ(ºðØa¹ðØh¹ðØ1� ðØÚ¸ðØD¸ðØK¸ðØŒ2ðØä1ðØŽ/ðØl.ðØÂ-ðØ·*ðØ*ðØc(ðØ'ðØM¶ð؆µðØ�µðØm‘ ðØ3&ðØ ŠøðØLšøðØú²ðØ²ðØ ²ðØ„” ðØ‘%ðØ9%ðØ™$ðØ†œðØ§›ðØ®›ðØ– ðØ ›ðØŠšðØ‘šðØ"ðØòðØ‚ðØ߀ðØæ€ðا� ðØX€ðØÂðØÉðØ©ðØÌqðØqðØ qðØ½  ðØ~pðØèoðØïoðØðØ5dðØncðØucðØ¼¥ ðØçbðØQbðØXbðØÿðØ Ó«ðØLã«ðØ”aðØÎ`ðØÕ`ðØd³ ðØàðØ€ðØ4ðØçðØ`ðØ+ðØÕð؈ðØ<ðØëðØ”ðØ@ðغðØmðØ«ðØ í90ðØLý90ðØ�^ðØ”^ðØa¶ ðØ'ðØøðØ®ðØ%ðØ#Ì 'Ì 1nfa::thompson::backtrack::BoundedBacktracker::max_haystack_lenÁ‚ër»ìrhybrid::regex::Builder::dfaÁ½ërÞìr%https://www.unicode.org/reports/tr18/ÁÄÿër‡ír§ír meta::RegexÁ�λìr¬#öíranchored searchesÁÞìr¢îrÄnfa::thompson::backtrackÁ‡írÅ nfa::thompson::backtrack::ConfigÁ§írãîr�Î hybrid::regex::Builder::thompsonÁöírÒŠïr1https://www.unicode.org/reports/tr44/tr44-24.htmlÁ¢îr±ïrÄÙïrhttps://docs.rs/regexÁãîrì�Î�ðrdfa::dense::DFAÁÒŠïrÆðr dfa::onepassÁ±ïr² configured visited capacityÁÙïrí —ñr util::syntaxÁ�ðrÒ Èñrmeta regex engineÁÆðríñr‰òrCrate featuresÁ—ñrºòruse zero-copydeserializationÁÈñràòr hybrid::regexÁíñr BoundedBacktracker::try_searchÁ‰òrˆórhybrid::regex::Builder::syntaxÁºòrƧór'nfa::thompson::Compiler::build_from_hirÁàòrÔórðórAvailable regex enginesÁà ˆórŸôrlazyDFAÁ§órÓôrdfa::AutomatonÁÔórühybrid::regex::Regex::findÁðór‘õrà nfa::thompson::BuilderÁŸôr¾õrª+Ÿ³hybrid::dfa::BuilderÁÓôrÖõr%https://www.unicode.org/reports/tr29/ÁôõrShould I be using this crate?Á‘õrà ¤örhybrid::dfa::ConfigÁ¾õrª+Öör dfa::sparseÁŸ³Öõrûör—Input::earliestÁôõr«÷rmeta regexengineÁ¤örÚ!Þ÷r(construction directly froma Thompson NFAÁª+ôÖörËŸ³•‡ør%https://www.unicode.org/reports/tr24/Áûör—®ør«÷rÎør nfa::thompsonÁÞ÷r¹ôørdfa::regex::RegexÁ‡ørÇùr Input::spanÁ—Ñ,®ør9configuring heuristic support for Unicode word boundariesÁÎørŽúrhybrid::regex::Builder::buildÁôør±úrUnicode general categoriesÁÇùrÓúróúr Thompson NFAÁŽúr± ½ûrInput::anchoredÁ±úrëûrnfa::thompson::pikevm::PikeVMÁÓúr$BoundedBacktracker::max_haystack_lenÁóúrœürnfa::thompson::ConfigÁ½ûr¾ür4Unicode’s “simple loose matchesâ€� specificationÁëûrÞürª †ýrÛârœür»ýr ãr¾üráýrããrÛÀÞür¡$ª �âr†ýrÛârïâr»ýrê! ãr�´ãráýrÛÀããr– hybrid moduleÁ crate::hybridÁô dense::DFA::from_bytes_uncheckedÁ° —ñrcrate::dfa::denseÁ crate::dfaÁ!crate::util::prefilter::PrefilterÁü(crate::nfa::thompsonÁ crate::nfaÁdense::Config::minimizeÁ¹ÿrdense::DFA::to_bytes_big_endianÁ• ° âÿr—ñrcrate::dfa::dense::ConfigÁ’€s¨€s crate::nfa::thompson::ConfigÁâ€sû€s° dense::BuilderÁ¬�së• ° 0crate::dfa::dense::Config::unicode_word_boundaryÁæ�s’€s"crate::nfa::thompson::Config::utf8Á”‚sâ€s± Ø onepass::DFAÁÆ‚sà ë• ¬�s,heuristically enable Unicode word boundariesÁî‚sæ�sthompson::ConfigÁ¯ƒs”‚sê!Ø one-passDFAÁìƒsÆ‚sà ë dense::ConfigÁ˜„sî‚sthompson::Config::utf8ÁÕ„s¯ƒsØdense::DFA::from_bytesÁ„…sìƒs’à µ¢$dense::Config::unicode_word_boundaryÁ®…s˜„s±crate::util::syntaxÁÌ…sÕ„sü…s„…sµ¢https://docs.rs/regex/1/regex/Á³†s®…sé›±crate::util::syntax::ConfigÁí†s”¾Ì…s"dense::DFA::to_bytes_little_endianÁü…sµ¢!documentation for the regex crateÁ«‡s³†sé›±!crate::util::syntax::Config::utf8Áå‡sí†sÆ”¾ sparse::DFAÁ—ˆs crate::utilÁʈs«‡sé›syntax::ConfigÁ‡‰så‡sí+”¾ dense::DFAÁĉs—ˆscrate::util::primitivesÁÚ‰sʈssyntax::Config::utf8Áü‰s‡‰sí regex::RegexÁ¦Šsĉs crate::util::primitives::StateIDÁÁŠsÚ‰s•crate::util::prefilterÁéŠsü‰síËÿr“‹s¦Šs°‹sÁŠsÙ·€sæ‹séŠsŠ�sí¹ÿrËÿr“‹sâÿr°‹sî)—ñr¨€s·€sæ‹s±û€sŠ�sØ Cache::resetÁ%crate::dfa::onepass::DFA::pattern_lenÁcrate::dfa::onepass::DFAÁcrate::dfa::onepassÁ ¨€s crate::util::captures::GroupInfoÁÁ&thompson::BuildErrorÁýÌÄŽs¨€sù©3crate::nfa::thompson::backtrack::BoundedBacktrackerÁý œãâ€sû€scrate::util::iter::SearcherÁcrate::util::iterÁ Captures::allÁ⫦žpattern_len() * 2Á±�sÛ�s’*crate::util::captures::GroupInfo::slot_lenÁÄŽsµ"¨€s ù©œã”‚sâ€sû€s° util::iterÁÄ�sä�s«žçCaptures::is_matchÁ��s±�së Cache::newÁœã±&ù©’”‚sâ€s± util::iter::SearcherÁ«‘sÄ�s³'ž§-Config::starts_for_each_patternÁבsç��sìƒsëDFA::create_cacheÁÿ‘sÕ„sConfig::size_limitÁ”‚sê!µ’s«‘sAnchored::PatternÁê’sבsçòìƒs«“sÿ‘sëÌ…sÕ„sconfigurable heap limitÁÍ“sµ’sŸ³ Anchored::NoÁû“sê’sìƒs«“s±í†sÌ…sÕ„sê!ß'DFA::try_searchÁÏ”sÍ“s—Ÿ³ Anchored::YesÁý”sû“s¬-±å‡sí†s DFA::capturesÁÌ…sß'Ë•sÏ”s DFA::configÁ—Ÿ³ DFA::stride2Áþ•sý”s¨-crate::util::capturesÁŽúr±± ‡‰så‡sí†sÆ DFA::is_matchÁß'²–sBuilder::configureÁÛ–sË•s—Ñ, DFA::strideÁö–sþ•sª-šŽsÚ‰s˜—sŽúrü‰s‡‰så‡sí+crate::nfa::thompson::pikevmÁÙ—s²–sConfig::byte_classesÁ one-pass DFAÁö—sÛ–s£˜sö–sÄ�sšŽs˜—sôÚ‰s“¨éŠsü‰s‡‰sMatchKind::AllÁíŽúr$crate::nfa::thompson::pikevm::PikeVMÁó˜s¹™sö—sÙ—sDFA::reset_cacheÁ ™s£˜s¾ür slot_len()ÁÄ�sÚ‰s•“¨»ýr�ÎéŠsMatchKind::LeftmostFirstÁü‰s—šsícrate::nfa::thompson::backtrackÁÓ¿¹™sµšsó˜sÅ �söšs ™s¾ürø�sýÌ�Γ¨ý»ýrõŽséŠsƒœsÕ›s—šs»-íµšs¡$Ó¿ú�s �sâ«öšs¾ürÛ�sø�s�›s�›sýÌ�λýrõŽsƒœs² â«Õ›sÊ-û€sä�sú�sÓ¿º-KËÿrôª+”¾Ðêr¨€sÒûcrate::hybrid::regex::RegexÁcrate::hybrid::regexÁcrate::dfa::regex::RegexÁʈs«‡sþ9±úrÐêr• ”¾¨€s dfa::DFAÁìžsŒŸsüÚ‰sÔórʈsþ9«‡s±úrÐêr• ”¾ dfa::ConfigÁ dfa moduleÁôŸsìžs«Ú‰sŽærÔórʈsþ9"dfa::Config::unicode_word_boundaryÁ±úr• üÆ s“‹sÖ sôŸsöŽærÚ‰s•Ôóræ‹scrate::dfa::regexÁ“¡sÆ s¹Ëÿr“‹sª+Ö sŽærÒæ‹s¥Ÿsˆ¢s“¡sËÿr“‹s«ª+¨€sÒæ‹s±¥ŸsŒŸsˆ¢s«‡s” start::ConfigÁËÿrôCache::search_updateÁCache::search_finishÁ’€sýÌù©ìžsâ«‚â€sžDFA::next_state_untaggedÁÛÀÌ-»£sÃ+Ø£s’€sù©ìžsâ€sž¹¤s� (crate::hybrid::regex::Regex::reset_cacheÁØ£s’€sù©öìžs«â€s± ŽærOverlappingState::startÁž§-¹¤s� ê’s›¥sŽærû¥sê’s� ÒConfig::prefilterÁ›¥sregex::BuilderÁåçrnfa::thompson::Config::reverseÁŽærû¥sConfig::minimum_bytes_per_stateÁê’sÙ¦sõ¦såçrß'ާsÁ§sMatchError::quitÁÙ¦sBuilder::syntaxÁõ¦såçrå‡s”¾ß'hybrid::dfa::DFAÁާsDFA::match_patternÁÁ§s–¨s±¨sÈ0å‡s”¾â¨sß'ö—sý¨s Config::newÁ–¨sÚ‰sBuilder::buildÁ±¨sü‰só˜sÈ0å‡sí+”¾â¨s ™sö—sDFA::start_stateÁý¨sΩs­0ê©sÚ‰sü‰só˜sÈ0í ™sö—s·ªsΩs DFA::builderÁ­0ê©sÚ‰s•Õ›só˜sÅü‰s �sí ™sDFA::start_state_forwardÁÓ¿·ªs—«s­0Õ›sí �sÓ¿æ«sDFA::next_stateÁ—«s¨€sŒŸsû€sÕ›sÊ-‚ �sÓ¿º-starting configurationÁæ«s�¼·¬s¨€sŒŸsû€s‚„­s¥ !Config::minimum_cache_clear_countÁ• �¼·¬s¨€s ŒŸsü”‚sû€s° "DFA::next_state_untagged_uncheckedÁ‚£Ôór„­sç¥ Ó­s• �¼‰”‚s¦¡Ôór°®s¥ ÷çRegex::reset_cacheÁà Ó­s«“s• crate::hybrid::regex::BuilderÁ¦¡”‚sê!%crate::nfa::thompson::Config::reverseÁÔór°®sû“sCache::search_startÁç¹¶¯sà «“sã¯sÖörª+¦¡Ù)–°sû“sÒ°sConfig::unicode_word_boundaryÁ¶¯sà «“sBuilder::thompsonÁÞ÷rã¯sê+Öörí†scrate::dfa::dense::DFAÁ–°s—û“s¬-DFA::match_lenÁÒ°s´±sç±sé›Þ÷rª+Öörí†sŸ²sÛ–s—вsConfig::specialize_start_statesÁ´±sBuilder::build_from_nfaÁŽúré›Þ÷rç±sí†sÆŸ²sÛ–s—Ñ,start configurationÁвs©³sÓ³sŽúré›ü(¦Šs¨´sÛ–s©³s Builder::newÁ“¨Ó³sŽúrµšs—šsöšsDFA::start_state_reverseÁ¦Šs¨´sû´s“¨»ýrµšs—šsöšsËÿr°µs¦Šsñ£sýÌû´s“¨Ë»ýr⫵šs¡$—šs»-ÛÀöšs»£sËÿr°µsñ£sýÌ»ýrâ«ÛÀHæ«sËÿrôcrate::hybrid::dfa::ConfigÁß'$dfa::Config::minimum_bytes_per_stateÁ3crate::hybrid::dfa::Config::minimum_bytes_per_stateÁ,crate::hybrid::dfa::DFA::start_state_forwardÁù©crate::hybrid::dfa::DFAÁcrate::hybrid::dfaÁûâ€sû€sÒŽúrÛÀ5crate::hybrid::dfa::Config::minimum_cache_clear_countÁœ·sÀ·sß'° crate::nfa::thompson::BuildErrorÁ¡¸sù©ظsöâ€sû€s° Žúr&dfa::Config::minimum_cache_clear_countÁ­¹sÆ sœ·s¹nfa::thompson::BuildErrorÁý¹s¡¸s·ªsù©â€s± Žúr± $crate::hybrid::dfa::DFA::start_stateÁкs­¹sÆ s’»sý¹sµ"·ªscrate::MatchErrorÁÞ»sкsÆ sæ«sËÿr’»sµ"·ªsé·sô¸s´¼sÞ»sÒÛÀæ«sËÿrÀ·sß'é·sظsô¸s´¼sÌ-û€sÒÛÀBcrate::MatchError::gave_upÁËÿrôœ·s·¬s�¼ù©ظsô¸sû–¨s©³sLazyStateID::is_taggedÁcrate::hybrid::CacheErrorÁÛÀMatchError::gave_upÁœ·sä»·¬s�¼ù©ظsö–¨s©³s3crate::hybrid::dfa::Config::specialize_start_statesÁžE;sè¾s‚眷s¹ä»�¼‰ù©crate::MatchError::quitÁ©³sÙ¿s;sžEçä»#crate::hybrid::dfa::DFA::next_stateÁÏÀsÙ¿sžE´¼sçî½sËÿrŽÁsÏÀsô¸s´¼sŒ¿sÛÀî½sËÿr·¬sŽÁsظsô¸s–¨s´¼sÌ-è¾sÛÀŒ¿sxËÿrôRegex::create_cacheÁCache::as_parts_mutÁ dfa::BuilderÁË⫼ÒûžÕÛRegex::find_iterÁæÂsþÂs«‘sžÕÛú, Regex::findÁÍÃsæÂsµ’s«‘sž§-¶¯siter::SearcherÁ…ÄsÍÃsÕ„sµ’s«‘sRegex::try_searchÁ¶¯s¾Äs…ÄsŸ³Ì…sÕ„sµ’s parent moduleÁóÄs¶¯s¾Äs³'±í†sÌ…sŸ³Õ„sê!ß'�·ÅsóÄs±å‡sí†s”¾Ÿ³Ì…sß'�·ÅsŽúr±± ‡‰så‡sí†sÆ”¾ß'�«Ú‰sŽúrü‰s‡‰så‡sí+Æ s”¾«Ú‰s“¨Regex::reverseÁéŠsü‰s‡‰s—šsíŽúrÆ sÚ‰s•»ýr“¨Regex::forwardÁéŠsü‰sÏÇs—šs �síÓ¿Æ s¹Ëÿr–Ãs¢Ès»ýr“¨ÃÏÇsâ«éŠsÒ—šs»-í �sÓ¿ËÿrþÂs–Ãs¢Ès»ýrâ«ÒÕÛ �sÓ¿º-<”¾ crate::MatchÁcrate::PatternIDÁPatternID::ZEROÁ—œã˜—sCaptures::interpolate_stringÁ⫬ÕÛcrate::Input::anchoredÁ”¾†Ês—ÊsÙ)—œã˜—sÚ‰sÕÛ crate::InputÁ”¾ìƒËs†Êsú,œã˜—sô¦¡Ú‰sRegex::search_withÁ¾ürÒËsƒËscrate::util::captures::CapturesÁ¦¡crate::PatternID::ZEROÁœÌsÚ‰s•3crate::util::captures::Captures::interpolate_stringÁÅÌsÒËsÑ,¾ür¬Ês¦¡ïÌsœÌsâ«ÑÊsŸÍsÅÌs±&¾ür—Ês¬ÊsïÌs—â«ÑÊsŸÍsÕÛcrate::meta::ConfigÁ¦¡Ù)Config::nfa_size_limitÁ#crate::meta::Config::nfa_size_limitÁåÎs·ç¦¡ crate::metaÁŒÏs§ÏsçåÎsæÏsꦡŒÏs§ÏsçæÏsÊËÿrôutil::lazy::LazyÁregex-syntax::HirÁýÌCaptures::emptyÁïârœã⫬Config::auto_prefilterÁâ€sÄ�sŒÞ÷!��scrate::util::pool::PoolÁÐÐsBuilder::build_manyÁÍÃs Regex::which_overlapping_matchesÁòär�ÑsåÐsïârœã Regex::splitnÁ¬Ñsâ€sÄ�sŒÏs��säÑs†Òsÿ‘sÍÃs¤Òsòärœã±&çÒsµ’sâ€s± Ä�s³'ŒÏscrate::nfa::thompson::NFAÁ��säÑs­Config::onepassÁRegex::search_capturesÁ†ÒsÍÃs¤Òsÿ‘sòärRegex::captures_iterÁ“óçÒsµ’sConfig::line_terminatorÁŒÏsîÓsÙ¦s�Ôs±Ôsÿ‘s“óêÔsµ’s•Õslazy DFAÁîÓs¬#Ù¦sRegex::pattern_lenÁ�Ôs±ÔsConfig::dfa_size_limitÁ“ó¶êÔsConfig::utf8_emptyÁ•ÕsñÕsÙ¦s“Ös±¨s¶Öså‡s”¾âÖsñÕs˜—sFhttps://matklad.github.io/2020/01/02/spinlocks-considered-harmful.htmlÁ“Ös±¨sConfig::onepass_size_limitÁ¶Öså‡s”¾,crate::util::syntax::Config::line_terminatorÁâÖsö—s˜—sÃ×sÚ‰sê©s±¨sšØsü‰só˜så‡sí+”¾ìËØs ™sö—sÄ�scrate::util::lazyÁ˜—sôÃ×sÚ‰sê©sRegex::new_manyÁšØsü‰só˜sWhichCaptures::NoneÁíËØs ™sö—sÄ�sæÙsÚ‰s•ê©s™Úsó˜sÅÕ›s¿Ús �sü‰sÓ¿í ™sø�s util::lazyÁÄ�sæÙsžBuilder::build_many_from_hirÁRegex::create_capturesÁ™ÚsÒWhichCaptures::AllÁÕ›s¿Úsü!í �sÓ¿ø�sËÛsëÛsŒÜs¨€sÒ²Üsû€sä�sÕÛ �sÓ¿º-Õ›sÊ-íñrcrate::util::poolÁø�s ËÛsBuilder::build_from_hirÁæÂsCaptures::matchesÁºòrŒÜs¨€sëÛs thompson::NFAÁÒ²Üsø!û€sä�sÕÛíñrÈÝsîÝsæÂs�Þsºòr¨€s ¾Þs«‘sû€s° ä�s«ÕÛú,íñrבsç memorypoolÁÈÝs¬Config::backtrackÁ…ÄsRegex::search_slotsÁ�ÞsæÂsºòr Regex::splitÁîÝs¾Þs¬#«‘sœÌsConfig::pool_capacityÁבsßßsçùßs…Äs•às¿às«‘sœÌsíàsConfig::hybridÁבsç·ßßs Config::dfaÁRegex::search_halfÁ…Äs•àsùßsConfig::dfa_state_limitÁŸ³¿àsConfig::which_capturesÁœÌsíàsÃásíásýás±¦âsí†sŸ³ÎâsRegex::capturesÁ—Ãás®ør Regex::searchÁíásýásConfig::hybrid_cache_capacityÁ±¦âsí†sŸ³Config::match_kindÁÎâs¤ãs—®ørÉãsçãs±± í†sÆ äs—Ñ,¤ãs®øršŽs:effectively impossible to implement correctly in userspaceÁÉãsRegex::captures_lenÁçãssyntax::Config::line_terminatorÁ äsšŽs‘åsœür“¨Öåsµšs¾ür—šsôås�›scrate::util::lazy::LazyÁšŽsÁ&‘åsRegex::builderÁœür“¨ Regex::newÁµšsÖås¾ür—šsWhichCaptures::ImplicitÁôåsËÿr�›sÚæsý̇çsœür“¨Ï⫦çsµšs¡$¾ür—šs»-ŒÞÍçsËÿrÐÐs�›sÚæs åÐs�Ñsý̦çsïâr‡çs⫬ÑsÍçsú!ŒÞ-±hybrid NFA/DFAÁËÿrô ThompsonNFAÁ7https://en.wikipedia.org/wiki/Thompson%27s_constructionÁ° ĉs Glushkov NFAÁAhttps://en.wikipedia.org/wiki/Glushkov%27s_construction_algorithmÁ¨€scrate::dfa::sparse::DFAÁcrate::dfa::sparseÁthompson::pikevm::PikeVMÁ¡$thompson::pikevmÁ±± ¶ésÔésËÿräés° «ês¼ês¨€s ĉsˆës¤ës¿ësáës¶és±ËÿrÔés° äés«êsĉs¼ês¨€sˆës¤ës¿ësáësÅN䮬#¶ésËÿrôø�s ª regex-syntax::hirÁregex_syntax::hir::HirÁregex_syntax::hirÁãýÌïârÿe¨€spikevm::PikeVMÁbacktrack::BoundedBacktrackerÁregex-syntax::ast::AstÁæÏsê¶ésregex-syntax::hir::HirÁàísöís¶ïârÿe¨€s ÃîsÖîsý ¶ésregex_syntax::astÁ¤ïsàís¹™sˆ¦ÿe² Ãîs¡$regex_syntax::ast::AstÁüïsĤïs¹™sˆ¦full DFAÁ�Îregex-syntax::astÁ¿ðsüïs Ĺ™s䮈¦ÅËÿrø�sª ýÌ�Αîs÷ðsøîsŽñs¿ðs¿ÄæÏsä®Ëÿrø�sª öís‘îsýÌ�Îïâr¨€sÖîsøîsŽñs÷ðsæÏs™!BoundedBacktracker::try_find_iterÁ&crate::nfa::thompson::NFA::pattern_lenÁýÌœã⫞!â€sû€sú�sBoundedBacktracker::reset_cacheÁÄ�s BoundedBacktracker::try_capturesÁ†ósä�s��sœã”‚sâ€sû€s° «‘sConfig::visited_capacityÁ€ôsªôsçבsÄ�sä�s«ðór��sÿ‘sœã±&”‚sâ€s± µ’s«‘s„õs€ôsבsÄ�s³'çðór��sîÓsÿ‘sÕ„sµ’s”‚sê!«‘s„õsבsçí ðórîÓsÿ‘sÌ…sÕ„sŸ³µ’sîÓs¬#±í†sÌ…sÕ„sê!ß'Ÿ³±é›å‡sí†sÌ…sß'Ÿ³˜—sŽúráës±± 雇‰så‡sí†sÆß'ö—sšŽs˜—sÚ‰sŽúr¿ësáësé›ü(ü‰s‡‰så‡sí+ö—s BoundedBacktracker::create_cacheÁÄ�sšŽs˜—sôÚ‰s“¨¿ësü‰s‡‰sáësÅíéŠsŽúrö—s%BoundedBacktracker::try_captures_iterÁ�›sÄ�s†ýršŽsÁ&—ùs�Γ¨Ú‰s•¿ës¡$éŠsü‰s»ýrí �s¬ós“ús—ùs�›s†ýrÄ�sýÌ�Γ¨ö »ýrâ«éŠsí �sú�s†ós¬ós“ús�›s†ýrýÌ�Îý »ýrâ«û€sä�sú�s �sªôs¢Ò׊Builder::add_emptyÁBuilder::add_unionÁBuilder::add_union_reverseÁâ€sû€sBuilder::set_utf8ÁNFA::is_reverseÁBuilder::set_reverseÁŸŒ׊Builder::finish_patternÁãüsúüs StateID::ZEROÁâ€sû€s° ±‹�Œ¼ýsÒýsŸŒì‹Builder::start_patternÁ‹þsãüsBuilder::clearÁ³þsâ€s± ±‹ýŒ�Œ¼ýsŸŒÏŒì‹Builder::set_size_limitÁúþs‹þsBuilder::patchÁ¡ÿs³þs±‹ýŒ�ŒÏŒ nfa::StateÁïÿsä®úþsì‹Builder::add_matchÁ—€t¡ÿsýŒ‹µ¢ÏŒthompson::StateÁÒ€t±ä®ïÿsBuilder::add_failÁù€tß'—€tí†s‹µ¢crate::nfa::thompson::CompilerÁ¸�tÒ€tÃ#±ä®¬#å‡sBuilder::add_capture_endÁã�tß'ù€t´…í†s‹˜—sÓ‹µ¢î)thompson::CompilerÁ¤‚t¸�tߌ±Builder::add_capture_startÁî‚tã�t‡‰sß'Î ´…å‡sí†sÆšŽs˜—sÓ‹Ú‰sŃt¤‚t„"ߌBuilder::add_lookÁóƒtî‚tý‹ü‰s‡‰så‡sí+´…¸ŒšŽs˜—sôÓ‹Ú‰sŃt“¨Builder::add_sparseÁô„tóƒtߌéŠsý‹ü‰s퇉s¸ŒšŽsÁ&Ú‰s•“¨Builder::add_rangeÁè…tô„téŠsü‰sý‹íÒ¸Œ“¨Ú!‘ýsцtè…téŠsæýsíÒ׊úüs‘ýsцtû€sÒýsæýs{ª ýÌõŽsý â€sû€sŒÞ÷!²Üsø!æÏsêáâ€sû€s° çáâ€s± çáÕ„sçê!Õ„sÎâs‘îsthompson::BuilderÁ¼H±í†sÕ„söís‘îsÎâscrate::meta::RegexÁ•‰t¼H±å‡sí†söísÎâscrate::nfa::thompson::StateÁ׉t‘îs㕉t¼H´Ù±‡‰så‡sí†sÆ$crate::nfa::thompson::State::CaptureÁžŠt׉tìöís¶Ú‰s´Ùü‰s‡‰så‡sí+ó˜sState::CaptureÁüŠtžŠtÃ#Ú‰s“¨´ÙéŠsü‰s‡‰sµšsí¿ÚsConfig::reverseÁê‹tüŠtÔ#ó˜sÄÚ‰s•�ÎãîrƒœséŠsü‰sÍçs¿ÚsíConfig::capturesÁÃŒtê‹tµšsó˜sŪ Ä“¨ýÌ�ÎãîrõŽs“¨Ú!éŠs²ÜsÍçs¿Úsü!í­�tÄÃŒtŒÞµšs¡$ƒœsª æÏsýÌ�ÎãîrõŽsƒœs² ²Üsû€sÍçsú!ŒÞ­�tæÏsÄ”‚sâ€sŒÏsû€s° regex_syntax::ErrorÁ甂sê!ÄŒÏsÚ�tÓâ€sû€sçÄ”‚sâ€s± ŒÏsÚ�tû€sç‡Ëÿrô NFA::statesÁ NFA::stateÁNFA::start_anchoredÁýÌœãìžsŒŸsâ€sû€sùPatternID::LIMITÁú�tŠ‘tÓìœãìžsŒŸsüâ€sû€s° Ôórùç NFA::new_manyÁÚ‘tú�t NFA::patternsÁÓìœãìžs«â€s± ŽærÔór¦¡ù�ý纒tÚ‘tðÙalphabet::UnitÁÓ쫳ؒt¦¡ŽærÔór�ýçê!º’talphabet::Unit::eoiÁä®ðÙª+Á“t«³Ø’t¦¡Ù)Žær�ý State::DenseÁä®ðÙª+“”tÁ“t°%«³– State::SparseÁé”t䮬#“”tª+´…˜—s´Ù÷Þ State::UnionÁ¯•té”tÉ#´…`˜—sÚ‰sBuilder::set_look_matcherÁõ•t¯•tÆ#÷Þ´Ùó˜sê‹t`´…Á&˜—sôÚ‰sConfig::look_matcherÁ“¨´ÙÃ#÷Þ„"µšsó˜sÅÌs­–tõ•tÏ#ÃŒtê‹t` Config::utf8ÁÚ‰s•“¨”—t­–tµšsó˜sÅÅÌsÃŒtê‹tÔ#Ëÿr™‘týÌü—t“¨Ú!”—tµšs¡$ÅÌs±&ÃŒtËÿrŠ‘t™‘týÌü—tŒŸsû€sÌú�sËÿrôÛ�sø�s  �sâ«ä�s¬ósºòrýÌ¡$ÕÛPikeVM::configÁutil::syntax::Config::utf8Á!PikeVM::which_overlapping_matchesÁìžsâ€sû€sžŒŸsô¸sû¨€sú�sœãÛ�s’â«Â$Ä�sä�sòärºòr��sÕÛ“št¦štìžs”‚sâ€sû€s° žŒŸsü¨€s œãבs«‘sÄ�sä�s«��sÕÛú,ÿ‘sòärºòr“štœã±&”‚sâ€s± ìžs«ž§-µ’s«‘sבsÄ�s³'��sîÓsÿ‘sòär̼Õ„sµ’s”‚sê!«‘sPikeVM::create_cacheÁû“s„…sבsîÓsÿ‘s̼Ÿ³Ì…sÕ„sµ’sPikeVM::captures_iterÁú�tû“sñÕs„…sîÓs¬#±í†sÌ…sŸ³Õ„sê!ß'̼‹-PikeVM::searchÁÓžtû“s¬-ñÕs„…sú�té›±å‡sí†sœ·sŸ³Ì…sß'PikeVM::find_iterÁÆŸtÓžtñÕs˜—sŽúré›±± ‡‰så‡sí†sÆœ·sß'PikeVM::capturesÁö—s² tÆŸtšŽs˜—sÚ‰sŽúré›ü(ü‰s‡‰så‡sí+œ·s¹PikeVM::reset_cacheÁ˜¡t² tö—sÄ�sšŽs˜—sôÚ‰s“¨Žúrü‰s‡‰s—šsí1crate::hybrid::dfa::Config::unicode_word_boundaryÁ„¢t˜¡tö—s�›sÄ�sšŽsÁ&Ú‰s•“¨»ýrenable heuristic support foritÁÕ›sü‰s—šsíî¢tÓ¿ �sËÿr„¢tø�s¬ós�›sÄ�sýÌ“¨š$»ýrÅštä£tô¸sÕ›s—šs»-íî¢tÓ¿ú�sËÿrÛ�sø�s �s⫬ós�›sý̨€s»ýr¦štÅštŒŸsä£tÕ›sÊ-û€sô¸sÓ¿º-!ä®ByteClasses::iterÁByteClasses::representativesÁByteClasses::elementsÁõýþû°%â€sû€sîÓs Unit::eoiÁ¢¦t¸¦tä®õýÔ%Ù¦tâ€sû€s° þûîÓs¬#š§t¢¦t䮸¦tÙ¦tõýâ€s± þûû€sîÓsš§t„íÅ”�ÞsýÌ�ÑsCaptures::extractÁœã¾ÞsCaptures::get_groupÁâ€sû€sú�sCaptures::set_patternÁÚ‘tCaptures::extract_bytesÁ�Þs�Ñsߨt�©tœã¾ÞsGroupInfo::all_namesÁâ€sû€s° Ú‘tinterpolate moduleÁË©t�ÞsߨtGroupInfo::pattern_namesÁœã±&¾Þs¦¡â€s± ‹ªtîÓsCaptures::iterÁ»ªtË©tÚ‘tGroupInfo::slot_lenÁäªt‹ªt¦¡îÓscrate::nfa::thompson::BuilderÁ¯«t»ªtGroupInfo::group_lenÁÔ«täªt¦¡Ù)•‰tîÓs¬#Captures::group_lenÁˆ¬t¯«t±GroupInfo::slotsÁ¶¬tÔ«tß'•‰t5crate::nfa::thompson::pikevm::PikeVM::create_capturesÁû¬tˆ¬tÚ!±GroupInfo::slotÁ¤­t¶¬tß'´…žŠt•‰tPikeVM::create_capturesÁØ­tû¬tŽúrnfa::thompson::StateÁ±¨®t¤­tß'´…üŠtžŠt%crate::nfa::thompson::NFA::group_infoÁß®tØ­tnfa::thompson::State::CaptureÁ�¯tŽúró˜s¨®tüŠt´…Á&žŠtÃ#thompson::NFA::group_infoÁίtß®tCaptures::slotsÁ„°t�¯tµšsó˜sŽúrüŠtÔ#Ú°tίtCaptures::get_matchÁ„±t„°tµšsó˜sÅÚ°tíÅýÌ«©tͱt„±tµšs¡$ú�síÅ�ÑsýÌ�©t«©tͱtû€sú�s öÆmodule documentationÁöÆ”Æî²tî²t”Æ ™öÆ �””ÆEáºé,¶ÍSearcher::into_captures_iterÁÐêrdfa::regex::FindMatchesÁ—crate::dfa::regex::FindMatchesÁœãÒ¨€sSearcher::advanceÁÕÛ Searcher::into_half_matches_iterÁÞ³t¶ÍÐêr¨Ï Searcher::newÁ…´t—Ñ,¦´tœã¨€s ÕÛú,TryCapturesIter::infallibleÁö´tÞ³t¶ÍçÐêr¨ÏSearcher::into_matches_iterÁ³µt…´tœã±&TryMatchesIter::infallibleÁöµtö´t¨Ï…¹¶t³µt±ËTryHalfMatchesIter::infallibleÁð¶töµtˆ¢sÉ�¹¶tằËÚ´t¸·tÒð¶tˆ¢sÉ�ằËɦ´t—¨€sÒÚ´t¸·tˆ¢sÕÛÉ�³'Ã×sÃ×sSpinlocks Considered HarmfulÁÃ×s�¹t�¹to±ä® LookSet::iterÁLookSet::availableÁ Look::StartÁÙ'Look::WordEndAsciiÁ‘ÚØ'Œ–ýÌLook::WordStartUnicodeÁLook::WordEndUnicodeÁ€(¾ÞsLook::StartCRLFÁâ€sû€s Look::EndCRLFÁLook::WordAsciiÁë'Look::WordEndHalfUnicodeÁ±LookMatcher::matches_setÁιtà¹tLook::WordStartAsciiÁŒºtŒ–­(ººtý'¾Þs Look::EndLFÁâ€sû€s° ùºt™»tè'Look::WordStartHalfUnicodeÁ'crate::nfa::thompson::NFA::look_set_anyÁæ»tó˜sιtÄ»tLook::WordUnicodeNegateÁ�¼tŒºtú' Look::StartLFÁ¾Þsʼtâ€s± ùºtå'Look::WordEndHalfAsciiÁü¼tNFA::look_set_anyÁ›½tæ»tîÓsµšsó˜sLook::WordUnicodeÁß½t�¼t÷'Ä»tŒ( Look::EndÁŒ¾tʼtâ'ý”Look::WordStartHalfAsciiÁLook::from_reprÁá¾tîÓsµšsó˜sÅ›½tLook::WordAsciiNegateÁ•¿tß½tô'À¾tä®ü¼t‰(÷¹tÇ¿tŒ¾tß'‘Úý”ýÌÕºtì¿t‰ÀtîÓs¬#µšs¡$á¾t«»tÄÀt•¿tñ'À¾t†(±ä®à¹t÷¹tÇ¿tÜ'‘Úý”š(Œ–ý̺ºt‰ÀtÕºt™»tû€s«»tÄÀtî'ì¿tƒ(Ëÿrô�¹tâ«ÖÞÃ×sŒŸscrate::hybrid::regex::CacheÁPoolGuard::putÁ­à�¹tËÿrÖÞŒŸsüÃ×s⫲ÃtÒÃt­àÄËÿr�¹tÖÞ­Ã×s⫲Ãt¼ŒŸs­àÒÃt3é›Prefilter::from_hirs_prefixÁÄó˜s“óàís‘îsãïârýÌPrefilter::newÁâ€sû€sPrefilter::from_hir_prefixÁregex-syntax::hir::literalÁregex_syntax::hir::literalÁ¼é›µšsÄþÄtó˜sÅ“óàísïâr‘îsýÌâ€sû€s° ÌÅtëÅtŠÆté›ü(µšs¡$ó˜s©ÆtÄþÄt“ó¶àís‘îsïârýÌâ€s± ÌÅtëÅtû€sµšsŠÆt©Æt$öž±)SmallIndex::MAXÁSmallIndex::newÁŸ³¦¡SmallIndex::new_uncheckedÁutil::primitivesÁñ�ž)ÁŠsµ¢î)Ú‰s•ÏÈtöžŸ³ãÈtƒÉt¡ÉtÁŠsÙ¦¡Ù)ñ�Ú‰sµ¢öžÏÈtãÈtƒÉtŸ³¦¡¡Étñ�ÁŠsÚ‰sµ¢ Config::look_behindÁçÃ+Config::anchoredÁüÊt—ŸËtçüÊt—ŸËtç—Ñ,regex-syntax::ParserBuilderÁConfig::unicodeÁÄEhttps://docs.rs/regex-syntax/*/regex_syntax/struct.ParserBuilder.htmlÁhttps://docs.rs/regex-syntaxÁ�ÌtææçíËtÄïârregex_syntax::ParserBuilderÁ¦ÌtðÌtææçí+íËt�Ìtïâr¸ÍtĦÌtðÌtææñïârç¸Ítñà ¦ŠsŸ²s’€s dense DFAsÁ¨€sdenseDFAÁü…s"crate::dfa::dense::DFA::from_bytesÁà Ÿ²s¦Šs’€sØÎt¨€s íÎtü…s€Ïtà ’€sŸ²s¦ŠsØÎt¨€síÎtü…s€Ït̃œs² ËÿrôÛ�sø�s MatchErrorKind::GaveUpÁMatchErrorKind::HaystackTooLongÁ,hybrid::dfa::Config::starts_for_each_patternÁ ãrÒýÌ’€s¨€sInput::set_anchoredÁInput::get_spanÁInput::get_anchoredÁâ€sû€sžÕÛÛÀÌ-ô¸sûõŽsý MatchErrorKind::QuitÁÛ�s’ÍÐtÚ‘tèÐtÞ- ãrÒÒæ�sInput::set_spanÁ¨€s ÚÑtòÑtâ€sû€s° žÕÛú,#MatchErrorKind::UnsupportedAnchoredÁ×ÒtÍÐtÜ-’€sÚ‘tëæ�s’€s Input::newÁ¨ÓtÚÑt¦¡â€s± PatternSet::iterÁž§-ôÓt×ÒtÙ-ìƒsëÚ‘tæ�s̼ÊÔt¨Ót¦¡PatternSet::try_insertÁöÔtôÓtà-û“sìƒsëáº̼ÊÔtåçrª+¦¡Ù) Match::newÁÖÕtý”sû“söÔtìƒsÞ÷ráºåçr̼‹-ª+HalfMatch::newÁ¿ÖtÖÕtþ•s—û“s¬-ý”s®ørÞ÷ráºé,åçrª+Input::is_doneÁ’×t¿Ötœ·sþ•s—ëêrý”s¨-®ør³Á‚ër2crate::dfa::dense::Config::starts_for_each_patternÁÞ÷rInput::is_char_boundaryÁ÷×tœ·s’×tÓúr—Ñ,ëêrþ•sª-®ør³Á‚ërdfa::dense::ConfigÁÊØtó˜s Input::endÁ‡Ùt÷×t¼œ·s¹¹™sÓúrëêr+dfa::dense::Config::starts_for_each_patternÁèÙt³ÁØ-ÊØt‚ërµšsó˜s Input::startÁ‹Út‡Ùt¼¾ürú¹î¢tÓúr¹™s3crate::hybrid::dfa::Config::starts_for_each_patternÁÈÚtèÙt�΃œsµšsInput::haystackÁ¾ür¡Ût‹Út¼¶ýó˜sÅú¹î¢tËÿrø�s¹™sŒÑtáÛtÈÚtýÌ�ÎõŽsô¸sƒœs†Òt¾ür·Üt¡ÛtÛÀµšs¡$ú¹Ú,î¢tÛ�sø�sËÿrèÐtŒÑtáÛt ãrý̨€s�Îô¸sòÑt†Òt·Ütû€sÕÛÛÀõŽsŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²·™£�ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²Í–š•š³ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²žŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ÍŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²žŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ÍŸg–š•šÄŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²·‘™£žŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²ÁÏŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²™$ŠP³¯ù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²Config match_kind starts_for_each_pattern byte_classes size_limit BuilderconfigthompsonInternalBuilderuncompiled_nfa_ids nfa_to_dfa_id stackseenmatchednfaclassesdfaSparseTransitionIteritcurCacheexplicit_slotsexplicit_slot_len SlotsIter slots BuildError kind NotOnePass msgExceededSizeLimitlimitUnsupportedLooklookTooManyPatterns TooManyStates WordNFARemappermapidxmap IndexMapper stride2DFA start_map quitsetcache_capacity$no quit in start without look-behind$assertion failed: id.is_match()startsstates states_to_id sparsesscratch_state_builder state_saver memory_usage_state clear_count bytes_searchedprogresstransno in-progress search to updateno in-progress search to finishSearchProgressstartatLazycacheLazyRefSavedToSaveidstateNonepreunicode_word_boundaryspecialize_start_statesskip_cache_capacity_checkminimum_cache_clear_countminimum_bytes_per_stateOverlappingStatematnext_match_indexrev_eoi Unsupported InsufficientStateIDCapacityerrInsufficientCacheCapacityminimumgivenUnsupportedAnchoredmodeQuitbyte CacheError LazyStateID LazyStateIDError attempted Regexforwardreverse0reverse search must match if forward search does0 FindMatches reSyntaxpidFail Quadratic RetryQuadraticErrorRetryFailErroroffsetimppoolRegexIstratinfo RegexInfo RegexInfoI props props_union CapturesMatchescapsSplitfinderlastSplitNsplitspikevm backtrack onepasshybrid revhybrid capmatches utf8_empty autoprewhich_capturesnfa_size_limitonepass_size_limithybrid_cache_capacitydfa_size_limitdfa_state_limitline_terminator pool_capacity asthirInnerPrefilterprefixliteralsPre group_info prefilter À Corenfarevshould find a matchReverseAnchoredcoreJinternal error: entered unreachable code: ReverseAnchored always has a DFAJ ReverseSuffix Hinternal error: entered unreachable code: ReverseSuffix always has a DFAHginternal error: entered unreachable code: suffix match plus reverse match implies there must be a matchg ReverseInner preinnerGinternal error: entered unreachable code: ReverseInner always has a DFAGPikeVM PikeVMEngine PikeVMCache BoundedBacktrackerBoundedBacktrackerEngineBoundedBacktrackerCacheOnePass OnePassEngine OnePassCache Hybrid HybridEngine HybridCache DFAEngine (internal error: entered unreachable code( ReverseHybrid ReverseHybridEngineReverseHybridCache ReverseDFA ReverseDFAEnginevisited_capacityTryFindMatchesTryCapturesMatchesvisitedRestoreCaptureslotStepsidVisitedbitsetstrideMatch pattern_id UnionReverse alternates Union CaptureEnd group_index next CaptureStart LookSparse transitions ByteRange Empty start_pattern captures memory_states utf8 look_matcher shrinkImplicitAllCompilerbuilder utf8_state trie_state utf8_suffix parser ThompsonRef end Utf8Compiler target Utf8State compiled uncompiled Utf8NodeUtf8LastTransitionUnsupportedCapturesInvalidCaptureIndexindexCapturesFramechunksunionsparseStateChunksIteractiveUtf8BoundedMapversioncapacityUtf8BoundedEntrykeyval Utf8SuffixMap Utf8SuffixKey fromUtf8SuffixEntrySparseTransitionsDenseTransitions PatternIter _markercurr ActiveStates set slot_table SlotTable tableslots_per_stateslots_for_capturesExploreNextDupeold_idnew_idNextIterstate_idtidx NextInsert rangeslen partitions BothNewOld(start range must be less than usize::MAX( ByteClassIter iByteClassRepresentativescur_byteend_byte last_class ByteClassElementsclassByteClassElementRangeselementsrange ByteClassSet ByteSetbits ByteSetIter bByteSetRangeItera matchtoo few matching groupsCapturesPatternIternames GroupInfo GroupInfoInner slot_ranges name_to_index index_to_name memory_extra GroupInfoError Duplicate patternnameFirstMustBeUnnamed MissingGroups TooManyGroups GroupInfoPatternNamesGroupInfoAllNamespids current_pid $ CaptureRef capNumberNamedSearcherinputlast_match_end["unexpected regex half find error: À5 to handle find errors, use 'try' or 'search' methods[Vunexpected regex find error: À5 to handle find errors, use 'try' or 'search' methodsVassertion failed: m.is_empty()TryHalfMatchesIter  HalfMatchesIterTryMatchesIter MatchesIter TryCapturesIter CapturesIter Z!unexpected regex captures error: À5 to handle find errors, use 'try' or 'search' methodsZdataWordEndHalfUnicodeWordStartHalfUnicodeWordEndHalfAsciiWordStartHalfAsciiWordEndUnicodeWordStartUnicode WordEndAscii WordStartAsciiWordUnicodeNegate WordUnicode WordAsciiNegate WordAscii EndCRLF StartCRLF EndLFStartLFEndStart LookSetIter LookMatcher linetermUnicodeWordBoundaryErrorxsince unicode-word-boundary, syntax and unicode-perl are all enabled, it is expected that try_is_word_character succeedsx¹Pool PoolGuard ï+regex: thread ID allocation space exhausted+ CacheLine ðñstacksowner owner_val òvalue AhoCorasick acMemchrMemchr2Memchr3MemmemTeddysearcher anchored_ac minimum_len Prefilter is_fastmax_needle_len SmallIndex invalid small indexSmallIndexErrorSmallIndexIterrnginvalid PatternID valuePatternIDError PatternIDIter WithPatternIDIteridsinvalid StateID value StateIDError StateIDIter WithStateIDIter look_behind anchoredCustomLineTerminatorLineCRLineLFTextWordByte NonWordByte multi_line dot_matches_new_linecrlf swap_greed ignore_whitespaceunicode nest_limit octalcase_insensitiveAlignAs_alignbytesSerializeErrorwhatDeserializeErrorStateID PatternID ArithmeticOverflow LabelMismatch expectedAlignmentMismatch alignment addressEndianMismatchfoundVersionMismatch InvalidUsize BufferTooSmallGenericStateBuilderEmpty* invalid span À for haystack of length À* HalfMatch spaninvalid match span PatternSet whichPatternSetInsertErrorPatternSetIterPatternYesNo LeftmostFirst MatchError HaystackTooLongGaveUp SparseSets set1set2 SparseSetIter Ž#»·ÿ?Ž#º¯Û#Ôõtáõtòõt�öt£öt´ötÂötÏötÞötôöt�÷t¡÷t­÷t¸÷tÆ÷tÐ÷tÞ÷tè÷tƒøtŒøt–øt¢øt·øtÏøtßøtëøtüøt‡ùt˜ùt¢ùtºùtÆùtÜùtçùtýùt‘útœút¦útµút¿útÌútÞútìútöút†ût”ût©ûtÔûtúût‡üt”üt§ütµütÑütãütüütŽýt£ýt²ýt¾ýtäýtŠþtŸþt«þt´þt¿þtËþtÙþtåþtòþtûþt‡ÿt’ÿtœÿt¸ÿtÖÿtöÿt–€u´€uË€uÕ€uì€uú€uŒ�u®�u¸�uØ�uæ�uò�uŒ‚u—‚u¢‚u­‚u¾‚uЂuç‚u÷‚uƒƒu‘ƒuŸƒuÖƒuèƒuñƒuþƒuˆ„u“„u£„u½„uÒ„uß„ué„uô„u�…u�…u˜…u¨…u¹…uÅ…u×…uí…uø…u„†u‘†uœ†u©†u¶†uÆuÓ†uá†uî†uþ†u�‡u ‡u®‡uÇu؇uñ‡u�ˆu¢ˆu¸ˆuΈuâˆuìˆuöˆu‹‰u˜‰u§‰u±‰u‰uÖ‰uá‰uî‰uˆŠužŠu©ŠuúŠuŽ‹uÝ‹uËŒuÞŒuíŒu»�uÈ�uÛ�uí�u†Žu¥ŽuÃŽuÑŽuåŽuøŽu…�u˜�uª�uº�ué�uý�u—�u°�uÁ�uØ�uï�u„‘u�‘u«‘uÀ‘uË‘uÖ‘uà‘uî‘uû‘uˆ’u”’u¥’u¸’uÉ’uÕ’uæ’uø’uƒ“u–“u¡“u®“uÀ“uГuÜ“uð“uÿ“u“”už”u±”u¾”uÍ”u×”uæ”uô”u…•u–•u¨•uµ•uÇ•uÑ•uä•uñ•u�–u�–u¡–u°–uÉ–uã–uý–u‰—u˜—u¤—u±—u½—uÊ—uà—uí—u‚˜u�˜uŸ˜u¶˜uÀ˜uʘuÞ˜uò˜uý˜u“™u«™u™uÔ™uâ™uí™u€šuŠšu›šu«šu·šuÍšuæšuôšuƒ›u�›u�›u¬›u»›uÆ›u×›uä›uî›uÿ›uŠœu”œužœuÍœuáœuéœuˆ�u—�u¦�u·�uÏ�uÛ�uø�u‡žu“žu¦žu´žu¿žuÑžuÙžuðžuþžuœŸu¶ŸuŸuÒŸuçŸuùŸu� u¡ u´ uÉ uÙ uç uò u‹¡uŸ¡u³¡uÏ¡uç¡uò¡u„¢uŒ¢u�¢u§¢u´¢uÀ¢uÏ¢uÛ¢uð¢uÒ£u¯¤uÔ¤uí¤uý¤u“¥u¨¥uº¥uÐ¥uã¥uĦuϦuè¦uƒ§uš§u³§uȧuß§uò§u‡¨uŸ¨u±¨uǨuרuå¨uõ¨u�©u�©u™©u¥©u·©uÉ©uØ©u÷©uöªuúªu…«u•«u™«uË«uÛ«uß«uã«uð«uü«uŒ¬u�¬uœ¬u®¬u·¬uĬuÒ¬uà¬uí¬uù¬uˆ­uš­u¬­u¼­uÊ­uß­uð­uŠ®u ®uµ®u¿®uÝ®uò®u†¯už¯u¨¯uįuׯué¯uÿ¯u‘°u °u»°uȰuÕ°uà°uï°u�±u’±u­±u¸±uɱuá±uï±u€²uŒ²u£²u±²u¾²uʲuß²uê²u�³u�³uŸ³u¸³u̳uÛ³uó³uƒ´u‘´u¦´u²´uÈ´uÛ´uð´uþ´u–µuǵu×µuâµuûµuŒ¶u˜¶u´¶uɶu×¶uá¶uê¶uþ¶u�·u¥·u²·u÷uηuÙ·uí·uÿ·uÕ"‰IG¼°dTxðÇ‘{àWK\W·¹ÄÒ±„Ô\Vfú ’N›i#Þ_Žöê(ÅA¡Ç}Š ¼c¸^n¹®Çó« ò‡³A®‚çDGí)Êó‹ãr Ù¶Øc5÷…YË4€ÜÆÇ2›{[Ïðþ¿ÊXܨ=Ö1­�ˆ8ñ匭á¦}âÄ1J£ˆÎ‰1ˆiÛál˜n)ëD°?Ù¢ ®H—!òò§”°ŸM¨ìðC¨ÌþÉŸ R©Ð¦0AY*�Ÿ²~ªFr }ã±™@ö”Ø©¤¥SÆDþ“%;þg’+ž½¨Ä<.»Ž<áÆSHnkö–œí¼+‘³- «wZê™ÙcSŒ+#Ïi�„| "×åÍæ²öæ³)·©­™ä=>ç…Mù*MsÖ®`úñ@*(a)W0ÕØúZÀþ]F´‘×P<¦6m:ÉïÀÖ(4h{â˰B(ú¯M,í\¡sîn1h½�nÄç¶¢29¡Ì‡%Sá±Ø‘KÆXT ÿÀ> 1î+Í>…$[ás²üL©yöÊ–µï„ké͉Ve˜‚×Z±ÌÀÿ—ÍSãD]äE²L6ÄRTÑ€ÙT‚e²$˜/»ïèKÍ]P•¡m ÞëJÚÚCJcẈßô¤õ¸®«6œ_ù…õäG“óŠnø\ ÂÝÊH£µÛ$%2A ¬|ˆjÖEŠˆ¸÷§m&|Z�ÉÂ�œà¦±m¢TmN¤¼Ú›bÔ¾:ºÂ¸Á&nIû\+vrg]p[•x»!ÖÎÒ+ƒSÐþý=iUEEƒº�ÈÕHò–„\¢J¿‚€øu®~¸„Î’†ójõ)--͹¯´Ùq©µú¥¡ˆ7‚Ü¡“òq:{h,'�V>yˆÆÏW À”ØØ{S´<#O7ÌüSVÉ{¹ƒÞÿu7{r¤‹–»¹ƒù‰¦P7nF0ƒ’Ò_ÛSnj÷£k¾72ó9Œfp3×="Ï£8]BCp.Í«—ì×–‡µMxØì ·5L]W«´·mòÅ1æÍ�1a¬¶Ø°û÷£¨Ã¤‰'e*`Qû©ÌÜ€°³Ž£õ˜3›³A„Ò¥Ž½rú!&Üæ#Q<°³ ê‚ 1ó[I!¬Ç;W:¥©Ð’4ØŒa9åïéä�€š�”k™³à®b/†h½Lt”`¢Ú_ý¤’³\óñ ÆãJ½E"¼,¡jJm|aù¥LÞ´çdæ§�3ˆŽÞÐ�û’_ØGaÚ§ &”7RQ¥%$äË�N—Õåg�,Ãàõ{æÀ×e% €*ͽ½¯‘ºÂÃ7övá©ÌêC2 "k¬Ø¤FtÏ‹¹�Y÷Mh¬° 0�= üب·O1L~Bw[©ú-ɼû}ûCl3Õ³„GáMrµ§5µÿñäϱ„ëÿÖä‡äÁŒl9€92w°>�ËL�è­ísà‚ØPªHx5, ª’B·Ò¼gˆV3è ÇAˆâ4 f€¨´BÖŸe×+Ë}ž76izØêRÁ`áÁ"!ºeC‰ 5çÝsRE¨×rs6Žäð]3p®äk¯Žeõ=«;}*�èeBK$z½�õ¾ÉóÿDœ–B×øXƒpðiïjé ´i¥Mb9q yRÇéj´ðñLvVFø]Ý¥úgÉ’º¹f]ìšxqëQyo~#Û鋌 C‚�#=4kúž$(ꡟ¼ò+ûIwBzyÅk›vP¯.PuYÊvòuî:ñ4b±Æ×ñĉ¼ãó%×ÖŠ‹Ñ{ž´%o(�À‹Ð˜ÚÀ³ÿÕ/Dðs ²óéq á¡ñ&Œy�±Oɺ•ÑŸKüü¤›+á–ªPj¬ÀµBÌw4ÂÓ YB•mã;¿-µ¹¥¥/NÅ…ßèÜÚÑ1«Ob‹é¦» ½Î49ÈåD¯ÈRtvŒäcm¿•US\nÄý{åܸù&z`DçÜuÁÃõö(|ç‹þ ò‰n¨e˜sçDEYÇ•¨êö¾é×>Ò¶ÄÓU7ÁØ]å6¡!Ü_"$4Ó|œ9QÊQ³¸½'+Ãâ}@wKGS+XºG×AÓ~ ¯qbé)Þ }VÀUžKý6D¯‚lRhS<ÃC†°ì–cs~BaâZúçšò.·ó¦�¡VûXÊb€«0ûå9‘SF{Râxœ~M’@UO2`cÓ•uWB£m†V¸–¨\ Ô<:¦%7¡'$#Ek—)ýU‰òPÄß6¸»¶!I1c)ÓºyØåk4wxyrš[M?ë°wBøËíqJ[iQŽØÌÐ�yÅo¿dKÀ§òVá|ך¨}4žÕ�’³¸þ•âÛQäYŠ{Í`”×&^™ *k�Qá>ý”q ØÚîš9a¬…îYLÐs È{QYPïN{›*d¢è …îæºwšó“sw@d—3Uµpá…Ïñˆ3ã-j}3[*þ+ƒ¿€Ê"Ì.S®±óaÊ¿ÃHU¶¨D™å#R ƱWÊcö,ÊñÖ£ñE‚%¾Ž™º89.^"ëYh9P¬¢MUSquÃnýšÈ+œxx© Œr$-MØt Ì wë·:ÞÙ �s>ªèÛó¡ ïû…†.ÏFé.Ç«âÓý¶A2ug×ñC\¶j×ükqÇu›ôLÅâÐ’—hÛš âyôÖººøîç߃œïãS›áô³>«žq.V$ÖÑ­™`ØÑŸA>ùš‰KªÂ"‚^%3^b* l�K|wI#¹û_×Äv°êé +|Ö¸vwªÜ¥ÉéÛ†ÎAmÀ¥~‚X Ø÷§o¡ý:9ëügÇ$ýpE§yùmmKÖÃÑTÏT]N`�3³¬€ØjP)_ˆË/ã ÖØC6·È·»i´ek”êSÑIÈZ‰QkrQ±æpü,<Û°Š²\m \ºÉQœ1Öã/ÚIúàÛcG®“ãÔ© ÖoÞfò`J7›Aë�äÛÕó �…"’†‹&"œš(íXÞ{jï¡`N«ä‡ªRiö™±¾Òî„Í;SÜ#†´Ýù�Eó“·¤Žuð©ˆNÍlL]¢5¼…”›?8ue«bGádA6€s¡’*œ]ÝhªÖÇÏ wO ƒ²ýÿÄÆ6““\÷ _wJß[Õ™½LλåAç„Úv BƒS$w“Ⱦ×üOÈL¾ær€uqI€½ìýÇ(ˆªîv-¹‰6œR…úÙÕÔÔ &ÒŸð¢¿v¥—ˆ›oøoJ¢‚t«î{_¹N#!Q¥EšªÄpͺj6{ò`~”qÜó§¥ >£,%¶Sj·¤|Styùç-þäIÊbÎÜðįiÙ§L[·€-\t×Oÿ`»Áv@ßx.KÁ0R]p¤A±_'ú‹�I|[Ù Ã@FxñèèUËBMÛ”?l¡HŠáÊû¡#ºF1¾:ÁX˜µg O[8ù‚ kŽýˆ¯2Á<™Q7#BCXâ¬eÛ�‡èpãoÊnO#³G^BPóî£`7ÇÂ$û)êîêªþ¨Ñ ‰VÊ׬lÿ%Ë¢�¯žã×]Ÿ£<çø*PŽíÅ™7 ÃDDÇs^–îíØé­‘¦sÈì‡ÙB“%&¸Ã§†ÿžÒœ¼é·Ÿ€¼O>3¦Md¹KB9ëeO+ÕM×äðÔªR.ûΫm™ OâÈŸÒ_î…¿„$í§KøÎ#pclËû{+‘p�ñ…>ç`^È̈ÙR€Î„nÀ=_‰Ít �%Œú §OÄAÞ—äML‚.3Ë«¦ÚL~(�³õ""Òθ Þîå[¡¢Ø<˜Ð@æñ°=ëó‡fAóÁª¿ò3C›çkˆ%Ând‘ªë!Çwö 5Þ)<Ì:EÛ9Ÿ æêÔNÿމ×8.IÛÙ*¡…âÒ»HzCï‰èÜMÔìftn£ÄW¦1wèÜ*¶Q¬ÑÆùLð°pþª’À=ZôBØ‹ÔoXÍþІ¯\?ÐN@œpFcN” š®´Bo {žŒ.Vøm¯òoÉÕQÀã=*Ktˆ´{/Æ,‹¿ç£HGG˜^ð´È:,à¦Çÿ§hqØâ©t’¹÷’ÔÄ\¶é™¤‡Éu)-aÏ��,Wsóº"é…Ó],FÒ”,óÍ� ÿzŠ^ùÁe÷á“UŠ¢Àe‘QFxÒA—‡ý*ÞYS¶àëè~£= c¤„¢°–DùE= 3)ú­ÙQf9–)-K•ò®w„? ß•:3=|×mƆË2U´>^çËÅÆP»Š;( ‘Ç„å-ôåâ<Ôš<=ͺߵ*w¤IP‡¸}©ü@BÜÕ*¥b9@dH£Gó�ªßÛÿ÷ãZŽÝmɳŤÙJ÷µÿ~%ùœ}"T�P‡*7�(n`+½èjEy{J´µfV;‡ü Ž9 =ä쬡P†x†k� Ž”V{ü$2hù&Ò—ô<`ŒøƒHØøýu¤¹"í ÖÛþIƒÊu>ÿIÈ÷Ž/ˆ‡ú¹N èË“ŒOÉœ›ˆÃø¡–óÈáßâô_‘ñOÆÌ¦oû À:oGA}?gG§-˜;׿;q40_\õøª–׎Í=ãLº#¸{0Mèê.2Ñ8Ò œ`õÒ0Ì4?’djD}Ry3èJôäÀ5«nŽR¬(/UCÌ9íñ†ÖÃ\´¶w�QŽLòZÙ¼¬ÙuzÕì’UŠDþcç¶‘ ¿@WX¢˜½$«âG”¸¿æÅ>ñui”#È¥)ô¿6<{�‹Ûn¹¿úB;W¶bˆ1Qù”`lÎfÃíªéË„µã}+†þ`޾¡èjFâ�^$1@Q6ש­½^Ç;l©ý£ýï' Ç=›Ái[eÀ½6ô3Ó�N̶9ê]Fþ“0— [ÕúLË)‡@ ëÁÀ�ò[ñ7¬5bŽ<*öMwÌ T¦¸ãSKgnuâ�¿eËÒäóe�#êÅž‹õ.­T]q¥¤kŸVIŸÞe :|½ÌtÊF 1¶ÇÁŒª»Š �×MvpŸ¸w_£D½Ñv¦¸ø·èœÍ“îöLÀPƒH:é¼.5/ Ô‡Þ®¿Ÿro9᎓CóŸx€Ý&Mù&êZ*@™@êöé]l5F%ö›„³±•I'PÎÀÍ ­ë€Eaˆ2…÷œˆêX(SôSþã�¶Ø�i¬¨ä›€Üü8]MÙ\ÑwµÁ.b5u¸Ò:-qqû!àèlå׆Tq}T¹*HÿóàdÜTIðÍï~-Œu°dxr%ãã�°é^º^¥K'ØŠ%ð>ÂiÊ™úH¾•œÔ§Š�ˆP÷o¥cüÁ—Åbl/%µ�š�I¥5ÎG½öF›ÝK–Z7»i"'lì!ÉãY¯üíbNž›Ó=ÈÆtVÅyM�7&Eïüa÷ÏÙ= –b| W’¹RŸçUÏ£íÈß�ÝNr|—øÖß—/ǧèÔ‡ËÀ$�Ê㉬Π4“ù|NH?ޮ당‰ØÐ7ÀóƒyשC¾'cóðÿ3è´71?“œXôÁR^ð`K9Å" 5츗‹˜ÓÔé?N?Éä2࣠S(ý¬¤žo'×�m=7=²]- ¼×E7\¯3ýu‡é—vn€”eH\±cˆ©Û´æ°·–ËÖ”…Ý÷(�É*^›“%óTéíÖ~ÍÜÕ¢å2ÜýsÑréø§%N‹–-�mÜ�oD–„¤Ë˜Øß.^wüDPƒ5W»rß“hˆïZ×ÕÄÓÿªAôTínnä¾h/$ðùáÜÆöQ}Ÿ±qsë¸ö´ÜBŸ5”E&¦3Í´láÁ/ýû<<1Œ¶§‘(>ø�«ý]ö1¹PürD6ö¢¨ÌIÝøC(3?‘åEf$÷ĵá|©MŒñsŸ•:˜¬6^:§c1Ê�lI, �3CW”FuÆ#Ö­=4ž£”÷é�Páø%ßF­pÛ� ]‰ŸRa Ò:‹ˆÖyãÅËZ‚CP¬S‚†Ë§RÑÙ ¢7¾qsÝ4ŽÖMôó°:ßÚ… ’{€%"•]J÷•bü(Ði ¹=Î g2Ó,“×)Ë»§?è¿´ôLóý”éì }½6æ5¡Ê7y� Ï}>@h jeû7†úô¿2:Üvf‰�ƒLœ.BU‹B°@IÍD^c„µÊ¬X‹TÅá÷ûBÓ‡Ê(Ÿ“Ù×€÷ìþ…+pÙtê'˳^«f¡Aƒ$^.¸)¦óÅöÜI/89› ü„NŠS©¼aRHÇ®ºlzÑ䥇»=ô¯=»>�Ž vòaêÒŠþžÌj9R#EÞêƒÜ‹ÎÌjáN¬ý%¶µN�' ó^º´çZ>@¥|ˆ´;އžú[ƒ˜ l ìÛkѾÔ¦š‰zD Aþ1Òì\ –xH�‡Ê¥ûFæÎÎv+¥¹=Ùæ-ÛñL/@àáé'ËeŽÖ„A”mŸöÀ¢X�¸¬ýß OâT‹9FHê0�«ö)òoSoí¨%£.ï¿2š/s7¨$i†Y-)᫃‚8ÐS˜J‹Ô�ÊJô<5…,lÌtÔ¿Z`°TT—.Ö6š³$ÜyrûÍð$‘È0:˜š›gÜd‹Þ:ÇIƒÐðVÅ!œ%™ô[cƇ* >Àó2K1·X6ø·äàiv$Ì:úƒj§óÀ’Ô3%ˆóô–’Iöê'~ë(�rçMR²7¨y3mЧ©lý]|�ìOp\¸`n3_‘pÑ)œ›‹�Ýó§0ëËl?]¢�Š~dÆÈÎ"1VPbÂxMÑ€6"Z¶w¯rÆ5XˆÑZZò�d÷#s³ Blù.¶ÄÝÀW¯éfQðÜÊ,å8_,¾�š¼‹àK&�e¤¸ŒÖÈÎÑ+ÆÀ†i/Q‡Òr 7 ¨!E¯„¤ÄtTîáÃÝfik Y¤öX¸¿㋟òÏ�ŠØšø.ObV…ìPÇÁ`¹Tš@I-_F‹R�»Ã©Àé�ò`´$’ã­RİÄT_˜ho%Ï�ëÕ«§t}|NŠˆº)Œ§¾aNÏ�z¸¼$Fv»I%!:=’ˆFv}wü>a¨*r˜ürJj ð²_L<ªä¿®] åsuÄc[¦9ÔËœ[›uO�ü®O®$ó–oÓNd³’%£¼=nט\óÖ“'Î6v�íÀ“4`0£Ë¶yfÐéB®ñ;Éä –uå9W=_äit¸ø:1ùï,g@æ'Á °üoð£á–Ä ‰PÜþ–<Œœ6¥+žu¾¿>RÖäì f¥LÛÃ*Êp 9ÁÃ{ØIAlCÞÑ…šò6ݲšpÒuXׯråWI/+p៯f8Þ\1ôÊ íÇRõœ ¯<–*¥aY¾ÙÞ-£¯®`óWá •”{Hìl«š?ÆCOÎügJW£À¯õk–-€µš±R([/ïëèѹûž¿ å:"�ãX=o—�]\äT¤/Uß´×dÕ]/´ˆ È¢� ÓZ¿JQ¸1G’«¹šàå¾ÌèòƧl6/á‰HßÁgü?7À5¢3](—€­À¯�­ÚZe0€EƒrlD„8¸ $ÝÅe:gÛ*!ôHø«údâ§Šuã݇ý^°½sÞ¨áf§ª`q²“AÝ�X"TÚEö7Ð|R[üÔ°Vëž`àÈ~ôÞÿÜÑÑ 6xVf ñœn e ðæßà©I�° Ÿ#Cjízî`F_ñ8ývâ—:]xErŒ!é|Z0"Þ%©’�5 êeâ‚tEgÉÿ÷Æø0ä`{Óý�òúäWØw�0Já"�UæÀ9I?М¢œ´ç= ®�ÀŸ¹"²`èPkp:¨6˜#ºúR¨ZídC™=$]‡ßûD hL(Ü/¥#¢4a’aCø(Ü((B‘jé —Và¯óô–|Às…!2&}Gî ÖŒÑq&óBù¸Ûs1UAÌüWBkÆ`䦷YæFz\ÁuŠC5œ2ü—/ÿ/át�¡ ij>{v[3ÐŒ«BTÙ�Ú=É"É  ïh0b�áùkD+{ݸð«caV¶D%²Ñ›ËXÌ´(‚n›¥à:á )t|Ø£ÄÔïà’£d�£v¶�ª*ÏÞî®ÏòÃO-ë}n‹«£~y®dÂ…¿èxí/Y¯÷§LŽŽ7v×ìþnžI#¢EವY¤¾ Bë?pø‚.± ‹Ök�ŸûÿÞá,<¬‰ÖiðÞm/w›²éÀg×”QF´]y¯¹*­IúÙ\Ø;T’dìR´™ˆ‰‡(`ÂT¯i%~ŠÁâË‹·* ©€ÖÛõ 65½Mg’wÁžŒV\¤ï<‰ëi¸WšTJ¥O”[‚1í«ì48׎4“*œ0LÃ!u6nÇGÒ{CÅ�@íÇ@UbèD£bŽiê«þtÔyúíùö¹Ë¹ÏV“õ!°Ze¸Æ1¸,K†VtÎî_€¨w\À#Ž“Ø Ü™ªéšimŠxŇçFT#Ý ò²ø³«Ä-?ùp�ª1 -ÄL-ö·sÿ —7…½ôׂèËÀ ÁFt�/z-¶ñ}²ÕŒüÄQïàxMËÓTQ!Øh�”îê�X�J°¿G‹ e˜ª‘*^ó¬pá–žó²9q�{M~ÍkQ*ÖÍ!)�ƒÅlä© †a¢âŸSÐúýŽ>ñ£ƒò*ó'ÍË¡Z&j†“ö|�z�)M Ó7Ã>†È¨šqµiÉOa,G=�7‡Qó'üIulMÕ5Ýéû vd§*OÊ­6Îè‰JÓð…@2yhÆ03T>† ´kð§+;öH8ÚÁTrN°ÚíGþ›z´,h~CŸçê�oH~”ŒÇ¦Xò´…Îî‚¶ÁÆæƒ¢Ÿpý²�ôLöVQžqÖ€œÖË�ˆxåô$þ¥µi}î§]i»OŠœÀÖdëoå…a‚H˜vî ì?P;ù¼dIÖƒ€ºZƪ§È’«X� FØò&ÄÔ…LéÙÀE.^Œš‹XžTr§©uãl[Ѥ[<ÂÁ�ÕMm{£Š‚(}ÑŠàòmì°aNH–�IHÄ®¶rãM­ut©¹$¡`@aŽ9H茥1˜ýîƒ[%ªÚ� ÞCÁ9¥yå~ÐZIÿT!r›â¯ï©Ý�‚÷³½MËiâY”•JQ®Äô&Ø:>ÔÁ×9$ó«<Õ™¡µORgp`,ìÛŽ‡›ÁÙG›žb?Ã# Bü‚7K@‚Á #Àw€ðçɲz}Ö1ÈÅÄH?$JÞNvÇE0 ŒÄYŽ|¸'.¹­qá®ß7o —ÓGùÀꦢ«”@óÚ3ª?²hø¤&g³eºN.GÙÖ=D‘1"ƒîoð�L5ÇO¤g X>úÌ‹ŠzµÏÀü:90Ó¹×�½Vo˜þ@65@å³8 ˆñIíŸD¼tå¤êŸ¸Lþjnd³¦Mó6Èw,­‰Ûã@ÌÝÃ&=žu£+çÝèuWkFO?«ÑX³t/®J˜QD»úòˬ’Ð쳘ÍOÿVÇ¥Ðp«š#+I×¶å?¿û‘ä$a ;„+=™²*ä‹©DÈÓ~»H+"ñE£¯6.¾ÎÀžù&Tþ�´Ópð&zx$?PÍ…-m¦™²«# †óΡÚ×ÖÅæáç‘}¯ø’Í)2‘Ò´r ˆàgŒíÍ"e)t¨å¡–¢%�õ×âòn˜î˜È.ŒÒ1÷÷'B§&¡†?ž_tOS'ŽÀ±¨ÒÝžV§±Ô3CÚž3œ!ì¼á©�¡�Ša’ÚR!òæ=@¦šªû#—œ�ÖŽTr=¸î2Ï©j{kÛfÞ¦ý/#*‚p¨ÈPêÓSšWàD%eY}ñƒ$¼g¿ï�}&�O‹/.™xi,Š1ÂrT-†BOÂçhš¦�_ÃÞ’,ÃÝ5r{Z¼‡B²âÆO?Χ¹þ"dû³@6¤/W‡ÒW;ƒ€8»t–é¤QßÃ2é9•ÜDuo$nÀJ5ŠËíëz¶÷£MøÀ³Å6ÅOÇlaÒ-³ ´‘ú‚,VßZoJ»ö*ué¼U!×ùå2®o.>Óµ²Ù(MW'Y͉Ü;U5ö6Œ.<èGØ#Ó\MŽn ©éo4æÿiô×1ò ±÷ †Šåìç±E°?A8U¯W‰R‚óa"Œã}�¨Ga³ým*&úr=÷y¶Ônï8#™ÄKôJ?•Ͼ70`/«ÕCk-ňºá×Õg_w�&G…_ÅBND7‰ÕQ¯ï�b–BŽqcCÒ F´\`â·µˆ(['ð”Ðäî‚1%2†÷ĸ"DI&=‘æË3Ý·¦/2·%¾D-xŒ+ô“^5gMcìu^ÞÖ¦½`€G(à«Tš0*û>_€ �I-R H¸›1泫¢êútŸ Ï+ñSòd�LiZ!\¥K9Ù}�q±¾ã«Œ q•þ :ßåôDb`è` ýŒÔgu¿¤c‹õ_÷Q¼âð¡‚ãHÍ¿ NOn,t Yû¥ÉÓg@ˆ½Æ)â0>_ nñ%oÝLgK¤8l$mPVß‘hÙcúR à•)¡ÍDöÜüÞ¥™�Øc=Óå5¼‘s@ÁøX(ìˆn–§Ù>(5ïx˜åü¨Ò:69’ªyd� QÍ�¬°ÑdþLg—mçFd”L† ¤Ø•IbINX�úrh|íƒt¸5ã¾¢H¡gż�%TJmm¨6gýÏ«‚õ�e.nKΡ�\WQmˆ6˜±]‘H û×ÌG§-­F¬†8ò"Ž“,O6ýVnO{(…­äØ�û\\\S¬»Ž<Ÿq"'|Œ+áÍÑ–F!2¸ß£æþ¸dª¨ªÿ}”± õ!œ¸N×u­nílz‘ùd÷òVK½nž�J}¶9mk1è¹——2“A`ËfR–íŸ�Å}‡»ÍvW¸¹ºõróÛîªÀóâ1× Næ®hMdcEÇWá«aqžC{ìr1G�‹±~é=áZmŠãRËÅÍc4Íó/�uIãÍÏ-î9’_{º*Ÿ¦¶µæ®ƒWúþ¼c†ÿödy¥>È?šhíX(<Ÿõ#‰Ñ„„±ããá<¹z£±ÜÃÅ1æ‘xùWr‹HYûª‡³* ¢n†œXø\ÙcìÔ›Áˆ;m|ý[p·bît3‡‹œðlWòþt�7´³„�ËKl®¦¤^ª8‰2ü™ Vo¶%í|©ÑèŸm‰ éÆŒ›mÐðû‹³@+OèIJ͠­{âõ¹¡@[�Xœ¦ŒU©Òã6ß„˜¸e½ž�›Y“0öv¾öÔ?×ÄšLšç<õ±[߯#¯[Aj¾ZÖÊÅC°Ig¤ï:Ó„xË�‡þ‰S˜c›˜Ó¥™Eã»™uã|Ýöˇ´üvQ6³ÌMàåK‹ØvlJwVÚ:{C¯s]ã8îÂHÑ;§]ýÔqs¥‡Zõ Æ5æsõS(öµG70R)0±¤­ ÕËÓ0Rá>  È ¡j* ¸höäBµ?±ì5FE#­þüøƒêd™sp~5ýÔ+‹ óÊ׸øn‚1s±®?@¾°ÌW¡ZCÚ)£Ÿ´§iyÍ�LâEõLpñº ÷D¸vÿ¯‰ ¨Ü\*´àYVZ÷Ãô˜S÷gTs1wÑMy­$(àV‡½F £(QW)@lR5¸.Š ‡‚C­“ªsl`*“)‘Š'Â𧪻‡±¾ .ЇA­5’kí=”ŸÄW˜£…÷˜o8ug3 Ûêë_¨TW†]…jU{qúÁ*2­ÖR½¸žºàóª&è;ï¥-9dÒé´TDOLGVzÕLTäOã XÔæ Õ˜ì¤ × ZeV/ñtè® <2K2h™kð³¸ÑÇ1õ_Û&ÐÏ ãü‚ƒ­¥XµÈ¦;ñÄíË F·å ù—›â{F¤�s·2V™‘“e_·E€‚ñ-Zkªfp…,zÕRé‡T&,Hö‘— ·xŠà¹”é�0±dO¡a(´¡@¤‹¿¥Ý)&t×»îTî«Dgí^‡Rm¦ùZe±ò8ú²!ðKá{’Rã�”¬9Œ.-œ­�⣧€fœÿÌ™b³H<•Á:Z¶X{Æ“‚úC&~ù¦)¾ëW™6ÝǹûêMAŸy8PTmBŸç@ÏX‰µˆ-4o]žd, ìÁ ÁÐxQ´�\ô(«Pgü3=ã¥�ƒ¢NL&�i¾£u:qŒG:äÏpœ};Ą̈�Xo`ÇOC‰8‚T2:’ç|D!Bè îp]ÈÝåclúñ†R}µJRqúëíïD7n·ýØôn…t·ûDù{Ž”ãeETÝQ>fC#„YOãAu0'V‰AY"à[Dd¡çÿ~¢FälZÿ[™o5½p„ï~ °pƒ¿ ¶ßr K{øBpËj^Ô¬½†¾T-Ž¢ŒJÐ$ït©A+’\Œã—³pÅÜC¾SâLÝ߇÷ܱÇ͘XóVmÁÓ5p"Hû,Ô蟬Çôц#'Q ¾^Ø20X,Ƹ*J¤ÇÙP’ù󙪙úÇ­°ùI�"Œl²cÜð� yvŠˆ˜¿rÒ™Rål'«[xZU �Ô´ëK†S™šõHž~x¿†HÏfsÄïïZgC#�H ‹Ò¾­¸¿SåçøYb¦·ePìmk:æ<gŸàаÊÞ°O’œbr§ÁN"'wHœ;Ýõ¨¸bÆW¨Ž%•OÙ$È0´Sj¬b%†Ï¹ò/?�E9‚�l ¾DükA쇗MïÀ-�}ŠwœÏËKlø¡+6˜“>�k— 5Ì}±w4ðLßøT"V—�‚Á^)Th^yK‘ Ȭfùê�ÁŒ}¶¿éƒ¸:@«[ÅÑï{"¶8ë€M%¹\l—ñU¥_,ÑËH‹¨þŒ2!`{¾)[d¬[3F�ú-´-¿úx£u�b‚^ ù�m�gE  —1Úµ%hÌ ‰ D³kDD¦ûJ—ã¥#ÙÚ•y…vû™þž]äÊ&ýRЉAsÅ=ýà܈ð&5é6çËø…øu'"æ¹Q‹){Kê»GA be®O’›FŰ2*Tò¢jqSaµU6¬Â’\ÆùÛÆ7©TªŒ¶Â×ÌÛ¬¬ÓèŠ_ŽìxNGQ($/¯õsaˆÜ�5 às"ËFzˆ&œ)Òzh+fßíæ�õµuÇJ¬+ ®Œð¤ùˆèE Nsè ‡]³ŠµáçæÆÇ¦åq|å§©‚z¾iTXo?,àdè�‡á» %o3,E¸r¼·f5Ò�«~±L’#˜“УØóãyÀñÖâĸ²ú]ë`Ê!k›œÉÜ„íà E±vVèPìäÅMµ‚ö»Ì¹ÃþòÒQ´ÐáÍt.OШ DúÒãÌ»ci¤æ^iûS϶^dé'Ì�ñw�JÁÓÚ“iÕZrµYåme¨/f`Wò1íeÎêHœ*«)Ô`‚N6…Q¯YsAÚwþÄjJ{²l,³\‰&% �¼…Id‹žù­BtV•…2²?¯à7GÏzÃylskÎW’¤•A­R ­NË žØ5V* @>¶¯sê2ô¼)UyóF©šI3>#Î I¶‚¾ê‡e®´§Ô�©�ádf0LMåLr_­²„>ó©ºS=p˜=ëµ�JÓqQp'¢:ø§ÉÈ:kÈ¢J&ÝG\˜¸s¿žzù¤U+ë­8_N¾*˜íìh_ku$ø1�‘7Ãîüñj!ãà ÞYÖ b¢œŽÂIµ¥"© `U �9¯�ö½\Cñ”€Š¼ö-ÈœckÁqî0Ø;+‹¼ ¡V�|Dw¨hŸ°ÄðÙs¼öaeO!+È1Ñ)íºO£¤¹}\.Òâ½gTTÎ Bç,½ö1ýT3/°þé‚x;q—x1AR&X¼¨ïº–Úõ¬|ÙàB¡¶ìøÙÐâzùPžß’¶ÏÙé´‡K~¿¬@-�m„çÐ` Œ eì´*s˜‹kP„׬í�°h·ˆ ¸Áf¬"�ü2íK€¦qïÅå>f&:ÎX½?S‰šâÞZ¥Q± 9“âÔ|YðÁöSâj›F¯F~2ÇpQRÌ\�@éNØpU��òH^†Ù$½CðžÌÓlJÖó7 q Ç>s˜ñ2ìÿš½ˆBwì×*&«š�ÑNºýf†KDࣚeƒÍ¹Ó�»Â¤^lJ}¸Î¶¤¿¬@¥ô!ó�,0ø’íîF«h1· ¢‘Ë¥Jrƒ´{oy_k�ï¹gº>²é—º§ wTÏë³!Ž~Ù²°õë5Õ™ÒcÖ&ë °U”¨îC%š£mfÓ‰}’ÚA'ú*£-ëcâ„�|�À8Uñ×¾ utñT.èÚcÒys/Øe¼‚òYxÃã-´÷ån‚®P!þ ‰ÿ¾Ѷ6…†ÑŒžêK„Íù$ö°Á ‘¤Í»’qé¦'–¼Ýµ+£$øÝ’ˆ¢ Õþ*k Ò8bX‚…?O£DÓŽE¢sÈ[§MÍògeµéàËÁÇß=ê4eÏáë3åþ—¨sµªJ`'¬Ö$Ô˜¥Ç-õ¹~p0-ëìq Õ˜hà€)ÄÆô>¢¬‡1 ûdŸ¨4ØqÊJ cÑžÿ÷,± yÆï*RA]>LDʼn�,OI Þîíàû`Mîyu¤ÄèïJDÈZÏ#T#�2ú6—Þ(Áúh2 A.­bH¶º=\ç_Œ‡õF Œ® „ÎÕ„ÀpŒe÷Ð×ÙëXFiíàxV•$å,£›°p讌o„øº[ õÁT©–yÐ<¯ÆË–Zß¹/œPvGæ$hYâ_‘•o8<µ®y\yb† Ž�²”�÷Î+jâ4š˜w²‡Áq’`×]¬Ë£ÒRì6ºMKŠòó{n)a =e‚p8Ý&1;ì4FtÙUüG©òãÙ7ñú…Ya&ÇÆkžà± …ÏŠºÑ�›S‘Ýà’öÄ™ë{>G‡Ø#‰„vïà÷ˆ*Ì·Ê©^ÿÚt¯-©ß6ïo_-]�%3•Ÿ]<€f¡òÙ­§‡‘PÛ²8½£<7ƒø bùƒU+-IâÙ¯¢)_Þ»*œ9 ‚)sÎWý6‚\I;4õ T¢Ë_D—éÇš¾QYi$Xž-+Q°¾C¨ò„kCë÷í ¾ á½r •>42¢… %]2QoÁ¹,…-Ôдã#ŽëV‡Ò ‡dòœò4¼Ã÷a¦’à§ñªÛ²þ1Ä?káÚ8â[Ç>’mEw…œœ¼Q�“´ÃÊã²BZØ`ÚåªÃÔ[•‹H0UUë†Mý¼¤)óN]«óKéan<ÿ/5Í‘V8LH²Ä6ÍA½p]ž’%›„Úb¬_—Ñ–¤‡¬\›ˆç* ‰üÜ’¸t½�s”I\þ÷½Ê:×û�ThÜaæmHªiž˜¤ u§Á´ßš2þ/?�ékM÷,Å­¥¶·2à¬.ÃÔ1S:Ñ{Ã\„í[fÈcõE¦ =.› ¹ÇY4õ/"øè¦×ýGëa ��Pµ›f.ª2~bO|•ms.¸Rƒ½v!ÞïMÔL€ËRƒåJÀ)Úï1hí|a�“ÀÛa½pGîôY†+…sÁˆ6µOl�Kz[G“Äb¶£Ùç®»sè{?w(`2Á>p=”-íÖ(­Ð#ÞÝß>f˜FV%LÇ;¹“¦âÁíülhRöBîæ.æì¢�Ÿ�kœp²cŠm”Æ €]ß*!íbd»ÞuR3ƒUì«L  ë.O­y_«fEë¸pÞÍépÄ${‹`®ê¾Qÿ÷GEIgÞe4â :J ÐÚ1[?\¹7�0ž ÈÏýÓÌrATxa¿0Ëä^° a;Z÷pÿÙè3ÞûÇüÇz †ƒ…ÂñÔB…g÷›eM¨'©¬vK@‰ÖAx~jÒ¢ŠßIÿëÆU}2N£ÑfFóW"hmwÐ�È+œo†2DJÔ[z{rÓ;éÔ�9üúŽ ¸º5Ò˜¨¢]äÇyê ‡nlQ NùyÃ2G`4Rêl^0›{<> à¹ÓÊøšM'$¦åC­K,‘ÀyŒä)¦þ-”rˆ¸#Ë‹ãã(ÂP“M¼¿<𰘟²:enÞâåaÅi¯$ýÞ]�®šø`Ï:…ìÚ˜K‰ÎDtÔ +ì×’Eßã䬀oÖ÷Ó‚¡W±Œ†‘Æ™!†dnAÒ Äk‡«޼ޅÅ;÷=Ä8B ŒSìç 3�ha &E’fä¦Bi:éȇaûˆvQ[»)«Wµìœ“„¡ttþ‰RyZÕœ}K´1ÌZþµÄ¯.”ßqèž{.s»`:i©Ž{ç÷ã|tÓŽÇ`½ä€ZÕ‰§É(9ƒ:î:³–]ÇKüNv«A®¦(àN›¥W™Û‘Àb‰y¸¦â:N1 V*(x•�uê’×7�’PæÃ>¥¯í[ñ’úYBÏ/8i|aX¶õÁ²™©æÕ7ç�ÊZ2YaÄyƒc(£ÚQkä5(–Áñ‹GìE? 5�Ì -qv ˆÐ–;ÌÀYò°ª„´d=k@äôuçÕ8&È -ÀDB H ˜M›ü@”¤¨+",·UÇä¦îzçö>MRJ°gVWyHo©†…ÇMáúôZM…÷>v•V~Ò½=[Èg Lž!+ÌWf–—‘ùêc-ß�^�ýcíÈl¤¿Ý»gGë�£ÉX0§íg}”ë}BÀÓsw6Ÿq-@`ÉeÝÈðCtrSΛªtJd¹`>ßÊ dFÓº}’‡3é�CÇkžsæéd¾™½Ó„tYô›èØ¥0lNų̈ÉÏ(™‰€r›O*¾4/Þ;CѸoïÝl‰‹ˆ4¸EB¼™‡‰­î˜1θ]`U ñ±?‹m>(ÞN$ÿû¾³ú‹kz¿Êuˆo�Á«H¡1-ÉÑγñN?âñua(…ßøWüf¢Wõ¹{#ŠÈú'«ýæÂr>Í~jñ̆íV²€§K³‰ß×qÙ*……hõö¤[~î�§éñ„¯(C½.ÏÌíªm�8k#� U°É»žEoѼ5FT?—,ú=}ý«‹ÿu{×iãb¥çô–ªáå°€Ö}}Ý£ ïc (’ª›vÑåK!e‰O{pÕ€aãïä�º]„û»®HÏ3v/ß‚Qñ�“ 8ªÁAb¥å�B—²¡\ên†LlÈKT*nÖq5Uú9È V ,’óÁ3µ nZÉa#³Ê™Hƒô¡ÃT*D~Xg쀖ðYÌO½¨™„Ò†Lû�· äÛÝ�ç‰øÏð$Y'Ð L½(ZI >¸QëÉdÒU¼ÜuU˜ÞÓfZV/ßr}¶°æ ¦âä·¾FÖTÿÞz»vÆa Ú5=DjíjÖäùžT4”M?²v:ˆcáÆarmpÖǽnÐÀ( ûëêåW¸ +!ˆFE%Ÿ¼Øl[#�¼=&}1ê&ªßl?·y‹!.¢Ø†¡T-3Pb˜©|¶ñð4¨Èê…ªVjñÀ:¦è�ÄÒ|BŒHºìZã½å>ý{ßù Ä-zi¸ÞKÌm\ÓP³œ[“Äåö)A”ßâê†-óä{6Ì ¿Ãz¥ß[³ƒû0š¾•ùùhnÖ�eO�þq±šÈ;" (ÂE×Í7Q YHïs8‰CÓÈìW>Ko†"’Öq'ÏM2Ž)‘ð!Sò‹µuïg„�}o^J ÷�w¸,¡'í¯r®Ž¢¥€Ö¨Mýµ �v ‰„Äð:OSÔP.¤Í@"É:.ÉiÛrCï}Jæ î4ñ¼­é᜕Ž[s|*ütÔ˜¸ã¡öqXì_“* #Khò`¨Q|'ÕJçý©¤„�ðN.¾OaîÁb ÕÙx-ù–M0k›˜<œvï)8°«^ _ûbå±¾öâ­h�ê%™i~ždŸÉOÃRņÔy ÅØ}‚)ò¡°!—À ,VsƒDW­}ÝU¡Ãÿ¦^ý`”�`‰Â]¾¶O³w+ ð]]ævÁþ÷q]>6>/IÅ+É…-D§ˆ!b8×t[qøö½IÊQí¤`zªÝ¦¦S6=61Tk?R¹ž-—d! wZd€Ž½:K£eò û®« ER!ñ Õ �ÊMô¥'KÙ¸è¬Å98ò3 Bü¬•» Z.@MÇ\ ÿc?dC”bÊQ¹¶™F@l¾a?†P‹nwf4ö%)�<ˆ‹0ö ­DàS)~^·%Înm3,=ÈJÑ,%ÍÊzU°™lŽ$ùÃï}¾òpÂi˜¶.¤z9)–ΰÀùÁ_ òà-ûƒ¸Gd‘²&cý�´+^(Z;¡KÇÁw.òj…_Ž…æË¾-}]}¿Vö½Ñ›Ñ#I[ ÞŠ\pø‚Üüaê•Sd•C= þ ¢ñpVeá·†1Ok'V°3L 3e*ýãíþL‚;g€oe¼¿t�Œwß ZÑVéOVx$s}Bˆ�ÿülÇ F?ÙÅéýdÇ”¾ª-û<]×ü&A°(!´é�ÄdÙ&ͧê#æ¶¿‘�1d�ÿÿ~ ^cZ:ó¹™pVhÃn;h*ω°›7¯ðAzÝæ#ÆDµ P|è6d²ûæäbò#›p,ú/�/Á(‰›._ʯÖx…‚‘´oƒüêrð‡ïô�ÃÊÅKaLjڧ•âÔK^‚DÝ®!^ä6 «£×5Ù%lìÁq$ÀçMéàáÌú‘ÉŸGsü_„9xÀß±‘¾mt"ÎËp“¯±^|l³.éàͱ‡”«¸@¢žTm=ÍÙ£É~„ ;ñÉÖ°�ÌS"ª ÇdÑÇÂö€ *J�AGŠn”É"B¢&>Ö�@?H¹»µÆÏÝ⿆~ Ë•ÀŽ:BÍ!8z>~ 3oºé‚ž¦ÿN”GOù½ø&çþoAh�»Þ[²J?þo%­™í¦,mˆ?×Xô\»Ïz÷¯ †9¦œö*ðk:ßÔ;·÷¥í±Æ¬!Ê€;vàT¿[øL÷ ¡õ/ q˜æø<²–¸`û{MÆ‘ !Ó|O*3%}èÈ/”~¾³ÚÈf+Ç>Rr��/å@í†?8SïQÕúgÕ‰z½'ô.vG€à·`§& ^’éú}S…·›²y³B°ÇföѦ Û¨ `fI¹}Ô¦f¥X„h·¾ÖfXÕwï÷ò\f•²ºÁ•ÈÜ*“È„€þ’Å„(¦îKélȔ§cL*ùd®PB~ʳ2›¦êÇû�}øO"�þ WZ­L<(—8°·}üO¸5V‘ˆeHõëT�e÷­ŒlŒƒËYÐü•c B÷tc/ �òœvcþ1†C1›í™Ó¨Œ¹õõD BE®¦ûÙ›QfÊäVœÁ_ˆÔ‡(_ãÈ)õç¿4þ…1ä�äÝß�±qí•ðhC¼”Ñ#IO9ƒÓ©Ùê.2Õ;д'IC àò…JïtªÉ€ Šq1—T¤ïÅSÔÅ ¯µo3t>z TËþD¢O�ŸÖ³¶+m&¬;z?êó¤#¹;VKÅWå$³æB;ÚF:5Y…·‹@>Î=?ßé…w*Oˆ³øØWÚèÿ¤cRÄ’v±a¾Ç~¤âH ¤%Ò‡¹H€ôÜpÿBßKÛÙ@XBÚ.�ÿŒ{¡.¨d¿›üÓ�ÉcïúÓIœV/;_Êyéqg�©GFeß—7±�ªDy<#˜Ž¦ÚÈоÈIáÓåáôæŸ_E]i©¶ŸM;á}â\,q†e qÙòá+" •Ro{\ø[߯.,myàØå*à)sߣ{rGÁ48$Ñô§Ü©äÔ†pÙñ±b C�‘¡gÚÙõn‚s§ƒåûÂQkÔñgTøžÿi_š{ŠD¬¢ÀǵFûÑ׬JyN([ðA×ø �ä ”Ñøa–ÓòKõÉ Tß–�ØÁ…L‘t}ž<@Ðïbx²[âñ+¢=¸¢˜”ùaD ••‚æØ‹Äyb§ãßå®p[ö2‚ >¤yÊEµDÍ5úBs½\–Æ¿ì0,wƒžZ{ÙûÉ c.1Žô»ÈKwtÜaMäì ®…ó†½Wò·1V¯2À}öê‚ÔàÙÃU`¨\¿¹dT:¿×6#ô‘Î!M° BŸ<JÒœxõßä¼;d.†.*IÈX‰Ï,6ÿ¯^„s®VŒœµ&Æ1>åÓñíRº‰R¨Á&µ‘ž4lš$\"')ïAiŸœrÄÂÜrçpíH&á¢*;rÕlc­ß<¹œŸnc?*}d²ÉÈ´ÏTN‰ªJtÞ‰ÿ}ïRÛ¹ö;î7•²Òb$†rýU2ÚKc 9~¡_Þ ÞWs cZö³�“ìWÂx›…‰Jœ{`G•´42ÑjÈÛ,È)üäT!.Q묠8´ÅoÚ²µ ó½j£k:ÂÐéÎq‹åZµàm¶öœ‹92Šé”çÑî�q%çŒf‚Íù�ìOxÛ«lˆ¶J(l"D—*OöÅ>”)oªÿ7Ó5É풾ƣÁ÷~לþjwÛš3»°ÄøîjlžÌ.æ.¨öØð R¹gIíåÿt\fvKëNïxݪ¼Ád‚ˆ‰¢¸HŽÇÎM.Þ™ì?(᎟à³ûä:tòƒ£’¤Rì¹#qk |‚¸Hëq.tO¾º›[‚m<ýÕ­žÈ‹%8aµ±a(ó8f¯-£À®Œw)½Ä.»Ô'íàÜpãïåÝTï�u˜+Ù5ÿÊDu=Ìİ:†Çmت<“ ŒŠåÁ"–Á|/™}CÄŠ Óî>8 B‘œò`Ø«ê�vûìXÝœ*†¾½Vh”mžà|3ïÍwß,V”cpîE ÕMÔÀEŒ®ŒfÍ:+áqÜÌG$%Qª"Jã §t½Oõô¸'¢î¶¬ƒ+Âk_†ß¹²íò«¥È?ø`ðŽe¬sü°\ß}t ;£Ž�K‡2ÏÀ=@ ˆ&Ó’·8$Tç¼D�Ù§ÚúáU4Vã¡9�4L:”šeÚR�þãÂêÓ�"†yÍKÍßÍ»˜.œÙáVSM³�8%~.i•*A¬8!L6ûè„ç~% «R‹�—*Ëìãf_ÍxÀÛ·¦•î“ÂÐUõjb#'­· ý$œíú0¹á<3>Vb –­Ö Jß2:2‰¢å:{õ™Äí:²w¹-_tìyy³<«Í$œ¤³*² G]²ÎKÓÀaNÉÐÍãÉM�#ÅÜLo.éÖÿ#Ù.¶­£º¤¡çþ2N 亰Ö`‹ì¯wNV‚Š­RO¾gL!ÞŠ÷›Ûw²­ø¡äXÞ£ª 4V„Iþp]4C—Ügézv‡¶ÚÍà÷ýURɽ–Þ�ØSݨLGƒ;ÁHu•Ø‹).+)•Î÷ð¼ QruÁ“’è|©ŸÿÅC†Up·†ó»8Yx¤=ðò�WKÞŸ çŠäßJöÂfÙ]j¨¤¨Äÿ_ÖXæ äXlÑß�ÝÛàˆhiÞ€ùòûEü9;ð4”™?ž<Óhöð´pØ%XC�|y9ßÅ*t(BÈ/ú²„ê‚xö ‘¤ï ø´hw~lJ'Çßf+·êöIõow &‡YÙž‹zlË?*$a8‰´‘)Ý‹¥G^Ì}Òi_¦wÒó’Ö[^%,¥ªF¦x*NÄ¥ÐÅy�âɨ§¨+¡r-ëŽí'wû`—v®—Ü]Q¹ŽÎةЩ€Ya{í¸ŒÊr(öz¢;¿;rÄGíçfÄ&÷oº™n„ËbôîSĽ™ s i�ídþàqͱ`¬úº†ŸôÏp•w–îsVªùøñž#þœ=Äw‚…¢dS© |<¶2“fÐò€ˆøvZoЈv ‘¤_b$~,6·>ZæH7Ý"¨*åÐäÓF]•9ÊtV«VÜHféÜî…6Cðª5?Pg²¼KTÎÑe-jr¦êÈßÄåm:þ5Ù¦šÝ”jm~lä¾êêšØáwÅ“ø¬A­Äp¦”½âÈ"ÝÕ^Ý|f}¢>¤‰•Ç=hè/;o G˜ Ø3¾ö�ð�;æ ÃÑ�f÷>Fîéâ[K¸ƒ»õÔEk½‰‚Li´¿Ù:—q¦¢âŽ TKð¯ëñ–^µX+åA¿10ÉØ„Ìi$¡Øy¼v§Rµ8󑣞«ÍÍ× Ïeÿ�hoPsIÉì9ǬJìš`„à)"mü4‹¼ü” ¿´ÇImåcÜàx³Àn5²¿/#•Ôú–ìî,DŒ)µgTÁ¾’!°ßF;oÁ8Ç8UÖ 9‹o¶îhbוlõ™AÅáŽ,´ÿM2@¨Û”]R ÖæÁ›ÑÏl–.¯ìECx,š”þ't{O¸ šóXÃ�mnþ9—¥Äb£ºÊ Ÿ„WÚyGOi�ÌLÝ©t/ÄýKòmÊK?ÐKrød€ ýªÞp™©‰œod=ɰ„D V£Q°+*;ÙK/’½Ý’Ú ójQ\¯^8H!ùF¨–Xî#è÷öºøW/t Þ)4Ec±�kwHxØÇÑgX+K„"8‰+ÎÝoã·<öH)örý¯ËŠ®ÄRÌðvÂö.~© <©ó á1_¾®$õ…ºýQ„ =ž?qJP¥DjìùfÔ�yÇÎ^2î_ˆgÜ á3H2ZÞ8|L4£‡b~Ð/ú´µ‚èåä×�P¦ð>bÃÒnßÖ:—&è[R4³%,Hžp:‹-‚™8tC¼¦4á2zÚ´òcó}¾m÷»ÐçÓcÝ…÷b«zd1e Q¾ÈÂñ “¯áÇ#ðk»ð‚}~t_̃v6 åó0Ó”‘¤ñU0Œ’MÜyÌØøñ¿›¥ÝÙ¿ÁR6uµ‰§vaü' oXV&߈ÌXyÐ8åxÔ®Ý~�úÿ…‡K1rbÛ|øJ[V>“‚¤æËÌußxö(,Šö`¬a”^UJ4U‘‚$.)Ô­S¦ãG Ý Û·òÒía˜,ûÞžw§–ZǼ²¨Ou¯‘çš’‹APŠlrÐ|ÈЭ› »‚MºdÞ7t)k0¸Ùp'�—HpCwS`÷�-)›J»¯ý3/ïŦ÷ñ|K€ÈãJâQ�¿.Æé<‰ À€ÍFÏÈ•¥A‘F�•ª×Ö!âÌíôGZì=²Œt߇!I4Ó#“Lxv6ßêã*ÂàÅ-§ðA�ó–)4õX°�‘a¦i³Æf�î¥^&95㌊X ­½î‚Љ0:üóâ=ÉÿIͲ¿ ÝAè?&~àøúûHœ·Æ-Ø‚i-(¹síÜn $$˜b©ôŠ�Nt Üí]Õáÿ.øŒ¢j“ϳg§‚œˆ^ðÏàâT|,ÀõŸ…ˆ6“%®ýlFƧ c)ñFIyöRLgî±×­|g§¥h\ˆa‘¬ _¡˜ö7= zާt“=°]qoèÔÑ_­Ô¦4Ѝ¥¼hr=@ù)7J˜Qb¼�²ottçB¶n=Ó÷„8ÉNi·¹JÆu ý_FšÛ›ÏÅ;h .Iû¢mTÔk_Ê{Køcõ“QÈ»S>§2€F1 Ñ`]¹Š4(ÐÁ¯°B®zC@‡/ ò“ÖÓ”zþé°ìçÔèë�(víÆàiŸ"Ž5W·Å؃™`.‡?¾œÌ4pD̬ BM˜—w~)ùi�(¾ôWòkJCß•öQŸ”€’�¸¤+B¦ y»¼ü™ N¿êwÁdÏÒέM °@,fFiad¦WˆÏ‰UÚ_µh�Ëa™¸›úŒ¯D»ÿan<Å0˜ðG%ßhäYG„¬µRv Ì"؃×ìù½: ¨Ïã*”{|Nø÷äEÐböqh¤ Þ¿yZñHGóƒððƒ°¨èŽqÝg0*� yý%4h<ë¬z„â�o¥s4ú!e�(½ÔÖbì('¤¹�—²—½U«z`ߨæUÜ,Gûä[ ÷´`Ý~;ÓEK‚N%1tï쬚èćÁøÒ»#$&Œp¤Ü9 Œ!‡ÉNµtÔ8œî ÈEù<9û_uZK¸ºÂqË1u¹?šHx¿§˜O]v29�¦ )†Õt±CêÕ°Ä¶Ì ñNz>*™�iêzd'ÀäŸ�2Ü®Äî³€‰æð¼k¿1ì8d3¡ø!×VœÊ :¦YGA—LZ±B¦%¥h6§÷Ð8Cjzô›á…÷çÝ<[#N:#S_³C~™CÇzür}ºXKùËÊ "ír¨§+|á�¶¶ÐÛè÷–—$öis,µ4s*mæ–Uf®Êm—»0¯]žH4JS<¨ 6ýõj€ÃF_ƒVmV¶3‰ÂAú;òJòîúñdòÖ!Ùsð÷6½'îâj@Q0Fãy©”ª±ïaIa&Ég؃MÚwmzð½ ã€VJ‘:ë«�–±G·‘+Þíax¢»?8<ëÓÞÓ_ä7ù§)Õ4þj¹a䮇f.œƒÿˆ{§+kÀ¯¸ èd=g2µ>ÜŠN Þ—@ÕWyãô§/ :F6””riv]ž�m¢yè«i(d׬q™¦÷�saÑÊŒA²Üó°>Ù9’%¤ ˜q‰0Óº@äôãK<™ë8Ë÷Ÿ^M™ÐÖdU°FÖGzÓð£Á+,~ÒòCB ,fß oHä<ò£ݹhSЩ ë…Mʦ¿z�N‹€IµôGžÚGŠ«‰ßÿ¸¿zíÉè ðDMÝ»©ÌQ(©}·32³^™8<¯tú+²Ä�HBLµ¢úT(:hßYæÜKÆ�<ìfUsúÙÈ¡åú˜"Àjô1)?®P²”å�cÔ©¸�i!¬_‰ÚÄgàUT#Õˆ¬ž}5Ê‹-È%O7cì¾½Oè Û¡-øšc´Tü=ë ä˜bºO�v)8Ç dÞÿ è;tI§o«ÜÌ$¹U°¢Þ–µ°'þ¬h=ªj€vM%ÔdÀ�ø±¡¿à1U l3Š/f¡™t†˜ƒð'§Ó\(ûì•*9—½½X)í'ؼÇ­^džD;eð0 xÕcÛJ  ³TȯPïà+‡b�uÄ?†kˆÉ" Ãɸ¼aéÄ^¨YØrdÜûÆl(î 7]ÈGË�IþÕ¹Å6·?Ÿ !Äð}L’º&.©\/Ô[þxµ P.Ì`»öB›©pvŒ<âÒð|¹ ÞOm®Ô /=\bÜ©m•þCÓgòŸuSùâ?zI¼�T‹’ÀbóÃûæAÉ\†Êͳ™Ju¾¶N�3µG  RiËrO"ª ¬ÝCÕ›œy"Uã÷‹Â�€¥‘õ³ô5·-ÎU¿0Ì&ƾÃhbÀØidÇx1„ô÷ãnÛ ä%¹MþQÝï¬;ÛèѨßT1±Qñ '‹|ÄX�ATońթ˜<$ö�ÊÉ­!·•¸7W,Å‹-¼špÅ“â‹ñʃ-¸ÓîSb®—m0y­gQ^³ŠŽ|fÒDlèÀ"ù•Cp.dq@*?7È$üRn!‚_/>TfñÇó×4à ¦×K�½]±ê윦Ú82³ô1¡ú‡Ø$M¹¿�Z';–s _·�[KN¨Œ×ˆ ð1ä²ÈéÓöûnÊc ^¿Ê­c¿oKز€€D«=&V»ø7ßð‹)Rå^/³.a1¬ùŸ;Iìe[ºôWåL �?%œ|#ÏmèíÉvmhü¥À!Ò*fÒvL‹ÀYÇ¡\�¢`æÎqM©!Miõà3¿{T-VëAœý´7RÑ rL÷Èrš”*�möÒÓ(Ñ~R¦ؤ£œ.ùí‘k ‚(Î{¶r¡�à%7“òFàÐhªÿ�$ì@1®·|Ùº#žâxS§Ð¦€Ò Œþ‡Ä:wˆXeš)B;0/šv¢ežO\`žÂ׃ï7¸®™k'Óxôxð�þ òM8nªÂq ñHÀé`«ér‚©öÉ(ù%¢òþÝâ9»§÷)�ù$‚¥Åü"éó[aŽßþ á?©7sÚiÞõ8\&µÕvßk'�aó«/÷©_¸Lñîÿmá1TšI‰ r­ÛnAö‡I°·È Ï�Y63·†=ÔÐ~=ª œ#Wvžßh‡ '1…I'Ïɲâ¢ÕžF`ˆÏóE“Þ¢c _Ì®•×°kSbÅo%s䓲>­¥*pÍ% ŠÝU…%�*×=s-¦€ó„Õœx¡+6³ˆNã øÇs!«n\ÚöC¼ÏFVX[ ôo=[sA>¤H¢d¥ëɯýN�ö~D†´7ö$E€ÃsÛžé_72ÎÍLòúJjâzcõ;è&ÉW€ËÐ$z©n�ÏÁ“õ'+ÖKÁ ­+›ØÍ”{÷ÕØQ2Tµ¢wYIãØß®JdüôYWàÀØÛ‘&ͯX´tÍs€Kµìéú*HˆæÉ‘d¾NãgM÷'ÚèU2nÕ½Xžaá#ZþV¤R¥`ò Ük‹;.Ú-}< šq×ïžþµö!�ÐÙ�&ºÕ}ƒüßHˆpН–77,LC³üÂw‚yá’$ó»×ö°¨]£aô<à á{·Õ|×C€y^ÓÅ>fÕÊëI¥ï'f¥ùO°ðLf¾FºÊuó ÑL”+64¼Îîñ{ž¿9¤Þ¡Ž~«ý ¿ÃRAæLEÕ˜ÏAyý³Ô(VÞ/€“âf·†áŒ7¼"†r#V’ÙÈ@ \P™�¤Jý˦ðR™ÅÎE¾êÌRÃú»�à¦iãpiÞê %¶NŠÔíŒæ{¬ò� ïÝ.¡ U†íº¢ZsÆÊ‡Úþ° Ú�,0Ó|.ŸeÁ¥–(N+½® ø�u§Îh¯q±‹£)öÛq NcŽD,‹Å�ŠrÞ“ «pÖÄóM¢†¸ùÈÉ0굋CÙ!XõAiÑd}CvÓ¹ïÂ+÷Æn›¯¥`^Œv p(/36*zIñ»©Þ¨H½ ÷«ŒR»KµÏÇÕ«Äèe]àyí)õ³µìZÒ—#‚Ø4ŸëŸ6zEÖ¶Ä "¯‚LWÁ�ƒmu;r^9c þ ´™ÔƒUv9KÖúÙyŸ=ûH›¶${�µ3…i€�°ðUC/O·Ê«Ã~ΚHtü€]‰ÒŽ�ëMêÚŸJq»¹ß@u©ÇŒÙ?<-?× ÷q‰4y° k :Ueg  ÏÌ7…^‹´Éú{˜³oÍ@ß´ ýP4Z^y ¿-ês“ØÇñ\ÐÕzŸE§:¢º’Ç~žäkôæ&/ƒÀ£”?éK_cÇ—îoo‘ª añRÜà wBÖ¹ÉCãà2KQ1�JV‚.n4ém'¬z¹˜å8$-²ÝIm⢓§6s WLñú­°©à1Ä›þ2¥ñ]† –ë¥6fï(’¸œÆ·Z@IŒñ{�û¸÷¦„€I' ¥~,À½/^º.`娟„u´KA•ð[¾ý²Éª˜ûPøY·H}CÌÞŸeWT²ôKðçÀ‹?ª³®'«Ôµ#îz£G2Ù»ÒÙ³ $à§Rhµr“ü7¿_±¨ä¶â˜@««ÓãÛÝ o›¦;Eqý·°+éq5CåüÁo;Óÿ"!’8pÊDúuøH¾M±vßÀº®=ë ‹›‰èš¼à+„øAI¼ÁnÈT2 X!dcñXå5’Ë,¼°œ“W±Vã®Ò©ÝkXÛ„òaÊê °Ä¡a`²þ•ûRx1k"�’ë¯Ï2t›¡èΜ�=3m�¹·žÊ�ŠVôMë˜85ˆô¤�°lƒ&H5I öŸ‚V†$x•�¤;]×;÷L$+ „CÞ˜‚’8Fa-I€„P–Ë-~õ LÝzãïb–»àQÙ4Vƒ¬.·Þòφ3!ºÝ€&´Ã|2(³øÑMvóœ¶Q„˜èØó¥$GöžY<¿;²�Ro½»ïš½Ì{Ä;N–onÇך´*;~¡{|=ÿÈz2yþ¢‰b& ¢´z;í©ä×@fJ8U°±jFÓ•r�n™¸ÉS?OKzÁÁ(ú•DýÈàÄ´�(¬oœ`kžœ• »Dp¾Œ�§3ãñ:¸óý±ßõÐ0˜JâØ¡…T?\Fu%ïqØ•û±a¸£ê—šhXi;m%¼G ï-#·‚Ѧ�_'èøí�eœ'D)Á³óy¢sX,Îd&Š«ß=^õe\<y˜uï¤&¸è€{vë Ë9 ðÀŠÃkêúÓúš1[¬ó8à¤W¶’æ�zK¯9Gæ�}ß–Éß�"žŸ×òó"FÇË&EgÁ‡ª’éjÒƒ²€gÝ‘nÿŠÂP²§QøÀås‡ÈÖŠˆÐRöåzÜyÚqƒ+uë*º# •|‘«my †Z�ˆ8lš©‡4ƒñæÔÇz„OÜŽLbgCþ£Ú "&Ã̰‡ÕÏK~Y5Üv:CmãÜî©ÉSïN<º°.ŸgÒûo ×�±ÑIHEÌ1X`í1ÏÜxnÉÆòBÆ×ƒÞ¯7(í�§� ê†ÙP3©¯•ŽƒP'ä#­Ï¤rðt($ßýFc  úÚq§¶¤Ôv‚y ó*c×øG´Y«Oª~lùŸß©î’Ãýñ³ž+0A\ñ¼7�'Ñ;â,ª‘4› kúò àö)Š#ˆxç÷dD* Íš¢˜ƒ,k•/•…Œ•~ÈY=½Á÷;£MSMRO-òÌaO¼Ðû<É!V·zȪ0b^ÜíÛH¨ÿÓΟ£b…Ëz´±²ß‡Ky„̱ȓ´ˆ2[D�KÓ”ÌÆ Á¯JjgÖ¡bŒL·N1Ñøou¬]L¾ ží Ìפ6 ºÏγ~"cï„[ù& ‘òÝ@šY»Ô{!@¦ê_T#´…€ÔÙP­„×E’ƒ”¬1á£/Ïë¥0›záÏž ì>J,¯¤Üºu·KÒ¾}#•?×ä~Zëc÷zÝbšSà W®ž�Ék,�\¾2§~37ºþˆw»~ÉÏ/e=û› <â¾ñÆ=j-$M2DX´P©´Ô„¸üøX4‹x 5Ä„r­!RW?¾Û°WØØ× ’Ç�ͺêEy1&“#‚'¬¾5·G³<ª›Œ>Ûü›#ë:o}Ê�—l´cÕBaÆXl© Ñjïð\ÞÁ(q—®§ªº¬1M$˜ºåP ¬!Öæ@@ÃÅän]A… ¬£Ÿ®Ek9¸Éè/ÎÀ¢: Ør¯´¬FLîFfÇ>/5Îí£~æJT}.Fù)¿bHŸŠsè|¢Lè#ýŸT?Dc×~Z¦7ÍÙº™Ôlýf9Dg 쥭ÇcŽ^ê¬7‘Ê­ù¢ð»8 LÔ…´RÞ€3{v�úÜûQú¥ nkCÎtD…ðD6ÃéYMo éîgÌÅò{íé®Ëóæé‘›w"¬kx›&-×Ãò~œÛ…'a1UÔ–}ç(ž=}yÇÞŠ…Šöæ]_Ï´l`PSg°EÈÜbE�Žþø�0�'Ë�)ß e,LO·ÄÛ¤o6>°ÎÝQÑ%7‰Õ÷«Ð–ávâûeÏ�#,‡"éÉPÁããeàb-ôÓå³WÒªÉKª-’¢<+šŒTÁ•Õ)ü“»Râ­û 9©XÁµ-y2­Î%£yˆt/އ•Y…È\JÑÀÓý—NK‚ÓÙç´r"]�ʰ|C›¸8æ² …à†bE\L™»UÀ�­ò$fñ-¿�:¤A?Üùµe¯±t1 íî¡S3ØH¸G½UžqRqþ˜¾ÃZuDiØËw.àê:ÂH>¤è'÷*žŒßöQJι¦Ó1V®…cׅ¦¯ÃªËØèdج׮K*c1ã—g0µ„ÝxáåØ_Dxê×€nV+¤-0á„Á=ê´ëüþÖ�¬/ËK‘IºS¼VúÔï8Æ9?u ‡GR8At+ÂÊâ5¸…áå¤�´�þV-Þ2ÿ˜¯ÛÂ8ü=,ù•„ ¯A’÷ë?CSgdÕ+‚T5ÞÊx'b;.íÂ|OÇÇðÌu'æB1€ml½]å`¬:bH§¾áBžŸ(Ò"9êOÕ¼�Á.�Œp§DKO¯æNnÝK#ÿ‚}‡¢�ßs³Ú+ʼnÒÕO«˶ÐcÈŒÊãlV@zõËO,°á#ß]±Û´P±ôž»Ôir9wíO�½ûX[uœnºÚÜN´»e+ßûä»��”é�uJ6_ú@ƒ ¨BS�‡¾Ð»*"ò»à¶‰Óˆ¯µkOœ��`¢;ŽxºÏ�RIíIà.vH0ç:ûeÐÖ t�£vmÓ:Î׎ŸKÆ~±)LL±Š±›äæZ혭]k€õ\g?�æ¶ú�³  ¿ŸD©­qÝ89pžr»—ZÛEr£æÑÁHg -åo…²feï¾D/yOSx\>*“–n¥¸¯Ö~9QŒ<ç`’¬!¥ñnþ£TÐÁj)Çb¹ø”’ÚåÏÇÙóâ»ÙxEáÉ2.$€÷T£œ'd¨_&ÿ¼c´9ËÞ„PQSiþ¯*¶ÉÑy½Ú¾žk3ÅŽ?î¦9¶¿Ý`Ç÷¦kºuÉÅ@�ÿ;mz9›1I’Lø…ðåh ¦Þ1ÊûÕÐYÌÚˆ¥)?ÓøBw}¼…]�Då7 Ÿ"à45oê8/1fîªôJ“,c߮؇ì—nùÚ Âàß5ü%¡´•ýÏW´6‚»@qæ†×Ø>M'àAoª€PaEh,´Ê8wåü�EŽosºÜùQ’Âù�‹‹þ^ø#@veÁcR+Ä|È™añlÿã†cÊ­¸Â#1¾3Æb¼+¤•{ MSÝ|üÎðÐY_ ßR¿7›ÈÔò)bé좩2# ܯ>ËxºQTºö°�ù£œô…͹<›èJT‡ç&Ýk?÷�N%ŠOEĚѵ`ÚàÏÎ÷3A¹?Éx0Ÿ ^8Ηã#ÌÑ ™®ï`®ÓY×*0¸°ì´H"ç#@6›o…Ò&� >¨fÍ�î$sA„X‘« Z‚< ;5ýèæ\ÙW´ºŒ5†ü%W‘zþX-‡] ˆÿ­¸ç%¦�•Y:VÓŠR#Äëé�ÌR°5Oj &•(z°8Aúî3Ž1J¯ %©æ.œtµ1|I¿ ýr”H!Pkµ­ÕË�ÒhïJ�“‰û™'ûyu1™¤ˆÌ]ƒ8‡×e¼¥‰Bǯ ‚˜¡¯âPÜp™Ï 8•ý 5kÔ�E6Ñ0[™u•ÄM,Bc�쳘®MÛyDSÅ;¿\��óêzC,'dHjmöŸ|„ß”þhÚ6SoðÎXï ÊKÕi±G-s9™~¨7­Ä†™Œæ´ë“A×™ÜdVâNêè5Àü«jl»ƒž•¾�²‘Ë6%ÇŽ¤µ€ Åó4 úš Óø`NTü²›‡T³Á±lÌIÌcŸrïáÑùigb6bíÄŠãKrb–4×Ý%vÖßaP¤³ÎÙÚ¹yÍòåîÕ•ò¡ó�†®f~§åïµæ=Mm˜²ñ8-�^>ÝVºl²Ìð8èy M×( jÕ�K–r°}yåÇßÍ/©ã§%üY”¸Àë ­p4ñÿ:ƒümÈYéV�gÞ—¶Y*Y†ë  §àF7ð\´È±8%eÎôE*c^-n;s eõÕŽ˜šÔ&[U�øß�ï+ÐÛ›&« áz²7@a„ñ" ©ÉbúW(›ÝòPlºt I”�WFœ 5gßæ3ÍÑßÂs!WœÔ`U×4J‚c›©™ÿ ¡Ì­-ë=5±<�GÕ»ïI<6 "ò~$–‚¶* 1»‡ […í ¿æêaî6„>‚pŽ…¤PÊs:“v3Å`£Éù VnrÜ{ Pºd°Ñé[H «â1اÀ¡Ä[ 6祵tw/C¤GS³øñE´[q8kZ['N¢ôj>—8¦ZqCõ”ëÍWø~•.¸îžiй‰8žÀ/·6]œÃ‡Ô¸á¢xÏdèaô‡#é©� p�ô>òI ß†k ÏøÍ ¬ÆbFØP‡xÞÔãTóc�|±ü kHãaƲ󺌪 3Øþ¬UT>B—»w‚ƒàqCÊL •BVô­`á�Tµ å↦k5JtØíã Î�4¾ ·£8·yÏð5 Kõ»‹f$Å©¢†ä«Jù©`¤—ˆ/ZÊŠU—’Hþ¶¥±ÇDÀt/x3Ÿköÿ‹Ôs tl³!hˆáS°^ !¨i.E#a Åoø,œÑÕƒ]°°²‡,soŒcüì›ÃØv ¢o¹£jq9(ð1¦Œhït7 G9rK|ãÅFÖ0Z»�ÞÈAÜx®8Wj훎x¥«ô�–¬�¤ehBpóÅ^,¢Ð¢•�üQ°1‡Œ¨{ËXï\k)ð¹%PÓ•è¼húç1Tª ú�Lbw’�u„) êk*\ê5zôM YIBœK€ÐÌçCƒW—Ó¯™D’p̯C‡ÿذe–Ürpó%ñ0eØñ¹cÂüœ›Ü¦ˆz¿n“Ε4ï�g”8s÷œîÖÑ&º³´«‡–XDºk9ÄbƒzÒ`kÅf .g[ ëìüt‹Ÿy½¾ÿå… Îá ¼tüh;žºÿ~r¯z¯ÉÝÀÍïÐ?6-âs­Û,€D¦<ë€UYbt‹â˾ÐT‹'ïk9¿ œÜ/þ‚�6ý&r‚l”8Û*tt†ýøBÊy{ 2E‚WÌEÚ-Çih,�£*½&²�&$ÜÄ8�‰Ú¨½&½tù7ÒG–«`x?€=ä_¯š¿Þÿtfÿ³Ê®šÆ¡¢Ð}mRžH”r.ÝŠ+Ž8Ïl–G¾ð´¡uÍ´Š¢ðùß ´D’eʪ÷´FJ1èë,“[ÓùÆ:1¢G—ZÏþJ–³®ÛƒŸ.e6É€‡<‰ßa²ÔKXˆ"¡žÿ-�¢Ü’|g Hœ÷Ïuä_÷§û-†+fé!V]µÛúCôûWž^_Û“‘ATb¿{úis\äé^¦øüx!*¬*XH-wö§ä"…íoð:ÅÅv—5´,¯K¤ÝÕsmcžP¡µÐŽ‘ÛÀ‹Ãö�+RT—ö�…]Ú�\çˆ=L¾K14σóN­IãUªðð<ñž¾ûa—o�_ƒ�JØP8å0]_ó{_˜Íƒq€jì²ÑDgË`KÿŽëÇrRíI=ÚǢ–ßâEpè³ÚËžíÞ1‚ù!ÿ_vñå…—�œyÇJe&–»ÔY/„ÙÍ jî8zIåoÏ$ºÝÀ‰&0ª9›ß͸BÉ�õ±‘ŸTÔîÄУ·§§£Š÷<õ�/u a“’�QéÿÚÔ}Õ‰Ø]’Ýùo¥“THW³a—ÞÄÔ_E]–7¼»¥Ú ±-ÈN\Må dím §¯4}zøŽü{�Ô2p›þ}ÊsŸo�s·0»³Ì3¯S𥲮½p:ÐÝ*¯´{�aøË>C'2 ”«ŽLê+Ãbˆ` sš@TxE§É†³‚bú?˜xÿàÍx¦ªYF£ ÚÞhÈEbÈ©Te­ƒ ¢.jϨžŠßnUŠu.7#È}%Ý¿x¥-ŒQH�ì‘^£ ajcî¼Ä Q>ßs'˜ÿpGûzNi{‚y´twŠ47òFÞ” ×ÓkZ–@Eš÷µøè7çhÞ'¨DìZ_åjÛ,"· S8bY’ tù0…¿¹Õ½mo°–²ÅÓ‰TN(êêRÖ`Ù­”>:ôìü¿Î3MZAëEÇQ¢ ½$¬Ub—¾ù�¼‹n)iJªÓüÑ/£„‹4 u¹.HøT½‘Pé]/÷3†±@`R\¥.¨HH4Lh‰ßz•/ ûñ³µÛA—;Pb°�Eîëä§–ºï {×OúŠÐ޹krGÀaöú@d?«omUBòI½á͵Ý{Iü ²Kª_²Ô&Ù¶)¨Ô�„Þ©x¶£óv'€d‹8ØT¥³½õFzù½Áw~Dj~Ö< Š�’ƒJf�pS åˈˆ'Æ·“fRë6ù?YƒåqŒ’!"® ÛLY¬ž€x5ú�䅗쇄63�†»MÕ‘µ‰Ý¼ãŽÕû>¤5lÉÔEí^Æ‚:­Ž^i[ïà:WŸmwG6K3_ê@òšÃI*ÅÈ]q®É´x®ˆIǽü÷ÝŸìÆÛ‰#oe�9›£àWKL'ÁštŒåG%d›_ÊÞÞ<»òkµ›ÅHS;h„¦ƒ±`wª„cée{ EègážË}º°:Œ!y¥Uºt†º©êc>Õ'í%oSd¯#ËÒ|¹ËC{:ÛÙs<Ÿ°¹ï@÷Ýø{“ÿDÂ%˜²=„fÝTxéËrÕ˜_í¤³V9}`í³�{Ø�¿Ï€ow4ÈÐGÔ!ýZ)œNä…s&›ŠYFXx¡ÁqHÜÓW€‚bøöÆ?q&‹c£mBÑ Ñä9ŽÖ9MIáQúÉ-s)Âea¹B›!ûªt‡Jº4Ý0¡®1¾ÛðZ�ŒÓ¬»/Æ-”¿±£ò«#¸å)›ä†:•­´ùEÊH„$#{¥¨OŸêH³ëOËÊt�ˆP.zˆ›K€ßm±«,÷w÷2¼"3Ì‘¦”ŠÌ´^”ù5WsžY�è^hFÎüùRð‘™¿0l¡÷تJ!5µúí©HjZѶÀ×r(.i?ï;Dèî/ÒÒàÖ†»äUX[ƒ¹0:ÍÝ~BAÖ‰`ïÊTwº@&§º�x…¨ÆŒÔòVòLÛá uÄèhßõÓN™QLIÛçYcƒK«]Ôq…‡P!hù8sH©]H˜k„{N$é'À`•�–¥˜nÂ&e›F[AŬe¶™„‰jʉÿí¤GÕ«®”ã>ê�‚¡Ù³ó¯Ùú­é-S5Qø³‘s#sD|¿º†õ‘Ÿ³1߬ûqŽê™¨Êº.aïÓSÌ€ AˆrvŸ&¦íþ[jÒš¤KÜ#Õ”¹™ß×kãŒUuøX ; Þûp‘'Ž4Ná¼n›ùÖ™9r$Sy‡XñÎË…AÚ¶ôÀÍ¢�³Yj‡¨ÌĈ¾Ésþ£€�Vöz‚‰WÛ„`ªûÿ)`‰äLúÃì*PèøÕ¬ZXIÁ€iͽ°ô¥¢¶æÐèY2O€Ü/Á9°ëí]a�#Š5­IÜ•#ñ_^“�³{×F¡^Emdy*¯`3“ ÀÛ„/¸å�yÓÉ–ž$&N,ˆ@Txq8*|P}͇µ4|É0½ õð£W÷¿Úñ€F¿[–p¨œ+&‰>÷àC‚¦0–åfó-ÏkêuÖYÕ¦ 2ýIÓ(iTž¡™E’g­«á)�Ý?ðŒ"í¤³ˆb1êqb„ñ™¥M€á\ÏÏv#€ùñp;×ÿGçõŒ VÞ<ÔnüþíNçz,„³}î铆d'QÛë�5qÏnÒ­A'J~¼c‰i<1ov`öy–V6miæUHQ…¦ ` ý¨[¡è £¬Ó[™É Å :ÃÐ(„µã½¯/Ò˜R§ÁPŽÖ“Ìÿl,àI”‹‘Ò99àþÖœfTTÉ{„µ©�?zW¿P:;Œ_ßèå$mHè¹/lý�ÔÃk2„Ø£ª¿& €„ú—£ÇŒXè¼ì¸^fap’áz�à§«<’”ö?GÚŸõðíª¨Žê)YÚï¥ôìt`˜¯d{ö1Ý~‹I�ÈŠµC­ÿajÍzSùÉL;ÝÏ¥ÝæG[óžÆ@”ï^®ºÉ„1¦êðyò>6µlÕž†°+¿OØAŸQ—†FƒœÆ5<ÕTÄ)]ˆ]…ÉpD¥së©ÊÒS¤îäk»B�‹…"‘ •o6ì¬:NÓÚÛÀvé9 e:Àj•>ªÝ÷Ÿ:¶uÈ(® d—T¯’ÇÊ&¤=�`›Ô§]mjé!ºv`'+ÒQAòjV[fÒÒŠî¬ÉÎç‚Gfü{�™âU=\à��ÌñŠüÓ·4Âê¯m5ÞEqiJ—ý¯éS®pàgá�ÿzGXä‚ùÐßþzÒhRéF¯k!¹Ã…ê~mÜ][—h�ØÛ`~’ÏÜø±´]Åox–s~¬Üy]û�I¼¥Y(Ô4'Š“Ùe?÷e§ž.ª£ËmGUóíqI=Á¿|­ÙDPcô¢(gnŸ¾‰ÒÐÏjåí«–Ah¢kzáÚÚßw®ˆ ¹†5‘µ<5ìšéßëÌwîVm¶~äƒ÷Ë·Êô%SK/ÂI×Ûû^ûÄçŸÆ ¶¤É ‘ˆçoоƒ—6Îò(é¹fº-™¬r8>iÒB¢uQ"}ÈœwVôdÐÓþu]©ÜΆj1ß*+lPަî;&I†Ý´-(.žhto£bs3|e]TýRW*³Æ±”mEÓvšÛºF6fÊ’,^\ÈÞjÿ�5�7a¤`ûˆÓB«‘ÿع4óiñû˜]Ó/Í´°"g=³j{ɾeã‰ǪAsV.~9ZßÍïFÛVnÇ·g#óÉ`ðü .êU}›dÒ›àH:ŸZ(mÜUûÿ“ÚŽ%øÆ¯ˆ+×íò°9‰<ºŽÿ¿¼{›H�Æ; p'© 6µSÐW À ,Pü0Ú¿ v.fu„7žûF¦t.ãéÅa0’kà¡Ë@ò×’Ò0Xa�þ9Íûxë÷^€�Ô:©d×qþd No1c7;�°}�h]§À–äáÆ•Q«dVÑÇÉ/±°â"¤ˆÝþ@_Öq—'q‰åÎø(ƒ™bÌ›•½x×âϹ¿_QŒa®^àá …Òëemš� ©#wö¢-âJæn°¯¦6¯k_ç‹~¦¥Ð¶µ,d…÷ÿ"¶z#jˆâØoç¶Uí’c”4Áñ²Úæ[�?:ÉMSė꯯Fkãn”z¿±[¼KÒ~è'ÚÌut ‚ÈÂ4Vg$uåîÑô²ëæ¿ý,È–L»Å[šN’›Ð†)Pïâú¿µÈCø@‡AbnQü¯“”ꢶŒ)ÚòóÑí[;ÏrásåÀÝ´—UËùÛïU·HqC�LúÏT`Åìêô§cPmDr·° ÐçqÝñ¦a§xË‹ùe6¯,üô)C�ˆLõ6Àþ”™ðº×d[{ìÀÞòRúl;°¸5º¾¨1|µAÓ,§ýʨqóP>ð ïïϤ×89ÚÝ�/�oÞ°¹ ÉÊ>jDù§Ç×U¥S1i!ný}á pN@fÚ«ÎÝÖ’K»%"Êßo{F‰å1`g:ª ñW9 -wgçXYºÿÝϤçÆE®äÖ?¢í®C\ÙCV€ÑÇ–ìlÚ†8xÆ%ẺÈs¬õ#‘Ðk/–Ø=%ƒð„Š/»$�Ñg´*Øj§wÄŽóÁ’ÉÒÊrJ8ûðw§\Í ÚO�¦l{Ñ`µµ“óàÞ’T”´ðÚßi ý7ºFÈ“ècŸµqejÑ5YQâÙ—Ž-¼´ÃD¶À9$ñ¡6/²{;û™U–¢ älïÍêhø(Ò¿{ezY6 ÑwùádXÑÔ”&•Aòr‘ƒ?>ö…¨²Áš,UR¤ä;„îÛ\•ö_–ÛÄ01œ¡´Ío„ §1ÓP²×ÐÃÒæIÖÚ##‘Ãc‚¿FiëåTo·”̈Ÿë4`‚:¿ùˆ”é]$ìœ'›‡##òžT”‘0•›xuØÝ(³¶‰�öxÎRöW&ÐÐ æß/Н{' íQc{›€ø.“þŠP½FR”bH)UÉÆ;¤™" QîGœˆûÀªHc̨t{�>q-ÂÔšmWVàI[Kú'í70féþ«Ó—LOµ=bä«Ç†Ï¼W9‡éŠœoK<÷/ p ¹8*�U+j¶åà‡ZN+o í4Ùó 'ç$F(N—¤�Z§¦yR†e?H´¨¡’X~nþfÕ¦¾'˜¸˜€0LRbg8žˆDlÁ� 5Ú‚thø™ÅüzA¾;‘J•¥×éï#žÿ¶ø�Ì×z9h“Ü¥´³ZHö}Ôv³€$Pãbôψƒk=a²ˆ1F�r>^Þv>†•âö�)-lE­¥v…ãa|“Fk=8R-÷¼TɃålN,*SÝ3Å™ô£;è¶ ÙäñÁ÷Íæ�iŒþTW²µž¸x}'ÖG©^¯j(„%¬­RÝ%ÝXÇiuŠ7oÿzƒ=–gH;Ä×ղÓ³þ±¢l›«)£Qsbé\ÎzMéTOžðѾ&¼írnDKM—D¹ÄäGx¤”Sóê´FÚ Iyçg£ToÃa$�XPñŒvÔ=®¾`ä�eã¥v¹�?—ÛQÙ ºë3œpj*,n"8…'«Gœõw5ÏÁã/ša2  HÎ3jùDŸ„·Çí�ÓVÛn¥¿ÙMÝ@­�GG[žGAY5¾¡Ç1 ì€À¶–äk|¼D `î�ÍŒ¹Ù“*–ÉžÃæófÕ•\�²ØÑzt ¥|LØK²­á ÚMú,8ˆâm³¨œ]�ÖˆüÎJ”+“^D “Ÿ±1Îi)t^}¿�?£Ý|ê,÷=ÅÃ2O}C°‚ÚQ¬Êöguøz,ª�b¸ûÇt/Nµ«gù!|:4F4n½‚0èÇ”BtÍ[Û=N1@†neþ“}µD /OÚyiwïãn%Açã×PfÄeýŸ$Æ œ»µ^Xju(ÓzÛÅ<ÏZ7#�KLçgtßNRHaï¬>!) Ž®O4D?¯þÂn \.‡32GœoÝìÆq�l±´ßï«”éÙÿ2¿P¢ Ô#$ ¨ï`Z’ëjLøå_œÈNïúÏ£°²¾ž�%¥§¸Á“EÕÔ�•Ì*jíÇá±dˆüÃÇÔ™•/þÛ^ rU­.WYy¬tü9‘2å¢Â± ]׎À}â™qç¬ â…ýfÊyHƒó‡^ö vó9"ò ¼38{!W´ò²h*ŽMxÛÌR÷khŒVž¬ÕsUÍ ·ÝJ42?öþàòèYú0KU.ßPÑJPΤ1~Z¹Ú°V?oöZÑMÚ«šòt©ï¡kP®+p‹rê2¸dp°\úkä_šü<«WÙèCè2°¾@<ÇÔÚÀ´¡m˜ã‹É�®ÖÅ>|•æ&‡Ì›Hœ…+ЯM…®8jxF©¥¥ 0éI)¤~§Ä$¬n/ßœ�†£„Óm�˜ÓüaÎj‘W_õui’ûø´Ì`�GÒè›u†T²t¿”†ré_y™N!`[mPGÃy=­¬Ô€âЙfŽTí–ÔVÝŒÔ�+ýûÁÐ�‘³T°àfŽøÕ(ëLuIÆ+­�À*yLÜ´X¨ ÚÏ #_±9"dĉ~}Hò›QÒUÇs-äÌÄÖyá~ó'Ò«VNÓ­ÙQ;ZÝàzÿÄ›TÔŽ\¾¤–¬’®é"ÚŠ�°Ž�>2{U(BA„qn i¤šÌW(mHmPílÿ5ôŒ€p)qÄÊrp¨=T¨fÅ ©ÚÀ6ïHq’0ôã[ u1³�×@d‰ò«ÆL¿!gë™s�CÿœÈΰ8Ï7võœ¯ßƒö7d=ìÚ�Ô-åÜ×G"ÊÕ®B>^³¬}ð‹qµìjÏ�xiÌ…}cdÕ'á•|”—þö�dø¢³h¦¬•âä„@¤+Ý üy ßä(ä«Ü—gjj‡¶ôiøl1Fÿzâ kæ®I×Xj ~K·F âÌëä”ðŽDå2²Ê’›µ7ƒ(‘­äÎN�± á�åƒJ\fˆPÃ3éñ©Ä!ö»há'ï"n`a€Ò£7ÿppº`QŽ®ìÓ+ä¿sæ¨Ùš±èÁñíœßÞ“A(|V¹Ó2WÔ öÕÆù\Äi�ª³‰‰â}:Ï©¿8jZŒ•#Dñ@rìî�rBÇ uú)n^97³Ã÷�,ŸâÇò:¸0¯æxªñ|˜EsˆîVž­¸‘î¹ÏžA-j䳚­Ú©vmE)µ¬–jÆËxM2�FO=>ÖG˽d\üúa3®¿ÙÑ©T U�ðy+ÞEo^æËìJ…0C¢bUäÙâFah(é\ƒÏ‘ºƒ®”wCå"sLRz­{í}sá�™ éhC}4ñ?¹W÷䦩lü¢Sÿ¸]|6݆.ZaÌ8Çs”²Á[φ¹Õ?%ŘÆ)œ‚tQ¢‡èe�hóøI¢:cúÕDzµßò#âú†K<û,l¦EÈØj ÊÖ5ˆðÜØÕŽÇº¥N; ìäýԂ˼þènH ÿWó¯ËèkÆ~]W@– ÛŒy¿Î}ù†Q-{÷Fê­I9ðZ •ŠEˆ\±8yúÁ•—uO¦# ‡­ëœUî.\êçÿP‚°3ËYaùóé¶Ãª#g?úßÕ+"bJt»¼y…h?dÖ¨�6ÀÐïòõEïÀ¦€ ‘ÿP;ûêÀ«Ö6_×-¸^ÔÀÂ]ˆŠT§b=|�„)Üi“_)§ÄíëÆ Åï€ñ .(V·�¾ш×É“îù~ÖȳéR¢Îܨ¤&�rC¬k²±wã¼Q†tddìï8é3?͇jõë^'žl˜àrOyYþ°ÆRºg–Ý`-f6§{j+]ü²¨„VôÌ¿ýôÙ�Ÿ]AK¶Ì-“y .·œ×©J tN#TJû9¾p€S»žðDƒúªâ½rïöÆH‰Ùe‡P™ >$-¼_�O;b¦>ûjµ’W¿Þ¿š[Sƒθ =Jì¦}5ž5Ÿ€'”§Õëà}õÕÎåþLÐqtó"$8R²ð™Ô ‹´Õ†Y)³Özr­¸Þd39À= üH$PFÀ»míÛ[Ÿ?ÑÐ2Þ—wÉ™•ÿ’€¾¯F\9�”Åîù]�ËÆ^÷È0šbÔ‚×ùΣ»£Öæ³ÿÇ#�Áo{mÀíý³(‰MU@5,PÖ‹9Ó\“ r¹©ÁŒ„àW;W”ñMHÑûX·Ÿ×Sgè¡8}õó=bõ�t>ÝÍãéëߘMx ¬16i*~K]´ùªøv›Àåöô>µ³ É]‡F…¾ì,ÍzR&Qì7ø·Aú`„ÎãI+ ¤.ŠxU™Vý‰àýVið!Ö}¢û Ìã#Le Z]êSè`h[3E®€Ä G1øªâ]l'^û\èÂÛ'n00Û–KÆÁÑ2_nñ�Xþ�Õ;¾çKð:ªAñ ?ÃÚm\M·"%’Û,Ðz¦Ž©É;¥ç×Ú× ;̯jÿyæCçŽý€Ê¯N]Ì,mÁ&ÚDZT&djÃCá Ø•@Í'Ðx¸.W묳Œ"Fj ‰gÿj°Òsé¹ðˆ PGï œ³1à@?ºû¤®ráßXê+ÙEšµñ'ÉØºs½ñšÙïàÊï¦/ZF´˜â§†¸\�ÄÐþ+„ÄÊŠ¤í`*Sl1pÄ¥•� ""°™{"e㪚"6ypþÆ9Íá�ÔØV„±ˆÕ4!Øa‘LË&r$s�Ý×ËñÚá²€¬½ã+wI’å¬)Oš<õÍÞ,pýØïCUÓ^vÈ|è0,WîOÄÝÁ´ç6Ð�þ@Àä!ÚsKv’©QAׄi&¾ ”‰L¹j�¥¿yÆ/á–™cy èœ&»±fª1‹@š/�:@š!ƒén¦Kurø<}±/, V�cRTϘ4á\ô³çeqkw7!UN,dû¥F-FâxiPnHœŠ!¨ÕMô4ý†ìÈh’Ç\¤G’O½.ÆÛ ‚©¸š¶jÛÀ—SILüvÔó§ë©T¹‘õ…=5¤ûp2Ä?ö\eueRÕ±&4×oŒ€ô÷©ˆŒ_шKºÓ޾_€ôÆÏͬ98w �Üœ.ð~nå#£ˆªdË¿ô Ľ#:ŠÒ40¨²¾¡tæùà3t�ãfÉØïzTžˆÃ=,È6j¦g‹»6ì$qžXKˆ[7Á™È¶œm6ªj%&æ›–­º'ÚÕdÒ‘mî#mwñ”=k݃›i ´"(Aµ´@àéNîþ\[EtՔؖb vÝË5#D¡NÆü±øl¥ÀãŽl?ÁÏh+’¤B1Úúl2ðN�„æ#œký»h®ÍÿÕ1ÈÉnÎhËBîR×D ê£À:#ê»=ª‘yñÊ®ø5O¦NUlWs–‰xq: ÞrÝhV{ukŠ-6äU�Óñ[-�¨Lïm�/å£ÝÈåɧè¾]ùï-Å€ &ÑõŠ*Jòà¦�½=ÒR}ÔÈVó'½Ž¯€Ê¦Ps{‹P÷ß>öAÁ4w}7`%ܺ-±³"WUµK%’Ï:  ¦Ë>E35Ï2 wRp ùžªÆða#}»rFxЛ>¿$>cH{7!wQvƒÃ(A„kî0áÚ,Þw¬é©lÒ�+Qo~êiâg<ßQP?)l|ƒá™r:^ø¶öËO ýƒ-Çó_^3âjDEO…OÛIâ‚Í층€ÏâÙ²_SQ^Äu`J+öÁWçâ ¹‘5Õp(õæbPXD`4÷F·NmìÔ K±Ú0ÂÑ€o÷÷Ÿ’Å«çTÈgy¸þ¡IÄ;Jñjå Kî©¶6áΤَUᩞ¸25h[®€íØÉR×Á`´·€Wmå,ùÏõæKæ�I‹†y©mM%Øâ¡ß¨L5GQ—§kß‘h^å0Œ|-R-11ßK�­£ÜÔÏå°å*jÈC!n‘?•úá '�]©Vòym›© ™o{¸­¼¹�+AIu·ü�·VAüJþVoCuÛÐ}*ž �WŠl«’Þü›‹yq|“$._á“øs‡Ýå?ïØù¬*N}?ï#WÚèžg$<’íz†AúŸÃ²ñ ?砯т/jJ¥=¸ž¦ÉNÚ†^9ƒ8íÌ‹/!ïÔcÏ„næ#û�¿ry†ì«nI~{ �×Ê<ï€ÌãAý™àë Ãìƒäa°M®§ .»JGj]g Å(!€·ešuÛ÷¸€Ö ü@+/žg<·…?KËÊt`P †7è(N~ãuçã8ôRÛ¥ªÉÚ† o¡¶DšòŸxžIÀÊ_-÷;3ãÌCÑÿð„�m¨`>lÇ3%¸Oy¨ÜžjÉ“¦ÖûŽý…‘TW_“v¿T2mO‹žü“:EŒÀ` ˆP¾”§’½3�X|?¶˜ ›‚pø×¡JŠ‚‚y ×+—ý©E ¯scîáŽ�a¸>Þ¹ÙnÛ<ùEºÚy £:«5ß<…#‰+ƒöû°e±Aã[�µ”£Ÿƒ¢Œfö>–�Ÿ.ìv–H~¢yVÕývjŽ'B°Æ’söG[ßëbJáûa‘H‘Îo÷ |í2éçÈóûn¹‡ØPHŽX¨BJ¥œ3�Ô&VÒ f�—‹™Qž1õÞ¬’÷ÊC}¾r(ÚêǬ"zÐsE"^G9…�¸ÜöΩº=䪛Qæ#º;“ø¦Æü ÚõsÅwâ �#¯ 4M«ÌÞI² tA“ØÞƈ&{ZÅ|ªMÓh¢§8�À&áÒ˜Šè8ñUlZ—„;Ø�Á&’lù{MÍû=–¦t’‰ öM0«Òµ¼h×ZÉG R C«÷>#âî {†œ´ c/æàÞÆH÷âÏ™m”¯ñô…à‹LºìôŸî½aç“à}óö[O|¹ŽÓ¸RÔH©¹0ª@¯KÅ23ñJ‰�‰{%ØÂ²ÞäY‰•3]ÏÍd$ÏÝŸëwuð{ú݉{µàq.µ…:ñùvOsbÿ$‹vçT5pf¶lg|9@Þ-løÔ$"%¶fjö¢"Â\åz:þHM$òE|õØÜo˜ÿgìÇš}u@‹SZÚòá p µ!ƒ5#A·¯òalrn‡*?L²™ˆæ‚†pHéÔSY˜JàÊ¥ñ~)` Þl4±Í4}LÜ)¢²µû+­ tps”3X•J-9¤DÈ_Çqè¤{6”1o§E½_p �;K¿æ¼ùÏÔ+@±åAêßïA^8¡ç2þ�ô‰šKÉn5Œ¥�ªQº<�™”À®'9(”9átî6)öš¾, ·’Ÿ}’P¡ €¹IxäÉ<ó¿¡èVä}¢…käyŸ„éL!é`4„¡¬UñÌG˜=Ýæ¡ iCmnïÏ‰Ž¾·:îSr9nsÖmD*«ÚïœK  sa“¬ª�Œ­Óyt�JòÉSYêœR¦ ~ö–^íb³ŒòÃÞT/dûÄ ±t•ÿzGlÚá̤g÷×±ÝGÕ8›~z\§zvüG©B�ó� 2·çk~Ú¬Ðsa=Î) w¶/ÌF}²"p: 7,Jm«¯Ef¯{´1žÂò1˜Ö8°Nûãí“ô\x×…íÀÌ#פ®Ï? þGغ"øÚ‹$qÜoâééÄj{flï†Y!¥ÑTBíö´²KpkŒaTdÞ“¨'0ȨöÑc%Äïîj ŠþÇÖM[÷¿‹<×ôÃÎ]ì³}€O—¹öC~“�êÿébß—N‹ª³^ÀËG<nô�[žë{é"¡Î_¸5‘‹Ê1wó;¡-Ĭ`¥±j¦e% š'ÏGBŬ[ÿ*vÝL\J¯� ˜É9ô/šç!‹øjÇY\ù ^<ð'Beê ±‰Ê²�A¼ï�åj™mÄ&;Œ©­6ÒŽ³y+býˆ4ZÈÑYÛSº©èzŽz•ç½_\4–ò˜Ásì÷ý�¡ðºö¨þ.\Û¹ÚÖÌ$£v½Ï“éˆ^„!YéÞ eΚ™ð;”b (XÌ!V0upô—ÙÛø Y�éÌ”ãPÐUW@«ŠÑ€’‹/–9`=^¸ð*޵f£S Ç.²ìÄPÉ43«¹&X¥Ž§síê߃ ¹úv:¨¥ŠåÌ4D;ÚTÈð©‡Ö£{§ïv°l&;ëKÈ“Ÿ‡Á–Fc>9ÉV û¸ÁÖ)_Œ áìdTNtv³`•¶×§N58�Ü;䦘¤=|–¤›‚æY­è7Ÿ¬ðP².Üãº=ç’]à9³ßá¤Ç rìœ;ú©µ/Cß¾™aÏyy!–üFèy~†òø^Ý9{0gY+�hM ËÕ—Æ©¦°eG´1#ÄÄ®Ì}¤«Dû�v²³º„-Éü=,ª=jEÀO¿3â%‹Ž„’ÞK}�¥æ¼Uñ àLy õ7Aß�Ûsóò#�¥,ñ¬Y­q½óDi¡ ,äËÆú듹Q†ä ÖSxºý âE–ŸêÎŒø!•™2mJ`*›ÍwR6Eï �Æ6õ¿A~ÓïVÝ žìÉV#Ÿ_GÔ÷}0? J�ž5CÃ�Ü{Ø–b¾0aüÄì³â�|³‚"Üåƒm´!bR.8ãú­€£?Š�…^,’Sðb•ñA\…Ø“Zô�|âïÊpΑ-âù‘. ßÑf<%«v ½•׳¸n¢Œ¯�YmöUAêF!• tcöÉ7ÐÓ… `ŠQN¿ÿâ%²FÓ½Q­ï&¸¨PÃO×”a;2ŠÃEÁiv}Â3[ ùå2c¸à5bn.Þ˜1ª ‡.1DC]v¸´T¶mûàGltÔ?Á ?,q½sÍò¢šS:‰œ …²aOŸIñΊüüÆ·Ä| pv±®³§J ù¿j'[uÉVÝ«“ÑÓ)`ë à¥ÏrJuë «�χ‚¯ÿB$‹¡�ÂßO­^¶Kš¤Ÿw2V]ÂßàÏ–¨æ‚¦‡Hƒ‚�ˆmÝç("¢¼œnÓìš�ÓÇJ„œA.šÔ‚ÜË4³ i*²V‡_/=Š>©4+àaøÁ œo ¾Œ‘y†½¨[´îyœ¬bwZ¹ò÷mÎ>Å“+û®EdÈ`ýW{%‘\„æfð� €|MÿŸ¾ß~#ØôÃxmƒŠäzGUºöƒ°g°ÈOVž¾uñr ¶â{¦¤‘FMS… ³ƒ!¹–MÂï64¾¯…ÜuMO�Úx‹XF€ŠCn#Ë>)…°‹•‰fò?ú +Ž€Y…I6ádðþø®ï¼Cú“È1ÈŠÖ´ÿ°=2ÜIdõv£ðzªÛb4è¯>aLà§ðÎ�£ða_oM¼,æñ!¡{x¹}æê¿&à?€š LeqSðìú:Œ¥ï-FÎmnfOnzÁ¶µF©©F´ªDR��lQ’»½äÒɹ£?3ˆ‰v²¿:gÍÖéJžëê€ûÍ.NqLh‹‘|IYÔavý-¥CÔ|í­;g34vÉÍã q f¦ºìWþ‰<ìuLs‹ìå¹c;#cMMgj˜¥ñØ3"–»ž@síûBƒ²"d,VÖw£·¸-o�U4c´A^æè.nŸtO�DÚ¿žICz“ê 8rã`w¡¯Š3A,´IQ##ø+(B° ÏåâZã@ØKÈ€W¡ÃÁà»i€_p«%_%Š 1ƒCƒ´C‹Ì0ÞÇ«eç–¦Xõï`¥ÖàyÜÖET8ˆ£x@hZé5ÿõ³t)U"`ß 7l3틳͉ÊŰ"§&8µÊbüÿí,I4‡¢–ãLL5Hદ?®ö¤Ž'&Ò(:S½NuîÐâݶ§-{©7D¿]®S©±NŠŒ\!™^zvÊ{Ïj•ðT éàˆ-—Hõ2ø¾¤)ÕØ“~Z×±¾«4Kŵat!Ñ#+‰×­v­±{jÝV•Ž|7Ö¾6-ªëÀþë™ðè5\ÀI+[ÄPÅ|ü‚ /#ôÝ”~³›N§�$?]¢PÍŠ…Do5¥u‡x·`¢ÜhWJŽtP¶9ÚÂåÉJç…ÿ¯upº«,Ln»´S8 j�™[’ˆNÓ—ïð´zÄ­eÞì ÃÇó*O VÒ”©Gð¤®=^Ï7j&l4àRAõÔÜçU ‘°½4áP–ø~³Er3k–;þÄ^=£ðügç_5ëTí^: ôÍe`ýËN*`©‘£íÃOž ©Ò0Ý3;%Ï‚ZìP…’q+f5¹øÊ ¹UFôe§7è�×ÒHËè“âr¶÷-Ò”ˆ´,a!å5õ² ÅÛOs6­» (0sèŠD¾È1+ð˜ê \‘‘¬ëxؘ*æ»QªFI˜ÓwáWÒ{ ®þvÆ•tËjè+·Æ›8(ª¸c`ߨ“hev�Sé¨ò¥½ñ®ÂUC4iù@Å T8!AWûîÔ¶³µŠÿªÇuƒÙ’½ÑñÝôÛÔ¾9!Û4÷Ë÷?ë>¡ÜÄÊ÷Ýí .eÓà'Î`�`³ËØ )û÷½+¦ñúº �à ˆL˜ªÇ�l¥W†‰öJQ¨]xÄ(îæ˜<´Y Ý*q.�æ[ŽOý€] ±šE6ìæ©îK<—«Ó�!N*ŒÐ:)R®ÛN7ò²ŸÓ œ““ "¦ªiÌU²¢¿wa¬0ÛO¨y¢¡Ç�P�C&x‰j°ç²<Úr8ÇÝï)öÀ$Õ¼=�8)u‡© O–oö‡‘Í,G—²•3‰]èQ/Ùù>þ1ß|‘ò�\Cð8U‚xǺ€àÅ÷â¡§¦”Áfœ^�kR¬Ï ÅßiZ˜„CïÍv*è&7©¬+8�£ ?ÃGÀ†½Ç5às“/£:\aÍH©¶Ê ã»!ÍÀBëÌ”¹h�0•«�±Ê­›v÷Û?Á°±ŽÙ�.ž˜(ìÇûô/ÿ¸þ¨Þ\k¸jàä)R0ö g*a&îq'ß·Åy%Â^ODíÚéõ˲¹‰QUQ¡Ý`Âq¾0Ó ‰WE ÕR�·¢Ÿ�§Âа󾄤ì¡:CƒéFû¡“Ú@‡]#mjÂcÆ�s�(8¸Às ÇgHŠ–dés¾É|m¿Ê‡~]Ü ÑÆ½#”XU ÐïÔIbBœW1d^ÞÓõ˜îhûÄç)²´Jk3pÙG� šztŽÙÙ¨Ÿ)ï}"Ì$ˆv̯×4WJÊß’ÿç£ì†½ ÞÊ&s2•dÀAù¨813Cð̲v‡&˜±–ÝïùÓˆÊÃRÐŽçZ‡j¯õñÑôÏØYbLËSé.CmD«"²mDÃþæ“÷À IõM@¤ŸÌ¿êF„q_ëÇà ˟̋Ӕޫ”Ö×}F•ÓÃâ0×(TÂI®þ5Oñ�Š>PÀÔËœ èŒ-õÒ*bì1ðÊà{µs·òáFæƒö�³*× õ#W˜â´ÔP<;PøÎAÂÍijI¹Gh© |ÀîW;Cx“×–Wó`�3Q)£´Í·EÙß\K´ª¨¢ZIÏîëø±Ròú*í—Òô�†˜µIdHøò†ôµí̱+òÇ" *X@‰ñœšn|P\>ÉñËA,G2lü-™Ò;óÁE]A¿o+ ãWÞä¿=Ôö$K{¶�m°«i i“@ QpÆ·\Ê" ÛàK'ò‡oȰkÍ�}àiE­L,£aS³C¯`œoG–*Í{€ºèÛJ÷þs úè…H<æ*,1À… »Ù|¾ [;O`Ýhô�Ä•¯DM5!³zÚÞ9媮(àòyûr¶Ñÿ T^ÍÀõÖ_¡L„~9|äÄ1¿”€cö�^ošaæ_tÑ©<ƪ6vi)¦qByÝ£#é@€ˆõ< Š‡þn¡‹¢Òf¹F æçiO?RI¿\‹ÑÇ틵¢nºÒvI¦-ÜEf�HÞ+aYóë§#÷™’p;�Ý£:¸÷F+é°A°€”0À@f�ߨg$¢âœx~kR¯¤|a'‘J¦ó0•u@?3u�W0®‚¹C(¶+=úÈ– è Ä9˜c�¦,—Ps­c|çfkkÃ+B˜ƒ-KÍ‘É[ÂUá]l ¶ âRÕq Ï þCyÖô¡v'©‰7R€�ò�О‘¥jxÏ�oÀùõXíâ1imÜèNVRNœwÙÊg©‚Ê·ÎFxû} 3*Ó$¾N×Ý ð™ÍH�ã×¹¿Z~°ÅãÔ©ƒˆ´»5s!ßPaíµê/{�Yã ¶Üw‡âíšÄ 5`YI2œn|ÔÙY¬îÚqøä–1þ òIæìæixÞó¡'"ÇÓÐ jÃVÑTZ ‘ºÌÈdÀâ;¢òD»À‘‰v™ªó–-ÄÇÒ¨l� X­Wó~2© mRŒÕ«Š.hÞE�_iÉH£/àšFûR[Ž� «Q#ŸPrwE†qµ§Ž‹]n$–ר+íøAîú.ïÊ�y�}Uiÿ"]w8—ù˜ä5"³3; ºK#5ÔjÆÍ†F½†V"Û™‘`ùãu)Í–7Š#$÷{}oÿ“2‹Ô$‚£Œ[¬õsxàœeï3bÆí�hUË úõ:¨yÙe S5yÚ˜ãm«f!ਠ^£ÉÁ ,¬ý‰¢„xÉ!L-ö”>©I•�)3• ŒˆÍôê _.‹Tâ𡆚‘Àsgf+Šç4‹­ïŽeXÍ!í‰ËÇ¥�ÅÚÞãZ�ßµø8¨ƒ€c˜�tŠî7PXèñ“\öNIi’2†ÀdÛ…ß5œ+k·—íµ5æ—Éþ°O…Á„$ˆ�º¶Áð¿npû&¢*e¿ÎX &¾qTüð=0ìç¦løhTX€_˃Í~¤ªHS®bqÈcŒá"0a*ˆA,Û$],3IVL?`†ŽXÍN~a²þhæÌE!Œ­Ãªck‹è”)b‰ÝÜ$¯/mÂm77ô3*+ëØ Ø'­õ¾9Ç¿ZŸbØ:3‹‡5KåžÇ={²«*óÈô¶x¾ !Ï#°ÌYžmWð¯CSø`zÑãÙ2)'�g¿Âw†(ip:+~Ô:#K'Ü0ØúްH�²Fx�¸;æz•Üщ,îÊôxü |úº|6«=£=,YÉØé=¹ØP°÷˜ È·Ÿ9±œC":×jÛîóhI^‡B¿ŒÕ:†\Ôí{šX€Š Õ×vÊÈò1£aµ’!m¸BFÆ y´=L[4´ö(Žäûk¥$óà°-F–ÜFè>²Îº¬€[ýšÐÃ¥×)9ÓèVõñY’WŸ2v?@�ƒ»F�¸ylÆêé B�ÎÇtþ°QòͽW=ÐBÓ§ðí¿Ô½¡öçý  5Q:Ö°/�·“»nZËÜǬU�Û × ˜/á3$ê�ó‘ÇtÍš+Ö“¤aÈjÀ}€÷ÿ\ü „« ̉-ž.A±,šyd‰=� LiæÑùs\1«Y#âð2 ¯¸ñŽgDÈ87Êß8¶@¢Ó”–ÕLö%odkws<¬Ë+Qîñˆ PìêíU6\Ùº-Ú~§¥xF±’ :¶ j"$B› ¨‹ä¸¥ü±'ýç; œ` ÎGÚ $wá%ŸVwŠB:dr¾j^ÓÛ³“ÆayºýBÞƒSƒƒß¦— A÷¦.ö™)pÙ(=��ÎB:œ Be>‘ÖOæÆ6 ÜO€H¥+ahçׂŽt*¤ HœñVÀÓ~Ðáø®åÓV枘má ðv²PPcÒ£0» ÒTbþP2�Þ€G3 ±Æ÷Ùw>NßÌmg¨GÆ¥n÷Û_&Fö¦o.©Û©DcΡîx}FKÊÐ÷wGp–£Œpä)¯›—-ü»Sl6@Èr§b®æü«µU6àH"ßĦ=I‚x¦ò2‹š§ãÀĪ…6ÁlÛÍgÀa�òÄùPeáþ—¯’eÏZj5*KK°]ÂkÿÀk^7™i<,µáU+ZT|5’©9rÛ†ú•XÉíµ\2ø™ Út�¯GGø$¹?á Ú”ΠpO,$gB¡ áÒµ`L=œÓËÇ­ÊÊû–S–½2bJThŒÍýØÇÒ¿ê6ˆá1µ2ÚÁòþPºvëM®9[çñø<˜"ZaŽÔ½ùFOqĦ‚w�8ŽùÂY4ñw> Ý´¿®(šöoÌÜ0Ù¢úÙ× D%¬L¡•«â+¨Ð¨udÏXÚ•‡!ÈUxÙà;d0á’X½iƒX/vl{¸“¹ó¾ð&•yš ÈÊòܦÜ�Y'³›•P7d`6+[â§ÊŠaéϨèC%Pf�32 ’Æòë^’?‰nzª�ìD9]¶Óý³½È´>ŸŽâ®¨t‘ÙSÍXñrnÅcV°ž„|އ oFofVéGÐ+ŒjæssužüG0² :»õ7d¢�pyÔêR‰g@¾Š%Õj@‹¸µUf¨�eÏã¼Í4Í9¨§`÷ b¤‹¬ÞÁÞ–WoùÙ­ƒÙV– ÚžüâUÐ~7ŠŸ'ƒýõ&}\®ÇénCô 1�éH¶šÂ'puX:+^h« ¯-”÷º ¢Œ›ôÉiX¸"×!„®æ@RGò³}¬‰8Ü >ÅÌÐ%Θo[ÔzÐ[MÌ#K‹îq'Š/פٮÁ-"‡l, ‹ÜÇÐÏ4r4ALÝsF�â�´ŒUáƒRRî¶¹z”糊¦ho£âññŒx7_HÏ•ÿ&­!Cˆ3;'û¦@ƒµ’u{s€aí¬× »ã&±£9L*§ìÙv‰îMqjî Jü5lÆg’¿}åᡨ��bpÜo�í^þ¢sÚêÊ|Ø|‡Ò8oOy�§Ë«éÔ pZJ\n¿�pûÜ"—*[B%•£­jEÒtH�u]¹¹"v‡Ð(Ð0²OôÖìø,`ÕÙT/0‘ªÑT!ŸIçéÇD„ÛúBñRk¢esÑoó‡0B‰û ÷7 rƉº™ŠhV1R»¬mqr{˜¹á{B÷Ø ;çÀ¯ÏÌ)#Ö[,"àTÕ¦;:û´”rÀwи¥FZÙ«v‹“-ð|`þ�~w 5"ÉÿËUywžù¬Ð�ö•òˆÔc Ptv«AºÚÅ­=GÈ’óh…׿Š[þ$7…„˜R"0å [±Jr^oªóç5ô„ Z)z²¬}´E‘›u¶ÊS8i·wìï�|µ÷á±êáÔ{G˜Óñ{L8Gò2@õ†Œ`N“2Ý@Ú‘¡G�_PE¥*ÿB]M/Ń}"�!0ÌA¦"|"�ŽL~å…Ð&Ûš„׎¼(ßw›tµˆwçÙï^�3�'íß0Ϭf$ïÓŒiâ—›UåõÛ˜ˆnPu“¶9zä†1çÆ÷©© A¤�[ƃÇùµ­S0*ÙÈÒ’-5Ç£f$òÐaïyËĸí—þÁSÎÃÃsÛƒiY ïöÆ0¦}GHîFºaUÞHåÉzD3Ùh…òZÒ‡ÞNã.òŠozÈÔËJ¤Ì5ª^ÀrŽõ6ùš9¤/–ØV}16ú'ï¯&@LÑÀ¼ë{U™m%!5Ä—!„¶ÊÈìå ÆâCxç`wûµŽ ™lÆÑƒzÓLºq¾psË&ÿkþ¯Ò6‹‡g“Šª°`·VõWßö' ñŒ¢�Y÷äy½*¹Ó}è² u ‘²Ñɰós$Ó�¤¨pµ5,–k\3Ó“áõô$5™¥¶ìþåÂ!ïèTë*7`’ðÉíìgu»àßè”㪿þÊ ú¢ò!Öf'‘—š¥›ô©vÞ,HKÃ9ßüVÔ-ÎÂTéx³›ñÁ¿M¥Qs Os½m[ù6z„ÙVÁ' 1)v‹$¨âs`’rë–Ë]—vlíÅv}üh.Çz#k­@õ¦"úv}Øþ&òTÞÏË‘5%#þPJã3Îë¢[£cÄm5žnJ¢ýö\†ø2%oB¥(�â{À™îÑö  DkÍ4³¬8Êê@ƒÍÝ%·óh(ÔoY­FV.±”€P=8ßä ðP�# àJËê�odO~e›‰Ô”À^( ˜ßz—• ñÚÎ=1)eÓþCÛ`X&Ò]÷»ÀC“²]¸�Ý|¨ØÈf™ÀÆŽðå!VùZ}– ~h@ÏX߈½e¬TäX’üo3åP@xw³Pe~QI%u1¨*=ü¦užT!šõ%ï®t” »Œæ\'g¿É$áo ˆŸ½ â=ÖYŸöŸk,>7Íväò†øãoåË76'•9$öcW  ¢m_±aN3ôøÝ¹£”ãU©$^Ðs0ì%%ŒŒÊ=2î²;Þ²Qfö#”¹’•Á˜6ÕRºa†ÿ|ÈìÚÒ÷‘0ι f#øbÊÞGþ“žxððÉIà²þÕÒÃsÐÑõû1¬1Ñ‚_á”7‡|'K:~%LûØ´~]Óï†ßº ŽŸãïωà§LfVЉÑÁÿÅ¿6 [_´P³<«Õ@Põ÷Û5¹…°Ñ¨öÍ�áŽzÓ,èbN].C½­ðË/Ö5ÔeÂM©­ÿξÔÙx«e‡ÉÙ9 ¿Lš]”Ö IœtüzQ’ò’êà@—»ÿi³�Ø|¯õÄ´É÷Jj)wà:¹\¦R:õåÍÖ4¡£eÅ´çÐvÿD´±aSJ%Ã^eÍ»üî$I'çF‹‡YSŽ2°¬îç×]ËKÍ(rÐ��EüÛ%ïðØ’›f»¾ñEË$îoôž2¶,ðI¥…zw«,k S¡ÛÔirKùû_ÅÎ(ßVŒë!øñÜxBñ�¢>/ŠEêü{,`„É+0Qü­÷¸_p€<÷þ6ù�ï”™dB¼&/¢ÿF²k5)~½˜¼f­Ùň%ì^GOž ¬yzÓèÕ¡JBHC`¹Œù�éòšÌ±à.Þ¥ÌPDÀ Ôˆù£#ん¡t�èúqÆoé]ÈG ÐfpK`}¨H™¥ÖUÀàâéô?>J´´‡zе£«·ÜK‹+ýó䬧cL &Åýq“¥úv쨸§¢%ë³?Û‹NUGnåøâÞ¯Ö+Ú+ЏºP®*ž¿¨#@Ñ Öè%øIÒÛ¸|™a_c§t‡ðÚú‘òÍó7ãu¾ù‘79763’Üì�!5`›üõ)lð³O¿zב_°ó;v0sI'GÆA_0 À(¦01­Bü·�-5—¥t-¦¼ü´ªÖ•ÖÁ�’¦o²$XX|6:^gKj¾Š0;¼?n˜«Ç'ÈØ°6_“­ÙöÛ\¸=/—½|ô"ŸuyI«ë=bã�p<ç¥ÝqèpÝsQ‹•©¤›¨‚ªõú‹£ù3•ÞÈ,XïWáUîÁZËp| ‚ûÅøOTq ã% H/„ Î##WqnrFIÎufô:OW±]Ó±N•�xÅäV>;§_ß®ãæ.�e„øJ ðWñ�ö<ذQÝeYOª`]S·6©a"uÃ�~äf¯º[`ÏMÀ€KŒòû€ñH’2-(á„�ËâèÒ|� lÿWÁä¹)só`ôœ¼$;­"ñFm yÜT$mÅs õ÷©ŽÏÃÌÎQ¯4¹qÕ› 2¨eÌ"3#ë×TÖõ Ã¥éÛL Ë5d�/éõOm"ÕçzFœD«Â k�Ny/[˜Šð—ë°ÞMäõüDe“T‚{'¸�Œ6XÍúú>èƒC›u‚ “ІC”l“W’ÿL[å«Xa.ë8²`5¶é�=L 6N�uàJiûÈ(�°4êLó [$á½ÏGÕœ)0MþÂmTË�ê/mTµ*g67Òc‘î·° ]õ_] 3ZŽnÙÇ‚;½5s•ÓÕ%d¡vŠ@% äªÌ´Ìš¡b˜÷sr~D¯ã‚•Ç&Çã‹?LúÀPd&˜®¹í¹ô¿À�!xKªÁú¾³?e!y¼h »ËÀ´ÉH{Ë=·{6\°i7ëòWÑYGÔùÀ7ë¤*ÛÕø~]Ê5Ø’<åÍåùé^øïö—Ú†¥ý\!Z†<6}LX¨ÒŸt,ÐF[¢(\à gv$¢úd óꔘjŸµ�o‚QýlÀ±˜Ò�¨¡ð¹,¹×('4 ¦å5OéN©•¾—òùbEµ›`{Pzší€ZI ÂÁ�®FÞ{Î^›Iš…Acó½qpºK¨úYÎ ç&‚½¨5,ìºhF«/ø›k+ûdÆu·íÛBK…@ÉÀ¬ü‰Çëbæ¾¼pwa¦÷MAË> Y¢ƒcýP=· çR?â?ŹøÉ;ж�Ð9Gzéï˜ÌFÆíˆÄä¤Nv<;«ªƒì!É:x'³£pZªbw/N°7ÎTŸk·x}ÓM"!™<0M2Z«ƒiü¦78™f§I(`ÊÞîu@~™˜&p= HññÆQ[œ/CâU3+r/"Ú5(%£–ÖKØ d¯í·„Bo£°/$÷­ŽãÆÀàfGë]‰Ûv™I!ã[Q6µSïgÅ×ãdç±ôÄûÊ#-I� „kÕdÓK—lÙ}Ëíšškƒï¦T‡·RoT{sôÀX¹™Îž5•Å«�¯0è~£˜x=m,�œ{ôØê.qÊ/ÜÃnÄ]¥ó€— 3;”]yóвhª‹ @Z¥°PŒRJG¶!dÞ‚ 3Mö„Ôúý+?ò[Á°ó¿UõŸÓóm_Åî”1Ùw†vwAŸ§2‹3•ëB‘Eód†Ï IÕÃmÜ(ÕL™žÐ¯nTâ^Ë ÿžnJuMúô‡�mŸŒÆÒö`ù7ƒKà¥DbÜÀng ÞU›rôB©/Àz)Õ³IÉi¶÷v æ«Q¿Íœ¤¸’^Ý â±”{~Þ`,dµýUu„Ó¬/µì ‹ò ¯„–"¿sÙ+¥°q*üCyíèyÄCêàä…Å×Å]Š5uq|Ô:½MÝÜîT~&TIÅu ®•fißs¡øÃcJ¥ô}eŽNhûwxí¹œÏþ·äS< ªû�¹¡jä/öv®ãäÊòÆX )ta]³¦A}bvS5±ÚË+óœ‰ñ�MZW§‚…¾Ü­ËD+òΚ¤[-y´´ý“»Ç%÷O�[g.êòh@îËrE4ù¹Ò5Ž'|µZª}'}É©ó Òú«ë Cߘ*¤ž÷©AZî7ì«gönèÿYAÇU”WI,Áõ­a…Új÷ó?Þ¦£qˆ¡°Ÿ~iNÑ‹æ)Ù·ý1Ao4!ÃElÎÃpûÖ”ÞíSLl‡ ísŠ×ðq[ ¸HÉ=…à�{`Ã¥#ëRÿY“£�FËä0ËÜ�–—��ôZêÛ¨ 6Ájÿ®“aŠäK&‚œJqòËç6±r_ÙòÞSêõ-¸øîË#�Bãš® ÞynK¬ÑÆžÐÙ&pyÛ”Uã§¿–YJdÚ¦Š~çyS mnv.ŒÍ~ H—)3›‹Q:²Á=Æ�¸-‰ŠŸ*R‰š3xHßK�ñK~aø4y=üÓ£ô! „r’·Ùš@¹>GkÑÿ¿¢J®^é�hn s¹æ,8ëMálOÊÚ‚}ó�´Ü—ô“ÅÆ]ÌG÷Nyp¦Ñßýñ‡ðy̻Դ4¹µ '€L…‚¹´y{òóà{z=o&ß ôðÈ(™‹w*ëúO2½„KOåœi¨ôJXæ-y~9Iõ9d\aŒ²)z€úG.4û]�1§Ý#t0ç„™ÏÿZÔ %Dëg†£?ÜœDV,;éè„à…3€ ÒL-ä„Ícý\ãÜ¡|Å€ë®ÁþI@iƒ¡Ñ2>DR7¿\L¥Kô6}•÷6Dòø¾ )øô§JYÖSmQH'lk<ŸUßÉzs <"ï"%)ÞCã˜þCî°0ƒžøýCñD0+v¬ku2­5Ÿ7ßÅŸcÀ¹Ê|`vðû d´Ëéúi Ë-™Q]㯴6ãÛ+�N‰Svÿ&5%£Ùç í¢sxg�—Ÿ88y[=öô¦óàìÆÒ6Aï¤õtYõÓf€î¯: AH@ëÖÂÏžµ0^¹¼[2B=ãëñD5Ä)=Þ Ë{EÜÒËÎ Å– »?ôÇO*f´ó«ÿê´áh ’`âðÃ4lÈ� ([ |~,ÄVÅ,2×Ϻ4¢Hþ½Ö`‡qSš2µ­{;�Ï™«a»Y'©öÜáæ¤v;Ö«›Më%z9:š°_ÎË«™b(¹\8&šDiã­·lFøÎWƒâs7�€ß'Ë¥ŽXáÀæºâÞË-3‰§lWÓ½)aƒ ¦&Û+*HƒÏ”{“Lâ‹éŠ¡Ðì;ËöõzÑÒÕZ eM� “k ú Œ‹äÎáÔRÔ[!jÏöçÔãH*ä=¸©zU©õLÅ!3¼·²êÌÆç%Å»¹+ö³ýØw@ë14¥ÆXé«<èIõ‹¶‰s›—ñªý~õ_…`ð 9?”æj,µaþŒä%îlÝ'ŠîóiŒkîk¾AC—ûÃÔ)~{]Ý7U!NŽŸ�­.ÕTe•I#ó­9Ú"6�õycO´YL³Èc•ÑÑ*ÁŒ8žž>S•Ç3ùdA¡Sä'aT7á-\Êc`›é E $Öîýþ«Ÿû„ I`¡Jlœ­¬ÞLœ«Â®`J?z®I ̯zˆUv“òM)F îyÎ oÐÛ†YgS¨þóì;¬rÕJtÂãZÚ»\‘u~]UQÇû*+k�µ–懗â„NOmìƒC �W³½¯öŒÓ£½²°ßiÛ»ºÎÞÙ6ÑzW“òÃîB‡K˜üzç,bBø%pÇ›ÌöLäIƒPÏ!ͯ#ø³Èe_nÕs!­ÔñÎ3‰ã ™Å»Ÿ“-ÆË-7fˆ„;�:²\R:ÈJjãÅ¿.cºÍpi½v‡Ð²{IÃA¸7)à§·‘®Ð×_•¼>ÔLƬÒcm²:sþ§e*l…ðúŒB§R-þºZÕ€f®OP?íœG¢á”PÈÿ5SŸ�…4¡eS¯W n�SX0,õ/¡vÕB·¤QÎ"íåóIuETˆunF9ȾوÕü¬Ì' 3ÑökCâÇ‚J„Óh’ŽÁ?.6v÷˜+üP÷jØÏyf¤)M~Z2¯YIgÏ®„„=dƒ;pN^Þp}EM¬‚ð„•uÜC¹åË¥´—¯iÄÌè`ƒ»ÓÜsÀÂ7Ä�ጓ�*úPçFn‰“?äî§«@·ÜD‘ƒr¾žI…‰ÏrþU2ç#'¶Ò(í¹çZbgÓ‹exÈËÞçÏ‘8!Ûnõ 6E±ð%²PýVî½SX(úND1uÓÆ�¦¬7 jÂj¤>«Ò�áo·Ô§3Þ‚cþŽ.Ñq¬f-Gµüçÿ@>5¶A® ̦ºfß|™tMÅw~.láÏ„…Ã8D†“‚ÜÁ©¯ò:"YîSÕ°ùøf’ú1Q”¢¯O0­15éEKẪ9Œ·Òñ×Õ¹¤É)1@ú,ÓcLõíµùóû�P©“'øŸ_dµ#õ&žÚ<›¨ÀÎ 1¯îoÓÝ­`�de›ú*°ÎZY3ÐA>x¢«¦vüÚ«—�¹ÒMÓÚ" ˆ¹g›ZÀ«Tÿp…G�CsIÞlÝx9i¨ê¸]~¯.d Ü©ÿRSz×3;RŽÚ ³,‡2m"}äq™ÖKr}YF‡R톓˜¿Z�c¤rÍ, z�ó®ÜƒÞ‚�QÍ€cKƒÊÌ˃pyéoæt¶fõEò·Ì�|í³©P¹œöUS­iT¢…Øœ²yà™ðÀ<=áEN´_݈[�4£> =ònÆm �q«ŒzÙ¥x?9÷ç` åÏoƒ[½¬��&N³_’§%I9‘ª—šÄI©},*9ݳvÜý-'�ìXèîçn«²2ß¡Æ×ÿ‹öï`ô�PE(±ŠÒøtcEžþJ!Ý™&’î݆®øï…öµ‚暑Ú¯˜b-¿Ÿ{ïsÄÄÙjçõÑÌ>íÌ0ìëæK)yé'LgÚŽÙH6ÅâiŽ}³¬þ6[t™ ô»)Ñ©Zì;Ÿõ³+ü™�r:€ÆúÐè÷å•!³;D<­·jòIE6Μ6umB°‹BÉùéŽuì1žó‚s5¢I�Š’ФÖß½8&¢ªÀ2›„ƒÝ Ž ›|¬ËóÕ£w�0ûæÈƒ6ªí’9#Ú&:«è’”«GµJ”ÙwP &¸®à‰Ã.‡îË£:R[íﱈ?!rã�ÎzÔ!ÎÿþA9"weÛrÓ'$ø÷´ÝÊ«ÊT{U6v’iýåRWÁ¾Wìô­éBf‹Û'®›Ôµf~ÝQª¹úJLöaAÙS=-# S\5r°žhê6± k’þe¡¤R³§6�þbšÍíiÎÃ�Q”*ß< ²ú0S=ÆXÒp…ÓZ€'é™à§âÇa§Þ­ z?{Á´)ÖjR^cRJ ’³4ƒÆâAæ$ƒ�zÿ¯»¾ yÍ—x0P ^/iôVâÈ…x:¾‰Ž2/Œ.%V>hÉ&÷a⯕ctÙº¶4‚±Ú®ÖáØ8�çŽBm²v÷è‰d¦['{=ô:7½éÔ»úº¸æ·*`4“¨�ýÂù­ô»„R•àw“œ“VM�öù°iÇš“ʃÊä° «�…飫nZ;Tô²M!ê`°ÕË5è�vYmF4Qî#¤‰mîå·«�ès—!:ˆp–v8~ Ü… ˜gçH�^×|©n!(d²æŠ^óD�Æ¯Žƒ} CðOÔ�Ç0)$“4ŒZªppeˆ›4P<%Q÷À™‹EŒ‰±éºùÔg2n×ÝŸ_Õö ?IÕ÷ §ðS€?ö"äˆPÊðÍ>�½Ë؈ôÐZƒùµûØŒ†„S¾ìóýmÜķ?ž�¼ë$ÁÐz�ôQ£¨~óĤ¹Ò1†”^(Þ�nÇuàñ¤© ô娡m½Q k¥Ô'·ÁWæå�6g{BÔåÜ`7ï9̹êé‡pZ'ïøz—‚üSl ftG=ïÁeæBþÖ [ œ(JMt‡;ã7§ÍAËåh!f¦²w>¸{ZŸ!Œ‚„/–£òK{hçÞ½u ¢îÒré"Xöü ² ÌU¤Äò@0QFéMFÈ]sÆ»óä¥f�ÖeY8:d ¯Ö|¥AŠ%Š1JÑZ :Ü'�JH¶ùh®Üh%žº »`Ð;I+S,—[4ÂT�&1ܜ޽t®ü67å…Žå@4ýªèQ9Ã|•þv›ç×/”ÈïõžUÉ‚–ó…‡Î¿‰vѵ�Ó»ée‹™¾å¼;LùügÍe¼õ°öý鹦ž‡3u÷¸Ï�Éϼýé#‹OºÅÑ<ðB}⛡·†î‰¤ÝÒMõŒÇ}}›Z*p?Ã!ðÎRЏ/¾-Z@m0ü4&ë�VDdú¾$Vê y)OéèÑÞª…ïÂùêQÚÖ•†2M°}Weå‘®XŒ‘°8eÛ1ÌùrçŠ|kå‰D�¾5`RǨ$’Æj w4�!-³‘�V] (ÓUe­NÿÁå¢,Åä[ì-T¨7 éÈ <�þÅÑ_!—æn4<��b!ægÞ–l)Û“'R¨üXò�•tdá�½X"ô‰|,`ñõŽçFZÒ Ýk wðIW ´ÿ�§ˆ[¹Ö`©�êu�y¢é Å%Ô'/ÇàÛfšì›Þ)¸Ä©ŒÆ¬“ξ†Ó°„y[}lµ€Oc-¸�Q¯“µJüP(çÎ}=DX´�›¸2/È5éi¸� ¥¡%‚ †Ñ0‚üeêÿ i[ôˆªæ‚Èòhïþ?x~àÈ ôðþŽ>Í e®Aõ�™Õ_agxÃæ|RkãT‰Žæ†í�yñSsòBj’èöŽØæ ›ÝIƒJó³–4žš ÖŸSÅ…(í?HíOa,ýÈ" ¹Ÿ- =ŠvpÌËPP9é�KÂ!—™ bÛ_xjìÛJL¢PWx-j¹"Ù¨(»$Ùù}�hM£7ï}°F·Ô·h|¡l\õÒÁvÚâvR:Ò™Ôçub0Îü Ÿ¯Ÿ%é,‹1ŒÞ�«ßióÿ ÊѶj¦F�.à»dyV>f웓ž]Ï‹1šÆô)ŸEL¸œ¼Ü%ÄÄIÉÔ̸,HrÍ Ž_@Òe‹.ÌBR)b$�™ü¤Kô)™gl¯\Û»d™Q˜Þ\:ÕønÝ5%|}ˆ9²% ¥#.ýÏ+[¹/㣶G-©œÙçaœÏ�[€�z(| M?’Å}¹/îœØÎË1ðEÒqŠ? µBD¼TF½�$?�ÚÇñUgd‘ÛšMk©ŒÅ7;½�w|ÓÔË1 �9!“ÑZŒÅ©ÕZ'âxwq:om�>Ø“Àg·†‡”«]2F¯ÿD4m“yÆ™,AÙ<lÖ“»~üEºÁÄó4îçئïG“È$eÚíN8po÷rÏòuæèè £·Ôûuãúynpµ<º8›¢ðâ  s}Z¤—x\ª8¤(e Ü#Æ •È´@æÆæµ¾CzÂm÷ìšk¾îj`¥”‚¾ŠmÏÖžÿœ,uöÊ CB±{°“ª«ëR’øÊvݼ°Ia…P¶ ù9�ʧ%‚–µ2øÂo tv ½›Ö‰aÇŸ&½8ýi>Š¶Ö˜�àB×)Ú›º ±{6&3u/™üèÁ:L:h>ù>_¾àÕéU¤_T9Á#Td:dÿèV”Þ WNµ-õt-8˜~�WC×­/nŠŽIÍ9ùË�=%±«ª´ ޝ°^q5sòîËåóËü6:Z¤A3K° ¸h¿»j‚WgD—Ýãd�úa ‚YwdûÃb\�äñ í~+a'«½1âl˜Ž}°GO[þd'êWl¶'1P.ýè©¿�TàOR$O5½Ãæ­Š«û$YÊ$ÄgŒk0øhÒ¶º`h¯_=^)�£K]{ºoçxι4£¬¦0øø$XÐÃ8ýuw”ƒã!‘ƒà|.´jJzY(àîù¶D*5 oÜä~ëÒ¿Êù:TÓù°-ûDëÀÇ…Ž8‹‰ÈHbO`¹N¼(ÀÜ˹£58êtÁóuÐ!‰ýÜ|ôýSe¸ÈÕ»Šô°¤kÑ4ï=>Ý”ì¢:„PVÚÁ"üÉVEa¯ÜX™N~óÐä,[@öHEŸ÷ùQqâmš›×Ÿòt Ø4°4ãÕ)Òð¥gkÄRm€ ›H¦yf=¤RMr”Ÿ§„fL�µÌ»0cíh‚qpSxÉe‹¼ã>™c¤¼°�éÈõ7_¤ |ÀáhXbͽ\·ã¹%‘÷ñ©n]éñó}QåÍsÐb[ÎD†Ð‘ ¢åƒ´ƒÐê*Vºœ;bî›Ê4tuÒ�¦admyÔE¾íµ=•^nùÝcöUrŒ¢0,AÞBc:îLœêÑ€A§û ]Ô$Ž–oaô�Qí9PG`ú}¬�Aä»ñ‹(ÌEÆciÙGëÓë<Å{”qÙ† C4åîõ‘bu¥9âÊãù_C ‡J÷ADÿ #å ñ¿lÞ>�ôÝÂ9ÓB;œQŒ’QGÑ2`n‹¤ @щ^ï>®¹]E%Ž?ÁLO¤!Š©Ïîú˜ \¼”¨�!ök v“Å�Š�pÆp˜“ 9ÙU G>â0U~Û‡ÛY×Cn0¬®“ÖÕˆŒÀwϼÈWá7í€ê…©uü¹ñ ¦˜º²@£ö’'<לÃ~¾Z?ǹ7éãìÉ€Êì@fä|ÔŽ‰ãa5è¯eÃòˆÝÞ¥�‹ZV‡7âØñÞ� Ñl( :Kq½^À”~BÀÔ¨Å;Æ ¥gyþQDòT¦’ÅÍïCN�ñ[Ù®‡Õ´ë–7D×êî9~÷�h´Fd¼M�4Q/õÝ ©” ˆ Q!FSi3„' ¾ÔÓÔ‡P=XJÍ ³sSøöe¿ÓlRìm¦Êš?Rý¦^ñn<[ê%å†QµA;¼>ª¯ªå´Ó‘¥Þà‘H'Ín˜YÞˆ•G·`ô¦±~yòÆ+b¡(J/Ð'to®Ò›¸zHƒ½ŽÛËúFÜ+#™m=]2ÏŽ@¢¨Z®ÓÓ¢Þ==ð±—Åï¯ÓVÅ€¶_§vÈ[UÀÎÝGýy-wÖx< ;³?í(îóÞ¡å"¥n-pcøçâµÑâñí-"É#<,í"K¢+.OukL—'ÔWš¨¯ã‡å¾T›¸ÁXl{�cz™‡,ˆgÛÎ�ÆPesC¾‘—~›!쪨ë�Ät‡,i£Åú‰î(“Va6æ[«g‡ˆÀš«E út +íì®ìL~§èG¬ÈÅÞü­¡-Üï X“DbîÇÚÜdJ¾ìW,]ªß\\!ªx(±l ÒY?\ßÀt¿ÒÒR‚’ë²¢JK• JLŒhDÈè옗Ìý‚ ᵘŒâØÃpSæÏøÔ§ýòxؾED"¹‚E—£ófE•É×¹†ÏÞCFnsg×Yjå…(xÛžñŠ×o8@Q‘³l·ôKŠå´cDÜÌÊ’R >1éûâps’Dú¸x+HBÚÆ. Ñzw��s­÷©fp þz®÷29ÍÙä–¬o‹ó�R‹œá2'¹}Y× 7t¡t*“cçòýèê�ÁÊ6¥=P«Ó¼ ¬"˜—ì�‰UÏÆtƒ�UÕÜ~ùEå« ÀïÝ>ë QͯÑÛk¿è]ÑývK0¥›0~\š�(¶Â Ïc`B+0VâÜï8KªB𦫭Ë3¤|ÄF° ÇÒ�N3Û«&†¥Kô…+÷•”Hîˮ¾tº£ÂøSc³iØeÈÂá I8SXªµîñ€ @>Š–)ó½BI_ñc‚ØNŽsbÇe[&hdõ~(8ÉDE]�÷: 3OÑwÒc¡µµ¦o/A¨)2&WtŠvœ€èuê0î1¬{ø¯x­¿Ê\ÙS.Ó#wGÝùÔ—}üÂ{¢àÙ›Ÿ†)¬…°0Ÿ»AÞÆÉýæï œ¸Îo qª5¤òÁ0[]ò�wÞGŠ‘b¹ö6 ³£G,‚<-<‘ÆÇ×Õ¤L5÷ wi�Aʧª4ÁÝ;tÙÚ�”jðDso‘�14R×=UP|™ëu¸O”­aî�Hòìc+·>ÐÉöfXã^¤yÝq¢žÝ@ò°B® Zï½ýd » Ϋ´3ãŽ8©êÖwp‡…´µ¼ò?`Þ/Z<_ÇëØJ2ÿ±‹Ý«m¨z—w@›=†¶/DýxJ_[¸,…|>¦§33{ÁMók ©Ý’`^_Ü!N­šu$€&ú–fºÍ`>B=W` àUÏÍžŽÔŒãMÿ Ÿè¬œÑ½jШ³+‘DZ"@uPZîßÇÓ ‡IQVÒ5kXê?C®_#k¸¨žð›°¼ÁaÎ$¥€P6yûòãyMúdï‹ïŽJ]²IûIt9c”síE ›ØÚi÷õöw·­Nñx°|ÅæÍ8j8-ºEäªHç½Yo×îä�oÁàXµ wk6g=·‰&ýÉœD†:sDS)ëÅn�¿÷4 ½Q7¬µŸ+EØ 9uþ�\%vªWšƒ•�®L6§k¿^]N¹)àÙSCcàiTbthÌüúä£ã�¶\Röal¢•k4ÍþxA®Á凧õäîÑp0W…,-ø DGr³ý J?Â\=ufŒŠ÷±ˆã"@X—"ÒÇ çæ¥JÉÃSíoµ¼¢šÿ’kâ‘FôY”�KÔI¼’*ÔT%7ÑÔц2æqéÿE…¤oÅ…"ªA¢#:6ø8Û‰‰]¢²ÿÉê,Â;âéQ¸¡eÛ*5sÀ€ÿñ*08R‹ò™|Á똃I|ÊkQ"JKhÖû{îRß4Ã~înWqHª_›–B“XLCŠêˆ1p±I7lŒÎÎN´",£N|ÂìfWªÅÇêË-¢Ë'…ØMÁ¹’‘˦ÀöLòÄG¸ßÓšî‘ up93¨íÕÞú;R{–€üUë’¥?ßÄíáÒ ½!¶Åï¿×†7}¶ð¸pÑ’­˜©w„°¸ÑJ æ~ðð?ŸÐÊÏiº´7Ó·B'Ÿ�D‰«ç�ÊÜ9eW™{¼PÇ|†~Uè\ÊâfþI¤Åò@† [~õœ»e=«9û‘3*l«wÜå§E€ 7RO�²)÷»Õãœ:EóŽ|TS™{˜˜y5�[Ÿ•þ%Z�»ÔAÕn—<. Ô×¹HÌ¿ÒIÎŰû…Xü‘… ˆb…8•wl:wî\Ž*wÊ ÊòÕä>=>)EÜtyÆà·ÅŸ˜7°�}ß�ãuN0*§j¯µWZÂ�ŒâqB¡.b?3™Û�å©úWbÉhÉ -/ÿ\ÓÁ­ÕIf?“ ^�%µ À>ö5bì‹ n0&yÑ'Žd§B‹óÿ%BÜýùªÛp*Ÿ/0sz~åŽéÝCÁä»°:''³˜×£]«áж^TXû×n�p’|#YSÖ¾f|ǹN6Àcõp}€„r gB>µâÅ+ކŽú=çîÛTé E;IÉ&ßè�ÄçèY`À{õtÄ©¯€*¹q€ã?¾ {zòWôå=ô Q0¶„L[5 G@ž�Ll�7–Ü"´gžW˜2ø1üyw °uC> „áç�jnŸP Ù"¡eÀ<$­ÔÈóNj VLî6F@ä·àð±ôFñ¼ºUÕÄÂáK ð(_YOÛ·È_ç8þuÎrüT"5¤¿‘SwW¬€pf;£¿¼5sœnÜLà=dcvñÖM¼Úóž&I¿}¢§€i¼^�ðb[Ü–1÷'7ópË,ö>«¯Ì�šÈQÅ›ïpË·�GndM-¯õP˜|ºÝü Nbÿ”{Ôâ ñ­»Råª\Xøµë9N©–=7crx�É?<Õ)£ÎD`fë¿¶M“n\vK•¤$1-<ϘM©x¹0v)««®1®™ƒ�U18ÙAÞÎÎJ[Ÿ&@|�GÏBÅç�´äªÑeÉdž>:ɵ#Ÿ”·ÌyûšŸª®|ÛWôP@ó‚W×^ÎÛNx0óŠ.J ;w<Þß3ëe€´˜×”PJ“¼Õó/Qð*ª±"½Mã[b¼b*®; ˆQ —<*'’,B‹ 2÷Ód»¬1qŽ–œX�Ï%íµ·oWtüÙ~Õ›àå9¸LTµ�Bt2)Ëê·‹gɺñ¤‚¤Qw™j¨Ñ×ê/–h¯p¼l× � `z¨Qk“@lY¼ÔßáDüÈ öÖ7àM£@9à÷"Yª�€^@¤Ðuš¢Tcÿx£‰‹õçÃ*Ú€¿YŒh·‚±&Rñù�Ûé×Il6æT÷ág€€4“ûù{j“~ßûh<ÝP|.”'�öTXUÉ(˜COWü£û‡†˜Ìrâ¾yþÃÑSàWÊýÛJ>¦wÕÜš´R‘Ù¾\h@CºåñGH°®@ðŒ]Á˜™Ôm錒-Z ja 1šò•°Öñ· œE×’á£%$N› !ÐòѱΒ°g,çÁ/:-B¿]úóÔc>OS®e ‹’x¯ƒ>@Ò+U  ‰¬6¢9c<r¥Ï*SÙ½²Å/¨×4“SmD§Fs#è:£íp3¦ÛˆÃTŸ…¢tBŠ)kw¶O³šÍR îi)äT‹A>cíO“Q›ÜA¿£´»ý.`* ›”/Z{ÙCtNÆ;<ÐÇÈ×Pµn¢L$„¨ÇÂæSûñXÞD£Ç÷9æoÌ8he.\†LÀ±�¯¤Ð×däC[^ ô5úž–SJ˜ƒ—´‘ˆ®•@$ž (¶iô©3x¢Èûï_ŒâŽÇ%á$ˆCL±MÈ5,ýÈ—U)¿û—_´‚êÓ»‚Pk,Áº;¹�F…óîûÌcë2�Ku†Võ.†¶�]j ÷¨íáI:§ÆœÚ¹˜úk+ ?– ­‹õâ25Ràu3{\ýŠ5¡5t4/U# ;sp Õ±Þ ²cY‚·g$Ö º¬Ú´¡^ëX"îy‡iƒÍ�€Ì¥ö4¸w\Å&´E˜X¾r[[¤m`ÑT¶öw™œ—¤‹ôìs—e†5y,OÄš5k³`V"fÔl<˜‘HßLô×o)«w« 3¹ÿþ ú¢YàÊ>c (¯æ£$¯âìKØ'o†T¿áæDv;B _ØÂ> åÐaüÚàA`xk%V]U³§‰›J̺s?Çfƒg7¯Ì̲š`Ù76éÝÂ_Ò�Î)�EJw�Ñí:ø³½º|O™ÂCØÆû ?Âóƒ, Û¹žþht¨éZ xÆ!]R›À0GÁo¸bh¨k2Xs”KäwyÊp 9ˆ Ú/IÜN^)¬˜�ý† € ‚­;‡�Ú;Š ¯ DDš‚öß¶à=Ì Kô,åb³6kʺF¤Ýû ý…Hpým(Vn…™‡fÁ‘°2õQ¨±;þzž:Vù=ªª¯sA4¾ëV-:e�UöQ~Ñ•ÂɸVU}"'J\^ö3X¹ó yëÑ;› Ü›0ÞsO 4½Zs‘àÈZ®Ë«â. q^ÇÖn\(ú«ˆcl·ñÕÙS ¦ÀÇÀÎ^ñê"'—&ÕÏ€¶c"Љ(LuÀÖ å°mËžˆ�hNU1Ørå‡k0ׄ�º�˜^% @ÕvÆÒ:õ‹ N´;³9 àªÛ.¨fÄûOù8@HàM�^’5©_õÿàGéõåͺs&eB®øÓ#¢³ÓgϽÙDz�äDvgú¸¹J±óÛ ÌâÏ xuYÛ¨ò!YÂÆmc_ä“å¬�¢¦Ô~‘ìtaè3oÇúh u;fÛ�L“Ÿ ô`Å7w°;ǪÖ�.üOèU;dg�xß@ÃK}%oßêS/‰vZÐÊ „;ýG`vh³Ö "ÊŸÑì{|Ú¶ËÔäõǧ!ÉXVZPÑ™™•ÅîéÃ$Å3D¶;ËkRLÎ>ÑmÂîãš·�Œ0©³œ¤DE7ðL*µ~µÃú-”™¨£‘h‡4­¢Ô£»™+…ÎOy¶ÈùêÊtñ³X€òšÀNE`4#ŸœœWy;èÛ87ÚøóršHDª?ʦ×Öa<£èiðIUOæì'õu&ÝvEk!„‘prfFúNÃõ$ŽUâíæàÿŧø••=FÛŽ‚p¾3IÂ�ØH tæßOh¦’}kX~à€ïǧ/U�1˜R+MÐÓ6í(»]¯Iˆ æä¤¶Yt‘þ¯­«@°Ä"Âhñä{$cøÞ̉f�=€ð÷«5¤95Â4ø_“âqh‘À*iòË]Jd³NÊFQ†áAÞwöŠÊôìFÄ#LôÒ¤ç4Ý,þÌý[ÖÊ<°¤cTö€œ÷#%“Û-û}>Ë Í�g]­ÕXGÀ4%üù üNy á¡US) Zol‡‹MPÀ•ü� ówºÕæwòv;BJÜöp5Êõé t0PÐ3ï5†']ýöJ%Ûe-yYÌõ?Š?( V€ÅAp\”‘}¸ÄÚ8*©¨BÖ€¶`ðHîý~òEkƒ·l0öî¢'�cÌ#[ ®*þPÛ®œ$6³­y…\ú‚·W¼B°–%Úª›Æ$Û¾8D8^ù�SÓ5G3 dî}K¡�f:I÷àÔˆ _δ‚=Ÿ×ni¿^«Yc ”…©¾Z5p�þ>²­?¾/àJš¹�ÞàŒ–sQ_¬±#>˜ý¶ÅЦ—Ë $ræ§Õ¾‰–-R] øBÍ o`5è”i<¦¢Øy­3 ÖsEÊ8zª HÀ}ÚKÅ÷ IrÉ~f×.t‚pZvÔÉæÁ‰÷‘¥~nצ!гÐX$_U‰D¶¥*sT�ãQRÆ*â^ ^«ù–�ôo¡”¥Üêz.�€´ˆ÷FÔ€UžßÂþÖ 7¥±Íö—í³OoËòhÏÌ·Í+þ¥8ØÞ–÷Æô¬ë]šI[Bÿò.mùU Z?>pn~úý9'éþ²3C%œ?Î;Ýx9µ!ø~�áÅÃ#i±Ê M�Q8B¯(dÄÿpÂìì6^"Úr[ËÕþÑ'ñ8ž’ÅŸ$ó·~ß<ýŸ�ù%È�=o¾6ú¸@HçAü=â ;nis7×ÜpN󴮈ÎÎäÀ,øRX= M~:,ó‚"Ö=S…™{ðòç�DÈ‚" ÞTÖÝ,7œ¨?UÄ˹އÓa~¾­_¿ÐÏ6²Ì�HYÒû SÔ/£‘ý(\ß&„«“ŒÞÀ¥ vÛKß6B¶Ý[r[#¾j%+oUJÉÒ–>)”|0–}ÊéQ¸ Ilˆ™ÚªvD”ôýyœ ��5ÝÁGýè=¬»Mí‹X°'±GjóºÖ]y£3 ¼AØc¤—g)A’Nüee¤Ù`úê„GÚ~-ƹ�!uæ~7z`Ñ—êÝ>¦¸h ¾¦ò ¸¡-�T¼øÂPPsb`>C°>ù2jmêþºJl®—ðÿ�ÁÌ·VìžK–��öWO@H^'3'i;Ë]UÅÿù…ñ7~Ñ6[+X×3±#¯§ íî�o(¼ù`zàÄ¿DÚõ û„úôì –ÔÔT'·Ø>-'¿m‚9ÁôßíÒæÌúÞMͽ •Ä�¡ -r¼ëV¬¾Û:B„J{›U�á‰‰å· ){u›ý‚�.³ ÝÇá˜Nù(–Ê‹VËã¨'ö»$ƒ{¢²ÅOgÈ€½×ŸüÖ#@žÖê3Ù ô(•H¶‰Æ®€æùãš––IÔQt"éUwÛf]¢�ËC+V&`k!Ø#jÔ¥V}ü¤°ñý(ßkd)"QüßýÑ›øFøwLá| ëé¯Ö!K`Å?0ÑP~\FÜÌP¶ �oöI0z©H±_•3ì“×ÐóbårhÐ˯Â@2fM¶›Ç8A2oK=/™ì°]¤Í©A²ý¤8ØA�8W"a"¤IGyaƒ˜»ØÊä:·¹ /ö·dv¢ã¹O¾/ç ‡3'Œ¥ÉJ_þù’t`ÄÅvDšö—XTå}¦¯¹9WÉbö=žàÔRZ QQeø$.ÚZLT"[’®£h5ÆÚ­Bó±•L•‘,ÿ nÏäbÝ¡&Çü¶ Ož>Îò°ç‹"G\ÈE]îíÇÇÁÜ7–`¸>`‹4¡uFÌo `ˆå Ð’)æ�Æu ƒ¦äËH*j¤_da•§ŽhÖŠ St| Žî'+NxïqÒçËY¦è”�„xˆx´èží�¡`¤¼‹Ýž&3š }-ůʚÆÂ%Ÿ²X÷ÜM�ú ÞìvÅ¡[7fyP¶¿Œ×âI«WU†*‹‚”ôŠ)ŽF¢EnY˜¦–sBX¹q@»® bbw‡ç|:§Ï¹5¼bÛ0yË�w~>‘ä FÚ¿uº·ôÑõÒWµšµˆ·;áãUvC¤Ëäÿ| ÿìcâHyiIBÃÀ5¥ÞŸèýþ²¶«$ö•®ÉQ�ìB2‚‰ÍOzH‡oÞ Üv[ Z@9uUwŒFQ€»ÏÙiÓTŒ!__Ÿ?7EP{‚á6©J,_:,Øý”ÍFûØB�9Ó©ÿ¤¹–ì^ÆÀÿuË‚œ4‘nN¿xÏ ÅëÎf:É»`²ˆ­o%pX òÚ“Šý�Æ�i>ò›Ë[‚ž7 ~QSùÕøž ½‰Ñ,\JMÑ Ÿ�q(oàøGà2×ÖvÓ9‘W:^?…G†¢ÄèÏL -7LézÝŠmûMó^ÒjÕà^µåY…Ý&\[÷wS$k p¦õD‘üGùÞWü·º¾É[ýhÕûAǺ7ˆ3ë[b‹‰`l oLØú ”Ê%ØŸÚþm¸zÆáö<å^Ããfƒgãñ¨Í«$( [ɆÌt’w‡ÿÈQ7#…ñ2ƒ Î t�„Tާz¬yh‚é]–„:;É€œ.–Ç1¢ˆ—3ƒ�æ“>ÖÖÛE,¤|òL¿_^ït¾$iE‹ðRÀ+¤6Ì�Mª—|¢»–$óò‚»8·>¯ŸÏndz”�ð tÉ,ry¾ËBŽþ Öo+0ª¹ãq�׌‚4¡<#gÐÁd¯x,ä°rÛ$·UK¦ ~ÑÛÝ_Q•£ÏÉ1bJ!ª6ôÐÚ1ðøÍq� ˆÖ7×l³˜cq]µ4¢Gd§C— w#IW²Dè übƒ�*)mG7ÜPü£7LñáÒ« Óžµkþ˜«—·pW"‘¸ ϨýÜè WO_Dòç¼æIË ;IóÑ>¾Í8íCký“òÃBÖêÌîþŽÛ6^è¾Bü»ø­y÷Z Ï�ȳ�Ë€Èü”êÎ'&ƒ”1‚ Úw¬eõ²$IxÅN¹¿2n›°6©iâ�qCEæüJVO=¨4‘N2„ß2'ÌRVÂ,2°á3 ÷~¦Ìr &ûrÂÃÊ6¿ž´Í¹‹ÈºAÑ–áÎóÝSK²ÕÕ‹£ÌÏÝ’—<WHÀ¨U"æpH*wjB±A†‰Pä|<±ü“ùµ9($øZ °ç¢F¡É-+lÀ¿vh3ê&!XÿÂ’²Ùäù³Ärê\¬B@óñ±èË…ŒÙü\´2sÿâNýCƒ•b¢´¦€eóÌk#=„› ü‹�k™…~Q y›èÊ´“Â@ä/~ä�™·ó•ü¯%ú0 �m�£–[–> Í‰Ëÿ1“Xˆ"ζ%9LVá,3B°d¿( 8Ýû;Ë6Ñ6ø±¸D�á/ëÒÿg±Œ­I5=0Lóf ‘ÐkUÖù­—Î2 îùpÖŒ�jOeS¯§ÞaãðVG,õkЉp“^lÌuX´£JZƒ§¦€ç nöWØTØE™Õ'gOó¸t"Q&ïN¬…”4†©�ħ1׳õðK>¤%öò�»ŠAêZ¶A5!?ã¨xÓ|ã÷S‰:�\G/Z¸+CëåA¹œ +.Ø]£FÞcº7Ã_/¥h*Ô^›«t ”Ôb4ÐÁöp� ËŽÁažÆ FkÆô=—h˜á°UFȱ¨mqƒâ¦êì)bêg& |,•nË—,/�5mbÌ—|;ŸÀ㛨u+® Ô¤]rÝ#äo×uw´› ’&a ¬ïñ\r?ïÐÌÒcÈ fÐAJ÷?!q’ê44¯ß ²¼ûFðûÔKF‹“e-ö �ØQkûƳ7c§ —ž"€=f9éóU;¿†× [@ýÀð1I­7È Ìyó‰vk&÷ñ’ôì„fÁ[è]´sRXÓÔcY×bk¹*å09×/>¾Ð꥔RÂG.§KÌ ñÃ>§Ný1¸Èw›œšÆ�Œ‚eG•–Œ˜‰T-ýg»k]¡™¨º¨·mùµ0À‹º-6¡H˜ê$‡W(4a? [Ðc•)n¼­¥"Ãatuœ”s‚osøÊtñãËÊöÂ詇 ÑZ¸^Ú%]ø™%N°kËœ� )6ÿk‘~9v�´Ã)Z¸%ņöd^[Áéräß’TëÒ؋Ȁž?¦ð�~×Ãçè8(¸c™ ä�ì6cìio4¤Ô�û´$ô7e\µ^fÁD.Ö>“V}ðć–VHTzͳÌݦÓ÷9­ w°÷öƒbÈ„*;äç€ÜíßJžnÕBwŸŽ�ÊóëˆïБz,,™‰‰–â‡æ2–h“Ši�«]a¸Ráµ}Èû&ûkäoN|geg¥&N9v?sOPà))÷Œz4ð ›áÿ#:gbNÀ´îü�¯®ÜZĤ~y�©4¿г#TÔÇöØË3ŽàcI�íµ‘Í"ß%nSì�]§Á2·bncšcÖ÷­³!¿o Ȳd+ tN VéÁÕöKÈz=û“¶VÓóçÖw0ÍØ+KÍ'4£š¿< È[Ö,WgèxR ÎðŸ�ÄçºÙwy¯µu™ÌŒ•kþV­£`ß'ªê_AC¸ÉB§8Hˆ’•VRÍãÝ^œÔ/šD«ÿP!tÏ$f§ÝR"f2 á¡¿L¨LwÇâó–ñû¡„eĬ@Ћ’ƒ¯«²mý— lEó’ú#�Z¢ ºà- »I7w(g¡��Ôôï$ÆTÞÇÃ2¾T‘^ûƒŸÛð”£Ò¯óËLœÙ€wañvß—õ1¬ò0˜C3ù´-F7‹™i-TE-Þ�ÿ4Ý*¦øñ�r¨—‡ÄÙoÑO¥3@çtZ3HÑÙª�oÄA¢”¬X*£*îbT<í¹£ž¾[ù¿fçXÚBƒR ©LúÌœŸèo”\Ù]Yu�µ‘ã&ÏN<êó£Ëù± üßò°0 òºèÂ'gᕆÑ=^ÙjN©võøTâVA“hž1¢éµŠ¶ð¨‡t›\7{'—G-ü|ùì:�9DU…YGP®R•Œ¨×å)±öV5˜¡B¾F0C±ô•[ÄåÉÀk¤G@‰1Ý´íŒ P6± _k•ÛtÎè?Wÿ‡,Ä‘ôqð*¶o€¢ ŠRšA3NµR0dY{ÈÙû£.3Ž @£zr«ï‚†þqÝêjUsMÇ(ÔÀ^Ôó °ò^ëåm9YŽnQoÇ®à)Qò*jSIp© ÍæàùO‰Ú㓚õ|–ÿGá§Ñ hÁ§Q%ÿ†@X3 — +§ãôš¨ë,൫ÈÞ0€ê%–‹GpJ­#0ô&#¤ìFªéf?‹¢g"‚ᜯ}ö®ª\>úöÉ("!‚Ï/¨®h”Ôà(àßÛîE'aˆ—ö�õ/q"'X7Oe;ðÐpœ�ë�~±»|µä¨ý)Óž�}•/|TƬH'0…î÷¹ðqI2„un¢l˜’Œí¦@:{x¶© ã4s O¯·/‰.›ÒÚ—ŠÅ£cñxÛRy<&©ÁT§A®¾ÚW �#Šá·hÝèEÑ ÕD{39 #Ei¢’²èúà1™Ú ^jØ ÔÊÀr,Q§IÖ¾  h;ª æèB]+N³X´Š6®)ïmä·¡”$LQ–Ó†…ž£�ÎÑÝ{~9JUý®bv=×È ã°üz#]à:¦¤)Ù¢‘�Ê]-w ÿ©_Àò»Ûçÿ}Ñ�ù m‚£ë!Ã*Á œ¢þ~àPÛØ*"ÌKKhèše}ÆNîéx–Ž %Â“Ó þ©äÍeéãDU¥`_96GuRòÃZ’4!ízÂÀxãrÓâ4ÀYšE—sÀ¨Ø?J¿«�@Ü�òSöOº$4�ñZ§Ù.fô+Ͻíal 34à¢ù©õ,Ší‰/©KÐÓw­�úÙÕ¹áFa»=©�H3 ÕIm=zÉñF.–#ïÿo�ª¤ó¼t曺i�\º±ù¨JäÆÓ.Š# •Êm0ˆ 3ZXµÑ‡1›Pš÷%a zÙú®6ik'|aËrLË;…vœQ"^sè5m•N-»Ã1¯zÅ×4ºëç_mŸ ´¹êFï´á#Ú~,„ðA "sc•Ë8°±;=§!ëáù/’Âízaƒ·Ý3ÛÊè¸Ü[¥ˆm"/”’B³ú¦+¸°nþ/yn¶‚@ÛóT\W0 ©mÝ–…žñ›”ò¦ÒîîõMt$È|©«¤¹3¡¥Xºín¤L ßñ�ËŸQQ]�r{sñŠãÿ Òí¤põ5ƒ)O£,x°y�ûoS¯ve.0Š´GƒnλaÒÁ aK¿À0]‘= Ž"-2@©”&©Òžð —ÇÐ*íæ°JÜ@‡+©¯t?Bß»* œcÔ3Œvmᥲ9Ý~kâ»Äo�»êŠ^�þ·¾|îŠø‚éÊÄh¿ )ˆÀïE® ”…LaGv)tËƸØùè ‚È±j–cÓÛhAóMk°"IË= éD)Ó�xÍ@Š4©ç‹BxWYT^ŒÔ"'ªN_Úõ[ €ïSÍvÀ‚‡‰ò˜Â-®­Ãf D5p\ˆ£éŠ1Ãû£-µ CðEŽ[£cû›zrk}g°tÜk €ú�‰Ómáµ Ðð 6mXÌ·7Zd¦-°ß“ =2s®/Y”ç¶:5^\3ßKÙ¤PêYŸ8hÀ&Šïò½Fª",*œheŠ|D�n›æÄ° "ø HÜИÛû0¿Là'Â] emi ]ÍÁc¦H {=‘沪¹„øaÛ_z=p½΀ªåF�ØÏ8Ìù*1:— –‚]áN³úÂ|/¹¬nd¤ÿ•OpÜœrí}nî¶C;~�X˜õiìòI¾_ãj�…?X÷ ÐÛp뮟0Kc¬÷aÒxÛ”†=\ä’�1;k¤�’'ªçƒ²¼õ ü‰ozB£QúÓA"µ%Q£_Zßoí¦àø­E^{œ]ûàv�L@uh?Fú)±e…C?.•"Õ?*yzúByhäE?`õŽÑk]0ò½°ºTƒ‡ÿ’cñù=i–ßÚE§C Ü�.óµƒ ä¥½2Ý$:bå”U?Á¬ÑJCzOHßÓ³K³H×|�Í5Hȵå×Í k\lóðÆô•н˫ÄDÇ`îå­Š%\eI i;~G)P”4ê]í�·¾ôQjs£ƒëúðZŠž§»ÙŸÝ¿z¸Þ4ÅŽ˜ÕgánmÚ„ATË08gÑmÖ; â ƒ¼–Œ-±0š  ,þFyßïÖMi¡'Áµíz=ÕøÝ¬c¼Å°’Aº�rЬ„\h{ÛM#.1Õñävjic ¡¯0iL}‡¡¼]¼l˾ñrÿc�§zý¯ôxø”ƒ^4þ°€îþoFÈ­)©§�É&\Ç»M¡#ÆM·ME³ÌûÆØH'õÉ’ÆnÌëW/A�qaŠ«�5ÚƒèáºÊ¨«j�.@"‚RܵŽsFÝ„$;�ÿxsŸ·-´ã'BR¡‹õê;ÂÁÐW}¿Æ­¦+€V(¹úÚ~éá4ê×îe?4Úèètèä�`­/úXkœ]BúKtìdZ.·ü*0¼A©]p‚"MZ¶+Šç±ƒ9±�iÉ?0P¨.‚m¬áÞ×ýgtlü sã_¬|ž€Ö“O®�X”x�ßu…]Jû˜Ì"1;i±ZP¤ÜIÄÞ%õöÛrPÏ3„BwX76N¯ò¨˜ÿ¼é•-Z¿MøH—Éw²Sá4¬ŒÉŸÑ,AOÛžˆQtœ_ÿÕy ËÈÔ�É/iÁÕÉϸ÷è,û€Gm—2ÑÚ‘õÚ 5Þ]£][Ó06;7=!ãÛΰ…q?×\Þ)´6Ý蜒¨l¾‚¦jÑÞ化¸~ ñéÃ]/¼š?A/00Là¾XK:ò¸-1ù²æ �íz¤J>ËÙ…‘|ôiXhƒ‹Ë&4¬8½yËá%þ­Ü ©Œ~|¬EŸÑ´SOÕÖO�b„@#ãS¦¼¤„:Éðž¶òWgg˜�C¬¦ZÈeÑ›JÍ`Ïí«ù®Úd‘×ÏTÏÐäåcèhEn´;i / +à­ ™¶4—Äã[ý$B×~¼ÞŒ³ÂŒºÆÖg]0jÚÒ˜�¹ ,TƒÇþ—¿ŒhõĘ¡w)˜ÚÔ*33oÚu0pÚqÅ3V=¶ÂSvv†é� Þoñ1zóHWf-ãÐfÙÂúºø>:Të[BÍèì ™ÆÞ#0dê;ÒB-_Ï—ã´º¼�a¶ ^ÝÄ5kvÓ–là³åc`ÝÏjiNàž¬P®Ûv4Û ×{:ü¿LxEËHb±öæ©*�/(èügäYt)ã‘ ‚Šƒ$GäŽ{ÇB..¸àò�JØæœ+á'–W"ï½ãÕ‹ºÐ€Li0äÀ/²Žßàbðñçv¼�Æéõ9K”õNú‡›Š± »x“Cï6§¢!œ5˜~‹ÃµPk¤Â‹€A¡Ü•štšEÆD»¤g©¤µf&±‹ºc‰,Ë@¾t‘�²ÊÈÙ¬žß·tÛ¾Ùe¯ìüQ¡ˆîR¡[/M)Ð$$ -MçàIV�¨gy§¨…E}¬ôþõÔP‡@¥ü°ÈPÇW†P±¸D7nm$2ºø¥†)xøÄÆ4tÆŽŸAœ½ç®ÃùL®úòoh%—ŸÞ)u½ñ”x¥ÖuÍÜâþ1,Žó=ËWS˜R\l„¹ˆë‹‚ÇQ€[úëeœ¡Ø Ñ}Jˆö©¹ÜH¶Eáf4Õ+` ÿS;C¨sý½)ù¦‡? ÏJLÒ„ˆ¯¾éu~”r¡ür~»”rÚáêZ'b›L™^0)ʪµ™ï·¤}OGLx4TeâƒÛû>RUÆÜܧ�¾Û®ÃNŒ T GÂŒ¿7P—Òñè™- ÉÕ2›�šê@1„=<=œ›–L›"¼hL1æT Ú¥/`Bÿ(„A»æŠ0ïüN]Þú�,¹YF Ç gýÜ‚Vض�`œ,3ÚÏ舚iKo¦8†ýÄ–V[+¤ºƒbñøÓÓÁcB�IE÷òMú×�5&Éž ‚3G�ºô11w�ÿ0ÈÆó9¸'fyW8ž¿Ä„û\*ì‰ Ô§ÆyÆÐ¡M½@á/¼·Mõ�ú'u/bC&w²â¥Ù�ÀˆçœàºVN¬ÂR6çš³³ÇÛýòfú�êèÝoC¬ªÎ?.(Ž6¾~µøe¦&ƒ'™‘år”|Ì“ù¸sf—êéðäoZ-çèis&"{„ê>1Ä—7úg)½¬ :NÎìùdG I‹É…ú©ëáíc½œ%ðhpI¸©k"HÇBe§³ñ]6Ã=‚%̃!Óz&�ÔsÆ��.“J,�Äê÷b]¹SÛ.þ]ˆR‹}.3XŒ ]¦Ž‡äÔË–�’µœl8Êð̇39³ƒX–Óˆ©r¦eteHx@OšR¹ÙƒíkÔŸ¸…º³É½�§p.èEÄfÿ¢=G ,ùP} pÒN«)?ÚÜQLë÷RÕ$ŸâÀâ=«)¾¡ñ鎑ÝÔo˜wNëöªgm0¬GŸ5ÒÂÙ ä´“ ÐuŽNݽ›G×£B’ѤµD°Ó ABjƒû]à ±pKºG�Kkc°o0ÃAJ1–Ke²-C¹0Öô‚�¶ªÃ÷¤T”ÇÄ!t³!@ŒjmV#;Û+ÕlKþÂX-óÓTkÌp+Jùy÷Ťõ*º?²`×ãß_:(þ.-�gëü·¥ò‚#T—¾7®@…^³qá�p¶,rŒç5¼m‡ƒºÂé 쇣úÃÊÊ2c`‘Rúi¯í8æ¬Í¼ø@5Ø%”\|&:oÄ„ª¿„N�„:äÝݧoȶhœ‹NÆ{NӤʒéþ’JXƒ;8ß%éM”~DCPBm©{ZÑÆh¬pÍZoR¯=ÙÒŸÐ䓱T™ÎU6޽ˆM1átÒeša¸¹k•GZŸÆ”9Fôü!F´_ÄÍøëãDø:mœ²—Rý—­“u’•ý ]“ô†Cñãcãȉ5�×k �3'éáP°ºˆô}õ§÷kúÈýóÿ¶ãk ·3QéíP¶ºŽôƒõ­÷qúÎýùÿ¼ˆ°Œ°�°’°–°¢°¦°¨°¬°ê°ì°‰¯Š¯‹¯Œ¯�¯’¯”¯–¯˜¯š¯œ¯ž¯ ¯¦¯¨¯ª¯¬¯®¯°¯²¯´¯¶¯¸¯º¯¼¯¾¯À¯È¯Ê¯Ì¯Î¯Ð¯Ò¯Ü¯Þ¯à¯â¯ä¯æ¯è¯ê¯ì¯î¯ò¯ô¯ö¯ø¯ú¯ü¯þ¯°°°°° ° °°°°°°°°°° °"°$°*°,°.°0°2°4°6°<°:°>°@°B°D°F°H°J°L°N°P°R°T°V°X°Z°\°d°f°h°j°l°n°p°r°t°v°x°z°~°€°‚°„°†°Š°Ž°š°œ°ž° °®°°°²°´°¶°¸°º°¼°¾°À°Â°Ä°Æ°Î°È°Ê°Ì°Ð°Ò°Ô°Ö°Ø°Ú°Ü°Þ°à°â°ä°æ°è°î°ð°ò°ô°ö°ø°ú°ü°þ°±Á^ )ž Kk Íq F‹ ÒŒ x5 5Y wU •H–9¤€¨RªH ·Ø !'+ê#.AyÁ ÌÏÏT4À�7| =øG\Móê÷ Vªy$ ·<“ÚŸü²è; Äjž �ö©l«¿¯ä³Ÿ¾E²÷{RÙcN ŸŸ¿x Á�î§îÕ–~õ È_ Þ_ ` ` ` a b öb òœ � Y  \  c  j  n  r  x  €  ƒ  Š  ’  –  �  ¤  ­  °  ¶  ¼    Ë  Π Ô  Ú  ã  æ  ì  ò  û  þ  ¡ ¡ ¡ ¡ ¡ ¡ %¡ K¡ ½¡ `/§ c° *¸ O¿ å¿ µÀ ÈÁ Mà ªÃ Êà MÄ |Å Ç QÊ  Ë ó Ì üÎ 2Ï �Ï ÙÏ 7Ð Ñ ‚Ñ RÒ ½Ò Ó ~Ó ôÓ ,Ô óÖ Ù#Ù uß íá ’ã ñè à ì Zï ñ'ð 6÷ Ì÷ dø aù Ôú  Á  ñ ¥ ¯ ÏM À: -." ²l( ¸H9 …F ‹G ¤G ­H óI J uJ ,K œK L ½L !M –M ùM PN ÅN �O  O ZP Q UQ rQ ÑQ óQ ø(S nW ªX Y rY ¦Y ÂY ÞY úY Z 3Z �Z ÓZ *[ ‚[ å[ ?\ ^\ ] P] l] ˆ] ¤] À] Ü] ø] 2^ v^ ¼^ _ T_ š_ ì_ ` Ã` ñ` a )a Ea a Âa b Yb Ÿb ùb c Ðc õc d dd µd ød >e Äe ãe ›f Àf Üf 4g ]g £g ëg 2h yh Áh i Qi …i 2j 8j Wj k k wk }k „k l ql Ël =m n n ·n !o Ùo ip Õp îp Oq ¯q r r r "r (r fr ºr s |s t •‹ ™‹ ›‹ Ÿ‹ £‹ ©‹ ¯‹ ‹� Ž� •� œ� £� §� ¬� ¯� µ� »� Ã� Æ� Ì� Ò� Ù� â� è� ë� ò� ø� � � � � � � $� -� 0� 7� @� C� I� O� U� [� a� h� q� t� {� �� ˆ� �� ²� ò� «“ – ˜ ö"™ �Ÿ «¢ ó,£ É#© ª ­ <± ͱ 7² Œ² â ² ,¶ P‚¶ É aÉ ²©É KÝ šÝ ëXÝ §í øzí Ø÷ )Bø  B? o þ; 4N' ´!0 M8 ‘< â< ·> C? {J O 2O ¦,P  T u V vX Z Y \ v\ ^ ¨^ ¿^ Ö^ ì^ C_ p_ å_ U` a Ša õa xb c hc Sd e {e 5f œf g eg Ìg +h Šh êh ^i Çi Hj Õj bk Ëk >l ›l m ‡m n zn ãn Lo µo (p ªp ,q ®q Åq Üq øq 4r Ùr 3s —s lt ’Gƒ -FŽ �š S¡ úB° TN½ 5Í ˜2× ocß ×'ñ œü ý úý mþ ðþ tÙŒ(É2Ñè y B ¨  5»£¼!¹j œ )CæD¾8Oe¹¼ÀÅËê-|Áû,Ðî¡ ½ !D!‡!¸!\"z"-#F##¸#Þ#ü#¯$Â$%\%w%’%­%È%ã%þ%A&…&Ø&-'…'Ý'5(�(å(*„+î,/Ì0E1[1°1Ö1ô1§26666"6(6.65676?6A6E6I6M6Q6W6½6ä8W<ð>V)@pDå(D‰-I¢.N¹TmUIYZ£Zå[À \Y^º^×^D_“_Â_B)a1dËdee™ffghëhæij‘jvka,l¦shtWuàvþv6wxx#x%x)x-x2x8x;xBxDxHxLxPxWx;yŒz|„|à|Ä}µ~:€–€ô€ù�bƒÀƒÄ …†ý†"ˆ~ˆÜˆŠ]ле‹÷‹–––––––!–%–)–-–3–³–µ–¹–¾–À–Å–É–Ï–ô–¸™C›`œ¯œþœC�t�ž6žêžŸ.ŸâŸ F \ “ ¹ × ‹¡©¡ì¡¢E¢k¢‰¢=£[£Ÿ£½£¤¤³¤·¤¹¤½¤Á¤ŤɤѤѥ,¦�¦¿§¨u¨ý¨ÿ¨© ©©©©©ª!ª'ª-ª¸ª¼ªÀªĪȪϪ;«™«è«M¬¯¬­y­Ô­S®¯c¯°n°̰±‘±ÿ±f²Ѳf³ø³Z´´´µkµ¶q¶!· ºººº º&º)º/º5º;ºBºEºMºPºWº^ºbºfºnºqºxº~º†º‰º�º™ºŸº¢º¨º®ºµº¾ºÁºǺκ׺Úºàºéºìºòºøºþº» »»λ4¼J¼¾¼½W¿ºÍ.ÑûÓzKÔ¦ Þžàºä‚ç™íDB‰ î Ú dL8 -"Ù'�(†-¬Q0/7/$;ç>¼;?LvOQ3S®@Z»d ?eWk˜.l‹vÜzúzR{®{ã{Z|¼|!}ƒ}Ü}4~—~iÀË"€-€„€W�™�K‚ „b„„å„4…„…Ô…†R†È†w‡χì‡Rˆ¡ˆñˆA‰|‰»‰jŠ·ŠÔŠ;‹v‹µ‹dŒ¼ŒÙŒ@�«�æ�ŽÕ%Ž*’»’=“¶“%™9ž©A¡b«2»ŸÃi&ÈÓ-ÏyØJÝ×á4æG è ë< íK ð!ò@ó4ôõEö÷à÷¼ø ùaú]û9ü$ýüýþtþþðþKÿ§ÿ�jREŸbŠA#b l »  & \9šé9&‹Å!¡"§"©"²"´"º"¾"Â"È"Ì"Ò"Ö"Ý"T#®#Ä#q$ %£%&V&°& '�'¢'¥'©'­'±'·'¾'?(ñ(¿)‡*é*�+…+‰+�+‘+™+Ž,ë,.v.Ñ.è1ë1ò1õ1û122 22222&2*2/22282>2D2L2O2U2[2a2g2p2s2z2€2‰2�2’2˜2Ÿ2¨2«2²2¸2Á2Ä2Ê2Ó2Ö2Ü2â2è2î2ô2ü2J4ð4V5²5'6�6Ü6Ì7¼8«9¶:À;Þ<9=ƒ=Í=!>Ú>^?g?@{@ã@?AµABoBeC´CDùDIE>FOG^H‡HbIQJ@K0L:M'N‰NOqOØO5P«PQgQÀQ"R‡RxSiTYUeVoW‰W%XY¡YüYcZÀZ6[�[é[Ú\Ë]»^Ç_Ñ`ñ`¼ab cùcód€eÛeBfŸfgngÈg¹hªišj¦k°lÐl›mømènØoÑp^q¹q r}rórLs¦s—tˆuxv„w�xìxázèzìzñzôzúz{{{{{"{&{-{3{9{>{B{F{J{P{k{…{¬{É{š|î|M}m}>~)0€3�R�‰�ö�J‚®‚(ƒŒƒ©ƒz„΄߆ʇЈ'‰F‰}‰ê‰>Š¢Š3‹—‹¶‹(Œ|Œ›�ï�RŽqŽäŽê�>�ž�½�ô�J‘­‘’n’Ò’ô’0“Г(”L•£•Í•n–[—¬—™˜ê˜Ù™Æš›œ�f�†�¿�žžñžIŸ­ŸÏŸ  « Ï¡'¢¢ã¢£°£„¤Y¥-¦§â§Ϩ'©G©‚©ú©Rªu«�«¬­ ­Y­³­®‹®ã®G¯j¯¥¯°A±™±ñ±U²r²ë²ʳ"´/À–ͤѧѮѵѹѼÑÃÑÉÑÏÑ×ÑÛÑáÑçÑîÑ÷ÑúÑÒÒ ÒÒÒÒÒ"Ò&Ò*Ò1Ò˜Ö¼Ö+=×,ÜEå÷åûæçqçÎçõç‚èké\êÛë  ì× íïTï¼ñƒõ€øÏú±%üL Ê@ A)Ó( €�/­ÑBƒ!Ô!›#%ö(—(,™1À[1CG:�@ì@;AŠAÛAäBHC¥C²DÚEGeGÆGãGPH HII‹IÚIú Iö)KO¡O’P·PÕP2Q¤QR SmSÇSTsUyU|U‚UˆUŽU‘U”U›UžU£U§U«U²U·U¹U½UÄUÆUÊUÎUÒUØUñUHVžVW~W&Y`Mc´c;g–h­ i=l oL su‚ {ÿª}��O  <¢Z¥À¥'¦¥"ª°³¯ ´·#¸ó¹ »§¼²½¯¿ÀAÂDÂJÂPÂSÂYÂ_ÂeÂhÂkÂqÂxÂ{Â�‡Ž’–Â�¤­°¶¼ÂÅÂÈÂÎÂÕÂÞÂäÂæÂêÂòÂôÂøÂþÂCÃÀfò/Ö&,ÞP1å«$î`;ó¹'ù;ÿÙÿ„OÝÍt]Â'E~—k˜ÀAÕ Ê"Æ%k Àˆ)xÈ=BIN´w í Y!·!f"C#»#U$Þ$:%»%;&¥&'’' (�(ý(s)Ù)J*£*ü*n+Ç+-,†,÷,_-Ç- .|.A/¨/0[0³0Ì01`1¦1b2Ä2A3´34Š4ü4x5Ù5G6©67,7�7ó7õ7ù7ÿ788 8<89y9Ï9:Y:›:ß:#;f;°;á;…<£<V=U>Z>\>a>f>i>k>q>u>y>>�>…>‹>­>æ>?�?ü?_@½@-AKAþA'BzBœBõBNCøC]D¶DE=EöE/FSFøFGÎG•H—H�H£H§H®H³HµH¹H¿HÅHÚHïHISI§IJ�JK&KhK¼K*L?LULÏLCMŸO¢O¨O®O±O·O½OÃOÉOÏOÖOìOþOP)P?PDPLPQPTP[PaPiPlPrP{P~P„PŠP“P–PœP¢P¨P®PµP¼PQ…SÓUX4Z7]Ï`Xd3h»lÓ'oEv©vi|Ѐk „t*Š»F‘;¡\¦X3¬r,µU)¹µ#Á<ÈË%ËDËüË+ÌrÌÕÌ=ÍÌÍ0ΔÎúÎoÏoпÐ=Ñ\ÑÒ1 Ò×p×äר»Ø م٢Ù~ÛÎÛ3ܘܯÝÏÝIß™ßþß[à2á†ã�ãßã.äKä‘åîåç}çBèaèé$é]ézéØéôì÷ìþìí í íííí'í+í1í7í>íGíJíPíVí\íeíhínítíyí}í�í…í‹í‘íÖïúïjðã:òÙö<÷î÷Nø«øÒøSù0úûÞû‹ ü¬ ý‰þÃþ©¡T7+" N q A¶%„$jÿn‘9§&  $Û&: )ß,ÿK,ë;3 9o9À9É:-;Š/;i@–@£A®BDTE§FôG7IUJ¶JÓJ@K�KñKL{LÊLêLš%N2QÃQÎQCRcRÀR6S�SõSTVTËT0UŠUðUbVÅVäWèWìWðWöWüWþWXXXXX!X7XMX€X·X YfZÕZX[±[\¡\.]º]+^›^µ^_!`Ž`ç`a†abxbÜbÿb—cücedÁdehe¿e#fˆf§f_g~g6h›hºhsi¿iÃiËiÔiØiàièiðiøijjj6jMjejüoz z'z)z/z3z9zc z }W$€_�‚‚‰ƒäƒt„k…‰…<†~†9‡é‡—ˆZ‰¯‰RŠêŠº‹�Œ¦��“‘u7’1›<›å Ž¡¬¡æ¡¢¾¢÷¢£¹£ò£¤o¤¨¤Ť%¥^¥{¥Ú¥ ¦F¦z¦µ¦$§™§ò§'¨x¨ݨB©¤©ªpª «¦«þ«¯¬»¬k­v­Ï­î­§®à®ü®\¯•¯µ¯Y°¼°>¸B¸I¸N¸T¸Z¸\¸c¸e¸i¸m¸q¸u¸}¸¸ƒ¸‰¸Ï'¸ö$¾ %çǛ!Ê&Ï:3Òè&Ûå@ß]èÆèî3ì§&õ½(ûRÿÇÿ5&$(¾3�+R¢+Ú)M; 7ª0#Ê+—-¶-n.¶.Ô.ú.-/ë/Ì0æ0151õ1D2a23e3°3Ø3ÿ3As4¯HþHo+K]S­*Sq Z^f1^ƒd”iäi�l}$og*uáy}…�þ„B†L†y†Ÿ†‡ɇˆrˆ|ˆ؈0‰•‰í‰RŠuмЋT‹š‹þ‹2ŒÚŒùŒ±�·�ü�8އޤŽH�®� �X�€�¨�á�‘¨‘V“]“{“C”––N–—! % + 1 9* š§ê*§­h­˜­â­®B®¯û¯U°°°ë°n³‡³‰³�³‘³•³›³â³žµ0R·ªdÀñÊ Í2)ÏM)Õ*;ÚÓä#ærç/ëMëlë¿ë;íßîèïðjðÂð†ñÖñ’ò›ó¸óôKöiöˆöÛöt÷0ø9ùVù»ùúÖú&ûâûëüýmý·ÿÕÿóÿwDaÅ‚Fz—ú*ÐêHlô ÛWqÚ`ÊÌÒÙÛßåëk‡£À\ºrÒxö³uZ ^ b h ‡  "‘#�$U&»&,'î' )–)*¿*µ+¥,í-Ý.Ç/Ç0”1^2ø2,45Ç5Ÿ6X7,8Æ8‘92:;<%=%ADAüA!B>B–B÷By CZFXHèLrMsOýO“P÷PdR‰S¦TÊUéVX%YK Zd \ú]_A `º a0cSdu eò fkh‰hÂhÙhyi¢iÁiyjàjèjkkàklR@néz{g{|Æ��Š�¿� ‚\‚Ò‚‡Œ‡Iˆ}Š˜Š!‹çŒ~�˜�Ž™Ž �ª�n�›‘Ÿ‘¦‘¨‘¬‘³‘µ‘¹‘¿‘ÑǑ͑ӑבÛ‘á‘’I’�’¹’Ð’S“r“�“¯“ΓG”Û”S•·•ÿ•R–Ý–�—Ý—£˜™a™šØš”›œÈœˆ�­�Ë�è��ž÷žmŸ$ � &¡�¡0¢÷¢a«®«±«·«¹«½«ëÙ«|¬Ŭ­—­4®°® ¯_¯²¯°° ° °°°,°ϰ±n±ê±G²«²(³|³ϳ&´)´/´1´5´;´Q´ß´(µ~µúµV¶Ó¶'·z·�·¸l¸µ¸ ¹‡¹ã¹`º´º»»«»ù»B¼˜¼½p½í½A¾”¾á¾ä¾ê¾ì¾ð¾ö¾ ¿š¿ã¿9ÀµÀÁ“ÁçÁ:‡ŠÂ�’–œ²Â?Ã�ÃÖÃ,ĨÄŀňÅãÅ8Æ@ƓƗƞƦƩƯƶÆÐÆæÆûÆÇÇÇ!Ç%Ç,Ç4Ç7Ç=ÇCÇJÇQÇXdž1Ç4ЂÐÑРѢ%Ô(ÚwÚÝ&ݦâLãòãµè¯éê–êë{ëØëqìÐìXíàí?î�î´îFï–ï8ðàðEøKødøføjønørøxø‘øoù(úFúùú8û û üGü¬üz ýÍÿb#Ú¢†º$CXsã% • ò  } Ò A _ ¡ Å à " F a £ Ç â $ H c ¤ ¹ Z€žRv‘å”PQQÛQRSS S SSSSS!S'SNS+TBV¦VC X§Zc[\”\¶\']ˆ]K^¼^_/_â_ê_ `�`Æ`aoa…d‡d�d“d•dœdžd¤d¨d¬d³dêf j¬lÞo>p®pª ru- y¼{±€ ‚J„!ˆ¾‹i’7––V—ä—{˜™ž™,šÀšG›Ê›SœÁœ5�¨�Æ�þ�& ( . 4 I ^ s w ~ € „ ˆ Œ ’ ¨ í  ¡¿¡ä¡¢Z¢Ÿ¢å¢4£ƒ£Ñ£¤\¤®¤ÿ¤%¥C¥ö¥û¥X¦³¦§ݧ-¨«¨k©Ç©6ªˆªݪf«š« ¬ž¬Ò¬™­þ­S®è®¡¯°v°˰`±²}²Ù²@³¡³ ´f´Í´‚µ7¶ï¶U·»· ¸ø¹s¹ʹ'ºtºÞºI»´»¼F¼n¼›¼м6½œ½¾6¾œ¾¿f¿çÀîÀñÀ÷ÀýÀÁ ÁÁÁÁÁ!Á%Á+Á1Á9Á;Á?ÁEÁIÁOÁTÂZÂ^ÂdÂjÂnÂpÂtÂzÂ�ƒ‡ŽÂ�–Â�ºÂÃ7Ãêà ÄYÄ­ÄÅUūůTƲƌÇ>È’È É?ÉxɺÉÊeʃÊ6ËaˤËùËN̤ÌiÍÉÍXÎçÎÏ¸ÏæÏ<ÐÐÕÐpÑ ÒlÒËÒZÓèÓ{Ô•ÔáÔ=Õ™ÕøÕWÖ¸Ö×z×ç×HسØtÙ5Ú–Ú÷Ú*ÛéÛOÜ!Ý<݇ÝèÝHÞ¨ÞßißËßžàIá·áâ¤â>ãŸãùãZä±äååêåJæ¬æçcçèžèüèXéáé<ê—êòêMë¨ëì^ì¹ìíoíÊí%îî¼î¾îÂîÊî™ðhò5ôOô¢ôèôõDõ©õïõ5ö{ö­öíö-÷m÷Ü÷"øhø®øôø1ùqù±ùñù1ú©úïú5û{ûÁûüOü�üÏüýOý�ýôý:þ€þÆþøþ8ÿxÿ¹ÿ(n´ú@}½ý=}ÐW�(,[¶”ò[΀‚†Œ�–š ÜOé í\Ï.-l6L9l<w<s?ÿA±DÀ FHKZMûO¹Qu S›TøVJZ}Z=[H[¬[ý[ \¢\H]0^S_ `?`ø`a<a¡aÀa%bJbebÈbçb-cLc’c²c$dDdµdÕdme›f,h{iªimrp®q‰ras@tÅtØu{v vçy‚z< {˜ }Á~k |‚ƒã„3†\†�†I‡¢‡¿‡ˆˆLj&‰@‰Õ‹ Ž ŽŒŽ²Ž¸�[�’5“b”³•Ü•û•²–,—.—4—;—A—c—§—˜e˜º˜™?™ƒ™ã™8š�šášB› ›õ›ƒœØœöœª�á�ü�Yžež~ž¹žŸ6ŸˆŸÚŸ s ® m¢‰¢¤¢À¢Û¢û¢P£p£$¤D¤{4¤.¬I¬w¬—¬ì¬ ­Á­®4®Q®o®Œ®©®Ä®á®þ®¯M¯ –°DÑaÑ~ћѸÑÕÑòÑÒ*ÒFÒaÒ�ÒÙÒ!ÓÍÓéÓÔØ Ôß×üר7Ø�Ø­ØbÙ×ÙïÙ#ÚCÚ›Ú°ÚÐÚDÛYÛzÛèÛ]ÜuÜ©ÜÉÜ!Ý6Ý«ÝÃÝ÷ÝÞoÞ„ÞùÞßEßeß½ßÓßàà>àõ àøãä4ä‹ä«äbåæåBæ[æ¶æÐæìæç$ç@ç\çyç•ç±çÍçéç è`è€è6éeé�é�é½érê ê»êÛê�Aë‰ø¥øÁøÜøøøù0ùKùkùÁùáù—ú»þÙþ÷þÿ3ÿQÿpÿŽÿ¬ÿÉÿæÿ!A˜¸o¡¾ÚúQq(…£ÀÇ$B_¡f¾$B_¼ÖöMm$ r � ¯ Í ì  ) G f … ¤ Á á 8X.fA&XxÏï¦"9"V"s"�"ª"Ê"!#A#÷#$Œ$¡$Â$1%ž(º(Ú(0)P)*p*Ì*æ*++8+T+p+Ì+æ+,\,|,1-n12W2ë2/3Ã3474�4­4b5¬9Å9å9;:[:¥;^!^U^u^Í^â^_·_×_`.`¢`Â`waŒa­ab<b¬bÌb=cjc…c¥cûcdÐdðddeyeše4f$o@o\o|o3 p4sYs~sÙs2tþt†w¤wÁwáw—x·x7yê€�'�~�ž�T‚Ç߇ÿ‡Uˆuˆ*‰u‰’‰®‰ʉ'ŠAŠaŠ·Š׊Œ‹ã‹>ŒWŒ²ŒËŒëŒ �Ž.ŽNŽ�2�M�m�"À�ȶä¶· ·Õ·¸"¸>¸^¸¹Œ¹¦¹ƹº=ºôº)»G»e»‚»¢»ù»¼Ð ¼3¾Q¾¬¾¿M¿ ÀÂÂ=Â[Âxº ÃÅ7ÅSÅ•ÅZ Æ>È\ÈxȺÈ.ÉÑ,ÑJÑhцѤÑÀÑàÑ–Ò¶ÒÓ^Ö|ÖšÖ¸Ö×ÖöÖ×4×R×p×�×®×Ì×êר&ØDØaØ�ØØØøØ®ÙÎÙUÚÆèäèé é@é—é·énê ê»ê×êòêëÇëì:ìVìªìí\íîXîvî”î²îÐîïî ï+ïIïfï†ï=ðnð‹ð«ðbñ•ñ³ñÐñðñ§òàòþòó;óYóvó–óLôÃôÝôýô²õ)öCöcö÷�÷©÷É÷ø?øôølù†ù¦ù[úÒúû!ûÖûMü|üœüòüýÇý>þXþxþ-ÿ¤ÿÓÿóÿ¨NnÄä™,L{ªÊ€ù(HŸ¿uî(ÞU Š ª ` Ù ó  É B q ‘ G À ï f†<µÏï¥Qq'4Qm�ã¸Ø5®Êùo�EP”+²+Ï+ï+F,f, -\/�/¦/Ä/á/401þ23:3X3u3È3” 4ö7818Q8¨8È89¿9Ý9û9:6:T:q:‘:è:;¿;ò;<,<L<£<Ã<y=>%>A>^>z>—>³>Ð>ì>?%?A?]?y?–?²?Î?ê?@#@@@\@¥@Â@Þ@þ@TAtA)BIB½BÒBóBa�C¡`½`Ù`ö`a0aLaha†a£aÃab9bîbcEc½cÙcöcd/dLdhdˆdÞdþd³eÓe fãgÇ hVk×q r+r…ršrºrqFs+|I|g|…|£|Â|ß|ÿ|V}v}-~_~|~˜~Ì~ì~F[{2€}€›€¹€Ö€�Å�ø�‚3‚S‚ª‚Ê‚�ƒ´ƒÓƒðƒ„g„‡„>…q…Ž…ª…Ê…!†A†÷†ž‰º‰Ú‰0ŠPŠ‹©‹Œ3Œ�ŒªŒ�!�>�Y�t�‘�¬�Ç�ä�ÿ�Ž7Ž“Ž³Ž �)�Þ��*�D�d�º�‘!‘Œ‘©‘Å‘ö‘³’æ’“!“A“˜“¸“ð“;”Z”Ȕ唕ԕ–$–A–u–•–ï–—5—P—k—‡—§—ý—˜Ò˜™ ™<™X™x™Î™î™£šÚúš+›F›a›}›�›ó›œÈœùœ�,�E�e�»�Û��ž°žçžŸ{Ÿ�Ÿ±Ÿ R m ‰ ¥ Å ¡;¡ð¡¢G¦¢¾ÁØÁøÁOÂœÂºÂØÂöÂÃ2ÃPÃnÊæÃÂÃÞÃüÃÄ8ÄTÄtĬÄZÊ Ë^ ËÎÎÂÎÛ Î-Ñ®Ñ+ÒÓÔ2ÖÂÖ­×%Û|ÛÓÛé܈ޖàDá…á¥áüáâ‘â¦âÇâ7ã=åšåºåæ1æçæç|ç‘ç²ç" è³êEëeë¼ëÜë’ì²ì'í<í]íÍí×î'ïuïÌïð ðzð�ð¯ð$ñDñéñþñò�òïóôXô‰ôFõ²öÎöêö ÷`÷€÷5øUøŒ4øQýmýœý¼ýþ2þç@þ… ¡ ½ Ý 3 S  +Pn‹Þ« A_}›¸ × ‡¥ÃàWw.aœ¼3ê >[w—îÅoЍÆãZz0gƒ ½Ùõ 1 ‡ ¶ Ò ò H!y!•!±!Ñ!("["y"–"¶" #-#ä#$5$Q$q$È$è$Ÿ%Ô%ò% &<&\&³&Ó&Š'½'ë'('(~(ž(T)t)÷) *-*�*+l+†+ä+þ+\,v,ª,Ê,$-9-Y-./.¤.¹.Ú.I/ñ5 6?6_6·6Ì6ì6`7u7–78%8•8µ8%9{9×9ð9L:e:™:¹:;&;F;º;Ï;ð;^<<ï<==BFBzBšBÿBCÏDôDEAEF!G?G\GzG—GÈG‡H“I±IÏIëIJÛJ%KCK`K‘KNLÜLöLMmM�MDNtN‘NÅNåN?OTOtO*PJP�P¡PQ+QLQ»Q5R_R“R³RS/SOS†S¦S)T>T_TÐTU=UYUŠUIV‘V¯VËVüV¹TWwf“f°fÌfìfDg'iFi¢iÓi1jdj!§k%�?�_�¶�Ö�ŒŽ¬ŽäŽ�;�Z�x�”�´�j�Š�Â�‹’¨’È’“?“ö“Q”o”�”«”ɔ攕"•@•^•|•š•·•ו.–N–—Ž˜ú˜+™‰™¼™{š•›º›Ø›÷›YœŠœG�Õžìž Ÿ@Ÿ˜Ÿ­ŸóŸ * o   ÿ '¡Z¡¢I¢Ä¢ì¢ £•£¤e¤¤â¤û¤B¥u¥Ô¥ü¥/¦ë¦§™§Á§õ§j�¨¿ÃÛÃ÷Ã(ąĶÄrÅFÈ`ÈÆÈˆÉ²ËÌË*Ìì̂ϜÏúϼ$ÐìÙ¸ÚfۖܵݢހßÄàVáâ­âäsåAæMçèªé­êÔëì(ì€ì•ìµìjíŠíþíî4î¢îó ï^ò’ò²ò óó?óvó–ó ôô@ô¯ôtõ‘õ±õö(öß&öú0úPú§úÇú} û6þOþoþÆþæþ ÿ»ÿjå7r3€:g³Ó(Hür›»0äXq‘æº5 N g ‡ Ý ý ² 3 L e ~ ž ô  È ö u • ê  ½ï"T…¥úÎMjéDdºÚ�`¼Õ1 J ¦ ¿ !4!�!©!""z"“"³" #*#à#¼'Ö' (*(‚(—(·(+)K)ï)*%*“*´*$+D+´9+a9z9®9Î9&:;:[:;0;g;‡;û;<¿<Ô<õ<c=„=ô=>„>À?Û?û?Q@q@&AFAºAÏAðA_B�B©BÉBC?CôC#H=HqH‘HëHI IWIwIìI J±JÆJçJVKwKèKLy L]OwO«OËO%P:PZP‘P±P&QFQëQR!R�R±R"SBSµSúS'TTT�T¯T1 UVnVïVrWõWxX+YÚY‰Z[g[‰[L\�\¾\:]ƒ]ÿ]i^Š^_h_ã_`N`v`—`á` a*ataœa½ab/bPbšb³b$cTcvc8dQd�dÅdædGe¥eöe|fÞfÇgághXhxh.iNiÃiØiùihjãjýjktk”kNl«lÍlìlAm�mõm²n÷n$oQo~o¬o. pqkqìqoròrus(t×t†uvdv†vIwšw»w7x€xüxfy‡yzezàz{K{s{”{Þ{|'|q|™|º|},}M}—}°}!~Q~s~5NšÂãD€š€ë€P�q�Ó�¼‚Ö‚ö‚Mƒmƒ#„C„¸„Í„î„]…Ø…ò…†i†‰†C‡ ‡‡á‡.ˆŠˆÚˆ•m‰š,šHšhš¾šÞš“›Á›ì› œbœÝœ3�‰�ß�5ž‹žážŸ5Ÿ�Ÿ¢ŸŸw —  ¡ ¡A¡¯ ¡5¥O¥i¥ƒ¥�¥¸¥Ò¥ì¥¦ ¦;¦U¦‰¦©¦§§6§ì §Èª3«•«¬Ú¬o°‹°«°`±<´V´v´+µ·µÔµðµ ¶)¶F¶b¶¶š¶µ¶Ò¶í¶·%·@·[·x·”·±·Í·ê·¸"¸?¸[¸w¸—¸M¹§¹º8ºXº®ºÎºB»b»¼¼<¼ª¼˼;½[½˽B¾\¾|¾Ò¾ò¾§¿À8ÀXÀ¯ÀßÀûÀÁ7Á�XÁšÖ¶ÖÒÖîÖ×9חוÛçÛ6ÜjÜŠÜäÜùÜÝŽÝ®ÝSÞhÞ‰Þù Þ\âzâ–âÊâêâDãYãyã/äOäÄäää‰åžå¿å/ æBé`é}é±éÑé+ê@ê`êë6ë«ëËëpì…ì¦ì"íòò<ò\ò³òÓò‰ó©óô3ôTôÅôWöuö‘ö±ö÷(÷ß÷`ù ú:ú˜úËú‰^ûV \x�Ää>Ss)I¾Óôd‡Ó*C+w+—+ñ+,&,],},3-S-È-Ý-þ-m.“//Ë;ú;<q<‘<G=g=Ü=ñ=>‚>ž? @‹@ä@’B?CñDNE¡IËIëIBJbJK8K­KÂKãKRL‚L�L¸LØL.MNMN5NPNlNˆN¨NþNàOúO+P·^ ` éœ ž Ck ïk Íq <‹ ´Œ n¸$-5? wA •<–5¤~¨6ª*·Î!'+Ú.á 3õ&x)À¯ Ì» ÏT$À™7r=êGLMá êá VÎoŠy ·4“ÌŸè ²â9 ¼jDnŠ �â ©j«»¯Ø³�¾CÂ{éˆ÷ùPuRÏcö,ž¼ºA¼i¼•¿XÁ‡î=ô”ô‰õ³÷wúÔýÿÿÂ¥JÖ Í–ažmž… åŠ(*O1N‰¯‹¤9� =ºg) ‹Ù ÉêÂ*I9”È£ì$Ø´… œO µ! ¶*s?2 ¡ ·à Ï Ô ¼ ˜G J ŽO 6Q ÞQ  Y L\ # ] ù_ Ð ` c Ýc Ñe ¨f Ag si Ej ÷k n âp 5r ¿� 9¶   O ã^ —_ e l éq @s 6ØÝ® §!i":#Ø#ë#Ï$R1Ð1ã1¨6ÖD_U”Z�^  _óiívÜ–c�%ž ŸŸïŸS ³ Æ ˜¡ù¡e¢x¢J£¬£¬¼^ÔØ y(š ?éz» {~�1„û…7†ž‡h‰£‰‘Šb‹�‹‹ŒÒ�ó�È%’o»#÷ 3m=>“ ?kH– N|W! YÞ` e½lÞ p¹{Z}@�™ƒû…4‰¤‹_Ž«�ß’°•s�ºŸð¢4©‚« ­T¯b²¥ÖÛç#ﺦ1™GÔHçIŸPåU«V Ã4‹¥!À0z 1"7 8Ð;’<˜>:AB‡B+EFGüHKÉP2Ë ÌJÑ!Òñ×’Ù¼Ý;äOè>éãï¸ø– þ{ì,v@‰JÄK×LPRTZ X¨^ô`éb•flg¨hFzx…I†›¡ó¡Ø¢Ó£‰¤?¥ü¥h¦ÿ §Ü­Á®v¯–¸;¤-¦./&012Ê3ò3 4††_Š ŒçŒò�RŽr�š�Â�j“¦•7–‚­ï­µ ³ëžë¼ïœð¸ñoó.öºö ùíùû¿ü˜ÿY\NV%Ñ&5D=—MËîu b&2A B£BxhÏh›i¯isz>{¯‚a‡ŠøŠG�hŽy�,“&”º”3•�•ª–Ú›[�Mžô ý¡Ð«‰¬#°Ü°H´ì´‡·y¸»¼¿§¿©ÂšÃe Ç…é$ìªî…ø5úû2 Ì ´ N ® / ° 1 ± z�_ýP R4S¡\_÷_ëoµ�Ÿ ú ß¡ñ ¡¥2¥Âº¨¼¾ªÂ&Ã÷ Ã-ÉrÊCËôÎÅ Ï"Ô¯ ÔÛ¿ÜV Ý–ôôô�õ‡ö»÷ù�úüÚýÒþLÄ:ºdZƒ[ \-`a®a0bÕb:cŸc1dÂdˆ i� vU†~†x‡®ˆ3‰Ž™ŽÕ•é•N— ™åœÄ�a¢ë¢`£4¤&¬‡¬ü¬ø ­7¯+ ÑqÒÓÔÕ×'Ø�Ø�ÙÚ3Ú«ÚÀÚTÛiÛܤܹÜ1ÝaÝòÝÞÞ¯Þ@ßUßÍßûß.àñã$ä›äŸå³åÄåËåÒåÙåàåùçpè]é­éšêËêwø[ùÑùž þ1¨˜êanê ‰œ¡­æ]W Ñ Hÿhß "º"1#$œ$±$˜(Ê(@)<*M*V*`*ö+l,Z1a1h1'4�4b9Õ9K:¾]P^e^Ý^ò^Ç_`²`‡aœa+b¼bdc•c dàdte‰eolost}wÑw§xã€�Ž�½‡ï‡eˆY‰e‰QŠÇŠ¿‹Ó‹ÛŒË�>Ž,�]�À¶·þ·N¸?¹¶¹-º»’» ¼¾1¿æÁ¢ÂÅ}Å'È¢ÈüÐÐѦÒ7ÖqØèؾٻè0é§é–êë ì�ì=íA îvïgð›ðŒñàñÑò†ówôíôÝõSöC÷¹÷/øù–ù†úûüŒüýòýhþXÿãÿÓ^ÔÅ<.º¬8¯¡  š Œ  õ � s ÿ vhßÑa,}óȦ ‹+ß+V,:/0Ü2¬3í7A8¸8­9¶9�:ø:é;<<³<¸=¿=Æ=Í=Ö=á=ì=ó=ý=>î@dA9BÍBâB‹ `³a)bþb­cxdîdÃeÎgÖgÞgrr•rªr|ï|f}V~Ç~Ü~Vkk€ó€ï�C‚º‚«ƒ„w„h…º…1†˜‰Ê‰@ŠI‹]‹q‹‚‹‹‹”‹›‹¥‹£Ž��T�ò�â‘Ý’1“¨“)”•þ•p–…–ÿ–+——— ˜û˜h™Þ™³š!›�›œïœU�Ë� ž÷ž‹Ÿ ŸH µ +¡¢rÁèÁyÂdÄöÉÊÊ%Ê.Ê5Ê>ÊNÊSÊ•á â¡â¶â5åªå!æ÷æŒç¡ç«êUëÌë¢ì7íLíÌîûïðŠðŸð4ñùñòßóuôªöúöp÷EøIý¬ý"þ} Í C äÂï|ðgX¬#‡þø ójW! ° â q!Á!R"¦"#$a$Ø$É%L&Ã&´'(Ž(d)**Ö*ê*þ*¥,º,4-I-.´.É.¥5:6O6Ç6Ü6p7…78¥8Y9l9”:©:!;6;Ê;ß;n<ÿ<ÑAuBŠBC¿D-E G´G�IJK}K�LM}MmNÀNÕNOOdO:P‘P&Q;QèQŽR£R*S?S–S9TNTUvU�VèVmfÜfi¿iNjØŒO�Æ�œŽ�¤�z�„’¸’/“*”1”:”A”H”Ç•>–˜™¦™�›vœ�žŸ0Ÿ¨ŸåŸf Œ ¡D¡3¢á¢ £Ø£ì£7¥_¥ñ¥¦§¶§Þ§±ÃÄ¢ÄÙÇ¥ÈEË ÌÏÙÏ>ÙHÙRÙ\ÙfÙpÙzلَ٘٢٬ٶÙÀÙÊÙÔÙÞÙèÙìì�ì¥ìzíî#îíï�ò¢òó/ó†óô/ômõ¡õö ú@ú·úëý_þÖþºcaÃ8&« �öåw í Ý Ž  ï … ú ä• `TÊØì(<P£"#r'((’(§(;)ÿ)*£*4+9©9¾96:K: ;w; <Ï<ä<s=>º?ë?a@6AÊAßA‡B¹B/CØGlH�HûHIgIüIÁJÖJfKøKO¦O»O5PJP¡P6QûQR R2SÃSu[t\b]@^G_ñ_\`ï`‚ab¨bKcbcFd«d�e4fzgñghh>iÓièi”j k„k“l$mÖmÀnrvqw_x=yDzîzY{ì{|}¥}H~_~C¨‚€)�o‚æ‚]ƒ3„Ȅ݄‰…†y†ˆ‡ˆ»ˆšXšÎš»›ü›§œ±œ»œÅœÏœÙœŸ%Ÿ�Ÿ²Ÿ‡ ¡0¡ ¥„¦™¦§&§¤ªí«i°›°ð³f´hµoµvµ}µ†µ�µ˜µŸµ¦µ¯µ‡¸Ò¹Hº¾ºR»¼+¼º¼K½ö½l¾â¾Ò¿HÀ×À'ÁˆÖ%׌ÛeÜzÜôÜ ÝžÝcÞxÞSâÅâÚâTãiã?äÔä™å®å9é¬éÁé;êPê&ë»ë€ì•ìøñLòÃò™ó.ôCôNö¡ö÷Qù&úµú5 = E ¿ÔNc9ÎãÆ*r+‡+,,m,C-Ø-í-Î*{; <�<W=ì=>€?‰?�?—?ÛIRJ(K½KÒKzLÈL>M+N˜N8OP+++                          + +                                                              +                    '     '                              '             '     '                                      +                '  '                       ''''))*)))'' )))''   '''''''''''''''''''****)))*'))* ))))'))'''''))'  '  '  ******************'   '  '''')))))))' ' ' '            ''              ''   ******  '' ''   **)**''¶^ ` ` a b èœ öœ ž ¡¡ .§ 3° ß· ¿ «¿ }À �Á à eà 1Ä +Å nÆ Ê ¼Ê ªÌ ´Î KÏ ©Ï òÏ PÐ ›Ñ kÒ ÖÒ —Ó ¸Ö jÙ Kß Ïá uã Ôè Ãì ï ´ð àö †÷ ø %ù ™ú Ç ‡ µ j  €! ë' Ì8 šE žF ½G ÈH 7J ŽJ EK µK 2L ÖL :M ¯M N iN ÞN ¹O sP ZQ ‹Q ¸S W kX ÃX 'Y «Y ÇY ãY ÿY Z LZ ©Z ìZ C[ ›[ þ[ w\ U] q] �] ©] Å] á] ^ K^ �^ Õ^ _ m_ ³_ $` ö` a .a ^a ˜a Ûa !b rb ¸b 1c úc +d }d Îd e We üe Åf õf vg ¼g h Kh ’h Úh !i ži pj Ak Šk 0l ‰l ãl Um 5n 9o ño q gq Êq ~r Òr 's ”s ;‹ ³Œ Œ� ¡� o“ ®• ü— ×™ sŸ �¢ ¶£ s© p­ õ° ˆ± ó± O² ¤² ðµ BÈ {Ü ½ì ìö & � � Ã& M0 Ú7 ¾; ä= J ˜N eP ©S +V ,X Y Ó[ Ø] j^ ­^ Ä^ _ ]_ þ_ n` "a b ‘b �c ld +e ”e Nf µf ~g i wi ài aj îj {k äk ´l m  m n “n ün eo Îo Ap Ãp Fq ³q Êq r Mr òr ós \ƒ ö� Kš Ü  İ ½ ÏÌ `× 9ß žñ cü Äü ký 1þ ²þ Èÿ +Né‹ò‘;  ’ [ šJ4o PàÇ^-×=TkE”ÚD Õ !\!Ð!’"^#—#$µ$E%`%{%–%±%Ì%ç%&Y&�&ð&E'�'õ'M(¥(Þ)I+±,Ú.�0 1s1 2,5¨8è;Ò>@DÞHôM¦SwXbYž[x\^¿^ð^aÖc�deOfgÐgžh¨ipjkÙkPst u•vwò>7@•@û@WAÍA)BŠBDdEYFjG H}IjJYKILSM@N/OŒOóOPPÄP€Q¢R“S„TtU€V¢W@XºYZ~ZÛZO[¨[\õ\æ]Ö^â_ a4b$cd™eöe]fºf.g‡gãgÔhÅiµjÁkélnoóowqÔq;r˜r sesÁs²t£u“vŸwªxòxá{²|}…}X~CJ€j�¡�‚Æ‚Áƒ’„è„&†ù†ä‡êˆ^‰•‰ŠÏŠ΋@Œ–Œ³�‰ŽþŽ�X�Õ� ‘Å‘2’ “I“é“C”e•敉–Ç—™ô™2›*œŸ�Ø�˜ž ŸèŸ$ Æ è¡@¢)£Ë£Ÿ¤t¥H¦§û§è¨`©›©ªmª¨«#¬9­r­2®¤®ƒ¯¾¯8°Z±²±‹²³ã³(À®ÌºÏèÕ ×ÏÛåkåÂæÿæ)çbèéÙé•ëXì�íÎî}ñõSø®ú‘ü,«y AØGoÑ ç$'(n+r0U9²?ôA¾CÍDõEËGüGI7I´K´NbOºO¼PîPKQ½Q1R†SàST V`V^WèX¼_cîfVhniýkSoÿrÁt5{¥}*�÷Ÿü¡¥s¥Lªj³q´ɶå·ª¹Àº\¼r½p¿È¿!À¢ÃÖõÝåxî ó…ùÿ�ÿHŸ‚6Èv^.] | BkÝvÆ¡áÍ� Ð!"\#Ô#n$S%Ô%¾&5'#(š()ò)c*¼*+‡+à+F,Ÿ,-x-à-9.•.Z/Á/0t0å0 1¿1{2Ý264£45‘5ò5`6Â6E7–7Û809¤9ç9,:q:³:÷:;;‘;ù;»<o=Å>þ>7?¨?Õ@cA?BµBCgCDvDVE4FlF0GçGÉHÞH)IkI¿I.J¨J>K€KÔK.LCLmLçLIMISdUèWZ]±`Øcög}l•oùu^v|{€#„,Š}‘×  ¦¬6µ ¹uÁüÇÝÊ]ËDÌ‹ÌîÌVÍåÍIέÎÏØÐuÑØÖ/׉רÛçÛgÝåÞ²ßéàKá,åÑæûçzèbé“éàê•íJð®ò£öÿöb÷ø3ùÛù’ú˜ûCüdýBþl-' . Rv*+¶'öl# &(¸+þ258Ù9~?¯@¼AÉBDoEÂFHPI»JìJöK'LXN×P…QçQ|RÙROS©S3ToTIU£U V{VÞV%X;X˜XÏX#Y~Zq[Ê[2\º\G]Ó]D^Î^5_§` aŸa6b‘bc7e�eØeKúRÍY–]éc@i:l@ou¢yÊ|H�¿„†f†¸†‡2ˆñˆI‰®‰ŽŠÕŠ'‹m‹³‹KŒ�ŽŒŽ½ŽÇ�&�æ�‘3“““t•Ó•–f–ËŸJ¦Ï«°­®Z®1¯Ȱç²lµݶ‡¿ÎÉçËÎ9ÔÙ�ãíä<æÊê4ëRëí…îíïðÛð8ò óÑóæõPönö=÷Ö÷>ùoù,úˆûðü!ýPÿ¼ÿÚÿøÿÙIz›°á|Ò4’[‰x6ño‹§ÒŠê0 à!h#W$,&'Î'à(p)ê)�*z+l,´-¢.Œ/Ÿ0n172Í2÷3º4’5T6$7â7’8G9þ9·:Ø;Ü<§@]A&BWBXCFHxLMOŽO+PR'SDThU‡V¤WÃXèYÿ[–]¼^Þ_UaÌbñce�fh¢hXiÚi¹jk9kškûkCnz™zëzò{�L�¢�—†¤‡4‰&ŠŠbŒ‚�°�±ŽÂ�‡�ù‘2’a’™’¾’×’X“w“•“´“Е–ö–ö—¼˜z™5šñšœÏœ��²�Ð�šžŸ†Ÿ= ?¡I¢á©g«ñ«ݬ3­L®#¯w¯¸¯D°0±†±ò@³”³Õ³i´@µ–µn¶ë¶?·¨·͸#¹û¹xº̺5»Z¼°¼ˆ½¾Y¾š¾$¿û¿QÀ.Á«ÁÿÁ@ÂÊÂîÃDÄÅûÅXƺÏéÐYÔ®Ù{ÝBâã·ãyè¼èÈé'ê¯ê7ë”ëŠìëìsíûíZîÍîÄïfð‡÷Hùú^úŠûöû1ü–üRý£ÿ8çžfJ€ë Ä\Œ> ö & ë w É ø J y Ë ú L { ¶z©é›P+Q˜QtR T§U§WqZ-[Ê[Z\Î\A] ]c^Ô^G_!`¨`à`5aÎc´fŸi\laoŽpwrétúx‰{|€í�„‹4’–‡–—©—A˜Șb™ñ™†š ›Ž›œkœÚœN�ß�õžÀ #¡-¢r¢·¢ý¢L£›£é£.¤t¤Ƥ[¥¦p¦ͦ)§õ§X¨Ĩà©Oª¡ªöª«³«#¬·¬ë¬®l®¯º¯�°ä°y±Y³æ´›µP¶ ·p·Ô·9¸ܸ4¹Œ¹@º{º÷ºb»Í»%¼M¼‰¼é¼O½µ½O¾µ¾¿“¿UÁÒÂOÃ8ÄqÄÅÄÅmÅÃÅÆlÆÊƤÇVȪÈWÉ�ÉÒÉ(Ê›Êy˼ËÌf̼Ì�ÍáÍpÎÏþÏTЗÐíЈÑ#Ò„ÒãÒrÓîÓHÔ}ÔùÔUÕ²ÕÖpÖÑÖ2×“×ØÌØ�ÙNÚ¯ÚCÛVÜìÜ#Ý ÝÞaÞÁÞ!ß‚ßäß·àbáÐá1â½âWã¸ãäsäÊä4å|ç-èqé…îâî±ð€ò;ôUôºôõJõÁõöMöÅö÷E÷s÷ô÷:ø€øÆøIù‰ùÉù ú7úÁúûMû“ûÙûgü§üçü'ýgý•ý þRþ˜þÿPÿ�ÿ¿ÿ@†Ì•ÕUƒèo£GsÎ8­ tÔafk‘-06Ç8è;#?¯A_DqFÌG¼JM´OrQ.SWT³VûY–ZÅ[e\ ]ó] _×_X`$aVaÚaObbcecËc]d9effïg?i¡lpqqMr$stˆt�u=v»yCzñzO}w~.A‚à‚¤„¾…©†§‡؇8ˆàˆ™‹Ê�NŽ‹��Û‘ “6”‡•–Ë–{—¿—)˜}˜Ò˜W™›™û™Pš¥šûšZ›¸› œ›œ�å�ž_žkž˜žÑžŸPŸ¢ŸôŸ3 � A¢q¢�¢¨¢Ä¢£ˆ£\¤¬2¬`¬¯¬$­È­®9®V®t®‘®®®É®æ®¯e¯ ÑIÑfуѠѽÑÚÑ÷ÑÒ/ÒKÒ™ÒàÒ&ÓÒÓ3Ôµ×äרOØÅØiÙ²ÙÙÙ[ÚÛ’ÛïÛ8Ü_ÜáÜ=݆ݭÝ/Þ‹ÞÔÞûÞ}ßÚßàVàÑãýãLäÃäiåìåæDæaæ’æ¸æÔæñæ ç)çDçaç}çšçµçÒç!è˜è<éié…éÕéxê¤êóêWø�ø©øÅøàøüøù4ùƒùùù~þÀþÞþüþÿ8ÿVÿuÿ“ÿ±ÿÎÿëÿ YÐv¦Ã‰/ЍÎ)G¹mÂî )Ge—¾…7 w • ´ Ò ñ  . L k Š © ù pFß @�ë! ">"["x"•"â"Y#N$Ú$x(¢(ò(h) *v*¨*Î*ê*+!+<+X+v+¨+Î+,”,41ð1A2Õ23­34O4Å4?9‡9®9ý9s:›]ã] ^�^_ï_e`Ú`ÅaTbäbCcnc½c3d'e²eün(oDo”oÉr9s^sƒsJt]w‹w©wùwÏxÀï€?�¶��‡LJˆ�ˆ1‰z‰–‰²‰щŠ)ŠyŠïŠ“‹ê‹Œ@Œ^Œ�Œ´Œ�§�ð�ŽfŽ �6�…� ¶̶è¶8·Ü· ¸&¸v¸¹e¹޹Þ¹Uºüº.»L»j»º»1¼ݽ8¾V¾±¾e¿©ÁÂ$ÂBÂ`ÂÒÂÅÄÅ<Å­ÅêÇCÈaÈÒÈÜÐÑ1ÑOÑmÑ‹Ñ©ÑøÑÎÒÖcÖ�ÖŸÖ½ÖÜÖûÖ×9×W×uה׳×Ñ×ï× Ø+ØIØ™ØÙæÙ›èËèéèéXéÏéuê¤ê¿êÛê*ëÎë"ì>ìÂìtíî]î{î™î·îÕîôîï0ïNïžïEðsðÃðjñšñ¸ñò¯òåòó!ó@ó^ó®óSô�ôÅôõ¹õö+ö{ö÷i÷‘÷á÷WøûøEùnù¾ùbú¬úéú9ûÝû'üdü´ü*ýÎýþ@þ�þ4ÿ~ÿ»ÿ ¯ù6†ü¡ëd T’âˆÒ`×}Çð@æ/ s  h ² Û + Ñ  Y © O ™ × 'žDŽ·­ö:‰ 8U¥ð†²á1§k+™+·+,~,ï.a/†/«/É/L0‘23!3?3]3à3Í7û78i8à8‡9Ä9â9::;:Y:©: ;Ç;÷;<d<Û<€= >)>F>b>>›>¸>Ô>ð> ?)?E?a?~?š?¶?Ò?ï? @(@D@a@�@ª@Æ@AŒA€B Ck`¥`Á`Ý`ú`a5aQama‹aÛaQb&c�cÁcÝcúcd3dPd deëeŸg†h°hk?k•qÁqCrÒrú{0|N|l|Š|¨|Ç|}Ž}5~d~�~“:€‚€ €¾€�Í�ý�‚k‚₉ƒ¹ƒ؃(„Ÿ„F…v…“…â…Y†x‰¢‰ò‰hŠ ‹Ëõ‹Œ:ŒlŒ’Œ±ŒãŒ �&�B�]�y�•�°�Ì�è�Ž ŽOŽ{ŽËŽA�å��.�|�Á�‘%‘�‘­‘’»’ë’ “Y“Гø“@”_”Í”.•Ü• –)–­– —9—T—o—¿—5˜Ù˜ ™$™@™�™šÛš›/›J›e›µ›+œÏœýœ�0�}�ó�Èž>ŸÉŸ& V q � Ý S¡(¢OÁ˜ÁÀÁÂW¡¿ÂÝÂûÂÃ7ÃUÃsÃ�ëÃÇÃãÃÄÄ=ČľÉòÊH˲ÍâÍÎoΟÎÄÎÑ—ÑÒÓñÓÖ«Ö–×ÛeÛ¼ÛÒÜqÞSàà-áoá½áSâßâå„åÒåIæ>çÊç‹ê/ë}ëôëéìuí¬îï_ï¶ï8ðæð\ñ7ò°óôóô¡ôŠö¶öÒö"÷˜÷mø)ýUý„ýÔýJþ] ‰ ¥ õ k ™ 0UsöÔFd‚ #\ŒªÈ�6f„ÔKò%C`¯&ÍJq�­Ë’7k‡¤ÁÝùI Ž º  !O!}!™!é!0"`"~"Î"E#ì#$:$‰$%§%Ù%÷%%&t&ë&’'Â'ð'?(¶(«)E*¥*+G+n+�+¿+æ+,7,^,â,q-f.ò.‚5Ë5ó5w6#7®7=8Í8,9‚9´9Ù9÷9):N:Ñ:};<—<'=®A÷AB²B�DÔDùDYEÞF&GDGaGGàGRI˜I¶IÔI4JãJ*KHK©KkLµLÞL.M¥MLNyNýNŒObPØPdQÃQR7RËRgSÝSwTØTUBU¢UQV–V´VWMf{f—f´fgèh,iKiëi|jµŒþŒ'�w�î�ÄŽìŽ!�@�_�}�Ì�¢�d’�’à’W“þ“V”t”’”°”Δë” •'•E•c•�•Ÿ•ï•f–P˜“˜C™Ô™R›š›¿›Ý›ü›¢œjž²žמXŸ´Ÿ÷Ÿ ¸ r¡€¢8£œ£¤@¤g¤†¤¾¤ä¤�¥G¦U§ ¨‚ÃÃÃßÃ@ÄÎÄŽÇÿÇHÈÞÈúÊkË´ËBÌÊÎ;Ï„ÏÐÑØiÚ“ÚÛAÛGÜqÜfÝ�ÝSÞ}Þ1ß[ßsàŸàá1áÊáôá^âˆâÈãôã"åNåòåæþæ(ç0èZè[é…é^êˆê…ë¯ë@ìÍìÁíLîÍïIòÊòWóÍóXôMõyõÉõ@öìùúhúßúÈýþ8þ‡þþþ¥ÿÖÿ…Rzà˜@›ë`LtÓHê3Z©Á 7 P Ÿ  ¹  5 N g ¶ , Î " ­ "à <n½2@�-|ò˜g˜¾Ü 3 Q ‚ ¨ Æ ÷ !;!l!’!°!á!"%"V"|"Ë"B#O'˜'¾'B(î(c)=*Ì*\+ô8<9c9æ9s:H;¾;3< =œ=,>š?Ä?@‰@}ABfB‘BáBWCµGþG%H©H8I®I$JÿJ�K LïN8O_OãOrPèP^Q9RÉRZST=TiT—TUèUCVªV+W®W1XæX™YHZÅZ8[¤[¤\Ú\Ÿ]p^¦^„_`}`²`aEa£aØa6bkbßb‘cldÌdeÀebf—fWg gÉgh�h…ijpjºjåj5k¬kVl²lÔlYm n o:ofo”opåp>q§q(r«r.sãs–tEuÂu5v¡v¡w×wœxmy£y�z{z{¯{ |B| |Õ|3}h}Ü}Ž~iÉþµ€W�Œ�L‚•‚¾‚ƒ…ƒz„…e…¯…Ú…*†¡†K‡§‡ɇFˆòˆè™š0š€šöšš›Å›$œiœâœ �8�c�Ž�¹�ä�ž:žež�ž»žMŸÚŸΠY¡û¤9¥S¥m¥‡¥¡¥¼¥Ö¥ð¥ ¦$¦?¦Á¦N§Jª««3¬I°s°ðͳ´>´Ž´2µ¼µصõµ¶.¶J¶g¶ƒ¶ž¶º¶Ö¶ñ¶ ·)·D·`·|·™·µ·Ò·î· ¸'¸C¸_¸¯¸®¹ø¹ ºpº»z»T¼ã¼s½Ò½¾D¾”¾ ¿®¿ø¿ ÀpÀ¶ÀãÀÿÀOÁYÖžÖºÖÖÖòÖQ×lÛÑÛ!Ü¢ÜPÝÆÝ¡Þ3âaââã‘ã†äüä×åéGéeéééxêmëãë¾ìØñò$òtòëòàólô.ö\özöÉö@÷"ùeùRúãú =hF%Uzü‹€ ›*+-+¯+>,•,Š-.O/}/X;£;â;2<©<ž=*>X? @u@Î@{B)CÚD8EŠIµIJzJoKûKYL†L¡LðLfM N9NTNpNÀNO­OâOCPxõ ¿_ Å_ È_ Ð_ Ø_ ý_ ` ` a b ñb íœ � U  Y  _  f  j  n  u  {  €  ‡  �  ’  ™     §  ­  ³  ¹  ¿  Å  Ë  Ñ  ×  Ý  ã  é  ï  õ  û  ¡ ¡ ¡ ¡ ¡ ¡ !¡ G¡ ¸¡ [§ ^° ¸ J¿ à¿ °À ÃÁ Hà ¦Ã ÆÃ HÄ wÅ îÆ ûÆ KÊ ÿÊ íÌ ÷Î %Ï ,Ï ŠÏ ÔÏ 0Ð Ñ {Ñ LÒ ·Ò Ó xÓ ïÓ &Ô íÖ ÆÙ ÓÙ oß çá �ã ìè Úì Tï ëð 0÷ Ç÷ ^ø [ù Îú ü ¼ ë   ª É ¦ ­ º " " &" —( ž( «( ±9 ~F †G �G ¦H îI J oJ &K –K L ·L M �M óM JN ¿N oO |O šO SP Q IQ PQ lQ ÌQ îQ òS hW ¤X Y mY ¡Y ½Y ÙY õY Z -Z ‹Z ÎZ %[ |[ à[ 9\ X\ ] K] g] ƒ] Ÿ] »] ×] ó] -^ p^ ¶^ ü^ O_ ”_ æ_ ` ¾` ì` a $a @a za ½a b Tb ™b ób c Ëc ðc d ^d °d ód 8e ¾e Ýe –f »f Öf /g Wg �g åg ,h sh »h i Ki i -j 2j Qj k k tk yk k l ml Æl 8m ðm ým n ¦n ³n o Ço Ôo Xp ep Ñp ép Jq «q r r r r $r br ¶r s ws t t ‘‹ •‹ ™‹ �‹ ¡‹ ¥‹ «‹ ‡� ‹� ‘� ˜� Ÿ� £� §� ¬� ²� ¸� ¾� Ã� É� Ï� Õ� Ü� â� è� ï� õ� û� � � � � � � '� -� 3� :� @� F� L� R� X� ^� d� k� q� x� ~� „� ™� ®� í� ¦“ – – ˜ ò™ ŒŸ ¦¢ î£ Ä© ¥­ 7± ȱ 3² ˆ² ݲ '¶ I¶ É \É «É FÝ •Ý äÝ ¢í ñí Ó÷ "ø  ; ù ÷ -' ­0 F8 Œ< Û< ²> ? tJ O -O  P ýS oV pX TY \ p\ ^ £^ º^ Ñ^ ç^ >_ k_ Ñ_ Ø_ ß_ O` þ` a …a îa qb ÿb ac ?d Ld ÿd e ue 0f —f þf `g Çg &h …h äh Xi Ái Bj Ïj \k Åk 9l ‡l Žl •l þl �m n tn Ýn Fo ¯o "p ¤p &q ©q Àq ×q óq .r Ór .s ’s t Œƒ 'Ž {š ¡ ô° N½ ýÌ ’× iß Ññ –ü þü ôý gþ êþ oÓ†"Ã,Ëâ s < £ 0µ�©¶³d–$=à=¸3Ja¶¹¾ÂÇå(w¼ö'Ëé� ¸ ý ?!‚!³!W"u")#A#z#³#Ù#÷#«$¾$%X%s%Ž%©%Ä%ß%ù%<&€&Ó&('€'Ø'0(ˆ(à(*+é,/Ç0A1V1«1Ñ1ï1£2 6666 6$6*6065696?6C6G6K6O6S6¸6ß8F<S<ë>Q@lDàDqIwI„I‰N�NœN˜TœT¢T¨TµTfUCYZžZà[º\S^ ^§^®^µ^Ñ^?_Ž_¼_›[œªœùœ>�o�ž1žåž Ÿ)ŸÝŸûŸB W Ž ´ Ò †¡¤¡è¡ý¡@¢f¢„¢8£V£š£¸£ü£¤¯¤³¤·¤»¤¿¤äǤˤÍ¥(¦‰¦»§¨q¨ú¨ý¨©© ©©©©ªª#ª)ª´ª¸ª¾ªªƪʪ7«”«ä«I¬ª¬­u­Ï­O®¯^¯ÿ¯j°ǰ±Œ±û±a²Ͳb³ô³U´°´ µgµ¶m¶· º ºººº#º&º,º2º8º>ºBºHºMºTºZº^ºbºiºnºuº{º�º†º�º“º™ºŸº¥º«º±º¸º¾ºĺʺѺ׺ݺãºéºïºõºûº»» »Ê»*¼0¼F¼¹¼·¿¨ÍµÍ)ÑöÓtԌޓޠބà‹à˜à ä§ä´ädçhçoç|çaíeílíyí&*1>l p w „ è Ô ^ "Ô'‰(€-¥0þ6(;â>¶? LpOKS¨Z¶deQk’l…v×zõzM{©{Ý{T|¶|}}}Ö}/~‘~c»Å€'€~€Q�…�Œ�“�E‚„„O„V„]„y„à„/……Î…ü…† †>†E†L††m‡q‡¼‡Çʇæ‡Mˆœˆìˆ;‰i‰p‰w‰§‰®‰µ‰`ŠdŠ¤Š«Š²ŠΊ5‹c‹j‹q‹¡‹¨‹¯‹ZŒ^Œ©Œ°Œ·ŒÓŒ:�¥�Ó�Ú�á�ý�ÏŽ$’¶’8“°“™3ž£¡«»™ÃcÈÍÏsØDÝÑá.æAè ë6íEðò:ó.ôõ?ö÷Ú÷¶øšù[úWû3üýöýþoþyþëþFÿ¡ÿŠdL?™ÿ]…;O \ g ¶  Vˆ•ä3…Á!�"£"§"­"²"¸"¼"À"Ä"È"Î"Ô"Ø"P#ª#¿#l$%Ÿ%&R&¬&'š'Ÿ'¢'§'«'¯'³'¹':(ì(¹)ƒ*å*}+�+‡+‹+�+“+Š,å,.r.Í.å1è1î1ò1ø1þ122 2222"2&2*2/252;2A2G2L2R2X2^2d2j2p2w2}2ƒ2‰2�2•2›2¢2¨2¯2µ2»2Á2Ç2Í2Ó2Ù2ß2å2ë2ñ2÷2E4ë4Q5­5"6|6×6Ç7·8¥9°:»;Ú<5=q=~=É=>Õ>Y?b? @@v@Þ@:A°A BiB`C¯CþCôDCE7FHGYH�H[IKJ:K)L4M!N„NOkOÒO/P¥PþPaQ»QR�RrScTRU^VjWƒWXY›YöY]ZºZ0[‰[ã[Ô\Å]´^À_Ì`ë`·abcòcídzeÕeÂAÂGÂMÂPÂVÂ\ÂbÂeÂhÂnÂtÂxÂ~„ŠŽ’™ §­³¹¿ÂÅÂËÂÑÂØÂÞÂäÂèÂìÂòÂöÂúÂ?ûíÖ!ÞKå¦î[ó³ù6ÿÓÿ~I×ÇnW½"@y’f“»;Ï ·ÄÀXeº ‚$sÂ8=DI­d q è T!°!R"_"=#´#N$Ù$4%µ%6&Ÿ&'�'({(÷(n)Ó)D*�*ö*h+Á+',€,ñ,Y-Á-.u.;/¢/ý/V0®0Ç01[1™1 1\2¾2<3¯34„4ö4s5Ó5A6£67&7Œ7ð7ó7÷7û7ÿ788789t9Ê9:T:–:Ú:;a;«;Ü;€<ž<R=R>W>Z>^>c>f>i>n>s>w>{>>ƒ>‡>¨>á>?‹?ø?[@¸@(AFAúAB"BuB—BðBHCòCWD±DE7EðE#F*FMFòFGÊG‘H•H™HŸH£H©H®H³H·H»HÁHÖHëH IOI¢IJ‹JK!KdK·K&L;LPLÊL?MœOŸO¥O«O®O´OºOÀOÆOÌOÒOçOûOP%P;P?PGPLPQPXP^PdPiPoPuP{P�P‡P�P“P™PŸP¥P«P±P¸PQ€SÂUÏUX0Z3]Ê`Rd-hµlÍo?v£vc|Ê€e„nе‘ ¡V¦R¬lµO¹¯Á6ÈË Ë>Ë÷Ë%ÌlÌÏÌ6ÍÆÍ*ÎŽÎôÎjÏjйÐ8ÑVÑÒ+Ò×j×ß×ý×¶ØÙ€ÙœÙyÛÈÛ.ܒܪÝÉÝDß“ßùßUà,á“á�ã‹ãÚã)äEäŒåèåçwç=è[èééQéXétéÔéðìôìúìíí íííí"í'í.í4í:íAíGíMíSíYí_íeíkíqíwí{ííƒí‡í�íÒïöïeðÞòÔö7÷é÷Jø§øÎøNù+úûûÙû†ü§ý…þ¾þ£Ž›N1& I k;°~dúi‹� ” ¡ $ $$À&Ç&Ô&)))&)3)»,¿,Æ,Í,Ú,ù,ä39j9¹9Ä:(;ƒ;d@�@œA§BúCME FíG1IOJœJ£JªJ±JÍJ;KŠK×KÞKåKìKLvLÅLäL”N,Q¾QÈQ>R]RºR0SŠSðSTPTÆT*U„UêU\VÁVàWäWêWîWòWøWüWXX XXXX3XIX|X³XYGZTZaZÐZR[«[\š\']´]%^–^¯^_```‰`â`aja€abrb×bùb’c÷c`d¼debe¹efƒf¡fZgxg1h–h´hmi»i¿iÇiÏiÔiÜiäiìiôiüijj2jIj`jøozz"z'z-z1z5z_z}R€[�}‚…ƒàƒo„g…„…8†z†‡4‡ä‡’ˆU‰ª‰MŠåж‹ˆŒ¢��Ž‘o’›,›6›ß ‰¡§¡à¡ÿ¡¸¢ë¢ò¢£³£æ£í£ ¤i¤œ¤£¤¿¤¥R¥Y¥u¥Õ¥¦A¦u¦¯¦§“§í§!¨\¨r¨ר<©ž© ªjª« «ø«ª¬´¬Y­f­p­É­è­¡®Ô®Û®ö®V¯‰¯�¯¯¯T°¸°:¸>¸E¸L¸P¸V¸Z¸^¸c¸g¸k¸o¸s¸w¸}¸�¸…¸ʸñ¾Ã£Ç–Ê Ï4ÒâÛßßXèÀèèì¡õ¶ûMÿÂÿ/¹.Š@DMœÈÌÕ$Hš¤#Ä+‘-°-i.ª.±.Ï.ô. /'/ç/{0À0Ç0á0ü0(1/1ï182?2[23`3ª3Ë3Ò3ó3ú3:4ƒH�H�HªHùHYKiKXS§SkZ^`^}d�iÞi‰lwoauÛy}�ø„=†G†t†™†þ†·‡ćˆlˆwˆÓˆ*‰�‰è‰MŠoжЋN‹”‹ø‹,ŒÔŒóŒ¬�±�ö�2Ž{Ž‚ŽžŽC�¨��R�s�z�›�¢�Õ�Ü�ÿ�¤‘R“X“v“*”?”¹•ú•––C–I–— ! ' - 3 |§‰§–§ä§û¬­­c­Ž­”­Ý­û­=®¯÷¯Q°«°ç°i³ƒ³‡³‹³�³“³—³׳ݳ™µ&·*·—À¤ÀÞÊëÊ÷ÌÍÏ+Ï9ÕFÕÚ#Ú¿äÌäææ_çlçëë*ëHëfë¥ë¬ë¹ë5íÕîÙîÏïÖïãïÿïdð¨ð¯ð¼ð€ñ¼ñÃñÐñˆòŒò‚ó‰ó–ó²óô2ö9öFödö‚öÁöÈöÕön÷&ø*ø ù'ù4ùPùµùùùú úÑú ûû ûØûÜûÒüÙüæüýgýžÿ¥ÿ²ÿÐÿîÿ ]dq +2?[Àho|@ahu‘öýb¨µÌæ)6CgÕâïÖ9FSmÕAN[ÆÊÎÔÙÝáçMZgƒŸ»>KX›¨µýTanÎs×äñ¯úqV Z ` d ‚ "Œ#|$Q&·&('é')’) *º*°+ ,è-Ø.Â/Â0�1X2ò2&4ÿ4Á5™6R7&8À8‹9,:û:<=A>A÷AB8B‘BòBsCTFRHâLlMlO÷OŽPñP^RƒS TÄUãVXYDZ]\ô]_:`³a*cMdneëffh„h½hÓhsiœi»itjÛjâjkykÚklNnzÅzÒzäzÿzH{U{b{|Á}�…�»� ‚W‚³‚À‚Í‚‡m‡z‡‡‡Eˆ ŠYŠ_ŠlŠyŠ“ŠüŠ‹‹‹âŒZ�`�m�z�”�ŽtŽzއޔŽ�…�‹�˜�¥�j�—‘›‘¡‘¦‘ª‘®‘³‘·‘»‘¿‘őɑϑӑّݑ’E’|’´’Ë’4“A“N“l“‹“©“È“'”4”A”»”ȔՔ4•A•N•—•¤•±•ù•L–½–Ê–×–ˆ—×—�˜ ™[™šÒšŽ›æ›ó›œœd�k�x�…�¨�Æ�â�Zžažnž{žñžgŸ ‰ ¡¡¡!¡‰¡ ¢¢¢*¢ó¢]«««®«³«·«»«¿«Ô«j¬w¬Á¬­“­/®¬®¯[¯®¯þ¯°° °°°'°©°¶°˰±i±æ±C²¦²#³x³˳#´&´+´/´3´7´L´δÛ´$µyµöµQ¶ζ#·v·‹· ¸¸h¸±¸¹ƒ¹Þ¹[º°º»»š»§»õ»>¼“¼½k½è½=¾�¾Þ¾á¾æ¾ê¾î¾ò¾¿‰¿–¿ß¿4À±ÀÁŽÁãÁ6„‡ŒÂ�”˜­Â.Ã;ÉÃÒÃ'ĤÄþÄ{Å„ÅÞÅ3Æ<Æ�ƓƚơƦƬƲÆÌÆãÆøÆ ÇÇÇÇ!Ç(Ç/Ç4Ç:Ç@ÇFÇMÇTÇ�Ç#Ð0Ð~ÐÌÐÑ�ÔÚ$ÚrÚØÝ¡âGãîã¯è©éê�êëvëÒë\ìlìÊìRíÚí:î˜î®î4ïAï�ï%ð2ðÏðÜðAøGø`ødøhøløpøtøŒøkù#úAúõú4ûœûüCü§üuýÈÿ]Õ��µ/>ú GTnÞ  � á î  x À Í = Z œ Á Û  B \ ž à Ý  D ^   µ U{™MrŒáŽP QyQÕQ RRýRSS S SSSSS#SJS&T>V¡V>X¢Z^[\�\±\ ]"]ƒ]1^F^·^ _*_Þ_æ_`Œ`Á`aka�d…d‰d�d“d—dœd¢d¦dªd®dåf÷ij§lÍoÚo:p©p¥ru(y·{¬€‚E„ˆ¹‹d’2–½–Q—ß—w˜þ˜™™'š¼šB›Å›Nœ»œ/�£�Á�ú�" & * 0 G Z o s y ~ ‚ † Š Ž £ è ¡º¡à¡¢U¢š¢à¢/£~£Ì£¤W¤©¤ú¤ ¥>¥ò¥ö¥S¦®¦ §˧ا(¨˜¨¥¨f©Á©0ª‚ªתS«`«”«¬‹¬˜¬̬…­”­ø­M®Õ®â®›¯ý¯ °p°ŰM±Z±²x²Ô²:³œ³´a´Ç´|µ1¶é¶?·O·¥·µ· ¸¸°¸½¸¹m¹Ź!ºoºغC»®»¼A¼i¼–¼ʼ0½–½ü½0¾–¾ü¾b¿ãÀêÀîÀôÀúÀÁÁ ÁÁÁÁÁ#Á'Á-Á3Á9Á=ÁAÁGÁKÁPÂVÂZÂ`ÂfÂjÂnÂrÂvÂ|Â�…‰Ž”˜¶ÂÃ2ÃæÃÄTĨÄüÄPŦÅüÅOƭƇÇ,È9ÈŽÈÉ:ÉsÉ¶É Ê`Ê~Ê2Ë\ËŸËôËIÌŸÌWÍdÍÅÍSÎâÎÏ´ÏáÏ7ÐzÐÐÐ^ÑkÑùÑÒgÒÇÒUÓäÓ.ÔqÔwÔ‘Ô×ÔÝÔ8Õ”ÕóÕRÖ³Ö×t×á×CØ­ØaÙnÙ"Ú/Ú�ÚñÚÛ$ÛäÛKÜÒÜÝÝ7Ý{Ý‚ÝâÝCÞ£ÞßdßÅß‹à˜à6áCá±áâŸâ8ã™ãóãTä«ä ååæåFæ¨æç\çè™è÷èRéÜé7ê’êíêHë£ëþëYì´ìíjíÅí î{î¸î¼îÀîÄîyð†ð“ðHòUòbòô$ô1ôKôžôäôõ@õ¥õëõ1öwö©öéö)÷i÷Ø÷ødøªøðø-ùmù­ùíù-ú¥úëú1ûwû½ûüKü‹üËü ýKý‹ýðý6þ|þÂþôþ4ÿtÿµÿ$j°ö<y¹ù9yÌFS™$(V±�íVÊ|€„ˆŒ’˜œ÷ýÈ××äÛèÉ-f699F9Z<g<q<m?ùA«DºFHüJUMõO³QoS–TòVDZpZwZ7[B[�[–[¦[ø[\�\C]*^M_`9`ò`a6a›aºabEb_bÂbáb'cFcŒc¬cd>d°dÏdge•f'hvi¤imm_plp©q„r[s;tÀtÓuvv¼vây|z6{’}¼~fw‚ƒÝ„-†V†ІC‡–‡�‡¹‡ˆyˆºˆÁˆ!‰:‰Ï‹ŽŽ‡Ž¬Ž²�U� ’/“\”­•Ö•õ•®–(—,—0—6—=—^—¢— ˜a˜µ˜ ™:™~™Þ™3šˆšÜš=›œ›ð›~œÓœñœ¥�×�Ý�÷�Užažyž´žèž÷ž Ÿ"Ÿ1ŸƒŸÕŸ n ª i¢„¢ ¢»¢×¢÷¢L£l£ ¤@¤w¤*¬E¬s¬“¬è¬­¼­ ®®.®L®i®‡®¤®¿®Ü®ù®¯C¯I¯°?Ñ\ÑyіѳÑÐÑíÑ Ò%ÒAÒ]Ò}ÒÓÒÓÓÇÓåÓÔÔÓÔÙ×÷ר3؉ةØ^Ù˜ÙÒÙëÙÚ?Ú•Ú¬ÚÌÚ@ÛUÛvÛäÛÜXÜqÜ¥ÜÅÜÝ2ÝlݦݿÝóÝÞiÞ€ÞºÞôÞ ßAßaß·ßÎßýßà:àðàóãä0ä‡ä§ä]åâåæ<æWævæ±æËæçæçç;çWçtç�ç¬çÈçåçè\è|è2éaé}é™é¹énêœê·ê×êŒë…ø¡ø½øØøôøù,ùGùgù½ùÝù’ú¶þÔþòþÿ.ÿLÿjÿ‰ÿ§ÿÄÿáÿþÿ=”´jœ¹ÖöMm#ry€ž¼öúþÂ=[•™�a¹Ö=[{·ÒòIi m ‹ © È æ  # B `  ž ½ Ý 4T *a!TtËë¡"3"Q"m"‹"¦"Æ"#=#ó#$ˆ$�$¾$-%š(¶(Ö(,)L)*l*Œ*È*â*þ*+4+P+l+Œ+È+â+,X,x,--j12S2ç2+3¿3434‰4©4^5m9¨9Á9á97:W: ;É]^^Q^q^Ç^Þ^þ^³_Ó_ `*`ž`¾`basaˆa©ab8b¨bÈb8cfc�c¡c÷cdÌdìd`eue–ef o!>=>Z>v>“>¯>Ì>è>?!?=?Y?u?’?®?Ê?æ?@@<@X@u@¡@¾@Ú@ú@PApA%BEB¹BÎBïB]C�`¹`Õ`ñ`a+aGaca�aŸa¿ab5bêb cAc¹cÕcñcd*dGddd„dÚdúd¯eÏefÞg˜hÂh%kQk§qÓqr'r~r–r¶rls&|D|b|€|ž|¼|Û|û|R}r}(~Z~w~”~È~è~?Ww-€q€x€–€´€Ò€ÿ€�À�ó�‚/‚O‚¦‚Æ‚|ƒ¯ƒ̓ìƒ „c„ƒ„9…l…‰…¦…Æ…†=†ó†š‰¶‰Ö‰,ŠLŠ‹¥‹Ù‹Œ/ŒPŒŒŒ¦ŒÇŒ��:�U�p���¨�Ã�à�û�Ž3ŽcŽ�ޝŽ�%�Ú� �&�@�`�¶�ú�‘‘ˆ‘¤‘Á‘î‘ò‘®’á’ÿ’“=“”“´“ë“/”6”T””ᔕ•Ï•––=–q–‘–è–—1—L—g—ƒ—£—ù—˜Θ™™8™T™t™Ê™ê™Ÿš¿šöš'›B›]›y›™›ï›œÄœõœ�(�A�a�·�×�Œž¬žãžŸwŸŒŸ­Ÿ N i … ¡ Á ¡7¡ì¡ ¢C¢~ÁºÁÔÁôÁJ—µÂÓÂñÂÃ-ÃKÃiÅáýÃÙÃ÷ÃÄ3ÄPÄpħÄUÊËZËÆÍÎ΃νÎÖÎ(Ñ©Ñ&ÒÓÔ-Ö½Ö¨× ÛwÛÎÛä܃Þeà‘à?á�á¡áøáâ�â¢âÃâ2ã7å–å¶å æ-æãæçxç�ç®çè­êAëaë¸ëØëŽì®ì#í8íYíÈíÒî"ïpïÈïüïðsð‹ð«ð ñ@ñÔñåñúñòŠòãóêóôTô�ô…ôBõ®öÊöæö÷\÷|÷1øQøˆøMýiý˜ý¸ýþ.þãþ� � ¹ Ù / O ìóú&Ki‡ÎÒÖÚ¥'.5<Zx–´ûÿÒ‚ ¾ÜüSs)\z˜¸/å9Vs“ê À .j…£ÁßÿVv,c›¸Õñ - ƒ ² Î î D!u!‘!­!Í!#"V"t"’"²" #)#ß#$0$M$m$Ä$ä$š%Ï%í% &&8&X&¯&Ï&…'¸'Ö'æ'(#(z(š(P)p)å)ó)*)*˜* +++g+‚+£+ß+ú+,W,r,¦,Æ,-5-U- .+. .µ.Ö.E/±5í56;6[6±6È6è6\7q7’78!8‘8±8!9w9˜9Ó9ì9 :H:a:•:µ: ;";B;¶;Ë;ì;Z<{<ë< ={=ÝAB3BBBvB–BìBùBCÃDÊDïD E9E=EúEGG:GWGuG“GÀGÄG�H‡IŽI¬IÊIçIJJÕJKK>K\K‰K�KJL›L×LòLMiM‰M?NoN�NÁNáN8OPOpO&PFP}P�PQ'QHQ·QôQ0RKR[R�R¯RSS+SKS‚S¢ST%T:T[TÊT UU8UUU‚U†UCV…VŒVªVÇVôVøVµWsf�f«fÈfèf>gi"i@ižiËiÏi-jZj`jkäŒ �;�[�²�Ò�ˆŽ¨Žߎ�5�T�s���°�f�†�½�†’¤’Ä’“;“ñ“L”j”ˆ”¦”Ä”á”ÿ”•;•Y•w•••³•Ó•*–J–—�˜ˆ˜ö˜#™'™…™²™¸™uš‰›�›µ›Ó›ñ›Uœ‚œ†œC�˜žÑžèžŸ<Ÿ’Ÿ©ŸéŸïŸ  & g k ˜ œ ù ¡#¡P¡V¡¢?¢E¢À¢â¢è¢££‘£÷£ý£$¤a¤{¤¢¤Þ¤÷¤8¥>¥k¥q¥Î¥ò¥ø¥%¦+¦ç¦§§•§·§½§ë§ñ§f¨µÃ»Ã×Ãóà Ä$Ä�ĮIJÄnÅåÇ-È4ÈAÈ\ȱȵÈÂÈ„ÉQ˙ˠ˭ËÈËÌÌ&ÌèÌ!ÏiÏpÏ}ϘÏåÏéÏöϸÐèÙ{Ú¥Ú´Ú)ÛSÛbÛY܃ܒÜxݢݱÝeÞ�ÞžÞCßmß|ß…à±àÀàáCáRáÜáââpâšâ©âÚãää4å`åoåæ.æ=æç:çIçBèlè{èmé—é¦épêšê©ê—ëÁëÐëì$ìzì‘ì±ìfí†íúíî0îžîïïZòŽò®òóó;óró’óôô<ôªôoõ�õ­õö$öÚöú,úLú£úÃúyûöý1þKþkþÂþâþ˜ÿ³ÿêÿbÞ/nÆ/o|7c¯Ï$Dø2nˆ—· ,àTm�â¶ô1 J c ƒ Ù ù ® ð / H a z š ð  Å ñ q ‘ æ ºêP�¡öÊfå@`¶Ö‹\|·Ññ, F f ¡ » Û !0!P!‹!¥!Å!"":"u"�"¯"#&#Ü#~'¸'Ò'(&(|(“(³(')G)Ú)ë)*!*�*°* +@+°+"9]9v9ª9Ê9 :7:W: ;,;c;ƒ;÷;<ª<»<Ð<ñ<_=€=ð=>€>¼?×?÷?M@m@"ABA¶AËAìAZB‰B¥BÅBC;CðCäGH9HmH�HäHüHISIsIèIJœJ­JÂJãJRKsKäKLuLOXOsO§OÇOP6PVP�P­P"QBQÖQçQüQRŒR­RS>S¯SôS!TNT{T¨T)UVfVçVjWíWpX#YÀYÒYoZ�Z[[_[�[D\‰\–\¶\2]n]{]÷]U^b^‚^þ^S_`_Ü_ý_G`o`�`Ú`a"ama•aµab(bHb“b¬bcLcnc1dJd–d¾dÞd?e‘ežeîeGfTftfÚf†gÀgÝgýgThth*iJi¿iÔiõidj jÜjùjkpk�kFl—l¤lÆlèl0m=m™mâmñm¬nñnoKoxo¥o&p qcqäqgrêrms t½tÏtlu~uvv\v~vAw†w“w³w/xkxxxôxRy_yyûyPz]zÙzúzD{l{Œ{×{ÿ{|j|’|²|ý|%}E}�}©}~I~k~.G“»Û<€†€“€ã€<�I�i�Ï�{‚µ‚Ò‚ò‚Iƒiƒ„?„´„É„ê„Y…•…Ñ…î…†e†…†;‡Œ‡™‡»‡݇ˆ*ˆ†ˆLjÖˆ‘‰ š(šDšdšºšÚš�›½›Ù›è›œ^œÙœõœ �/�K�v�…�¡�Ì�Û�÷�"ž1žMžxž‡ž£žΞÝžŸ1Ÿ‡ŸžŸ¾Ÿs “ ¡¡=¡«¡1¥K¥e¥¥™¥´¥Î¥è¥¦¦7¦Q¦…¦¥¦û¦§2§ç§¨ª·ªĪ «/«‘«ù«¬¬Ö¬k°‡°§°\±ü³8´R´r´'µ³µеìµ ¶%¶B¶^¶{¶–¶±¶ζé¶·!·<·W·t·�·­·É·æ·¸¸;¸W¸s¸“¸H¹£¹Þ¹º4ºTºªºʺ>»^»ñ»¼¼8¼¦¼Ǽ7½W½ǽ¾>¾X¾x¾ξî¾£¿Þ¿À4ÀTÀªÀÛÀ÷ÀÁ3Á‰Á�Ö–Ö²ÖÎÖêÖ×1×5×’×�ÛâÛ2Üf܆ÜÝÜõÜ݊ݪÝ>ÞOÞdÞ…ÞôÞWâuâ’âÆâæâ=ãUãuã+äKäÀäàätå…åšå»å*æ=é[éyé­éÍé$ê<ê\êë2ë§ëÇë[ìlì�ì¢ìíüñò8òXò¯òÏò…ó¥óô/ôPô¿ôRöpö�ö­ö÷$÷Ú÷SùZùú2ú6ú”úÁúÇú„ûQ Oz.X9sŒÀà7Oo%EºÏð_Î*+?+s+“+ê+,",Y,y,/-O-Ä-Ù-ú-i.a/�/‡;Å;ö;<m<�<C=c=Ø=í=>}>™?@†@ß@�B:CìDIEœIÇIçI>J^JK4K©K¾KßKNL~L™L´LÔL*MJMÿM1NLNhN„N¤NúN“OÖOÜOöO#P'PãPëPóPûPQ QQQ#Q+Q3Q;QCQKQSQ[QcQkQsQ{QƒQ‹Q“Q›Q£Q«Q³Q¼QÄQÌQÔQÜQäQìQôQüQR RRR%R-R5R=RERMRUR]RfRnRwRRˆR‘R™R¢R«R´R½RÅRÎR×RàRéRñRúRS SSS&S/S8SASISRS[SdSmSvS~S†SŽS–SžS¦S®S¶S¾SÆSÎSÖSßSèSðSùST TTT"T*T2T:TBTJTRT[TcTkTsT{TƒT‹T“T›T£T«T³T»TÄTÍTÕTÝTæTïT÷TÿTUUU!U)U2U;UCUKUSU[UcUkUsU{UƒU‹U“U›U£U«U´U½UÅUÍUÕUÝUåUíUõUýUV VVV%V-V5V=VEVMVUV]VeVmVuV}V…V�V•V�V¥V­VµV½VÅVÍVÕVÝVåVîV÷VWWWW#W+W4W=WFWOWWW`WiWrW{WƒWŒW•WžW§W¯W¸WÀWÉWÑWÚWâWëWóWüWX XXX(X0X9XBXKXSX\XdXmXuX}X…X�X•X�X¦X®X¶X¾XÆXÎXÖXÞXæXîXöXþXYYYY&Y.Y6Y>YFYNYVY^YfYnYvY~Y†YŽY–YžY¦Y®Y¶Y¾YÆYÎYÖYÞYæYîYöYÿYZZZ Z(Z0Z8Z@ZHZPZXZ`ZhZpZxZ€ZˆZ�Z˜Z Z¨Z°Z¸ZÀZÈZÑZÙZâZëZóZüZ[ [[[$[,[5[=[F[N[V[^[f[n[v[~[†[Ž[–[ž[¦[¯[¸[Á[É[Ò[Û[ã[ë[ô[ü[\ \\\$\,\4\<\D\L\T\\\d\l\t\|\„\Œ\”\œ\¤\¬\´\¼\Ä\Ì\Ô\Ü\ä\ì\ô\ü\] ]]]$],]4]<]D]L]T]\]d]l]t]|]„]Œ]”]œ]¤]¬]´]¼]Ä]Ì]Ô]Ü]ä]ì]ô]ü]^ ^^^$^,^4^<^D^L^T^\^e^n^w^^ˆ^‘^™^¡^©^±^¹^Á^É^Ñ^Ù^á^é^ñ^ù^_ ___"_*_2_:_B_J_R_Z_b_k_s_|_„_Œ_”_œ_¤_¬_´_¼_Ä_Ì_Ô_Ü_ä_ì_ô_ü_` ```$`,`5`>`G`P`X`a`j`s`|`…`�`–`Ÿ`¨`±`¹`Â`Ë`Ô`Ü`å`î`÷`ÿ`aaa#a,a4a=aFaOaXaaaiara{a„aŒa”aœa¤a¬a´a¼aÄaÌaÔaÜaäaìaôaüab bbb$b,b4bfGfOfWf_fgfpfyf�f‰f‘f™f¡f©f±f¹fÁfÉfÑfÙfáféfñfùfg ggg!g)g1g9gAgJgRgZgbgjgrgzg‚gŠg’gšg¢gªg²gºgÂgÊgÒgÚgâgêgògúgh hhh"h*h2h;hChLhTh]hehnhvh~h†hŽh–hžh¦h®h¶h¾hÆhÎhÖhÞhæhîhöhþhiiii&i.i6i>iFiNiVi^ifinivi~i†iŽi–iži¦i®i¶i¾iÆiÎiÖiÞiæiîiöiþijjjj&j.j6j>jFjNjVj^jfjnjvj~j†jŽj–jžj¦j®j¶j¾jÆjÎjÖjÞjæjîj÷jk kkk#k,k4k=kFkOkWk`kikrk{kƒkŒk•kžk§k¯k·k¿kÇkÐkØkákêkókûkl lll'l0l9lAlJlSl\lelmlvllˆl�l˜l l¨l°l¹lÁlÉlÑlÚlãlìlôlýlmmm m)m2m:mCmLmUm^mfmomxm�mŠm’mšm¢mªm³m¼mÅmÍmÕmÝmåmîmömþmnnn!n)n2n;nDnLnUn^ngnonxn�nŠn“n›n¤n­n¶n¿nÇnÏn×nßnènðnùno ooo%o.o6o?oHoQoYoaoioqozo‚oŠo’o›o¤o­oµo¾oÇoÐoØoáoêoóoûop ppp'p0p9pBpKpSp[pcpkptp|p…pŽp—pŸp¨p±pºpÂpËpÔpÝpåpípõpýpqqqq'q0q9qAqJqSq\qdqmqvqq‡q�q™q¢q«q³q¼qÅqÎq×qßqçqïq÷qÿqrrrr'r/r7r?rGrOrWr_rgrorwrr‡r�r—rŸr§r¯r·r¿rÇrÏr×rßrçrïr÷rÿrssss's/s7s?sGsOsWs_sgsoswss‡s�s—sŸs§s¯s·s¿sÇsÏs×sßsçsïs÷sÿstttt't/t7t?tGtOtWt_tgtotwtt‡t�t—tŸt§t¯t·t¿tÇtÏt×tßtçtït÷tÿtuuu!u)u1u:uCuKuSu[ucukutu}u…uŽu—u u¨u±uºuÃuËuÔuÝuæuîu÷uv vvv#v,v4v=vFvOvXv`vhvpvxv€vˆv‘v™v¡v©v±v¹vÂvËvÓvÜvåvívõvývw www'w/w8wAwIwRw[wcwlwuw}w†w�w—w w©w±wºwÃwÌwÔwÜwäwìwôwýwx xxx'x/x7x?xHxPxYxbxkxsx{xƒx‹x“x›x¤x¬x´x¼xÄxÌxÕxÝxæxïx÷xÿxyyyy(y0y9yByJyRyZybyjyryzy‚yŠy’yšy¢yªy²yºyÂyÊyÒyÚyâyêyòyúyz zzz"z*z2z:zBzKzSz[zczkzsz|z„z�z•zžz§z¯z¸zÁzÊzÓzÛzäzízözÿz{{{"{+{3{<{E{N{W{_{h{q{z{ƒ{‹{”{�{¦{¯{·{¿{Ç{Ï{×{ß{ç{ï{÷{ÿ{||||(|0|8|A|J|S|[|c|k|s|{|ƒ|‹|“|›|£|«|´|¼|Å|Î|×|ß|ç|ï|÷|ÿ|}}}}'}/}7}?}G}O}W}_}g}o}w}}‡}�}—}Ÿ}§}¯}·}¿}Ç}Ï}×}ß}ç}ï}÷}ÿ}~~~~'~/~7~?~G~O~W~_~g~o~w~~‡~�~—~Ÿ~§~¯~·~¿~Ç~Ï~×~ß~ç~ð~ø~ #+3;DLU]env~‡�˜¡©²ºÃËÔÜåíöþ€€€ €)€1€:€B€J€R€Z€b€j€r€z€‚€Š€’€š€¢€«€³€»€ÀË€Ó€Û€ã€ë€ó€û€� ���#�+�3�;�C�K�S�[�c�k�s�{�„�Œ�”�œ�¥�­�µ�½�Å�Í�Õ�Ý�å�í�õ�ý�‚ ‚‚‚%‚-‚5‚=‚E‚M‚U‚]‚e‚m‚u‚}‚…‚�‚•‚�‚¥‚­‚µ‚½‚ł͂Ղނç‚ï‚÷‚ÿ‚ƒƒƒ ƒ)ƒ1ƒ9ƒAƒIƒQƒYƒaƒiƒqƒyƒ�ƒ‰ƒ‘ƒ™ƒ¡ƒ©ƒ±ƒ¹ƒÁƒɃуÙƒáƒéƒñƒùƒ„ „„„!„)„1„9„A„I„Q„Y„a„i„q„y„�„‰„‘„™„¡„©„±„¹„Á„Ʉфلá„é„ñ„ù„… ………#…,…4…<…D…L…U…]…f…n…w…€…ˆ…�…˜… …¨…°…¸…Á…É…Ò…Û…ã…ë…ó…û…† †††$†,†4†<†D†L†T†\†d†l†t†}†…†�†•†�†¥†­†µ†½†ņ͆Ö†Þ†æ†î†÷†‡‡‡‡ ‡(‡0‡8‡@‡H‡P‡X‡`‡h‡p‡x‡€‡ˆ‡�‡˜‡ ‡¨‡°‡¸‡À‡ȇЇ؇à‡è‡ð‡ø‡ˆ ˆˆˆ!ˆ)ˆ2ˆ:ˆCˆKˆTˆ]ˆeˆnˆwˆ€ˆ‰ˆ‘ˆšˆ£ˆ¬ˆµˆ½ˆƈψ؈áˆéˆòˆûˆ‰ ‰‰‰'‰0‰9‰A‰J‰S‰\‰e‰m‰v‰‰ˆ‰‘‰š‰£‰«‰´‰½‰Ɖω؉á‰é‰ò‰û‰Š ŠŠŠ'Š0Š9ŠBŠKŠSŠ\ŠeŠnŠwŠ€ŠˆŠ‘ŠšŠ¢ŠªŠ²ŠºŠŠÊŠÒŠÚŠâŠêŠòŠúŠ‹ ‹‹‹#‹+‹3‹;‹C‹K‹S‹\‹d‹l‹t‹|‹„‹Œ‹”‹�‹¥‹­‹µ‹½‹Å‹Í‹Õ‹Ý‹å‹í‹õ‹ý‹Œ ŒŒŒ%Œ-Œ5Œ=ŒEŒMŒUŒ]ŒeŒnŒvŒ~Œ†ŒŽŒ–ŒžŒ¦Œ®Œ¶Œ¾ŒÆŒÎŒÖŒÞŒæŒîŒ÷Œ���� �(�0�8�@�H�P�X�`�h�p�x�€�ˆ���™�¢�ª�³�¼�Ä�Í�Ö�Þ�æ�î�ö�þ�ŽŽŽŽ&Ž.Ž6Ž>ŽFŽNŽVŽ^ŽfŽnŽvŽ~Ž†ŽŽŽ–ŽžŽ¦Ž®Ž¶Ž¾ŽÆŽÎŽÖŽÞŽæŽîŽöŽÿŽ��� �(�0�8�@�H�P�X�`�h�p�x�€�ˆ���˜� �¨�°�¸�Á�É�Ñ�Ù�á�é�ñ�ù�� ���!�)�1�9�A�I�Q�Y�a�i�r�z�‚�‹�”�œ�¤�¬�´�¼�Ä�Ì�Ô�Ü�ä�ì�ô�ü�‘ ‘‘‘%‘-‘6‘?‘G‘P‘Y‘b‘j‘s‘|‘„‘�‘–‘Ÿ‘¨‘±‘¹‘Á‘ɑёّâ‘ë‘ó‘ü‘’ ’’’'’/’7’?’G’O’W’_’g’o’w’€’ˆ’�’˜’ ’¨’°’¸’À’È’Ð’Ø’à’è’ð’ø’““““ “(“0“8“@“H“P“X“`“h“p“x“€“‰“’“𓢓ª“²“º““ʓғړâ“ê“ò“ú“” ”””"”*”2”:”B”J”R”Z”b”j”r”z”‚”Š”’”𔢔ª”²”º””ʔҔڔâ”ê”ò”ú”• •••"•*•2•:•B•K•T•\•e•n•w•€•‰•’•›•¤•­•µ•¾•Ǖϕؕá•é•ñ•ú•– –––$–-–5–>–G–O–W–`–i–q–y–�–Š–“–›–¤–­–¶–¾–Æ–Ï–Ø–à–è–ð–ù–— ———#—+—3—;—C—K—S—[—c—k—s—{—ƒ—‹—“—›—£—«—³—»—×Ë—Ó—Û—ã—ë—ó—û—˜ ˜˜˜#˜+˜4˜=˜E˜M˜U˜]˜e˜m˜u˜}˜…˜�˜•˜�˜¦˜®˜·˜¿˜ȘИÙ˜á˜ê˜ò˜û˜™ ™™™%™.™6™?™G™P™X™a™i™r™z™ƒ™‹™”™œ™¥™­™¶™¾™Ç™Ï™Ø™à™é™ñ™ú™š ššš$š,š4š<šDšMšVš^šfšnšvš~š†šŽš–šžš¦š®š¶š¾šÆšΚÖšÞšæšîšöšþš››› ›(›0›8›@›H›Q›Z›b›j›r›z›‚›Š›’›š›¢›ª›²›º››Ê›Ò›Ú›â›ê›ò›ú›œ œœœ"œ*œ2œ:œBœJœRœZœbœjœrœzœ‚œŠœ’œšœ¢œªœ²œºœœÊœÒœÚœâœêœòœúœ� ���"�*�2�:�B�J�R�Z�b�j�r�z�‚�Š�’�š�¢�ª�²�º�Â�Ê�Ò�Ú�â�ê�ò�ú�ž žžž"ž*ž2ž:žBžJžRžZžbžjžržzžƒž‹ž”žœž¤ž¬ž´ž½žÅžΞÖžÞžæžîžöžþžŸŸŸŸ&Ÿ.Ÿ6Ÿ>ŸFŸNŸVŸ^ŸfŸnŸvŸ~Ÿ†ŸŽŸ–ŸžŸ¦Ÿ®Ÿ¶Ÿ¾ŸÆŸΟÖŸÞŸæŸîŸöŸþŸ    & . 6 > F N V ^ f n v ~ † Ž – ž ¦ ® ¶ ¾ Æ ΠÖ Þ æ î ö þ ¡¡¡¡&¡.¡6¡>¡F¡N¡V¡^¡f¡n¡v¡~¡†¡Ž¡™¡¤¡¬¡´¡¼¡Ä¡Ì¡Ô¡Ü¡ä¡ì¡ô¡ü¡¢ ¢¢"¢*¢2¢:¢B¢J¢R¢Z¢b¢j¢r¢z¢‚¢Š¢’¢š¢¢¢ª¢µ¢À¢È¢ТØ¢à¢è¢ð¢ø¢££££ £(£3£>£F£N£V£^£f£n£v£~£†£Ž£–£ž£¦£®£¶£¾£Æ£ΣÖ£Þ£æ£î£ö£þ£¤¤¤¤&¤.¤6¤>¤F¤N¤V¤^¤f¤n¤v¤~¤†¤ޤ–¤ž¤¦¤­¤´¤»¤äˤÓ¤Û¤ã¤ë¤ó¤û¤¥ ¥¥¥#¥+¥3¥<¥D¥M¥T¥[¥c¥j¥q¥y¥�¥‰¥‘¥˜¥Ÿ¥§¥®¥µ¥½¥Å¥Í¥Õ¥Ý¥å¥í¥õ¥ý¥¦ ¦¦¦&¦.¦6¦>¦F¦N¦V¦^¦f¦n¦v¦~¦†¦ަ–¦ž¦¦¦®¦¶¦¾¦ƦΦÖ¦Þ¦æ¦î¦ö¦þ¦§ §§§"§)§0§7§>§E§L§T§\§d§l§t§|§„§Œ§”§œ§¤§¬§´§¼§ħ˧Ò§Ù§á§é§ñ§ø§¨¨¨¨ ¨(¨0¨8¨@¨H¨O¨W¨_¨g¨o¨w¨¨‡¨�¨—¨Ÿ¨§¨¯¨·¨¿¨ǨϨרߨç¨ï¨÷¨ÿ¨©©© ©)©1©9©A©I©Q©Y©a©i©q©y©�©Š©’©š©¢©ª©²©º©©Ê©Ò©Ú©â©ë©ô©ü©ªªªª(ª0ª8ª@ªHªPªXª`ªhªpªxª€ªˆª�ª˜ª ª¨ª°ª¸ª¿ªǪϪתߪçªïª÷ªÿª««««'«/«7«?«H«Q«X«_«f«m«t«{«ƒ«‹«“«›«£«««´«½«Å«Í«Õ«Ý«æ«î«÷«þ«¬ ¬¬¬"¬)¬0¬7¬?¬G¬N¬U¬\¬d¬k¬r¬y¬€¬‡¬�¬—¬Ÿ¬§¬¯¬·¬¿¬ƬͬÔ¬ܬã¬ê¬ñ¬ù¬­ ­­­!­)­1­9­@­G­N­V­^­g­p­w­~­…­�­•­�­¥­¬­³­º­­É­Э×­ß­ç­î­õ­ü­® ®®®!®(®/®6®>®E®L®S®[®b®i®p®x®®†®�®•®ž®§®®®µ®¼®Ä®Ì®Ô®Ü®ä®ë®ó®û®¯ ¯¯¯#¯+¯3¯;¯C¯K¯R¯Y¯a¯i¯q¯y¯�¯Â_ Í_ Õ_ ú_ ` ` a b 㜠òœ ž \  c  r  x  ƒ  Š  –  �  ¤  °  ¶  ¼    Π Ô  Ú  æ  ì  ò  þ  ¡ ¡ ¡ ¡ ¡ ¡ ‰¡ § ° Ç· ¿ “¿ eÀ xÁ û Mà Ä Å VÆ ðÆ ôÉ £Ê ‘Ì ›Î *Ï 2Ï �Ï ÙÏ 7Ð ‚Ñ RÒ ½Ò ~Ó ŸÖ QÙ ÈÙ 2ß ¶á \ã »è ªì ï ›ð Çö m÷ ø ù €ú ® n œ Q ¥ è « ¯ g! " " Ò' œ(  ( ³8 �E …F ¤G ¯H J uJ ,K œK L ½L !M –M ùM PN ÅN qO  O ZP NQ UQ rQ ŸS üV RX ªX Y ¦Y ÂY ÞY úY Z 3Z �Z ÓZ *[ ‚[ å[ ^\ P] l] ˆ] ¤] À] Ü] ø] 2^ v^ ¼^ _ T_ š_ ` ñ` a )a Ea a Âa b Yb Ÿb c õc d dd µd ød >e ãe Àf Üf ]g £g ëg 2h yh Áh i …i Wj =k wk }k †k l ql Ël =m òm n ¨n !o Éo Ùo Zp îp Oq Æq r r "r fr ºr s |s t 6‹ ›‹ Ÿ‹ £‹ ©‹ ¯Œ Ž� •� œ� ¯� µ� »� Æ� Ì� Ò� Ù� ë� ò� ø� � � � � � $� 0� 7� C� I� O� U� [� a� h� t� {� �� ˆ� �� W“ –• – ä— ¿™ [Ÿ u¢ ž£ [© X­ ݰ p± Û± 7² Œ² ص )È bÜ ¤ì Óö  v t ª& 40 Á7 ¥; Ë= ýI N LP �S V X ÷X º[ ¿] Q^ ¨^ ¿^ ì^ X_ Ö_ Ý_ å_ U` a a õa xb hc Ad Sd e e {e 5f œf eg êh ^i Çi Hj Õj bk Ëk Œl “l ›l m ‡m n zn ãn Lo µo (p ªp ,q ®q Åq øq 4r Ùr Ús Cƒ Ý� 2š à «° ù¼ ¶Ì G× ß …ñ Jü «ü Rý þ ™þ ¯ÿ 5ÐrÙx" è y B �1«V7Ç®ìD¾8Og¼ÀÅê-|Á,î½ !D!¸!z"F##ü#±$A%\%w%’%­%È%ã%þ%A&…&Ø&-'…'Ý'5(�(Æ)1+™,Â.w0ó0[1ô1(56"6(6.676A6E6I6M6Q6�8Ð;H<º>@DÆHuIyIÜM�N‘NŽSšT T¦TªT^XIY…[_\^¥^¬^³^º^×^ç`½chde6fg·g…h�iWjkÀkPl7stòt|vþv8w%x)x-x2x;xDxHxLxPxWx=yŒzà|Æ}µ~ô€û�Àƒ"…†ÿ†Þˆ½Š·‹;•–––––!–%–)–-–5–µ–¹–À–Å–É–c™îš¼›`œ¯œþœt�6ž.Ÿ \ × ©¡¢‰¢[£½£.¤¹¤½¤Á¤Ťɤ䤤¦w¨ÿ¨© ©©©©!ª'ª/ª¼ªÀªĪȪϪ™«¯¬Ô­¯c¯°̰±‘±f²Z´µ¶#·ºº º)º/º5º;ºEºPºWºfºqºxº~º‰º�º¢º¨º®ºµºÁºǺκÚºàºìºòºøºþº» »»λ.¼4¼h¿.ͪÍõÐÄÓöݑޕÞì߉à�àîã¥ä©äxæfçmçqçhìcíjíníG(/3� n u y  ‘&!í&›,À/ÿ5):á=¸KOùRVZcdôj5l4v…zúzã{Z|¼|!}ƒ}Ü}™~kÀÍ"€-€†€Š�‘�Ý�=ƒ„T„[„b„„4…††C†J†a†‡o‡Á‡ȇχ쇡ˆn‰u‰¬‰³‰õ‰bЩазŠÔŠh‹o‹¦‹­‹ï‹\Œ®ŒµŒ¼ŒÙŒ@�Ø�ß�z޶‘d’|“̘ê�Z¡ʪúMÃÈ‚Ï'ØøÜˆáãåöçÁêíìüïÒñçòÝóÄô�õÆö‡÷cøHùúûâûÌü¦ýüýtþþ9ûîEŸÜÏÁ Q b èߊ&b!Ç!¡"©"´"º"¾"Â"Ì"Ò"Ö"Ý"Ä#q$ %& '�'¥'©'­'±'·'¾'?(ñ(¿)+…+‰+�+‘+¬+-Ó.ë1õ1û12 22222282>2D2O2U2[2a2g2s2z2€2’2˜2Ÿ2«2²2¸2Ä2Ê2Ö2Ü2â2è2î2ô2þ2J4ð4V5²5'6�6Ü6Ì7¼8«9¶:À;s=ƒ=!>Ú>^?@@}@ã@?AµABqBDKE@FQG‡HdIQJ@K0L:M'NOsOÚO7P«PgQ‰RzSkT[UgV‰W'X¡YþYeZÂZ6[�[ë[Ü\Í]½^É_ñ`b cûc€eÝeDf¡fgngÊg»h¬iœj¨kÐlúmênÚo^q»q"rrórLs¨s™tŠuzv†w‘xîxázôzúz{{{{&{-{3{9{>{B{F{J{e{~{¦{É{š|ð|m}@~+2€R�‰�ö�®‚©ƒz„Є†á†̇ÒˆF‰}‰ê‰·Š¶‹(Œ~Œ›�qŽæŽê�@�½�ô�­‘’ô’0“Г*”L•Í•p–®—ì˜Û™›œ†�¿�žñžÏŸ  ­ Ï¡'¢£²£†¤[¥/¦§â§ϨG©‚©ú©Tª�« ¬ ­Y­®‹®j¯¥¯°A±™±r²í²ʳ#ÀªÌ¶Ï§Ñ®Ñ¼ÑÃÑÉÑÏÑÛÑáÑçÑîÑúÑÒÒ ÒÒÒÒ"Ò&Ò*ÒÐÕóÖ·ÛøäSåªæûæçJèþèÁéLê}ë@ìwí¶îdñöôrõ:ø•úxü’çê` (¿.V¸ o!s!Î$…%‰%(à(ä(U+s,z,�,…,Y0w1~1…1‰1<9™?ÛA¥C´DÜE±G¸G¿GÆGãGìHóHúHII›K›NIO¡O·PÕP2Q¤QRmSÇSTsU|U‚UˆU”UžU£U§U«U¹U½UÆUÊUÎUÒUñUHVEWÏX£_õbÕf=hUiäk:oær¨t{Œ}�ÞŸã¡¥Z¥3ªQ³X´°¶Ì·‘¹§ºC¼Y½W¿¯¿ÀDÂJÂSÂYÂ_ÂkÂqÂ{Â�‡–Â�¤°¶¼ÂÈÂÎÂÕÂæÂêÂôÂøÂŠÃgÖÝÝå`îómùëþ„ÿ/ø†i¯]EDc )¹RÄZ]­ˆÈB´f w ·!T"f"C#»#U$:%»%¥&' (�(ý(Ù)J*£*ü*n+Ç+-,†,÷,_-Ç- .|.A/¨/0[0Ì01ž1¦1b2Ä24Š4ü4x5Ù5G6©6,7’7õ7ù788Ã89Œ9Ï9:Y:›:ß:#;y;á;£<k=U>\>a>k>q>u>y>�>…>­>æ>?�?½@KA B'BœBõBNCøC]D=E(F/FSFGãG—H�H§HµH¹H¿HÅHÚHISI§IJ�J&KhK¼K*L?LULÏLEM¢O¨O±O·O½OÃOÉOÏO P"P8PDPTP[PaPlPrP~P„PŠP–PœP¢P¨P®PµP1SLUÄUÐWýY]™`ÀcÝgdl|oàuEv|b€ „Šd‘¾ ¦¬µò¸\ÁãÇÄÊËDË+ÌrÌÕÌ=ÍÌÍ0ΔÎúοÐ\Ñ¿Ö×pרÛÎÛNÝÌÞ™ßÐà2á†ã叿âçaèéVé]ézéÜê÷ìþì íííí+í1í7í>íJíPíVí\íhínítíyí}í�í…í‹í‘í2ð–ò‹öçöJ÷î÷ùÃùzúû€û+üLý*þT�ýò 9ê]�Ý’ – S# $$ô%Å&É&ø'))$)()Ÿ+½,Ä,Ë,Ï,å28À9e?–@£A°BDVE©FöG7I¡J¨J¯J¶JÓJÜKãKêKñKL?N¾PlQÃQÎQcRÀR6S�STVT0UŠUðUbVÚVèWìWðWöWþWXXXXX!X7X€X·X YIZVZfZX[±[\¡\.]º]+^µ^_``Ž`a†abxbÿbehe¿e#f§f~gºhsiÃiËiØiàièiðiøij.jEj\jÈo…y z)z/z3zÊ|âÚ€C‚?ƒ4„,…‰…‡é‡—ˆZ‰ê‰�Š\‹:ŒU�²�@‘Þ‘*š!›1›1 å ¬¡¢ð¢÷¢£ë£ò£¤¡¤¨¤ŤW¥^¥{¥ ¦z¦µ¦$§™§'¨x¨ݨB©¤©pª «¨«þ«¯¬»¬[­k­v­î­Ù®à®ü®ޝ•¯µ¯ ·B¸I¸N¸T¸\¸e¸i¸m¸q¸u¸¸ƒ¸µ¾ßÂeÇJÊÒÎãчÛs߯ç–ìFõ/û«þ’¥BF1ÊÎHH#g+6-¶-p.¯.¶.Ô.%/-/í/0Å0Ì0æ0-151=2D2a23e3Ð3ø3{G…H’HŸH%KáR´Y}]Ðc'i!l'ou‰y±|/�¦„í…B†a†Ÿ†‡¹‡ˆrˆ؈0‰•‰uмЋT‹š‹2ŒùŒü�€Ž‡Ž¤Ž®� �x� �Ú�á�‘/“V“{“p•½•þ•–G–N–ÇŸ% + 1 2¦~§‹§·«ý¬ ­’­˜­®B®¯°°ã²�³‰³�³‘³•³Û³TµŶ(·o¿™À¶ÉàÊÏËùÌïÍ Ï Ô;ÕýØÚ„ãÁäÓäæ#æaçÅêëë/ëMëªë®ëëìlî×îÔïØïèïð­ð±ðÂðÁñÅñòŠò‡ó‹ó›ó¸óáõ7ö;öKöiöÆöÊö$÷½÷(ø%ù)ù9ùVùþùúúûûoûÚû×üÛüëüýKÿ£ÿ§ÿ·ÿÕÿóÿbfÀ04Damq‚fjz—Ýþfª·Ð+8×äz;HWqCP`2ÌÒÛßåíO\k‡£@M�ªºVcrÒÙæöü  ^ b È!P#?$&÷&¶'È(X)Ò)u*b+T,œ-Š.t/‡0V12´2Þ3¡4y5;6 7É7y8.9å9ž:¿;Ã<Ž@DA!B>B?CõEH_LêLéNuOPéQS+TOUnV‹WªXÏYæ[}]£^Å_È’È?ÉxɺÉʃÊaˤËùËN̤ÌYÍiÍÉÍXÎÏæÏ<ÐÐÕÐ`ÑpÑûÑ ÒlÒËÒZÓêÓ2ÔuÔ{ÔÛÔáÔ=Õ™ÕøÕWÖ¸Ö×z×ç׳ØcÙtÙ$Ú5Ú–Ú"Û*ÛQÜÖÜÝ!݀݇ÝèÝHÞ¨ÞßißËß�àžà8áIá·áâ¤â>ãŸãùãZä±äååcçèXé�î¾îÂîÊî{ðˆð™ðJòWòhòô&ô7ôQô¢ôõFõ©õïõ5ö­öíö-÷o÷Ü÷"øhø®ø1ùqù±ùñù3ú©úïú5û{ûÁûOü�üÏüýOý‘ýôý:þ€þøþ8ÿxÿ»ÿ(n´ú}½ý=ÐHWŸC]¸!–ô]Ђ†�–šûIÌNÙSÝy-6®8;9Ï;\<l< ?–AFDXF³G£JüL›OYQS>TšVâYuZ}Z=[”[›[¬[L\ô\Ú]ò^¾_?`aàÌãøã4ä«ädåèåæBæ]æzæ¶æÒæìæ ç$çBç\ç{ç•ç³çÍç è€è8éeé�é½étê êÛêSø‰ø¥øÁøÜøøøù0ùkùáùyþ»þÙþ÷þÿ3ÿQÿpÿŽÿ¬ÿÉÿæÿA¸q¡¾úq*w~…£øüÉ$B—›¡hÀØ $Ba¼öm2 r � ¯ Í ì  ) G f … ¤ á X.Ú;xïæ!"9"V"s"�"Ê"A#6$Â$t(ž(Ú(P)*r*�*Ì*è*++:+T+r+�+Ì+,|,01î1=2Ó23«3ý374­4;9q9¬9å9[:—]Í]^u^_×_M`Â`fa­aŒZŒwŒ²ŒëŒ£�Ú�ŽNŽ�2�m�œ¶ȶä¶ ·Ø·¸"¸^¸¹O¹Œ¹ƹ=º÷º)»G»e»¢»¼ؽ%¾,¾3¾Q¾¬¾@¿F¿M¿¤ÁóÁúÁÂÂ=Â[°´ºÂÀÄ ÅÅÅ7Å‹Å�Å•ÅåÇ0È7È>È\ȰȴȺÈ×ÐÑ,ÑJÑhцѤÑàѶÒÖ^Ö|ÖšÖ¸Ö×ÖöÖ×4×R×p×�×®×Ì×êר&ØDØ�ØøØÎÙ–èÆèäèé@é·éqê ê»ê×êëÊëìì:ì›ìªìLí\íîXîvî”î²îÐîïî ï+ïIï†ï@ðnð«ðeñ•ñ³ñðñªòàòþòó;óYó–óOô‡ôÃôýôµõíõ)öcö÷S÷�÷É÷?ø÷ø/ùlù¦ù^ú–úçú!ûÙûübüœüýÊýþ>þxþ0ÿhÿ¹ÿóÿ«ã4näœÕL>�ʃ¼H¿x±î(á q ª c œ Ù  Ì  W ‘ J ƒ Õ †?xµï¨à8q4Q�Ø‚®Ý�f+”+²+ï+f,ê.G/N/U/\/�/¦/Ä/&0*0.040Œ2é2ð2÷2þ23:3X3º3¾3Â3È3È7ö78Q8È8‚9Â9Ý9û9:6:T:‘:;Â;ò;<L<Ã<|= >%>D>^>}>—>¶>Ð>ì> ?%?A?]?|?–?²?Î?í?@&@@@_@w@¨@Â@þ@tAhBóBg`¡`½`Ù`ö`a0aLaha†aÃa9bc‰c½cÙcöcd/dLdˆdþdÓešg„hšhk(k’qªq+rºrõ{+|I|g|…|£|Â|ÿ|v}0~_~|~ì~{5€v€}€›€¹€��È�ø�‚S‚Ê‚„ƒ´ƒÓƒ„‡„A…q…Ž…Ê…A†t‰ž‰Ú‰PŠ‹¿‹Ý‹Œ6ŒTŒ�Œ­ŒËŒ�$�>�Y�w�‘�¬�Ê�ä�ŽŽMŽe޳Ž)�á��*�d�½�þ�‘!‘Œ‘©‘ð‘ö‘¶’æ’“A“¸“ó“4”;”Z”È”••ו–$–•–—5—P—k—§—˜Õ˜™ ™<™x™î™Úýš+›F›a›�›œËœùœ�,�e�Û�°ž&Ÿ±Ÿ" R m ‰ Å ;¡¢KÁ‚Á¾ÁøÁRÂœÂºÂØÂöÂÃ2ÃPÃnÊæÃÂÃÞÃüÃÄ8ÄtĹÉðÊCË®ÍÊÍÎk·ÎÂÎÑ’ÑÒÓìÓÖ¦Ö‘× Û`Û·ÛÍÜlÞPàhà+ájá¥á;âÇâååºå1æ&ç²ç†ê*ëeëÜëÑì]í§î ïZï±ï ðÎðDñØñò«óèóïóôƒô‰ô†ö²öÎö ÷€÷Uø%ýQý€ý¼ý2þY … ¡ Ý S ”ñøÿ+PnÐÔØÞÏ,3:A_}›ý W‡¥Ãw1a¼3í >[—È2o�¨Æz3gƒ ½Ùõ1 Š ¶ ò K!y!•!Ñ!+"["y"¶"-#ç#$5$q$è$¢%Ô%ò% &\&Ó&�'½'ë''(ž(“)-* *+/+l+‰+§+ä+,,\,Ê,Y-N.Ú.~5µ5ñ5_6 7–7%8µ8(9~9œ9×9ó9:L:¹:e;ð;<=ªAáABšB‹DÈDÏDôD;EAEÙFG!G?G\GzGÂGÈGMIŒI“I±IÏIJJÞJK%KCK‹K‘KfLŸLÜLM�MGNtNåNtOJPÀPLQ¾QøQ5R³ROSÅS_TÓTUU=U„UŠULVŠV‘V¯VöVüVIfwf“f°fìfãh i'iFiÍiÓi]jdj°ŒèŒ%�_�Ö�¬ŽçŽ�;�Z�x�´�Š�_’‹’È’?“ù“T”o”�”«”ɔ锕%•@•a•|•š•וN–K˜†˜Ž˜%™+™µ™¼™M›Ž›•›º›Ø›÷›„œŠœfžœžÕž@Ÿ°ŸíŸóŸ i š    ¡S¡Z¡B¢h¢å¢£ £˜£û£¤(¤e¤‚¤¦¤â¤;¥n¥u¥õ¥(¦/¦§=§º§î§õ§~ùÿÃÛÃ"Ä(İĶĉÇéÇ2È6ÈFÈ³È·ÈÆÈõÊU˞ˢ˲ËÌÌ*ÌÅÎ%ÏnÏrÏ‚ÏçÏëÏúÏÍØgÚ}ÚÛ+ÛEÜ[ÜdÝzÝQÞgÞ/ßEßqàˆàááÈáÞá\ârâÅãÝãå7åðåæüæç.èDèYéoé\êrêƒë™ë(ìµì©í4îÉïEò²ò?óµó@ôHõtõ±õ(öçùúPúÇúÃýúý6þoþæþ ÿ»ÿj7uÊ q€=—ÓHÿ6r»0çX‘½ø5 N ‡ ý µ ô 3 L e ž  Ë  •  À8j¥<}ü)dÚ“c€¼Øõ1 M j ¦  ß !7!T!�!¬!É!"!">"z"³"*#K'‚'¼'*(Ö(K)Þ)%*´*D+ð8&9a9Î9[:0;¦;<®<õ<„=>–?À?û?q@eAðAbB�BÉB?C°GèG#H‘H I–I J JçJwKLêN"O]OËOZPÐPFQÚQ!R±RBS T7TcT‘TìTÍU(V�VW“WXËX~Y-ZªZ[‰[‹\�\¾\p]ƒ]W^i^Š^U_h_`v`—` a*aœa½a/bPbÄbvcQdÅdæd“e¥eIf|fRgŠgÇghxhmiùikj¤jãjk”kQl™l«lÍl2mAmåmõmo4o`oŽoéoÊp#qŒq r�rsÈs{t*u§uv†vˆwšw»wmx€xTyfy‡yRzez{s{”{|'|™|º|,}M}Á}s~NÂ㈀š€>�P�q�G‚‚¼‚ö‚mƒb„î„`…™…Ø…†‰†F‡އ ‡‡ˆ.ˆʈڈ䙚,šhšÞš–›Á› œeœàœ÷œ6�M�Œ�£�â�ù�8žOžŽž¥ž5ŸŸ¶ A¡÷¤5¥O¥i¥ƒ¥�¥¸¥Ò¥ì¥¦ ¦;¦©¦6§Fª¬ª¹ª «{«ü« ¬¬E°o°«°ɳ´<´v´.µºµÔµóµ ¶,¶F¶e¶¶š¶¸¶Ò¶í¶ ·%·@·^·x·—·±·зê·¸%¸?¸[¸—¸ª¹â¹ºXºíºb»õ»<¼˼[½ν¾B¾|¾ò¾ª¿â¿ÀXÀ²ÀßÀûÀ7ÁUÖ”ÖšÖ¶ÖÒÖîÖ3×9×hÛÌÛÜŠÜ8Ý®ÝBÞ‰Þ/â\âzâêâyãnäääxå¿åéBé`éÑé`êUëËë_ì¦ìÔñòò\òÓòÈóTô*öWöuö±ö(÷ùXù`ù4ú:úÄúËú ;Q0!=xäshô—*++—+&,},r-þ-K/e/T;‹;à;<‘<†=>T?@p@É@xB$C×D3E‡I°IëIbJWKãKUL‚L�LØLNMN5NPNlN¨NO—OÚOàO%P+PçPïP÷PÿPQQQQ'Q/Q7Q?QGQOQWQ_QgQoQwQQ‡Q�Q—QŸQ§Q¯Q¸QÀQÈQÐQØQàQèQðQøQRRRR!R)R1R9RARIRQRYRbRjRsR{R„R�R•RžR§R°R¹RÁRÊRÓRÜRåRíRöRÿRSSS"S+S4S=SESNSWS`SiSrSzS‚SŠS’SšS¢SªS²SºSÂSÊSÒSÛSäSìSõSþSTTTT&T.T6T>TFTNTWT_TgToTwTT‡T�T—TŸT§T¯T·TÀTÉTÑTÙTâTëTóTûTU UUU%U.U7U?UGUOUWU_UgUoUwUU‡U�U—UŸU§U°U¹UÁUÉUÑUÙUáUéUñUùUV VVV!V)V1V9VAVIVQVYVaViVqVyV�V‰V‘V™V¡V©V±V¹VÁVÉVÑVÙVáVêVóVüVW WWW'W0W9WBWKWSW\WeWnWwWWˆW‘WšW£W«W´W¼WÅWÍWÖWÞWçWïWøWX XXX$X,X5X>XGXOXXX`XiXqXyX�X‰X‘X™X¢XªX²XºXÂXÊXÒXÚXâXêXòXúXY YYY"Y*Y2Y:YBYJYRYZYbYjYrYzY‚YŠY’YšY¢YªY²YºYÂYÊYÒYÚYâYêYòYûYZ ZZZ$Z,Z4Z_F_N_V_^_g_o_x_€_ˆ_�_˜_ _¨_°_¸_À_È_Ð_Ø_à_è_ð_ø_```` `(`1`:`C`L`T`]`f`o`x`�`‰`’`›`¤`­`µ`¾`Ç`Ð`Ø`á`ê`ó`û`a aaa(a0a9aBaKaTa]aeanawa€aˆa�a˜a a¨a°a¸aÀaÈaÐaØaàaèaðaøabbbb b(b0b8b@bHbPbXb`bhbpbxb€bˆb�b˜b b¨b°b¸bÀbÈbÐbØbàbèbðbøbcccc c(c0c8c@cHcPcXc`chcpcxc€cˆc�c˜c c¨c°c¸cÀcÈcÐcØcàcècðcùcd ddd$d-d5d>dGdPdXdadjdsd{d„d�d–džd§d°d¹dÁdÊdÓdÜdädídödÿdeee"e+e4epGpOpWp_pgpppxp�pŠp“p›p¤p­p¶p¾pÇpÐpÙpápépñpùpq qqq#q,q5q=qFqOqXq`qiqrq{qƒqŒq•qžq§q¯q¸qÁqÊqÓqÛqãqëqóqûqr rrr#r+r3r;rCrKrSr[rcrkrsr{rƒr‹r“r›r£r«r³r»rÃrËrÓrÛrãrërórûrs sss#s+s3s;sCsKsSs[scsksss{sƒs‹s“s›s£s«s³s»sÃsËsÓsÛsãsësósûst ttt#t+t3t;tCtKtSt[tctktst{tƒt‹t“t›t£t«t³t»tÃtËtÓtÛtãtëtótûtu uuu%u-u6u?uGuOuWu_ugupuyu�uŠu“uœu¤u­u¶u¿uÇuÐuÙuâuêuóuüuv vvv(v0v9vBvKvTv\vdvlvtv|v„v�v•v�v¥v­vµv¾vÇvÏvØvávévñvùvw www#w+w4w=wEwNwWw_whwqwyw‚w‹w“wœw¥w­w¶w¿wÈwÐwØwàwèwðwùwx xxx#x+x3x;xDxLxUx^xgxoxwxx‡x�x—x x¨x°x¸xÀxÈxÑxÙxâxëxóxûxy yyy$y,y5y>yFyNyVy^yfynyvy~y†yŽy–yžy¦y®y¶y¾yÆyÎyÖyÞyæyîyöyþyzzzz&z.z6z>zGzOzWz_zgzozxz€z‰z‘zšz£z«z´z½zÆzÏz×zàzézòzûz{ {{{'{/{8{A{J{S{[{d{m{v{{‡{�{™{¢{«{³{»{Ã{Ë{Ó{Û{ã{ë{ó{û{| |||$|,|4|=|F|O|W|_|g|o|w||‡|�|—|Ÿ|§|°|¸|Á|Ê|Ó|Û|ã|ë|ó|û|} }}}#}+}3};}C}K}S}[}c}k}s}{}ƒ}‹}“}›}£}«}³}»}Ã}Ë}Ó}Û}ã}ë}ó}û}~ ~~~#~+~3~;~C~K~S~[~c~k~s~{~ƒ~‹~“~›~£~«~³~»~Ã~Ë~Ó~Û~ã~ì~ô~ý~'/7@HQYajrzƒŒ”�¥®¶¿ÇÐØáéòú€ €€€%€-€6€>€F€N€V€^€f€n€v€~€†€Ž€–€ž€§€¯€·€¿€Ç€Ï€×€߀ç€ï€÷€ÿ€����'�/�7�?�G�O�W�_�g�o�w�€�ˆ���˜�¡�©�±�¹�Á�É�Ñ�Ù�á�é�ñ�ù�‚ ‚‚‚!‚)‚1‚9‚A‚I‚Q‚Y‚a‚i‚q‚y‚�‚‰‚‘‚™‚¡‚©‚±‚¹‚Á‚ɂтڂã‚ë‚ó‚û‚ƒ ƒƒƒ%ƒ-ƒ5ƒ=ƒEƒMƒUƒ]ƒeƒmƒuƒ}ƒ…ƒ�ƒ•ƒ�ƒ¥ƒ­ƒµƒ½ƒŃ̓Õƒ݃åƒíƒõƒýƒ„ „„„%„-„5„=„E„M„U„]„e„m„u„}„…„�„•„�„¥„­„µ„½„ń̈́Մ݄å„í„õ„þ„…………(…0…8…@…H…Q…Y…b…j…s…|…„…Œ…”…œ…¤…¬…´…½…Å…Î…×…ß…ç…ï…÷…ÿ…††† †(†0†8†@†H†P†X†`†h†p†y†�†‰†‘†™†¡†©†±†¹†Á†ɆÒ†Ú†â†ê†ó†ü†‡ ‡‡‡$‡,‡4‡<‡D‡L‡T‡\‡d‡l‡t‡|‡„‡Œ‡”‡œ‡¤‡¬‡´‡¼‡ć̇Ô‡܇ä‡ì‡ô‡ü‡ˆ ˆˆˆ%ˆ.ˆ6ˆ?ˆGˆPˆYˆaˆjˆsˆ|ˆ…ˆ�ˆ–ˆŸˆ¨ˆ±ˆ¹ˆˆˈÔˆ݈åˆîˆ÷ˆ‰ ‰‰‰#‰,‰5‰=‰F‰O‰X‰a‰i‰r‰{‰„‰�‰–‰Ÿ‰§‰°‰¹‰‰ˉÔ‰݉å‰î‰÷‰Š ŠŠŠ#Š,Š5Š>ŠGŠOŠXŠaŠjŠsŠ|Š„Š�Š–ŠžŠ¦Š®Š¶Š¾ŠÆŠΊÖŠÞŠæŠîŠöŠþŠ‹‹‹‹'‹/‹7‹?‹G‹O‹X‹`‹h‹p‹x‹€‹ˆ‹�‹™‹¡‹©‹±‹¹‹Á‹É‹Ñ‹Ù‹á‹é‹ñ‹ù‹Œ ŒŒŒ!Œ)Œ1Œ9ŒAŒIŒQŒYŒaŒjŒrŒzŒ‚ŒŠŒ’ŒšŒ¢ŒªŒ²ŒºŒÂŒÊŒÒŒÚŒâŒêŒóŒüŒ� ���$�,�4�<�D�L�T�\�d�l�t�|�„�Œ�•�ž�¦�¯�¸�À�É�Ò�Ú�â�ê�ò�ú�Ž ŽŽŽ"Ž*Ž2Ž:ŽBŽJŽRŽZŽbŽjŽrŽzŽ‚ŽŠŽ’ŽšŽ¢ŽªŽ²ŽºŽÂŽÊŽÒŽÚŽâŽêŽòŽûŽ� ���$�,�4�<�D�L�T�\�d�l�t�|�„�Œ�”�œ�¤�¬�´�½�Å�Í�Õ�Ý�å�í�õ�ý�� ���%�-�5�=�E�M�U�]�e�n�v�~�‡���˜� �¨�°�¸�À�È�Ð�Ø�à�è�ð�ø�‘ ‘‘‘!‘)‘2‘;‘C‘L‘U‘^‘f‘o‘x‘€‘‰‘’‘›‘¤‘­‘µ‘½‘ő͑Ցޑç‘ï‘ø‘’ ’’’#’+’3’;’C’K’S’[’c’k’s’|’„’Œ’”’œ’¤’¬’´’¼’Ä’Ì’Ô’Ü’ä’ì’ô’ü’“ “““$“,“4“<“D“L“T“\“d“l“t“|“…“Ž“–“ž“¦“®“¶“¾“Æ“ΓÖ“Þ“æ“î“ö“þ“””””&”.”6”>”F”N”V”^”f”n”v”~”†”Ž”–”ž”¦”®”¶”¾”Æ”ΔÖ”Þ”æ”î”ö”þ”••••&•.•6•>•G•P•X•a•j•s•|•…•Ž•—• •©•±•º•Õ˕ԕݕå•í•ö•ÿ•––– –)–1–:–C–K–S–\–e–m–u–}–†–�–—– –©–²–º––Ë–Ô–Ü–ä–ì–õ–þ–————'—/—7—?—G—O—W—_—g—o—w——‡—�———Ÿ—§—¯—·—¿—Ç—Ï—×—ß—ç—ï—÷—ÿ—˜˜˜˜'˜0˜9˜A˜I˜Q˜Y˜a˜i˜q˜y˜�˜‰˜‘˜™˜¢˜ª˜³˜»˜Ę̘Õ˜ݘæ˜î˜÷˜ÿ˜™™™!™*™2™;™C™L™T™]™e™n™v™™‡™�™˜™¡™©™²™º™Ù˙ԙܙå™í™ö™þ™ššš š(š0š8š@šIšRšZšbšjšršzš‚šŠš’ššš¢šªš²šºššÊšÒšÚšâšêšòšúš› ›››$›,›4›<›D›M›V›^›f›n›v›~›†›Ž›–›ž›¦›®›¶›¾›Æ›ΛÖ›Þ›æ›î›ö›þ›œœœœ&œ.œ6œ>œFœNœVœ^œfœnœvœ~œ†œŽœ–œžœ¦œ®œ¶œ¾œÆœΜ֜ޜæœîœöœþœ����&�.�6�>�F�N�V�^�f�n�v�~�†�Ž�–�ž�¦�®�¶�¾�Æ�Î�Ö�Þ�æ�î�ö�þ�žžžž&ž.ž6ž>žFžNžVž^žfžnžvžž‡ž�ž˜ž ž¨ž°ž¹žÁžÊžÒžÚžâžêžòžúžŸ ŸŸŸ"Ÿ*Ÿ2Ÿ:ŸBŸJŸRŸZŸbŸjŸrŸzŸ‚ŸŠŸ’ŸšŸ¢ŸªŸ²ŸºŸŸÊŸÒŸÚŸâŸêŸòŸúŸ     " * 2 : B J R Z b j r z ‚ Š ’ š ¢ ª ² º  Ê Ò Ú â ê ò ú ¡ ¡¡¡"¡*¡2¡:¡B¡J¡R¡Z¡b¡j¡r¡z¡‚¡Š¡•¡ ¡¨¡°¡¸¡À¡È¡СØ¡à¡è¡ð¡ø¡¢¢¢¢&¢.¢6¢>¢F¢N¢V¢^¢f¢n¢v¢~¢†¢Ž¢–¢ž¢¦¢±¢¼¢Ä¢Ì¢Ô¢Ü¢ä¢ì¢ô¢ü¢£ £££$£/£:£B£J£R£Z£b£j£r£z£‚£Š£’£š£¢£ª£²£º££Ê£Ò£Ú£â£ê£ò£ú£¤ ¤¤¤"¤*¤2¤:¤B¤J¤R¤Z¤b¤j¤r¤z¤‚¤Ф’¤š¤¢¤©¤°¤·¤¿¤ǤϤפߤç¤ï¤÷¤ÿ¤¥¥¥¥'¥/¥8¥@¥I¥P¥W¥_¥f¥m¥u¥}¥…¥�¥”¥›¥£¥ª¥±¥¹¥Á¥É¥Ñ¥Ù¥á¥é¥ñ¥ù¥¦ ¦¦¦"¦*¦2¦:¦B¦J¦R¦Z¦b¦j¦r¦z¦‚¦Ц’¦š¦¢¦ª¦²¦º¦¦ʦÒ¦Ú¦â¦ê¦ò¦ú¦§ §§§§%§,§3§:§A§H§P§X§`§h§p§x§€§ˆ§�§˜§ §¨§°§¸§À§ǧΧÕ§ݧå§í§ô§ü§¨ ¨¨¨$¨,¨4¨<¨D¨K¨S¨[¨c¨k¨s¨{¨ƒ¨‹¨“¨›¨£¨«¨³¨»¨è˨Ó¨Û¨ã¨ë¨ó¨û¨© ©©©%©-©5©=©E©M©U©]©e©m©u©}©†©Ž©–©ž©¦©®©¶©¾©Æ©ΩÖ©Þ©ç©ð©ø©ª ªªª$ª,ª4ª<ªDªLªTª\ªdªlªtª|ª„ªŒª”ªœª¤ª¬ª´ª»ªê˪ÓªÛªãªëªóªûª« «««#«+«3«;«D«M«T«[«b«i«p«w««‡«�«—«Ÿ«§«°«¹«Á«É«Ñ«Ù«â«ê«ó«ú«¬¬¬¬¬%¬,¬3¬;¬C¬J¬Q¬X¬`¬g¬n¬u¬|¬ƒ¬‹¬“¬›¬£¬«¬³¬»¬¬ɬЬج߬æ¬í¬õ¬ý¬­ ­­­%­-­5­<­C­J­R­Z­c­l­s­z­�­‰­‘­™­¡­¨­¯­¶­¾­Å­Ì­Ó­Û­ã­ê­ñ­ø­®®®®®$®+®2®:®A®H®O®W®^®e®l®t®{®‚®‰®‘®š®£®ª®±®¸®À®È®ЮØ®à®ç®ï®÷®ÿ®¯¯¯¯'¯/¯7¯?¯G¯N¯U¯]¯e¯m¯u¯}¯…¯!óƒþœ -¡ ±¡ D§ G° ó· 2¿ Ñ¿ ¡À ´Á 9à �à ²Ã AÄ aÅ ´Æ øÆ 5Ê æÊ ÔÌ ÞÎ Ï jÏ ¾Ï Ð ãÐ ]Ñ Ò —Ò ÿÒ WÓ ÆÓ üÓ ÝÖ ŸÙ ÐÙ ^ß ßá …ã äè Óì Dï Ûð ÷ ·÷ Oø Kù ¿ú í ­ Û � · U · Ö! #" R( ¨( ‰9 WF \G “G {H ›I ûI _J K rK äK �L M gM ÚM :N –N O yO ‰O 8P óP 1Q dQ ´Q ÙQ àS NW ’X öX QY zY ¶Y ÒY îY Z &Z eZ ¼Z [ l[ Æ[ '\ G\ ö\ ] `] |] ˜] ´] Ð] ì] #^ ^^ ¤^ ê^ 3_ ‚_ Ë_ ô_ £` Ë` a a 9a pa «a ða 9b ‡b Ðb c °c Øc d Bd ”d ád &e „e Ìe {f £f Ïf g ù> RJ ×N O �P âS TV UX 9Y ú[ S\ ÿ] ‘^ ¶^ Í^ Þ^ ._ f_ ’_ '` à` Ta Ìa @b Ãb Fc Åc Id ®d e We f yf àf Eg ©g h mh Ìh 1i £i j •j "k §k l `l Öl Rm Ùm Mn ¿n (o ‘o ûo }p ÿp sq ¼q Óq äq $r Ár s ;s t sƒ Ž `š ñ  Ù° )½ äÌ v× Nß µñ zü ìü âý Wþ Øþ îÿ S¶t±¹Ç O ! ˆ ê «‚~³šK{ 1Ø-  §F]Ó[©ìºØ„ © ê .!q!¢!F"d"#5#p#©#Ó#æ#’$Ê$Q%l%‡%¢%½%Ø%ò%*&n&Ä&'m'Å'(u(Í(*n+Ö,ÿ.´001M1š1Ë1Þ1Š2£6Í8<P<ã>@@SDÑD6I�INN™N]T²TZU#YüY�ZÐ[ª\A^ˆ^É^_†_›_(ad³dMe�fNghÕhÏiîi�jUk#lXl~sGt6uÀvèv(wyWz_|Æ|¡}‰~|€Ø€É�(ƒ¤ƒ•„…æ…Ô†ç‡dˆÀˆƉCŠŸŠƒ‹â‹×–¢™-›Jœ�œßœ+�^�ž žÌžŸŸÄŸêŸ, N † ® Á m¡“¡Õ¡ô¡.¢`¢s¢£E£‡£§£é£§¥¦n¦Ч¨\¨ª«}«Õ«*¬�¬ý¬[­»­%®•®O¯ð¯R°°° ±l±à±A²´²³¨³:´˜´ö´Nµ­µT¶³¶»è»A¼§¼¥¿Í²ÍÑîÓYÔVÞ�ÞNà•àaä±ä.çyç+ívíð;- � Ó ¼ Dêã!±'t(`-…0Õ6;·>•?ùK^O9S–Z¤dýd?k€lsvÅzäz;{”{¶{9|¦| }m}Ä}~v~K« €n€9�y�'‚âƒ,„q„„'…b…Æ…ö…2†¤†O‡™‡Þ‡/ˆ”ˆψ3‰c‰ž‰BŠŒŠÆŠ‹]‹˜‹<Œ†ŒËŒ�‡�Í�î�»Ž’¤’Ã’¦“ü˜žˆ¡úªóº}ÃGȱÏWØ(ݶáæ%èïêí*ðò(óôõ-ö÷È÷¤øˆùIúEû!ü ýæý þUþ¡þ2ÿ�ÿxR:-‡äFj $ Y ® ý ;B’Ü+j¦!+#–#¶#Y$ù$�%å%C&˜&ò&(Ô(Œ)_*É*m,Ð,æ-].¸.3Ö4<5˜56g6Â6¢7’8€9ƒ:�;Ã< =P={=²=Õ=¹>=?~?@a@É@%A’AõASB9C§CöCÎD;EFG*HfH3I+JKL MÿMjN‘NYOÀOP‹PìPEQ©QRdRPSAT0U4V?WwW XîXYäYKZ¨Z[w[Ñ[²\£]’^–_¡`Ù`šaþaâbÒcÄdûdÃe*f‡fõfVg°g‘h‚iqjuk€l¸lymÝmÁn±o£pÙp¡qrerÓr4sŽsot`uOvSw^xÓx´{q|Ú|:}U}~€�;�|�Ú�5‚Œ‚ ƒjƒ”ƒQ„º„Ñ…ö…¶†£‡¢ˆ‰/‰p‰Ή)ЀЋu‹Ÿ‹ŒhŒ�Ú�1ŽZŽÃ޼�)�‹�¦�ç�4‘Œ‘þ‘Y’°’Ú’“™“”-•Œ•«•6–6—�—t˜Û˜²™¡š›á›éœY�n�±�ž[žÒž2Ÿ‹ŸµŸúŸt °¡¢h¢Á¢ë¢y£f¤:¥¦ã¦º§¨¨©/©r©Ö©<ªW«}«ã«Ò¬­K­›­õ­l®Ì®%¯O¯•¯ù¯"±�±Ú±3²]²Ʋ£³ ´}Ö Ö׿Û&åáåèæçTç³çÖçsèMé"êTê¿ë‚ì¹íøîï£ñGõzõgø¿ú¢ü=¼(+² h y–µ,!{!Å!B%‘%”(ì(3,�,71‘1¡1:p@ß@.A}AÌA´B&CŠC~D’EºFBG”GÕG'H’HÏHIbIÍIâIÜKíN‰OhPšPÈPQxQøQßRKS¯SóSàU2VˆV¦VoWYê_6c�cg~h•i%l~o*sìt`{Ó}Z�$ $¢B¥ ¥¦zª’³—´ñ¶ ¸Ô¹òº‡¼š½—¿ò¿Ã³Ã”Ö Þ1å�îBóœùÿÃÿn9ŵ^ðG¢/o†Tƒ 1´ ŒÁ¥'b¡ñí!kº� n Ì /!›! "\"#˜#$­$ %�%&}&ú&q'Ô'_(Ö(R)µ) *�*æ*E+±+ ,p,Í,=-¥- .c./†/ë/F0œ0»0ø0I1u1:2¦23ƒ3ö3c4Ñ4Q5»5 6‹6ï67q789c9¹9ü9A:…:Ç: ;O;£;Ë;o<�<9=“>×>?q?Ö?>@¡@A5AáAB]B‚BÞB6CàCEDŸDøD&EÕE F>FÚFG¯GÒHçH÷Hd§deMešeôeqf�f?ggghxh£hRi iAzõ|,€J�n‚kƒ˃^„V…s…†D†‡,‡Ú‡€ˆ;‰™‰,ŠÍŠ�‹yŒ“�ð�}‘^’Úš)›Ä m¡–¡Ö¡î¡�¢Ó¢£›£Σ¤Q¤„¤·¤¥:¥m¥½¥÷¥7¦c¦¥¦ú¦w§Û§ú§R¨j¨»¨ ©„©è©SªóªŽ«è«—¬­c­·­×­†®¼®ï®>¯q¯¤¯<°›°‘¸á¾ ÑLJÊÏ$ÒÊÛÄßHèŸèÖì‘õ�ûÿ”ÿ ÷‰u”ž6ˆ‹#²+�-Ÿ-N.Œ.Ç.å./Æ/ 0®0Ú0ô01Î1 2S2è2H3’3Å3í34ØG�HšH§HñHOKdK5SŸSGZö]X^kdmiÖiglgoHuÉyñ|o�æ„-†o†�†ä†a‡Á‡ ˆ\ˆ¾ˆ‰u‰؉/ŠZФŠíŠ=‹ƒ‹Þ‹ŒÂŒâŒ‘�¿�(ŽMŽ–Ž+�Š�ð�:�m�•�½�ð�Œ‘e“”7”‰•è•–2–å–¥¦†§“§ܧ,¬­­[­}­Å­ê­+®¯߯=°—°ذ°³�µ·¿¡À ÊèÊ"ÌÍDÎ(ÏaÔCÕ>Ù ÚÈãÉä.åæ}æiçïê'ë@ë^ë�ë¶ëí¹îïàï÷ïHðŽð¹ð\ñªñÍñlò¶ò“óªóûó öCö\özö¬öÒöS÷ øTø1ùHù™ùßù ú­úúúû¼ûüãüúüKýuÿ¯ÿÈÿæÿKnïI<S¤Nyr‰Ú)”²ÁÞ3@J’ßìÅCPe¼KXøWd{—³æHU‚¥²ê(^k¿džáîŽÙXp ô!{#j$>&]& 'ß'ô(ƒ)ü)¢*Ÿ+‘,Ù-Ç.±/±0€1I2á24ä4©5~6;7 8©8q9:á:<= A-AÜAB0BBžBiC8F@HµLAM?OÌOhPÕP“K“d“ƒ“¡“À“ô“1”>”m”ŔҔ•>•K•y•¡•®•è•2–x–Ç–Ô–x—Ï—|˜ê˜S™þ™ºšv›º›ð›ý› œ�u�‚�™�¾�Ü�žkžxžÑžGŸþŸi  ¡¡i¡¡¢'¢Ë¢Ë«,¬t¬„¬­p­Ù­‰®ò®J¯�¯°°³°ð×°X±ñ,²‰²³g³º³C´¤´Ø´ç´hµÓµ<¶«¶·e·‚·ã·¸`¸t¸õ¸`¹ɹ8ºŸºòº»p»¤»í»¼‚¼í¼V½Ž,¾¾þ¾_¿“¿¢¿#ÀŽÀ÷ÀkÁÒÁ%¤ÂÃ8Ã�ÕÃÄ�ÄêÄXÅÊÅ"Æ~Æ`ÇôÏ-ÐvÐÄÐуÔèÙ!ÚjÚ·Ý~â6ãÝãžèÒèòéfêîê`ë¼ëìiì´ì*í²í$î‚î¥î ï>ïˆïýï/ðŸðÙð€ø[ùú0úÜúû”ûü;ü üeý¶ÿK ÄŒp¦ÿ9ë%QfÁú s ¿ ë  [ § Ê  I Š © Ó  * T Œ « Õ  , V Ž ¬ Duˆ4Z„бPAQ®QòQR/ST.V„V.XˆZD[ñ[�\œ\ö\]k]^>^�^û^_Å_ò_z`¹`a\aÖfÓij�l§o×oæoŸpŒrþtyž{’€‚,„ˆ ‹J’–¬–@—Ηf˜í˜ˆ™š«š1›´›=œ¤œ�ˆ�°�ð�š Õ õ ¡¡Ú¡ì¡B¢‡¢Í¢£c£²£ÿ£D¤�¤Þ¤¥-¥Ù¥D¦Ÿ¦ý¦°§Õ§¨}¨¢¨?©­©ªrªǪ,«]«�«Û«[¬•¬Ŭk­�­Û­=®¤®ß®�¯ã¯°S°µ°±W±õ±V²¿²³‚³ã³L´¨´bµ¶϶/·J·•·°·ù·¸t¸º¸ò¸J¹¢¹ ºPº‘º"»�»ø»-¼U¼‘¼£¼½y½ß½ ¾y¾ß¾E¿¥ÂÃ!ÃÍÃòÃJÄ—ÄëÄ?Å•ÅëÅ@Æ–ÆvÇÞÇ6È}È É(ÉiÉ¥ÉúÉOÊmÊË>ËŽËãË8ÌŽÌúÌaÍ«ÍBÎÑÎïΛÏÀÏ&ÐiпÐ(ÑhÑÃÑÒMÒ¶ÒDÓÓÓÔ_Ô‰ÔªÔ!Õ}ÕÛÕ:Ö›ÖüÖ\×À×+ØŠØ ÙkÙÊÙ,ÚxÚÙÚ ÛÃÛ+ÜmÜÝ/ÝQÝÊÝ+Þ‹ÞëÞLß­ß%à•àõà@á�áúápâ ããâã:äšäòä˜å,æŒæîæHçËçvèàè>éºé#ê~êÙê4ë�ëêëEì ìûìVí±í îgî�ïƒð�ð^ñRò_ò/ó!ô.ôkôÏôðô/õ`õÖõöböƒöØö÷X÷‰÷ øOø•øÛøüø\ùœùÜùúMúÖúûbû¨ûîûüzüºüúü:ýzý«ý!þgþ¬þÎþ#ÿcÿ£ÿÕÿU›á'H¨è(h™ý-P„š÷cÔ4Ÿµ†ÔŽá“å©-F69C9#<d<M?ÙAŠDšFüGäJ=MÝO›QWS~TÚV$Z_Z[l[£[Û[\�\3]^3_`(`×`a.a�a©ab-bYb¨bÐbc5cycšcd,d•d½dOe{fhfiƒiÈlm.pip™qtrKs)t°tÃudv˜vÎyjz{x}¢~Tg‚ƒË„†P†y†(‡s‡±‡ˆaˆ©ˆ ‰.‰¿‹ò�ŽuŽ”ŽŸ�C�ð‘“I”›•Еä•“–I—�—è—P˜¤˜ù˜™k™Ä™"šwšËš$›ƒ›ß›mœœàœŒ�¿�ï�>ž§žážòžŸŸ,ŸuŸÇŸ X � H¢|¢˜¢³¢Ï¢æ¢;£[£¤/¤m¤ ¬=¬k¬‚¬׬÷¬£­Þ­&®D®a®®œ®¹®Ô®ñ®¯2¯æ¯ÑTÑqÑŽÑ«ÑÈÑåÑÒÒ:ÒVÒlÒÂÒöÒ1ÓÝÓÔ´Ô¼×ï× Ø"ØxؘØEÙqÙÆÙäÙÚ.Ú„Ú¦Ú»Ú/ÛOÛdÛËÛ÷ÛLÜjÜŸÜ´Ü Ý,ÝEݚݸÝíÝÞXÞzÞ“ÞèÞß;ßPߦßÈßâßà)à×àØãäävä–äDåqå÷å2æOælæ§æÃæßæüæç4çOçlçˆç¥çÀçÝçôçKèkèéDéué‘é¨éUê�ê°êÆêsë^ø™øµøÑøìøù$ù@ùVù¬ùÌùyú…þÌþêþÿ&ÿDÿbÿ�ÿŸÿ½ÿÚÿ÷ÿ,ƒ£Q²Ïå<\ T–´å�ó5S„<vÎú5Sq­Êá8X > ƒ ¡ À Þ ý  : X w – µ Ì #CñWæLcºÚˆò!+"I"f"ƒ" "µ" #,#Ú#$w$—$¬$%(®(Å();)è)*‚*¾*Ú*ö*+-+H+d+‚+¾+Ú+ñ+G,g,-;1ú1K2ß2$3·3 4"4x4˜4E5F9œ9º9Ð9&:F:ó:¢]ø]^K^`^¶^Ø^í^š_Â_``�`­`$apa‚a—aþa&b�b·bcKczc�cæcd³dÛdOeoe„eëeo4oPogopúrEsjs�s tÎtdw—wµwÌwzx¢xùxÊ€û€�i�‰�7‚¤‡Ó‡ê‡@ˆ`ˆ ‰:‰†‰¢‰¾‰݉Š5ŠLŠ¢ŠŠo‹›‹õ‹0ŒKŒiŒ¤Œ¿ŒÖŒƒ�¯�Ž#Ž9ŽæŽ�B�X��§¶ضô¶ ·¸·å·¸2¸I¸ö¸#¹{¹š¹±¹º(ºÖº»:»X»v»�»ä»¼²¼¾D¾b¾½¾,¿è¿ÌÁÂ0ÂNÂlÂ�ÂUÃèÄ*ÅHÅxÅ0Æ ÈOÈmÈ�ÈUÉãÐÑ<ÑZÑxÑ–Ñ´ÑËÑyÒ¡ÒøÒÖoÖ�Ö«ÖÉÖèÖ×&×E×c×�נ׿×Ý×ûר7ØUØlØÃØãؑٹÙ÷Ù¢è×èõèé+é‚é¢éPê}ê¯êÊêæêýêªëçëì.ìJìpì£ìììíUíõí(îiî‡î¥îÃîáîïï<ïZïqïðNðð–ðDñsñ¦ñÄñÛñ‰ò¸òñòó-óLójó�ó/ô[ô³ôÑôèô•õÁõö7öNöûö'÷÷�÷´÷ ø*ø×øù[ùzù‘ù>újúÂúõú û¹ûåû=üpü‡üÝüýüªýÖý.þLþcþÿ<ÿ”ÿÇÿÞÿ‹·BY¯Ï|© 7åjžµc�è3ŠªX…ÝüÁîD  • C p È ç þ ¬ Ù 1 e | * W ¯ ã ú QqL¤ÃÚˆµ F\ DaxÎî›Ã�¾íZz'r+¥+Ã+Ú+1,Q,ÿ, /m/’/·/Õ/0Ð0Â23-3K3i3§3d4Ô78%8<8“8³8a9�9Ð9î9 :):G:e:|:Ó:ó:¡;Ð;<!<7<Ž<®<\=‰=>5>R>n>‹>§>Ä>à>ü>?5?Q?m?Š?¦?Â?Þ?û?@4@P@m@™@¶@Ò@é@?A_A B4B¨BÈBÝBDCr`±`Í`é`a$aAa]aya—a®ab$bÑbùb7c”cÍcécd"d?d\dsdÉdéd–e¾eüe¦g�hºhkIkŸqËqrrmr�r¥rSs|<|Z|x|–|´|Ó|ê|A}a}~=~o~Œ~Â~×~.Qf€Q€Ž€¬€Ê€î€¡�Ö� ‚'‚>‚•‚µ‚cƒ’ƒŃäƒûƒR„r„ …O…‚…Ÿ…µ… †,†Ú†‰®‰ʼnŠ;ŠèŠ‹Ï‹ Œ'ŒFŒ‚ŒžŒ½ŒùŒ�2�N�i�…�¡�¼�Ø�ô�Ž,Ž[Ž‡ŽžŽôŽ�Á�í��:�O�¥�Ø�‘1‘œ‘¹‘Ý‘�’Ä’÷’“,“ƒ“£“á“”L”k”Ù”ý”°•å•–5–k–€–×–ú–—E—`—{—’—è—˜µ˜â˜™0™L™c™¹™Ù™†š®šìš›;›V›q›ˆ›Þ›þ›«œÖœ�!�:�P�¦�Æ�sž›žÙžòžfŸ†Ÿ›Ÿ / b } ™ ° ¡&¡Ó¡û¡9¢VÁ®ÁÌÁãÁ9Â`­ÂËÂéÂÃ%ÃCÃaÃÛ÷ÃÓÃïà Ä+ÄIÄ_Ä�ÄÅÉüÊR˼ÍöÍÎyγÎÎÎ Ñ¡ÑÒÓûÓ%ÖµÖ ×ÛoÛÆÛÜÜ{Þ]à‰à7áyá�áçáâ|âœâ±âãåŽå¥åüåæÊæòægç‡çœçè’ê9ëPë§ëÇëuì�ìí2íGí¯í³îïiïÀïöï ðbð…ðšðñ/ñ§ñâñôñ òqòÅóôôpô#õ‘öÂöÞöõöK÷k÷ø@ø~ø0ýaý�ý§ýýýþÊþd • ± È  > ë Ê<a½zRpެê§c˜¶ÔëBb?r�§þÌû1Ol‚Ùù§Ö$`}›¹×îEe>w“°Íé  r — Æ Ý 3!X!‰!¥!¼!"9"l"Š"¡"ø"#Æ#õ#($F$\$³$Ó$�%°%å%&&1&G&ž&¾&l'›'Î'á'ü'(i(‰(7)_)Ô)î)***®*!+]+z+™+Õ+ò+,M,j, ,µ, -/-D-ò-.�.¯.Ä.,/‰5á5ÿ556J6 6Â6×6K7k7€7ç78x8 8959Ž9É9å9:>:Z:�:¤:ú:;1;¥;Å;Ú;A<i<Ò<ú<b=µA B+B=BpB…BÛBôB C¥DàDE(EÛEóF2GPGmG‹G¯GbHgI¤IÂIàIJ¶JúJ6KTKxK+LsLËLêLMXMxM&NTN…N»NÐN'OJO_O P5PsPŒPQ!Q6QžQÌQ$RCRVR‰RžRõRS%S:SxS‘ST T4TIT±TîT)UNUqU$VgV¢VÀVãV–WTf‡f£fÀf×f-gýh8iWiºijIjþj¼Œ�3�J�¡�Á�oŽ—ŽÕŽõŽ-�L�k�‰�Ÿ�M�u�³�k’œ’³’ “*“Ø“”b”€”ž”¼”Ú”÷”•3•Q•o•�•«••–9–ç–e˜Ÿ˜™n™¡™Všg›¦›Ë›é›œqœ$�qžÅžážŸ+Ÿ�Ÿ£ŸËŸ  a ‡ â ¡?¡ó¡.¢©¢Ü¢£r£³£¤W¤s¤’¤Ô¤ð¤2¥Z¥·¥ì¥¦Ȧ§~§±§Ù§G¨—ÃÏÃëÃÄjÄ�ÄOųÇÈ>ÈTȇȿÈaÉ˃˪ËÀËóË#ÌÅÌïÎSÏzÏ�ÏÃÏóÏ•ÐØØsÚ�Ú¯Ú!ÛKÛ]ÛQÜ{Ü�ÜpݚݬÝ]Þ‡Þ™Þ;ßeßwß}à©à»àá;áMáÔáþáâhâ’â¤âÒãþãä,åXåjåüå&æ8æç2çDç:èdèvèeé�é¡éhê’ê¤ê�ë¹ëËëþëìiì‹ì ìMíuíéí îî…îÔïSòˆò�òóòó*óhó�óõóô*ô‘ôTõ…õœõóõöÁöóù$ú;ú’ú²ú`ûÏý%þDþZþ±þÑþÿ®ÿåÿZŽ'[“÷'MyH§¾3ß b€’¦ûÇòHf|Ññ�É% C \ r È è • Á # A Z s ‰ ß ÿ ¬ Ö . € Õ õ ¡ËHz�å±G� 9O¥År r­Éç" > \ — ³ Ñ  !(!F!�!�!»!ö!"0"k"‡"ž"õ"#Ã#V'®'Ê'((k(�(¢()6)­)è)ú)*v*ž*+/+—+û8Q9o9¤9¹9:1:F:ó:;Y;r;æ;<}<¸<Ê<ß<F=n=×=ÿ=g>¡?Ð?æ?<@\@ A1A¥AÅAÚAABnB�B´B C*C×C¼GH1HgH|HÓHöH IIIbI×I÷IoJªJ¼JÑJ9KaKËKóK\LöNNOkO¡O¶O P0PEPƒPœPQ1Q©QäQöQ RsR›RS-S–S¾STGTsT¡TUûUVVÓVTW×WZXY­YÍY\Z|ZïZ[L[p[%\d\“\®\]R]x]×]0^_^z^Þ^7_]_¼_ì_2`W`‡`Å`ê`aXa}a­aëab@b~b£bcFc]cdAd�d¦dÖd+e_e›e×efQflfÂf^g¶gÕgìgChchi9i®iÎiãiKjxjÐjñjk_kk-lnl¡l¾làlm:m„m·mîm�n»noDopožopøpQqÐqQrÔrWs tªtÊtYuyuìu vIvmv"waw�w«wxOxuxÔx-y\ywyÛy4zZz¹zéz/{T{„{Â{ç{|U|z|ª|è| }=}{} }~C~Z~>~£Ó(€\€�€Ì€�F�a�·�S‚«‚Ê‚á‚8ƒXƒ„.„£„ÄØ„@…m…Å…æ…ý…T†t†"‡c‡–‡³‡Õ‡û‡'ˆqˆ¤ˆÓˆt‰ï™ š<šSš©šÉšv›¢›Ñ›ã›÷›Mœqœíœ�*�C�n�€�™�Ä�Ö�ï�ž,žEžpž‚ž›žÆžØž Ÿ ŸvŸ˜Ÿ­ŸZ ‚ ö ¡+¡’¡¥E¥_¥y¥“¥­¥È¥â¥ü¥¦0¦K¦¦”¦ê¦ §!§Χqª´ªÁª«*«‰«¾«¬¬µ¬P°°–°C±Ô³,´J´a´µ;µȵäµ¶¶:¶V¶s¶�¶ª¶ƶâ¶ý¶·5·P·l·ˆ·¥·Á·Þ·ú·¸3¸O¸k¸‚¸/¹�¹¶¹º,ºCº™º¹º-»M»Ä»ÿ»¼&¼�¼µ¼½F½®½Ú½2¾P¾g¾½¾ݾŠ¿¶¿À,ÀCÀ™À¾ÀïÀ Á"ÁxÁnÖªÖÆÖâÖþÖ ×{×sÛÛÛ+Ü`ÜuÜÌÜïÜÝyÝ™ÝÞLÞ^ÞsÞÛÞ:âmâ‹âÀâÕâ,ãOãdãä:ä¯äÏäGå‚å”å©åæ éSéqé§é¼éê6êKêùê!ë–ë¶ë.ìiì{ì�ìøìßñò0òGòžò¾òló”ó ô)ô>ô¦ô5öhö†öœöóö÷Á÷7ùqù!ú}ú°úeû Gr&P/i„ºÏ&I^ 4©ÉÞF¢* +7+m+‚+Ù+ü+,O,h,->-³-Ó-è-P.Y/‡/_;¹;î;<\<|<*=R=Ç=ç=ü=d>_?@@Ø@…B3CäDBE”I¿IÖI-JMJûJ#K˜K¸KÍK5LaL‘L¬LÃLM9MæMNEN`N|N“NéNOÄOîOPÄPøœ '¡ ©¡ <§ ?° ë· *¿ Å¿ •À ¨Á -à ƒÃ ¬Ã 9Ä UÅ ›Æ òÆ )Ê ÙÊ ÇÌ ÑÎ þÎ bÏ ¶Ï Ð ÖÐ 4Ñ Ò ŠÒ òÒ .Ó ¹Ó öÓ ÐÖ …Ù ÊÙ Vß ×á }ã Üè Ëì 7ï Îð ÷ ª÷ Bø >ù ²ú à   Î ƒ ± 0 ± ±! " -( ¢( |9 JF OG �G nH ŽI õI RJ ÿJ eK ×K �L ôL ZM ÍM -N ‰N üN sO ƒO *P èP Q [Q ¦Q ÓQ ÒS @W „X èX CY tY ­Y ÉY åY Z Z \Z ³Z [ ^[ ¸[ \ A\ è\ ] W] s] �] «] Ç] ã] ^ U^ ›^ á^ *_ y_ Â_ î_ •` Å` ø` a 0a ga ¢a ça 0b ~b Çb ûb ¢c Òc üc 9d ‹d Ød e ve Æe mf �f Æf g 6g ‚g Èg h Vh žh åh .i hi j :j áj Œk Kl ¤l m vm ôm n Sn ªn Ën lo Ëo p \p }p ×p $q …q *r ˜r ìr Gs ²s t �� ¤� ´� ‡“ É• – ˜ ß™ {Ÿ •¢ У ž© ‰­ ± ¬± ² j² ¿² ¶ .¶ àÈ &É uÉ Ý _Ý ®Ý mí »í œ÷ ì÷ Ö  À ¾ ô& |0 8 \< ¥< ‚> Ë> DJ ÉN O P ÔS FV GX +Y ì[ %\ ñ] ƒ^ °^ Ç^ Ø^ _ `_ r_ ` Ò` Fa ža 2b µb c ¨c Cd ‘d e Ie f kf Òf g ›g àg ?h žh #i •i j ‡j k ™k l @l Íl Dm Ëm ?n ±n o ƒo ío op ñp eq ¶q Íq Þq r ³r s 5s ûs jƒ Ž Wš è  Ð° ½ ÛÌ m× Eß ¬ñ qü Þü Ôý Iþ Êþ àÿ Eˆf£ «¹ A  z ¼ ¢ta­Œ=mý+Ïðœ@WÍR ã­Òw £ á %!h!œ!9"^"#/#g# #Í#à#…$Ä$H%c%~%™%´%Ï%é%!&e&·& '`'¸'(h(À(ö)a+É,ò.§0#1G1�1Å1Ø1}2�6À8<J<Ú>3@FDËD I{I%N“N4T¬TTUYîY‰ZÂ[œ\3^[^À^ _X_•_ad¥d?esf@gùgÇhÁièixjGklRlps9t(u²vâvwyMz1|˜|—}~N€ª€¾�ƒvƒŠ„ׄÛ…Ɇ܇6ˆ’ˆ»‰ŠqŠx‹Ü‹Ñ–•™ ›=œ‡œÖœ"�X�õ�ž¿žÿžŸ·ŸäŸ# H } ¨ » `¡�¡Ì¡î¡%¢Z¢m¢£?£~£¡£à£�¥å¥@¦€§Ó§.¨ö©«O«Ë«ü«a¬ó¬-­�­®g®E¯æ¯H°‚°±b±Ö±²ª²å²z³ ´Ž´È´DµµJ¶…¶»Õ»;¼¡¼˜¿bͬÍÑåÓSÔ,Þ—Þ$à�à7ä«äçsçípíÆ5 { Í ® 6ÜÕ!£'n(R-w0Ç6ò:©>�?ëKPO+SˆZ–dÏd1krlev·zÞz-{f{°{+|˜|û|_}¶}~H~=�ÿ`€+�Y�‚Ôƒ „h„´„ù„Y…˜…Ö…†–†A‡y‡Õ‡!ˆfˆƈ‰C‰~‰4ŠlнР‹=‹x‹.ŒfŒÂŒ�y�­�è�­Žú‘–’½’�“󘞡ñªêºtÃ>ȨÏNØÝ­á æèæêí!ð÷ñóôõôöùöº÷–øzù;ú7ûüþüØýþ'þ›þÿ_ÿjD,yÖdý S € Ï -%Œ®ý\˜!!#h#°#L$ï$†%·%9&j&Ä&(Ê(‚)U*›*c,¢,Ü-/.Š.3É4/5‹5ø5Z6µ6•7…8s9v:€;¹<ò<;=u=©=Ï=¬>0?i?@T@¼@A…AèAEB+CyCÈCÀD EF GH`H%IJ KùKûLñM\N‹NKO²OP}PÞPQ›QÔQ6RBS3T"U&V1WqWXàXYÖY=ZšZ[i[Ã[¤\•]„^ˆ_“`Ó`ŒaÐaÔbÄc¶dõdµefyfçfHg¢gƒhticjgkrl²lkm¯m³n£o•pÓp“qúqWrÅr&s€satRuAvEwPxÈx®{d|Í|-}O}~õ~ôú€5�s�Í�(‚^‚þ‚<ƒŽƒD„­„Ä…ð…©†–‡•ˆ‰)‰g‰Á‰ŠRŠ‹G‹™‹û‹[Œr�Í�ŽT޶ޝ��~� �Þ�'‘^‘ñ‘L’‚’Ô’“‹“”•~•¥•(–(—o—f˜­˜¤™“šÚšÓ›Ûœ+�h�¨�ó�-žÄž$Ÿ]Ÿ¯ŸñŸf ¢¡¢Z¢“¢å¢k£X¤,¥¦Õ¦¬§š¨©)©i©È©.ªI«w«Õ«Ĭ­B­�­Ç­^®¾®÷®I¯Œ¯ë¯±s±̱²W²¸²•³ý³sÖšÖ×ÝÛåÔåÛæçGç…çÐçjè@éêNê²ëuì¬íëîï•ñ*õtõ^ø¶ú™ü4³¤ Zükˆ¯!u!—!%‹%j(æ( ,‡, 1‹1›1:b@±@AOAžA¦BøB\CpD„E¬FGgGÌGHdH¢HITIŸIÜIÎKßN{OZP”P¿P QjQêQÑRS¡SíSÚU%V{V VfWYÜ_(cac gph‡ilposÞtR{Å}L� ¢4¥’¥Ô¥lª„³‰´ã¶ý·ƹäºy¼Œ½‰¿ä¿ÃªÃ‹ÖÞ(å„î9ó“ùÿµÿ`+·§Pâ9”Ö)f€Fuš(¦ o»— \“ãÐ=Œbíh ¾ !m!ð!V"#Š#$Ÿ$ò$‚%&O&ì&c'¦'Q(È(D)‡)**Ø*7+£+ÿ+b,¿,/-—-ü-U./x/Ý/80Ž0µ0ï0;1b112˜2 3U3È3U4Ã4C5­56}6á67c7 8õ8V9°9ó98:|:¾:;F;š;Å;b<‡<,=�>Î>?d?É?@s@A/AÔABTB|BÐB(CÒC7D‘DÊD EÇEøE5FÌFúF¡GÌHáHñH3I„IêI\JÉJKHK™KÿK1LFL›LM¾PaSUÆUðWZ ]¹`4dh—l¯ovƒvC|¢€G„PŠ•‘ï 8¦2¬Nµ/¹�ÁÈöÊ'ËÎËþËQÌ±Ì Í‰ÍÎeÎËÎAσσÐÑ?ÑæÑÒðÖJ׶׿×�ØÏØ4Ù‡ÙHÛ’ÛÜG܃ݱÝß]ßÐßàásáœá¤ãóã0äXå¥åìæ.çèDèëè&écé®éØïRð¼ò±ö÷Ë÷$øbø­ø;ùú¿úûµû`ü�ý_þ‹þ„H’2 6 Z�UDÚKp% ˜ �#$O&Ë&¬(*)S,Ñ,á,­3å849ƒ9‹:Ý:A;-@k@aAmB¡CóD8FŠG×H&JWJ¼J KTK’K÷KDL�LÌLrNQžQRER˜RSjSÆS÷S=TœTßTdUÀU2V¡V(X>XOX XèX–YKZXZ©ZéZ‹[é[V\à\m]ü]m^�^ì^U_``5`Â`é`?aoaßaRb·bÞbmc«cdydÕdDe‘eëecfŠf1gaghJh�hDiši;zì|#€A�e‚bƒ�ƒU„M…m…†>†‡#‡чsˆ.‰Œ‰ŠÀŠ�‹lŒ†�ã�p‘Q’½š#›¶ _¡�¡Í¡è¡�¢À¢ý¢�£»£ø£C¤q¤®¤ù¤'¥d¥¯¥ñ¥.¦]¦œ¦ì¦i§ͧô§I¨a¨­¨©v©Ú©%ªåª€«Ú«‰¬­]­©­Ñ­x®©®æ®0¯^¯›¯.°m°‹¸ؾÈÇzÊÏÒ¼Û¶ß:èqèÈìƒõ‚ûÿfÿÛÿé{ÒGôf‚î0z}#¤+s-™-@.y.¾.Ü.ü.¸/ö/¥0Ñ0ë01À1÷1J2Ú2:3‰3²3Ú34¢G‡H”H¡HÃHFK^K'SqS9Zè]*^]d_i¨iYlYo:u»yã|a�Ø„†i†{†Ö†D‡»‡݇Nˆ�ˆ ‰g‰ʉŠTŠ›ŠäŠ4‹z‹ЋŒ´ŒÜŒƒ�¹�Ž:Ž�Ž�\�â�1�Z�‚�ª�ç�~‘_“”.”v•ß•––Ø–{¦€§�§®§¬ÿ¬ ­-­j­¼­ä­"®ü®Õ¯°i°Ò°�³xµ·¦¿›ÀíÉâÊÌûÌ'Î"ÏIÔ=Õ&ÙÚ°ãÃäåæ`æcçÍê!ë7ëUënë°ëí«îáîÚïîï:ðlð³ðNñˆñÇñ^ò”ò�ó¡óíóéõ=öSöqöŠöÌöJ÷ü÷2ø+ù?ù‹ù½ùúŸúØúû®ûäûÝüñü=ýSÿ©ÿ¿ÿÝÿûÿ)hæ'6J–Ù,s]l€Ì‹¬»Õì-:AnÙæ¸Ý=J\¯ÜERëöQ^rŽªÂBO^Ÿ¬áXe²WzÛè�µþ Kj ë!r#a$5&W&'Ö'ë(z)ó)™*’+„,Ì-º.¤/¨0w1@2Ø24Ö4 5p627þ7 8c9 :Ó:ò;ø<A'AÎAþA'BqB˜B`C*F2H§L3M1O¾OZP§P.RSSpT”U³VÐWïXZ-\Ä]è^ `ƒaúbd>e»f6hmhªhÄh`i�i¤iKj kWk¸kl"z¨zÉzØzîz{L{Y{ÿ{žY�¥�Ó�!‚^‚·‚Ä‚ó† ‡q‡~‡ˆ8‰6ŠcŠpŠ‚ŠšŠ‹‹´ŒéŒd�q�ƒ�×� Ž~Ž‹ŽØŽ ���œ�6�ü‘5’d’œ’Á’Ü’8“E“[“z“˜“·“Г+”8”I”¿”̔ݔ8•E•U•›•¨•ß•)–T–Á–Ζj—¡—n˜ܘ%™ð™¬šh›–›ê›÷›’œÕœo�|���µ�Ó�ê�ežržÞ9ŸðŸ[ ‘  ¡¡[¡‘¡¢!¢½¢Å«¬n¬~¬ø¬c­«­|®Ä®=¯�¯°c°­°º°ѰK±¶±þ±[²ó²Z³­³=´ˆ´Ò´á´[µƵ¶ž¶·X·|·Ç·¸2¸n¸è¸S¹›¹+º’ºåº »T»ž»¿»û»u¼à¼(½¸½¾r¾ø¾C¿�¿œ¿À�ÀÉÀ^ÁÅÁžÂéÂ2ÃSÃ�à ÄtļÄKÅœÅÆqÆZÇØÏ'ÐHÐ–ÐøÐvÔÌÙÚ<ÚªÝqâ)ãÐã‘è¾èäéXêàêRë®ëïëcì¦ìí¤íîtîŸîìî8ïZïãï)ð…ðÓðzøRù ú*úÏúûú‹û÷û2ü—ü\ý­ÿB·c™ö3ÞþK]´å f ª å ÷ N ’ Ä  C � £ Ê  $ K ƒ ¥ Ì  & M … ¦ 7o‚'T{Ã�P8Q¥QÝQR)ST!VVV!XZ;[ä[t\–\é\]^]^5^�^î^_¸_ì_q`°`ú`OaÌfºiûi†lŽoÑoào–pƒrõty•{‰€ù�#„ú‡—‹A’–Ÿ–3—Á—Y˜à˜{™ šžš$›§›0œ—œ�z�ª�ç�” Ì ï ”¡Ô¡æ¡9¢~¢Ä¢ £Z£©£ö£;¤„¤Õ¤¥'¥Ì¥:¦•¦ó¦—§ϧ¨h¨œ¨4©© ªgª¼ª«W«‡«ЫA¬�¬¿¬`­‰­­­2®Š®Ù®v¯د°%°ª°±Q±ê±(²‘²í²w³µ³´z´Wµ ¶Ķ$·D·Š·ª·î·¸Z¸´¸ì¸D¹œ¹Þ¹Jº}º»»ê»'¼O¼‹¼�¼½k½ѽ¾k¾Ѿ7¿ŸÂöÂÃÀÃìÃAÄŠÄÞÄ2ňÅÞÅ3ƉÆiÇÂÇ0ÈpÈþÈ"É`ÉœÉíÉBÊgÊ Ë8Ë…ËÖË+Ì�ÌÝÌ[ÍžÍ5ÎÄÎéΎϺÏÐ`вРÑbѦÑýÑ@Ò©Ò7ÓÆÓòÓVÔ€Ô—ÔÕpÕÍÕ,Ö�ÖîÖNײר\ØìØeÙ­Ù&ÚjÚËÚùÚµÛýÛZÜúÜ&Ý>ݼÝÞ}ÞÝÞ>ߟßà�à×à:á�áìábâãtã×ã/ä�äçäŽåþå^æÀæçÀçkè²èé¯éõéPê«êëaë¼ëìrìÍì(íƒíÞí9îgï}ðŠð6ñLòYòóô(ôWôÆôêô&õLõÍõöYö}öÏö÷O÷u÷øFøŒøÒøöøSù“ùÓùú9úÍúûYûŸûåû üqü±üñü1ýqý—ýþ^þ£þÈþÿZÿšÿÁÿL’ØBŸß_…ôJ{�íYÊ*•¢nÎvÛ{ß -=6å8=9<^<??ËA|DŒFîGÖJ/MÏO�QISpTÌVZLZ[J[�[Ò[ÿ[\%] ^%_ó_"`É`ú`%asa£a÷a'bPbšbÊb c/cpc”cõc&d‡d·dFerf hXi}i°l mpcp‹qfr=st¢tµuVv’vÅy\z {j}”~FY‚ù‚½„ †J†s†‡`‡¨‡ó‡Sˆ–ˆûˆ(‰±‹ä� ŽgŽŽŽ–�5�ç‘“@”’•ʕޕ…–C—†—Û—C˜—˜ì˜™b™·™šjš¾š›v›Ò›`œµœÚœ�¬�æ�1ž¡žÛžìžûžŸ&ŸkŸ½Ÿ N — B¢s¢�¢ª¢Æ¢à¢-£U£ù£)¤d¤¬4¬b¬|¬ɬñ¬•­Ë­®;®X®v®“®°®Ë®è®¯¯ׯ ÑKÑhхѢѿÑÜÑùÑÒ1ÒMÒfÒ³ÒãÒ(ÓÔÓîÓ¥Ô¶×æ×ØØiØ’Ø6ÙkÙ½ÙÛÙÚ(ÚuÚ ÚµÚ ÛIÛ^Û¼ÛñÛCÜaܙܮÜûÜ&Ý?ݑݯÝçÝüÝIÞtÞ�ÞßÞýÞ5ßJß—ßÂßÜß à#àÇàÒãÿãäfä�ä4åkåîå)æFæcæžæºæÖæóæç+çFçcççœç·çÔçîç;èeè é>éléˆé¢éFê{ê§êÀêdëXø�ø¬øÈøãøÿøù7ùPù�ùÆùjúþÃþáþÿþÿ;ÿYÿxÿ–ÿ´ÿÑÿîÿ &s�Ay©Æß,Vú4�«Å�Ó,Jd,pÅñ,Jh¤ÁÛ(Rö8 z ˜ · Õ ô  1 O n � ¬ Æ =áNàC]ªÔxì!""@"]"z"—"¯"ü"&#Ê#ü#g$‘$¦$%y(¥(¿( )5)Ù)*y*µ*Ñ*í* +$+?+[+y+µ+Ñ+ë+8,a,-51ñ1B2Ö23®344i4’465@9“9±9Ê9:@:ä:œ]ï] ^E^Z^§^Ò^ç^‹_¼_÷_`~`§`aja|a‘aïa b€b±bcEcqcŠc×cd¤dÕd@eie~eÜeýn+oGoaopÍr:\:v:Ã:í:‘;Ê;ú;<1<~<¨<L=ƒ=>,>I>e>‚>ž>»>×>ó>?,?H?d?�?�?¹?Õ?ò?@+@G@d@�@­@É@ã@0AYAýA.B™BÂB×B5Cl`¨`Ä`à`ý`a8aTapaŽa¨aõabÂbób.cŽcÄcàcýcd6dSdmdºdãd‡e¸eóe g‡h±hk@k–qÂqûqr]rŠrŸrCsû{3|Q|o|�|«|Ê|ä|1}[}ÿ}7~f~ƒ~¼~Ñ~K`€>€…€£€Á€Û€‘�Ð�‚‚8‚…‚¯‚SƒŒƒ¼ƒÛƒõƒB„l„…I…y…–…¯…ü…&†ʆy‰¥‰¿‰ Š5ŠÙŠ‹Æ‹ŒŒ=ŒyŒ•Œ´ŒðŒ �)�E�`�|�˜�³�Ï�ë�Ž#ŽRŽ~Ž˜ŽåŽ�²�ç��1�I�–�Å� ‘(‘“‘°‘Ê‘€’¾’î’ “&“s“�“Ø“ü“C”b”Дê” •ß•–,–e–z–Ç–ô– —<—W—r—Œ—Ù—˜¦˜ܘ ™'™C™]™ª™Ó™wš¨šãš›2›M›h›‚›Ï›ø›œœМþœ�1�J�—�À�dž•žОìžWŸ€Ÿ•ŸóŸ) Y t � ª ÷  ¡Ä¡õ¡0¢PÁ¥ÁÃÁÝÁ*ÂZ¤ÂÂÂàÂþÂÃ:ÃXÃvÒîÃÊÃæÃÄ"Ä@ÄYĔĿÉóÊI˳ÍíÍÎpΪÎÅÎјÑÒÓòÓÖ¬Ö—×ÛfÛ½ÛÓÜrÞTà€à.ápáŠá×áâlâ–â«â ãå…åŸåìåæºæìæWç�ç–çôçŒê0ëJë—ëÁëeì—ìí,íAíŸí­îï`ï·ïðïðRðð”ðÿð)ñˆñÜñîñòaò²ó÷óô]ôõ‹ö¹öÕöïö<÷e÷ ø:øuø*ýXý‡ý¡ýîýþ»þ^ Œ ¨   8 Ü �3Xv�jØIg…£½—]�­Ëå2\9i‡¡î¼õ(Fc|Éó—ÐWt’°Îè5_8nЧÄàü c ‘ ½ × $!R!€!œ!¶!"3"c"�"›"è"#¶#ï#$=$V$£$Í$q%ª%Ü%ú%&(&A&Ž&¸&\'•'Å'Û'ó' (Y(ƒ(')Y)Ä)è)ü)*o*¨*+T+q+�+Ì+é+,D,a,š,¯,ü,)->-â-..©.¾./ƒ5Ø5ö5/6D6‘6¼6Ñ6<7e7z7Ø7 8i8š8ù8/9…9À9Ü9ú95:Q:‰:ž:ë:;+;–;¿;Ô;2<c<Ã<ô<S=¯AB"B7BjBBÌBîBC’D×DüDEËEàF)GGGdG‚GœGRHTI›I¹I×IðI¦JçJ-KKKeKLmLÂLáLûLHMrMNNN|NµNÊNODOYOýO/PjP†PñPQ0QŽQÆQR:RPRƒR˜RåRSS4SoS‹SöST.TCT¡TÛT UEU^UVTV™V·VÐV†WNf~fšf·fÑfgêh/iNi§ij6jîj¶Œ �*�D�‘�»�_Ž‘ŽÌŽïŽ$�C�b�€�™�=�o�ª�e’“’­’ú’$“È“”Y”w”•”³”Ñ”î” •*•H•f•„•¢•¼• –3–×–R˜–˜ÿ˜^™Ž™FšT›�››à›ÿ›^œ�kž¼žØžŸ%ŸrŸ�Ÿ¸ŸúŸ N t Ó ¡,¡ä¡¢š¢É¢ñ¢c£ £ ¤N¤j¤‰¤ˤ礥G¥¨¥Ù¥¦¹¦ð¦o§ž§Ƨ8¨„ÃÆÃâÃüÃ[ÄŠÄ@Å‘ÇÈ8ÈKÈeȹÈQÉýÊzˤ˷ËÑË̵ÌÍÎJÏtχϡÏíÏ…ÐÒØjÚ”Ú©ÚÛBÛWÛHÜr܇ÜgݑݦÝTÞ~Þ“Þ2ß\ßqßtà àµàá2áGáËáõá â_â‰âžâÉãõã ä#åOådåóåæ2æÿæ)ç>ç1è[èpè\é†é›é_ê‰êžê†ë°ëÅëøë ìZì…ìšì>íoíÚíîîvîÎïJò‚ò—òäòó$ó_ó{óæóô$ô‚ôNõ|õ–õãõ ö±öíùú5ú‚ú¬úPûÉýþ;þTþ¡þËþoÿ¨ÿßÿîÿ,ˆùU~î 8s Bž¸-ÑYwŒ í¹ì?]vÃë�à : S l ¹ â † »  8 Q j ƒ Ð ù � Ð % z Ç ï “Å ?qŠ×ÿ£A„0I–¿cši¤ÀÞ 5 S Ž ª È !!=!x!”!²!í! "'"b"~"˜"å"#³#P'¥'Á'ú'(\(‡(œ()0)�)â)ô) *g*˜*ø*)+ˆ+õ8H9f9ž9³9:+:@:ä:;P;l;×;<_<²<Ä<Ù<7=h=È=ù=X>›?Ç?à?-@V@ú@+A–A¿AÔA2BhB”B®BûB$CÈC¶G H(HaHvHÃHðHI@I\IÇIñIPJ¤J¶JËJ)K»KíKLLðNEObO›O°OýO*P?PzP–PQ+QŠQÞQðQRcR•RõR'S†S¸ST>TjT˜TUòUMVÃVDWÇWJXÿX¤YÇYSZvZßZ [C[j[\O\�\¥\]=]r]Ç]^Y^q^Î^"_W_¬_æ_)`Q`~`¼`ä`aOawa¤aâa b7bub�bøb@cWcd;dxd dÍdeJe•eÎeùeKfcf²fXg­gÌgæg3h]hi3ižiÈiÝi;jrjÇjèjkOkyklYl›lµl×lñl4mtm¢mèmnµn o;ogo•o pïpHqÀqArÄrGsüs¡tÄtPusuÜuv@vgvwLwŠw¢wÿw:xoxÄxyVynyËyzTz©zãz&{N{{{¹{á{|L|t|¡|ß|}4}r}š}õ}=~T~ÿ~8u�Ê€G€Š€Àî€@�X�§�M‚¢‚Á‚Û‚(ƒRƒöƒ(„“„½„Ò„0…g…¼…Ý…÷…D†n†‡N‡�‡ª‡̇æ‡!ˆaˆ�ˆ͈d‰é™š3šMšššÚg›œ›È›Ý›ñ›>œkœäœ�$�:�e�z���»�Ð�æ�ž&ž<žgž|ž’ž½žÒžŸŸgŸ’Ÿ§ŸK | ç ¡%¡ƒ¡ü¤<¥V¥p¥Š¥¤¥¿¥Ù¥ó¥ ¦'¦B¦y¦ަÛ¦§§¿§Mª®ª»ª«$«€«š«ÿ«¬¦¬J°v°�°4±γ#´A´[´ÿ´5µ¿µÛµøµ¶1¶M¶j¶†¶¡¶½¶Ù¶ô¶·,·G·c··œ·¸·Õ·ñ· ¸*¸F¸b¸|¸ ¹a¹°¹º#º=ºŠº³º»G»¦»ù» ¼ ¼~¼¯¼½@½Ÿ½Ô½)¾G¾a¾®¾×¾{¿°¿À#À=ÀŠÀ¸ÀæÀÁÁiÁ[Ö¡Ö½ÖÙÖõÖ ×l×mÛÒÛ"ÜZÜoܼÜéÜþÜiÝ“ÝòÝFÞXÞmÞËÞ4âdâ‚âºâÏâãIã^ãä4äŸäÉä(å|åŽå£åæéJéhé¡é¶éê0êEêéêë†ë°ëìcìuìŠìèìÙñ ò'òAòŽò¸ò\óŽóùó#ô8ô–ô/ö_ö}ö–öãö ÷±÷$ùhùúmú�úUû >iG&`{´ÉCXü.™ÃØ6œ*+.+g+|+É+ö+ ,F,b,-8-£-Í-â-@.P/~/Y;°;å;ÿ;L<v<=L=·=á=ö=T>Y? @v@Ï@|B*CÛD9E‹I¶IÐIJGJëJKˆK²KÇK%L[LˆL£L½L M3M×M NN šN \O ‹O =P õP 3Q iQ ¹Q ÛQ åS SW —X ûX VY |Y »Y ×Y óY Z +Z jZ ÁZ [ q[ Ë[ ,\ I\ û\ ] e] �] �] ¹] Õ] ñ] (^ c^ ©^ ï^ 8_ ‡_ Ð_ ö_ ¨` Í` a "a >a ua °a õa >b Œb Õb c µc Úc d Gd ™d æd +e ‰e Îe €f ¥f Ôf "g >g �g Ög h dh ¬h óh þ> WJ ÜN O ’P çS YV ZX >Y ÿ[ X\ ^ –^ ¸^ Ï^ à^ 3_ h_ ”_ ,` å` Ya Ña Eb Èb Kc d Ïd \e f ~f åf Jg ®g h rh Ñh 6i ¨i j šj 'k ¬k l bl Ûl Wm Þm Rn Än -o –o p ‚p q xq ¾q Õq æq )r Ær !s =s t xƒ Ž eš ö  Þ° .½ éÌ {× Sß ºñ ü ñü çý \þ Ýþ óÿ X»y¶¾Ì T & � ï °‡•ŸP€3Ý2ß©H_Õ`®ñ¿Ú‰ « ï 3!v!¤!K"f"#7#u#®#Õ#è#—$Ì$V%q%Œ%§%Â%Ý%÷%/&u&É&'t'Ì'$(|(Ô( *u+Ý,/»071O1Ÿ1Í1à1�2¥6Ò84<è>E@XDÓDKIcNrT\U(YZ‘ZÕ[¯\F^Š^Î^ _‹_�_-ad¸dRe†fSg hÚhÔiði†jZk:lƒsLt;uÅvêv-wyYzd|Ë|£}‹~�€Ý€Ë�*ƒ©ƒ—„ …è…Ö†é‡iˆňȉHФЅ‹ä‹Ù–§™2›Oœ•œäœ0�`�ž"žÑžŸŸÉŸìŸ1 P ‹ ° àr¡•¡Ú¡ö¡3¢b¢u¢$£G£Œ£©£î£©¥¦s¦Œ§¨a¨ª«‚«׫/¬”¬ÿ¬`­À­'®š®Q¯ò¯T°µ° ±n±â±F²¶²³­³?´š´û´Pµ²µV¶¸¶ »ê»C¼©¼ª¿–Í$ÑóÓ[ÔmÞeàxäEçBíD Õ Á Iïè!¶'v(e-Š0Ú6;¼>—?þKcO>S›Z©deDk…lxvÊzæz@{™{¸{>|«|}r}É}"~{~P°€s€>�{�,‚çƒ.„v„Ç„,…g…Ë…ø…4†©†T‡›‡ã‡4ˆ™ˆÔˆ8‰e‰ ‰GŠŽŠËŠ‹_‹š‹AŒˆŒÐŒ!�Œ�Ï�ð�ÀŽ ’©’Å’«“™ž�¡ÿªøº‚ÃLȶÏ\Ø-Ý»áæ*èôê í/ðò-ó!ôõ2ö ÷Í÷©ø�ùNúJû&üýëý þZþ£þ7ÿ’ÿ}W?2ŒéKl %; ³  @ná0o«!-#›#¸#^$û$’%ê%E&�&÷&(Ö(Ž)a*Î*o,Õ,è-b.½.Û4A5�5 6l6Ç6§7—8…9ˆ:’;Å<%=j=·=×=¾>B?�?f@Î@*A—AúAXB>C¬CûCÓD@EFG/HhH8I0JK LMNoN“N^OÅO"P�PñPJQ®QRiRUSFT5U9VDWyWXóXYéYPZ­Z[|[Ö[·\¨]—^›_¦`Û`Ÿabçb×cÉdýdÈe/fŒfúf[gµg–h‡ivjzk…lºl~mâmÆn¶o¨pÛp¦q rjrØr9s“stteuTvXwcxÕx¶{v|ß|?}W}~€ �=���ß�:‚‘‚ƒoƒ–ƒV„¿„Ö…ø…»†¨‡§ˆ‰1‰u‰Ó‰.Š…Š‹z‹¡‹ ŒmŒ„�ß�6Ž\ŽÈŽÁ�.���¨�ì�9‘‘‘’^’µ’Ü’$“ž“”2•‘•­•;–;—¢—y˜à˜·™¦š ›æ›îœ^�p�¶�ž`žמ7Ÿ�Ÿ·ŸÿŸy µ¡¢m¢Æ¢í¢~£k¤?¥¦è¦¿§­¨©1©w©Û©Aª\««è«׬ ­P­ ­ú­q®Ñ®*¯Q¯š¯þ¯'±†±ß±8²_²˲¨³´Ö¢Ö!×ëÛ+åæåíæ çYç¸çØçxèRé7êÄë‡ì¾íýî ï¨ñ^õløÄú§üBÁ-0· m~›·C!Ê!Y%«(J,N1£1:u@ä@3A‚AÑA¹B+C�CƒD—E¿FGG–GÚG,H—HÑHIgIÒIäIáKòNŽOmPœPÍPQ}QýQäRPS´SõSâU7V�V¨VtWYï_;c”cgƒhši*lƒo/sñte{Ø}_�) )¢G¥¥¥¦ª—³œ´ö¶¸Ù¹÷ºŒ¼Ÿ½œ¿÷¿Ã¸Ã™ÖÞ6å’îGó¡ù ÿÈÿs>ʺcõL§ 1tˆYˆ¢6¹ £ª>¦öp¿"•I Ñ 4! !7"#�#$²$%%•%&‚&ÿ&v'Ù'd(Û(W)º)%*’*ë*J+¶+,u,Ò,B-ª-.h./‹/ð/K0¡0½0ý0N1w1?2«23ˆ3û3h4Ö4V5À5%6�6ô67v789h9¾9:F:Š:Ì:;T;¨;Í;t<�<>=•>Ü>?v?Û?C@¦@A7AæABbB„BãB;CåCJD¤DýD(EÚE FCFßFG´GÔHéHùHAI–IüInJÛJKVK«KL9LNL­LMÆPsS°UþW+Z.]Ç`Fd"hªlÂo)v–vV|µ€Z„cЍ‘¡K¦E¬aµB¹¢Á)È Ë/ËáËÌ_ÌÄÌ ÍœÍÎxÎÞÎT϶϶ÐÑGÑùÑÒ×]×É×î× ØÙgÙ�Ù[ÛÅÛÜzܖݹÝ&ß�ßãßEàá†á¶á×ã&ä8äkåØåÿæaç(èLèþè;éqéÁéàï`ðÊò¿ö+÷Ý÷6ø•øµøIùúðúÇûrü“ýqþ“þ–|@,! D h0£hWí^xf Þ#�&í(”,é,À3ø8g9¶9ž:;t;@@s@tA€B´CEKF�GêH9J†JÊJK‡KÁKLWLÂLÔL…NQ±QRMR«RS}SÙSÿSKT¯TUwUÓUEV´V0XFXWX®XúX+Z»Z[ž[ü[i\ó\€]^€^¥^ÿ^Ý_h`Õ`ñ`Ra}aòaebÊbæb{cÞcCd¬deReŸeùevf’fDgigh}h¥hWi¢iCzú|1€O�s‚pƒЃc„[…u…$†F†‡1‡߇…ˆ@‰ž‰1ŠÒŠ¢‹~Œ˜�õ�‚‘c’›É r¡˜¡Û¡ð¡¢¢Õ¢ £ £У¤V¤†¤¼¤ ¥<¥r¥Â¥ù¥<¦e¦ª¦ÿ¦|§à§ü§W¨o¨À¨%©‰©í©Xªøª“«í«œ¬>­¼­Ù­‹®¾®ô®C¯s¯©¯A° °“¸æ¾Ã–ÇŒÊÏ)ÒÏÛÉßMè¤èÛì–õ•û"ÿ™ÿüŽz$K™¬Ó!8��#·+†-¡-S.Ž.Ì.ê./Ë/ 0µ0ß0ù01Ó1 2X2í2M3—3Ç3ï3 4iHöHTKfK:S¤SLZû]]^pdriÛillloMuÎyö|t�ë„2†q†ƒ†é†‹‡ˆaˆÈ‰z‰݉4Š\Š©ŠòŠB‹ˆ‹ã‹ŒÇŒäŒ–�Á�-ŽOŽ›Ž0���õ�?�o�—�¿�õ�‘‘g“”<”‹•ï•–4–ê–K§á§ʬ`­­Ê­ì­0®¯á¯B°œ°Ú°²³†µ·xÀ¿ÊØÌýÎÕ÷Ù—äçå6çúêEëcë›ëí¾î¹ïüïMð™ðañµñqòló¯óôöaöö·öX÷ø ùMùžùêù²úûÁû¼üÿüPý€ÿÍÿëÿ VôX© Y!KŽß;›Ãã"QÎÊ#jÁ2ý,€œ¸:”ñJÄiÈ“ë]r û!‚#q$E&_&%'ä'ù(ˆ)*§*¤+–,Þ-Ì.¶/¶0…1N2æ24é4®5ƒ6@78®8v9:æ:< =A/AáAB5B„B BnC=FEHºLFMDOÑOmPÚPARfSƒT§UÆVãWY'Z@\×]û^`–a c0dQeÎfIhuh¸hÌhni˜i¬i^jkdkÅk lXz¸zàzüz;{ |¬g�­�‚T‚¬‚‡^‡)ˆå‰FŠ�ŠõŠÆŒD�‘�é�eŽêŽv�H�’=’l’¤’É’“i“ˆ“¦“Å“#”·”0•�•í•7–§–}—Ô—�˜ï˜X™š¿š{›×›¥œC�ž�Ã�á�JžÖžLŸ n ñ n¡ú¡ТÍ«V¬†¬ ­u­Þ­Ž®÷®O¯¢¯ °”°ȰÙ°]±ȱ1²޲³l³¿³E´¹´é´mµصA¶°¶·j·„·ø·e¸v¸ú¸e¹ι=º¤º÷º»…»ò»¼‡¼ò¼[½ʽ1¾„¾¿t¿¤¿(À“ÀüÀpÁ×Á*¦ÂÆ×ÃĆÄïÄ]ÅÏÅ'ƃÆbÇ Ð{ÐÉÐшÔýÙoڼ݃â;ãâã£è÷ékêóêeëÁë!ì¹ì/í·í)î‡î§î ï�ïð³ð‚ø`ùú2úáúû™ûü@ü¥üjý½ÿPË“w«#;ð/kÆ x É  ` ± % K � « Ø  , Y ‘ ­ Ú  . [ “ ® IwŠ9\‰ÕiQÅQR1S!T3V‰V3X�ZI[ö[†\ž\û\]p]$^C^¢^__Ê_ô_`¾` aaaØfåi’l¹oèo¤p‘ruy£{—€‚1„ˆ¥‹O’–±–E—Ó—k˜ò˜�™š°š6›¹›Bœ©œ���²�õ�œ Ú ÷ ¦¡Ü¡î¡G¢Œ¢Ò¢£h£·£¤I¤’¤ã¤¥/¥Þ¥F¦¡¦ÿ¦º§¨‡¨A©²©ªtªɪ@«�«Ý«o¬Ǭm­‘­à­?®¸®ƒ¯å¯ °X°·°0±÷±[²IJ ³„³è³Q´­´dµ¶Ѷ1·L·—·²·û·¸¸ô¸L¹¤¹ºRº'»’»ý»/¼W¼“¼¥¼½~½ä½ ¾~¾ä¾J¿§ÂÃ#ÃÒÃôÃOÄœÄðÄDÅšÅðÅEÆ›Æ{ÇÈ‚ÈÉ*ÉnɪÉÿÉTÊoÊË@Ë“ËèË=Ì“Ì>ͰÍGÎÖÎñΠÏÂÏ+ÐnÐÄÐEÑàÑRÒ»ÒIÓØÓÔfÔŽÔ¬Ô&Õ‚ÕàÕ?Ö Ö×a×Å×0Ø�ØAÙÚ}ÚÞÚÛÈÛ0ÜoÜ Ý4ÝSÝÏÝ0Þ�ÞðÞQß²ßjàá”áÿáuâ%ã�ãäã<äœäôäšå1æ‘æóæMçÍçxèåèCé¼é(êƒêÞê9ë”ëïëJì¥ìí[í¶íîlîJðòêóÔôòô4õÛõ!ögö…öÝö÷]÷øTøšøàøþøaù¡ùáù!úÛú!ûgû­ûóûüü¿üÿü?ýý&þlþ±þÐþ(ÿhÿ¨ÿZ æ,J­í-m7‰œùeÖ6¡·°¸¼®-K69:<R?ÞA�DŸFHéJBMâO Q\SƒTßV)ZaZ[€[à[\’\8]^8_`*`Ü`a3a†a«a b/b^b­bÒbc7c~cœcd.dšd¿dTe€fhki…iôlEpžqyrPs.tµtÈuivšvÓyoz{}}§~Yl‚ ƒЄ †R†{†-‡u‡¶‡ˆfˆ«ˆ‰0‰Ä‹÷�Žzޖޤ�H�õ‘#“N” •ҕ敘–K—”—í—U˜©˜þ˜™p™É™'š|šК)›ˆ›ä›rœÇœâœ‘�Á�ô�Cž©žåžôž ŸŸ.ŸwŸÉŸ Z Ÿ J¢�¢�¢¸¢Ô¢è¢@£]£ ¤1¤r¤¬B¬p¬„¬ܬù¬¨­à­+®I®f®„®¡®¾®Ù®ö®¯4¯ë¯ÑYÑvѓѰÑÍÑêÑÒ#Ò?Ò[ÒnÒÇÒøÒ6ÓâÓÔ¹Ô¾×ôר$Ø}ØšØJÙsÙÍÙéÙÚ0Ú‰Ú¨Ú½Ú4ÛQÛfÛÐÛùÛSÜoܡܶÜÝ.ÝGݡݽÝïÝÞ]Þ|Þ•ÞïÞ ß=ßRß«ßÊßäßà+àÜàÚã ä!ä{ä˜äIåsåüå9æTæqæ®æÈæäæçç9çTçqç�çªçÅçâçöçPèmèéFézé–éªéZêƒêµêÈêxë`øžøºøÖøñø ù)ùEùXù±ùÎù~ú‡þÑþïþ ÿ+ÿIÿgÿ†ÿ¤ÿÂÿßÿüÿ.ˆ¥V�·ÔçA^V›¹ç¢õ:X†AxÓÿ:Xv´Ïã=Z @ ˆ ¦ Å ã   ? ] | › º Î (Eö\èQe¿Ü�ô!0"N"k"ˆ"¥"·"#.#ß#$|$™$®$%�(³(Ç( )=)í)*‡*Å*ß*û*+2+M+i+‡+Å+ß+ó+L,i,-=1ÿ1P2ä2)3¼34$4}4š4J5H9£9¿9Ò9+:H:ø:¤]ÿ]^M^b^»^Ú^ï^Ÿ_Ä_``’`¯`Ja„a™ab(b”b¹b$cMcc’cëcd¸dÝdTeqe†eðeo9oUoiopürJsos”s tÓtfwœwºwÎwx¤xþxÌ€��n�‹�<‚¦‡؇ì‡Eˆbˆ‰<‰‹‰§‰É≠Š:ŠNЧŠÄŠt‹�‹ú‹7ŒPŒnŒ«ŒÄŒØŒˆ�±� Ž(Ž;ŽëŽ�G�Z� �©¶ݶù¶ ·½·ç·¸7¸K¸û¸%¹‚¹Ÿ¹³¹ º*ºÛº»?»]»{»�»é»¼·¼¾I¾g¾¾.¿í¿ÎÁÂ5ÂSÂqŸÂZÃêÄ/ÅMÅzÅ5ÆÈTÈrÈŸÈZÉåÐ#ÑAÑ_Ñ}ћѹÑÍÑ~Ò£ÒýÒ ÖtÖ’Ö°ÖÎÖíÖ ×+×J×h׆ץ×Ä×âרØ<ØZØnØÈØåؖٻÙüÙ¤èÜèúèé-é‡é¤éUêê´êÏêëêÿê¯ëñë3ìOìŠìñì:íúí*înîŒîªîÈîæîï#ïAï_ïsï$ðPð„ð˜ðIñuñ«ñÉñÝñŽòºòöòó2óQóoóƒó4ô]ôºôÖôêôšõÃõ ö<öPö÷)÷†÷¢÷¶÷ø,øÜøùbùù“ùCúlúÉúúúû¾ûçûDüuü‰üâüÿü¯ýØý5þQþeþÿ>ÿ›ÿÌÿàÿ�¹G[´Ñ�«%9êq£·h’ï!5�¬]‡äÆðK „ — H r Ï ì  ± Û 8 j ~ / Y ¶ è ü Vs$N«ÈÜ�·K^IfzÓð Å�Ãò_|,t+ª+È+Ü+6,S,-"/r/—/¼/Ú/0Õ0Ä2323P3n3©3i4Ö7 8*8>8˜8µ8f9’9Õ9ó9:.:L:j:~:Ø:õ:¦;Ò;<&<9<“<°<a=‹=>:>W>s>�>¬>É>å>??:?V?r?�?«?Ç?ã?@@9@U@r@ž@»@×@ë@DAaAB6B­BÊBßBICt`¶`Ò`î` a)aFaba~aœa°a b&bÖbûb¢XÁµÁÑÁåÁ>Âb²ÂÐÂî Ã*ÃHÃfÃ„Ã Ã¼ÃØÃôÃÄ0ÄNÄaÄ¢ÄÇÉËWËÁÍýÍÎ~κÎÓÎ%ѦÑ#ÒÓÔ*ÖºÖ¥×ÛtÛËÛáÜ€ÞbàŽà<á~á’áìá â�âžâ³âãå“å§åææÏæôælç‰çžç è”ê>ëRë¬ëÉëzìŸìí4íIí´íµî ïnïÅïøï ðgð‡ðœðñ1ñ¼ñöñ òvòÇóô$ôrô(õ“öÇöãö÷öP÷m÷øBøƒø2ýfý•ý©ýþþÏþf š ¶ Ê # @ ð ÌAf„¿Wu“±ì¬e�»ÙíGdAw•© Ñý6Tq„Þû¬Ø)g‚ ¾ÜðJg@|˜µÒî  w ™ Ë ß 8!Z!Ž!ª!¾!";"q"�"£"ý"#Ë#÷#-$K$^$¸$Õ$†%²%ê%&&6&I&£&À&q'�'Ó'ã'((n(‹(<)a)Ù)ð)**„*°*&+d++ž+Ü+÷+,T,o,¢,·,-1-F-÷-.”.±.Æ.1/‹5è5676L6¥6Ä6Ù6P7m7‚7ì78}8¢8 979“9Ð9ê9:E:_:‘:¦:ÿ:;3;ª;Ç;Ü;F<k<×<ü<g=·AB0B?BrB‡BàBöB C§DåD E*EàEõF7GUGrG�G±GgHiI©IÇIåIJ»JüJ;KYKzK0LuLÒLïLM]MzM+NVNŠN½NÒN,OLOaOP7PxPŽPQ#Q8Q£QÎQ+RHRXR‹R RúRS'SQªÇw¢w´Îì) C a ž ¸ Ö !-!K!ˆ!¢!À!ý!"5"r"Œ" "ú"#È#X'µ'Ï'((p(�(¤()8)Â)ü)*{* * +1+œ+ý8X9t9¦9»9:3:H:ø:;^;t;ë;<’<Ì<á<K=p=Ü=>l>£?Õ?è?A@^@A3AªAÇAÜAFBpB¢B¶BC,CÜC¾GH6HiH~HØHøH INIdIÜIùI„J¾JÓJ>KcKÐKõKaLøNUOpO£O¸OP2PGPˆPžPQ3Q¾QøQ RxR�R S/S›SÀSTLTxT¦TUVÚVÞWaXY²YÏYaZ~ZôZ[Q[r[*\q\³\]_]Ü]=^^ã^D_Á_î_7`Y`Œ`Ê`ì`a]aa²aðabEbƒb¥b cHc_cdCd†d¨dÛd0eŠeÜe1fqfÇf`g½gÚgîgHhehi;i³iÐiåiPjzj×jöj kdk�k2l{lÃlål!m‰mÓm”n½noIouo£opÿpVq×qXrÛr^st¯tÌt^u{uñuvNvov'wnw°wx\xÙx:y|yàyAz¾zëz4{V{‰{Ç{é{|Z|||¯|í|}B}€}¢} ~E~\~@ƒ¥Ø-€€Ñ€&�f�¼�U‚²‚Ï‚ã‚=ƒZƒ „0„¨„ńڄE…o…Ì…ë…ÿ…Y†v†'‡p‡¸‡Ú‡ˆvˆ¸ˆy‰ñ™%šAšUš®šËš{›¤›Ö›å›ù›Rœsœòœ�,�H�s�‚�ž�É�Ø�ô�ž.žJžuž„ž žËžÚž Ÿ"Ÿ{ŸšŸ¯Ÿ_ „ û ¡-¡—¡¥J¥d¥~¥˜¥²¥Í¥ç¥¦¦5¦P¦�¦–¦ï¦§#§Ó§Œª«,«Ž«ê«º¬R°„°˜°H±Ö³3´O´c´µ=µ͵éµ¶"¶?¶[¶x¶”¶¯¶˶ç¶··:·U·q·�·ª·Æ·ã·ÿ·¸8¸T¸p¸„¸4¹”¹¸¹º1ºEºžº»º2»O»Ù»¼(¼’¼·¼#½H½³½ܽ9¾U¾i¾¾ß¾�¿¸¿À1ÀEÀžÀÀÀôÀÁ$Á}ÁpÖ¯ÖËÖçÖ×"×€×uÛàÛ0ÜbÜwÜÑÜñÜÝ~Ý›Ý&Þ`ÞuÞàÞ<ârâ�âÂâ×â1ãQãfãä<ä´äÑä\å–å«åæ"éXévé©é¾éê8êMêþê#ë›ë¸ëCì}ì’ìýìáñò5òIò£òÀòqó–óô+ô@ô«ô7ömö‹öžöøö÷Æ÷9ùvù#ú‚ú²újû Lw+U4p‰¼Ñ+K`6®ËàK¤*+<+o+„+Þ+þ+,T,j,-@-¸-Õ-ê-U.^/Œ/a;À;ó;<a<~</=T=Ì=é=þ=i>a?@„@Ý@ŠB8CéDGE™IÄIØI2JOJK%K�KºKÏK:LcL–L±LÅLM;MëMNJNeN�N•NîNOËOóOPÉP¢¡ /§ 4° à· ¿ ¬¿ ~À ‘Á à gà 2Ä ,Å oÆ Ê ½Ê «Ì µÎ MÏ «Ï ôÏ RÐ �Ñ mÒ ØÒ ™Ó ¹Ö kÙ Lß Ðá vã Õè Äì ï µð áö ‡÷ ø &ù šú È ˆ ¶ k  �! ì' Í8 ›E  F ¿G ÊH 9J �J GK ·K 4L ØL <M ±M N kN àN ºO uP ŒQ ¹S W lX ÅX )Y NZ «Z îZ E[ �[ \ x\ ^ M^ ‘^ ×^ _ o_ µ_ %` `a ša Ýa #b tb ºb 2c -d d Ðd e Ye ýe öf xg ¾g h Mh ”h Üh #i Ÿi qj 2l ‹l ål Wm 7n ;o óo q jq €r Ôr )s –s p“ ¯• ý— Ø™ tŸ Ž¢ ·£ t© q­ ö° ‰± ô± R² §² ñµ CÈ |Ü ¾ì íö ' � Ž Ä& N0 Û7 ¿; å= J ™N fP ªS ,V -X Y Ô[ Ù] k^ _ ` q` %a b ”b „c od .e —e Qf ¸f �g i zi ãi dj ñj ~k çk ·l #m £m #n –n ÿn ho Ño Dp Æp Iq r Pr õr ôs ]ƒ ÷� Lš Ý  Ű ½ ÐÌ a× :ß Ÿñ dü Åü lý 2þ ³þ Éÿ ,OêŒó’<  • ^ ›K5p!QáÈa0ÚG–ÜE × !^!Ñ!“"`#™#$&\&Ÿ&ò&G'Ÿ'÷'O(§(ß)J+²,Û.�0 1u1 2©8é;Ó>@DßHõM§SxXeYŸ[y\^ñ^a×c‚dePfgÑgŸh©iqjkÚkQst u–vwqxXyú|á}�‚Ûƒ>…,†‡úˆÙŠÓ‹|™›Õ›zœÉœ���OžGŸ v ð ¡¢¢¢t£Ö£þ¤¿¦7©êª´«ʬð­.¯~¯°ç°9±­±�²u´+µ2¶�¿HÍÑÞÓÞàä’æ‚ìa› # «@8!'µ,Ú/6C:û=ÒK7OSpZ}dkOlNvŸz{ÿ{u|×|<}ž}÷}´~†èI€¢€÷�Wƒ™„N…{†‡ˆ»ˆŠîŠ ŒóŒZ�”ŽБ~’–“昞t¡äªݺgÃ1ÈœÏAØÝ¢áýåèÛêíðìñó÷óÞô·õàö¡÷}øbù"úûüûæüÀýS-`ºöéÛ ù@|!ø"Þ#Œ$(% &Ù'Z( )Û)Æ+-e4 5q5Í5B6œ6÷6ç7×8Æ9Ñ:Û;ž=<>õ>:@˜@þ@ZAÐA,B�B"DgE\FmG£H€ImJ\KLLVMCN2O�OöOSPÇPƒQ¥R–S‡TwUƒV¥WCX½YZ�ZÞZR[«[\ø\é]Ù^å_ a7b'cdœeùe`f½f1gŠgæg×hÈi¸jÄkìlnoöozq×q>r›rshsÄsµt¦u–v¢w­xã{´| }‡}Z~EL€l�£�‚ɂÔ„ê„(†û†æ‡íˆ`‰—‰ŠÒŠЋBŒ˜Œµ�‹Ž��[�×�‘Ç‘4’“K“ë“E”g•è•‹–É—™ö™4›,œ¡�Ú�šž ŸêŸ& È ê¡B¢+£Í£¡¤v¥J¦§ý§ê¨b©�©ªoªª«%¬;­t­4®¦®…¯À¯:°\±´±�²³å³éÕ ×ÐÛålåÃæ+çcèéÚé–ëYì�íÏî~ñõTø¯ú’ü-¬z BÙHpÒ è$((o+s0V9³?÷AÁCÐDøEýG8IµKµNcO½OñPNQÀQ4R‰SãS VcV_WéX½_cïfWhoiþkTosÂt6{¦}+�øŸý¡¥v¥Mªk³r´ʶæ·«¹Áº]¼s½q¿Ë¿£Ã€ÖöÝåyî.ó†ùÿžÿI �7É"x_/^!} ClÞwǤäГ Ó!‚"_#×#q$V%×%Á&8'&(�()õ)f*¿*+Š+ã+I,¢,-{-ã-<.˜.]/Ä/0w0è0#1Â1~2à294¦45”5õ5c6Å6H7Ü839¦9é9.:s:µ:ù:=;“;ú;¼<Ç>?9?«?×@dABB¸BCjCDyDWEmF1G*IlIÀI/J©J?K�KÕKnLèLJSeUéWZ]²`Ùc÷g~l–oúu`v ||€$„-Š~‘Ø !¦¬7µ ¹vÁýÇÞÊ^ËGÌŽÌñÌYÍèÍLΰÎÏÛÐvÑÙÖ2×Œ×ØÛéÛhÝæÞ´ßêàMá›á-åÒæüç{è”éKð¯ò¤ö÷c÷ø4ùÜù“ú™ûDüeýCþm.( / Sw+,·(÷m#&(¹+ÿ268Ü9?²@¿AÌBDrEÅFHSIíJ(LYNØP†QêQRÜRRS¬S6TrTLU¦U V~V™XÐX$YZr[Í[5\½\J]Ö]G^Ñ^8_ª`#a¢a9b”bc:e„eÛe?fÁf˜gÔh�iã|ûó€\‚XƒM„E…¢…‡ʇˆ±ˆt‰Š¦Šu‹SŒn�Ë�Y‘÷‘DšK ¡Æ¡¢.£)¤ß¤•¥'¦•¦Ц?§´§B¨“¨ø¨]©¿©‹ª&«ë¬Ö¬‘­®¯Ï¯ξøÂ~ÇcÊëÎýÑ¡Û�ßàç°ì`õIûÅþ¬-¿Kbb#�+P-Ð-x.G/õ/˜0O1{2 33•G?KûRÎY—]êcAi;lAou£yË|I�À„†»†!‡5ˆôˆL‰±‰‘ŠØŠ*‹p‹¶‹LŒ�޾ŽÈ�'�‘”“u•Ô•g–K¦Ð«±­®]®4¯˰mµÞ¶ˆ¿ÏÉèË Î:ÔÙžãðä?æËêí†îðÜð9òÒóçõ>÷×÷pù-ú‰û"ýQÿÚ{œ±5“ŠyôÕ�í1á!i#X$-&'Ï'á(q)ë)Ž*{+m,µ-£.�/ 0o182Î2ø3»4“5U6%7ã7“8H9ÿ9¸:Ù;Ý<¨@^AXBYCFHyLMO�O-PR(SETiUˆV¥WÄXéY\—]½^ß_VaÍbòceŽf h£hYiÛik<k�kþk zœzó{�M�˜†¥‡5‰)ŠcŒ±�²ŽÃ�Ú’Ó•–ù–ù—¿˜}™8šôš œÒœ�žŸ‰Ÿ@ @¡J¢ó«߬5­N®%¯y¯F°2±ˆ±ŲB³–³k´Bµ˜µp¶í¶A·ª·ϸ%¹ý¹zºκ7»\¼²¼н¾[¾&¿ý¿SÀ0Á­ÁÂÌÂðÃFÄÅýÅZÆ»ÏìÐZÔ¯Ù|ÝCâã¸ãzèÊé)ê±ê9ë–ëŒìíìuíýí\îÏîÆïhðIùú_úSý¤ÿ9èŸgK�ì Å�? ' ì x ù z û | ·ª-QšQ T¨U¨WrZ.[Ë[[\Ð\C]¢]e^Ö^H_#`ª`â`7aµf i]lbo�pxrêtûxŠ{}€î�„‹5’–ˆ–—ª—B˜ɘc™ò™‡š ›�›œmœÜœP�à� $¡/¢t¢º¢£O£ž£ì£1¤w¤Ȥ\¥¦r¦Ϧ+§÷§Z¨ƨâ©Qª£ªøª�«µ«%¬¹¬í¬®n®¯¼¯‘°æ°{±[³è´�µR¶ ·r·Ö·;¸Þ¸6¹޹Bºùºd»Ï»'¼O¼ë¼Q½·½Q¾·¾¿ÓÂPÃ:ÄsÄÇÄÅoÅÅÅÆnÆÌƦÇXÈ­ÈYÉ’ÉÕÉ*ÊœÊ{˾ËÌh̾̃ÍäÍsÎÏÐVЙÐïЊÑ%Ò†ÒæÒuÓñÓKÔüÔXÕµÕÖsÖÔÖ5×–×ØÏØ�ÙQÚ²ÚDÛYÜïÜ£ÝÞdÞÄÞ$ß…ßçߺàeáÓá4âÀâZã»ãäväÍä6å~ç/èséäî³ðƒò¼ôõÃõ öOöÇö÷G÷ö÷<ø‚øÈøKù‹ùËù úÃú ûOû•ûÛûiü©üéü)ýiýþTþšþÿRÿ’ÿBˆÎ—×WêquÐ:¯ vbgl’-16È8é;$?°A`DrFÍG½JMµOsQ/SXT´VüY—ZÆ[f\]ô] _Ø_Y`WaÛa€bcfcÌc^d:egfðg@i¢l prqNr%st‰tžu>v¼yDzòzP}x~/B‚á‚¥„¿…ª†Ù‡9ˆáˆš‹Ë�PŽŒ��Ü‘ “7”ˆ•–}—Á—+˜˜Ô˜Y™�™ý™Rš§šýš\›º›œ�œ�žšžÔžRŸ¤Ÿ÷Ÿ5 � B¢£‰£]¤¬°¬%­Ê­f¯ ÑšÒâÒ4Ô¶×PØÆØkÙ´Ù\ÚÛ“ÛñÛ:ÜâÜ?݈Ý0Þ�ÞÖÞ~ßÜßWàÒãMäÄäkåæ”æ"è™è>éÖé{êôêXø„ùúùþZÑyŠ2Ѻpñš†8 ú qGà‘ì!ã"Z#O$Û$y(ó(i)*«*«+,•,51P4Æ4@9Š9þ9t:œ]æ]Ž^_ð_f`Û`ÆaUbåbEc¾c4d(e³eýn•oÊrKt^wúwÐxÄ€@�·�ž‡ˆŽˆ4‰ŠzŠðŠ•‹Œ‘Œ�©�ó�gŽ �†�¡¶9·ß·w¸¹h¹ß¹Vºÿº»»2¼Þ½f¿ªÁÓÂÆÄ®ÅëÇÓÈÝÐùÑÏÒÖšØÙçÙœèYéÐéwê+ëÑëÃìuí"îŸïHðÄðmñ ò²ò¯óUô ôõ»õö|ö!÷l÷â÷XøýøHù¿ùdú¯ú:ûßû*üµü+ýÐýþ‘þ6ÿ�ÿ ±ü‡ý£îe WãŠÕaØÊAè2 à j µ , Ó  ª Q œ (ŸF‘¯ùŠ ¦ñ‡2¨l+,,ð.M0’2á3Î7j8á8Š9ª:!;Ê;e<Ü<ƒ=�@A�A�B Cl`ÜaRb'cŽc¡deìe g±h@kÂqDrÓrû{}�}7~”=€ �Ð�l‚れƒ)„ „I…ã…Z†y‰ó‰iŠ‹ø‹oŒæŒ~ŽÌŽB�ç�}�Ä�’¾’Z“Ñ“û“/•ß•®– —À—6˜ܘ‘™šÜš›¶›,œМ~�ô�Éž?ŸÊŸ) Þ T¡)¢PÁ›ÁÂZÂ�Ä¿Éã͠΀à¾áTâàâåÓåJæ?çËçŒê~ëõëêìví­î9ðçð]ñ8ò±ó¢ô‹ö#÷™÷nø*ýÕýKþ^ ö l š÷Õ$]�9ÕLõ°'ÐM“8J ‘  !R!ê!3"Ï"F#ï#Š$%ª%u&ì&•'@(·(¬)F*¨*J+Â+:,ã,r-g.ó.ƒ5Î5x6$7¯7>8Î8/9·9,:Ò:~; <˜<(=¯AúA³B‘DZEßFáGSI5JæJªKmL¸L/M¦MNNþN�OcPÙPeQÆQRÌRhSÞSxTÚT£USVWNfgéhìi}j¶Œ�x�ï�ÅŽïŽÍ�£�e’á’X“”ð•g–Q˜D™Õ™S›£œkž³žYŸ·Ÿ¹ s¡�¢9£Ÿ£C¤Á¤Ž¥H¦V§¨ƒÃAÄÏÄ�ÇÈßÈûÊnËCÌËÎ>ÏÐÒØ”ÚBÛrÜ‘Ý~Þ\ß à2áõá‰âõãOåæ)ç[è†é‰ê°ëAìÎìÂíMîÎïËòXóÎóYôNõÊõAöíùiúàúÉýþˆþÿþÙÿ}ã™BìaOÔIì6ªÃ    »  · - Ð ® #ž3A}óšš „ ù n!ã!X"Ì"C#P'›'C(ï(d)>*Í*]+õ8?9ç9t:I;¿;4<=�=->›?@Š@~A BhBâBXC¶GHªH9I¯I%JK�K!LðN;OäOsPéP_Q:RÊRUéUDV«V,W¯W2XçXšYIZÆZ:[¥[Û\ ]§^…_ `³`FaÙalbàb’codeÃe˜fXg£gh‘h†ijrj½j6k­kXlZmnpæp?q¨q)r¬r/säs—tFuÃu7v¢vØw�x¤y‚z{°{C|Ö|i}Ý}�~lÿ¸€��M‚˜‚ƒ†ƒ{„…g…²…+†¢†M‡Gˆóˆé™�š÷šœ›%œkœ�e�»�žgž½žNŸÛŸÏ Z¡ü¤¦O§Kª4¬J°İγ´�´5µ°¸°¹û¹qº»{»U¼ä¼t½Ô½¾•¾ ¿°¿û¿qÀ¸ÀPÁZÖR×mÛ£ÜQÝÇÝ¢Þ4âã’ã‡äýäØåéêéyênëäë¿ìÙñuòìòáómô/öÊöA÷#ùSúäú iGVýŒ� œ*.+°+?,–,‹-.~/Y;¦;3<ª<Ÿ=+>Y?J{JpKüK[LñLgM NÁNO°ODP¢¡ /§ 4° à· ¿ ¬¿ ~À ‘Á à gà 2Ä ,Å pÆ Ê ½Ê «Ì µÎ NÏ ¬Ï õÏ SÐ žÑ nÒ ÙÒ šÓ ¹Ö lÙ Lß Ðá vã Õè Äì ï µð áö ‡÷ ø &ù šú È ˆ ¶ k  ƒ! î' Í8 ›E  F ¿G ÊH 9J �J GK ·K 4L ØL @DáH÷M©SxXeYŸ[y\^ô^a×c‚dePfgÑgŸh©iqjkÛkQst u–vwqxXyú|á}�‚Ûƒ>…,†‡úˆÙŠÓ‹|™›Õ›zœÉœ���OžGŸ v ð ¡¢¢¢t£Ö£þ¤¿¦7©êª´«ʬð­.¯~¯°ç°9±­±�²u´+µ2¶�¿IÍÑÞÓÞà 䔿„ìc� # «@8!'µ,Ú/6C:û=ÒK7OSpZ}dkOlNvŸz{ÿ{u|×|<}ž}÷}´~†èI€¢€ù�Yƒ›„P…}†‡ˆ½ˆŠðŠ ŒõŒ\�”ŽБ~’–“昞t¡äªݺgÃ1ÈœÏAØÝ¢áýåèÛêíðìñó÷óÞô·õàö¡÷}øbù"úûüûæüÀýS-`ºöéÜ ú@|!ø"Þ#Œ$(% &Ù'Z( )Û)Æ+-f4 5r5Î5C6�6ø6è7Ø8Ç9Ò:Û;Ÿ=<>õ>;@™@ÿ@[AÑA-BŽB#DhE]FnG£H€ImJ\KLLVMCN2O�OöOSPÇPƒQ¥R–S‡TwUƒV¥WCX½YZ�ZÞZR[«[\ø\é]Ù^å_ a7b'cdœeùe`f½f1gŠgæg×hÈi¸jÄkìlnoöozq×q>r›rshsÄsµt¦u–v¢w­xã{´| }‡}Z~EL€l�£�‚ɂÔ„ê„(†û†æ‡íˆ`‰—‰ŠÒŠЋBŒ˜Œµ�‹Ž��[�×�‘Ç‘4’“K“ë“E”g•è•‹–É—™ö™4›,œ¡�Ú�šž ŸêŸ& È ê¡B¢+£Í£¡¤v¥J¦§ý§ê¨b©�©ªoªª«%¬;­t­4®¦®…¯À¯:°\±´±�²³å³éÕ ×ÐÛålåÃæ+çcèéÛé–ëYì�íÏî~ñõTø¯ú’ü-¬z BÙHpÔ ê$*(q+u0V9³?÷AÁCÐDøEH;IµKµNcO½OñPNQÀQ4R‰SãS VcV_WéX½_cïfWhoiþkTosÂt6{¦}+�øŸý¡¥v¥Mªk³r´ʶæ·«¹Áº]¼s½q¿Ë¿£Ã€ÖöÝåyî.ó†ùÿžÿI �7É"x_/^!} DlßwÇ¥äÑ“ Ô!‚"_#×#q$V%×%Á&8'&(�()õ)f*¿*+Š+ã+I,¢,-{-ã-<.˜.]/Ä/0w0è0#1Ã12á2:4§45•5ö5d6Æ6H7Ü839¦9é9.:s:µ:ù:=;“;ú;¼<Ç>?9?«?×@dACB¸BCjCDyDWEnF1G*IlIÀI/J©J?K�KÕKnLèLJSfUéWZ]²`Ùc÷g~l–oúu`v ||€$„-Š~‘Ø !¦¬7µ ¹vÁýÇÞÊ^ËGÌŽÌñÌYÍèÍLΰÎÏÛÐvÑÙÖ2×Œ×ØÛéÛhÝæÞ´ßêàMá-åÒæüç{è•éKð¯ò¤ö÷c÷ø4ùÜù”ú™ûDüeýCþm/( / Sw+,·(ùo#&(»+ÿ268Ü9?²@¿AÌBDrEÅFHSIðJ+LYNØP†QêQRÜRRS¬S6TrTLU¦U V~V™XÐX&YZr[Í[5\½\J]Ö]G^Ñ^:_ª`#a¢a9b”bc:e„eÛe?fÁf˜gÔh�iã|ûó€\‚XƒM„E…¢…‡ʇˆ±ˆt‰Š¦Šu‹SŒn�Ë�Y‘÷‘EšK ¡Æ¡¢/£*¤à¤–¥'¦•¦Ц?§´§B¨“¨ø¨]©¿©‹ª&«ë¬׬‘­®¯ЯξøÂ~ÇcÊëÎýÑ¡Û�ßàç°ì`õIûÅþ¬-ÀLbb#�+P-Ð-H/*0™0P1|2!3€3˜G?KûRÎY—]êcAi;lAou£yË|I�À„†»†"‡5ˆôˆL‰±‰‘ŠØŠ*‹p‹¶‹LŒ�Ž¿ŽÉ�(� ‘”“¨•Õ•h–M¦Ò«²­®]®4¯˰nµß¶Š¿ÑÉêË Î<ÔÙ ãòäAæíˆî!ðÞð;òÔó@÷Ù÷rù/ú‹û$ýÜ}ž³X�7•Œ{×�ï3á!i#X$-&'Ï'á(q)ë)Ž*{+m,µ-£.�/ 0o182Î2ø3»4“5U6%7ã7“8H9ÿ9¸:Ù;Ý<¨@^AXBYCFHyLMO�O-PR(SETiUˆV¥WÄXéY\—]½^ß_VaÍbòceŽf h£hYiÛikv¼yDzòzP}x~/B‚á‚¥„¿…ª†Ú‡:ˆâˆš‹Ë�PŽŒ��Ü‘ “7”ˆ•–}—Á—+˜˜Ô˜Y™�™ý™Rš§šýš\›º›œ�œ�žšžÔžRŸ¤Ÿ÷Ÿ5 � £‰£]¤°¬%­g¯šÒ5ÔPØÆØ�Ù´Ù\ÚÛ“ÛÜ:ÜâÜc݈Ý0Þ±ÞÖÞ~ßWàMäÄä¡åæµå”æ"è™èÖéôê„ùúùZÑŠ¼¯š†ú qG‘ã"Z#O$Û$ó(i)>*«*b*«+,•,P4Æ4d9Š9þ9t:À]æ]Ž^_ð_f`Ü`ÆaUbåb¾c4d(e³e•oNtúwÐx@�·�ˆŽˆg‰ŠzŠðŠÁ‹ŒÕ‹‘Œ�Í�ó�gކ�9·w¸A¹h¹ß¹Vº»»2¼h¿Õ°ÅÕÈùÑÏÒšØÙçÙYéÐé+ëÄìvíŸïÄð ò¯óyô ôõßõö|öE÷l÷â÷Xø!ùHù¿ùˆú¯ú:ûü*üµü+ýôýþ‘þZÿ�ÿ Õü‡ýÇîe0Wã®ÕaØ£ÊA 2 à Ž µ , ÷  ª u œ (Ÿj‘ÓùЦñ2¨,,P0ä3j8á8ª:!;e<Ü<A�A�B CÜaRb'c¡deìeDrÓr}�}”!�l‚ã‚)„ „ã…Z†ó‰iŠK‹ø‹_‹oŒs‹æŒÌŽB�}�’Z“Ñ“0•®–À—6˜‘™šÜš¶›,œ~�ô�Éž?ŸÊŸÞ T¡)¢tÁ›ÁÂ�ÄÊãÍʠξáTâàâÓåJæ?çËç~ëõëêìví9ðçð^ñ8ò£ô#÷™÷nøÕýKþö l ú'�ÕL°'úM“J  !ê!Ï"F#Š$%u&ì&@(·(¬)F*Ø*J+ì*Â++:,ã,r-g.ó.§5Î5x6$7¯7>8Î8[9·9n9,:Ò:~; <˜<(=ÓAúA³B[EâG6J«K‘L¸L/M¦MþN�OcPÙPeQêQRÌRhSÞSxT¤UWgíi~jÚŒ�x�ï�ÅŽÍ�£�á’X“ð•g–E™Ö™¤œ�ž³žYŸº t¡‚¢:£Ú£D¤î£¤�¥I¦W§¨BÄÐÄÛÇÈáÈGËpËEÌÏ@ÏÐAìÎìÂíMîËòXóÎóYôÊõAöiúàúíýþˆþÿþÙÿ¼äšìa(OÔI6ªé    ã  · - ® #¾3}óÚšî „ ù *n!>ã!RX"Ì"C#t'›'C(ï(e)>*Í*]+9?9ç9t:I;¿;5<=�=->@Š@~A BâBXCÚGHªH9I¯I&JK�K!LO;OäOsPéP`Q:RÊRUéUDV«V,W¯W2XçXšYIZÆZ:[¥[Ü\¡]¨^†_ `³`FaÙalbàb’codeÄe™f|g£gh‘h†ij–j½j6k­knpæp?q¨q)r¬r/säs—tFuÃu7v¢vÙwžx¥yƒz{°{C|Ö|i}Ý}�~lÿ¹€Ž�q‚˜‚ƒ†ƒ{„…‹…²…+†¢†Hˆôˆ�š÷š%œNŸÛŸÏ Z¡¦O§6¬İò³´�´°¸Ô¹û¹qº»|»U¼ä¼t½ø½¾•¾ ¿Ô¿û¿qÀPÁS×£ÜQÝÈÝ¢Þã’ã‡äþäØåêéyênëåë¿ìuòìòáómôÊöA÷TúåúG VýŒ� °+?,–,‹-.};¦;3<ª<Ÿ=+>J{JpKüKñLgMÁN:O±OEP�¡ § ° Ë· ¿ —¿ iÀ |Á ÿ Qà Ä Å ZÆ øÉ ¨Ê –Ì  Î 7Ï •Ï ÞÏ <Ð Ñ ‡Ñ WÒ ÂÒ Ó ƒÓ ¤Ö VÙ 7ß »á aã Àè ¯ì ï  ð Ìö r÷ ø ù …ú ³ s ¡ V í l! ×' ¸8 †E ŠF ©G ´H #J zJ 1K ¡K L ÂL &M ›M þM UN ÊN ¥O _P wQ ¤S W WX ¯X Y 8Z •Z ØZ /[ ‡[ ê[ c\ ý] 7^ {^ Á^ _ Y_ Ÿ_ ` Ja „a Ça b ^b ¤b c d id ºd ýd Ce èe áf bg ¨g ðg 7h ~h Æh i Ši \j l ul Ïl Am !n ·n %o Ýo ip òp Sq jr ¾r s €s [“ š• è— Ã™ _Ÿ y¢ ¢£ _© \­ á° t± ß± ;² �² ܵ .È É aÉ gÜ KÝ šÝ ©ì §í Øö Ø÷  { y ¯& 90 Æ7 ª; ‘< Ð= ·> J „N QP •S V X üX ¿[ \ Ä] V^ ñ^ ê_ Z` a Ša úa }b c mc Xd e €e :f ¡f g jg Ìg +h Šh ïh ci Ìi Mj Új gk Ðk  l m Œm n n èn Qo ºo -p ¯p 2q ýq 9r Þr ßs Hƒ â� 7š È  °° þ¼ »Ì L× %ß Šñ Oü °ü Wý þ žþ ´ÿ t:ÕwÞ}' í ~ G ¨ †6 [ <̳ñJÃî1€Æ0òÁ !H!¼!~"J#ƒ#$&E&‰&Ü&1'‰'á'9(‘(Ê)5+�,Æ.{0÷0_1ø1”8Ô;¾>@DÊHàM’ScXNYŠ[d\^Ü^D_ì`Âcmde;fg¼gŠh”i\j kÅkóJ¤áÔÆ l » íäšé+g!á"T#È#u$%£% &V&°&Â'C(õ(Ä)‡*°+Ž,-.v.N4ô4Z5¶5+6…6à6Ð7À8¯9º:Ä;Þ<‡=%>Þ>#@�@ç@CA¹ABvBeC´C DùDPEEFVGŒHiIVJEK5L?M,NOxOßOŠ»Š3‹º‹,Œ‚ŒŸ�ï�uŽêŽî�D�Á�ø�J‘±‘’n’ù’5“Õ“/”Q•Ò•u–[—³—™˜ñ˜à™Æš›œ�‹�Ä�ž„žöžIŸÔŸ ² Ô¡,¢¢£·£‹¤`¥4¦ §ç§Ô¨L©‡©ÿ©Yª”«¬%­^­³­®�®ã®o¯ª¯$°F±ž±ñ±w²ò²ϳÔÕ÷Ö»ÛüäW宿çqçNèéÅé�ëDì{íºîiñûô?øšú}ü—ìïe -Ä3[½ ƒ!Ó$(Z+^0A9ž?�@ì@;AŠAàAäBHCªC¹DáEGèGPH#I‹I K NNO¦OÚP7Q©QR SrSÌSõULVJWÔX¨_úbMcÚfBhZiék?oër­t!{‘}�ãŸè¡¥_¥À¥8ªV³]´µ¶Ñ·–¹¬ºH¼^½\¿´¿ŽÃkÖáÝådî óqùðþ‰ÿ4ý‹n"´ bÂJI h .WÉb²�)xÍN¹| í Y!¼!k"H#À#Z$Þ$?%À%;&ª&!'’'(†()s)Þ)O*¨*+s+Ì+2,‹,ü,d-Ì-%.�.F/­/0`0Ñ0 1«1g2É2A3´3"4�45}5Þ5L6®617Ç89�9Ó9:]:Ÿ:ã:';};å;§<±>ê>#?”?ü?_@Á@OA+B¡BúBSCýCbD¶DBEXFGIWI«IJ”J*KlKÀKYLÓL5SPUÔWZ]�`Äcâgil�oåuJv |g€„Ši‘à ¦¬"µ÷¸aÁèÇÉÊIË0ÌwÌÚÌBÍÑÍ5ΙÎÿÎoÏoÐÄÐaÑÄÖ×uר»Ø ÙÛ~ÛÓÛ3ÜSÝÑÞIßžßþßÕà7á�ãßãå‘彿çççfèé6ðšò�öëöN÷ò÷NøùÇù~ú„û/üPý.þX÷ >ïb¢âX#ù%ý'¤+ê2!8 9o9Å9É:-;j?›@¨AµBD[E®FûGŒY�¶�D‘â‘/š6 ê ±¡ ¢£¤ʤ€¥¦¦º¦)§ž§,¨}¨â¨G©©©ªuª«­«¬À¬{­ó­¯º¯Y°¹¾ãÂiÇNÊÖÎèÑŒÛxßËç]è›ìKõ4û°þRÿÇÿ—¾3ªR6ÚMM#l+;-»-2/�0:1f2 3j3€G¯H*KæR]S¹Y‚]^Õc,i”i&l,o uŽy¶|4�«„ò…¤† ‡ɇˆ|ˆ݈5‰š‰í‰zŠÁŠ‹Y‹Ÿ‹7ŒþŒŽ©ŽH�³�� ‘“¿•R–6¦š§»«­œ­®F®¯û¯U°´°Xµɶs¿ºÉÓËôÍ%ÔÙ‰ãÙä(æðìqî ðÇð$ò½ó)÷Â÷[ùútû ýÅfŇœh ~ud¾vÖúÌ!T#C$&û&º'Ì(\)Ö)y*f+X, -Ž.x/‹0Z1#2¹2ã3¦4~5@67Î7~839ê9£:Ä;È<“@IACBDCúEHdLïLîNzOP“PîQS0TTUsV�W¯XÔYë[‚]¨^Ê_Aa¸bÝcþdyfôgŽhDiÆiíj%k†kçk…zÞ{{8�Ž�¿� ‚ƒ†�‡ŠNŒœ��Ž®�å‘’M’…’¼•–â–�—â—¨˜™f™!šÝš œ†žüžrŸ) +¡5¢Ý«ɬ­—­8®°®¯c¯0°±r±ê±G²¯²,³€³U´,µ‚µúµZ¶×¶+·”·¸¹¸¹‡¹ç¹dº¸º!»«»F¼œ¼½t½ñ½E¾¿ç¿=ÀµÀÁ—ÁëÁ¶Â?ÃÚÃ0ĨÄňÅçÅDƦÏ4ЂÐÕÐEÔšÙ(ÚgÝ.âüâ£ãeè´éê›ê#ë€ëvì×ì_íçíFî¹îFï°ïRð4ùíùJú>ý�ÿ$ÓŠR6l×ö°w)  Ö c ä e æ g  ¢•Q„Q÷S“UBV“W]Z[¶[F\º\-]Œ]O^À^3_ `”`Ì`!a f‹iHlMozpcrÕtæxu{h€Ù�„Ú‡w‹ ’ð•s–—•—-˜´˜N™Ý™ršøšz›œWœÆœ:�Ë�¬ ¡¢^¢£¢é¢8£‡£Õ£¤`¤²¤G¥¦\¦¹¦§á§D¨°¨k©Ì©;ª�ªâªk«Ÿ«¬£¬׬™­®X®í®¦¯°{°аe±²}²Ù²E³¡³ ´f´Ò´‡µ<¶ö¶\·À·%¸ȸ ¹x¹ʹ,ºãºN»¹»Õ¼;½¡½;¾¡¾¿¾Â;Ã$Ä]ıÄÅYŝůXƶÆ�ÇBÈ–ÈCÉ|ɾÉʇÊe˨ËýËR̨ÌmÍÍÍ\Î ÏêÏ@ЃÐÙÐtÑÒpÒÏÒ^Ó4ÔåÔAÕžÕýÕ\Ö½Ö××ì×HظØyÙ:Ú›Ú/ÛéÛØÜŒÝíÝMÞ­Þ ßnßÐߣàNá¼áâ©âCã¤ãþã_ä¶ä åêåJæ¬æçhçèžèüè]éáé<ê—êòêMë¨ëì^ì¹ìíoíÊí%îÎî�ðlò¦ôõ­õóõ9ö±öñö1÷à÷&ølø²ø5ùuùµùõù­úóú9ûûÅûSü“üÓüýSýøý>þ„þüþ<ÿ|ÿ,r¸þ�ÁAÔ[_º$™÷`MRW}-6³8Ô;?›AKD]F¸G¨JM O^QSCTŸVçY‚Z±[Q\ù\ß]÷^Ã_D`AaÅajbìbQc·cId%eRfÛg+i�lôo]q9rsístt‰u)v§y/zÝz;}c~-‚Ì‚�„ª…•†ć$ˆ̈…‹¶�:Žw�ý�Ç‘÷’"”s•–g—«—˜i˜¾˜C™‡™ç™<š‘šçšF›¤›ù›‡œúœž„ž½ž<ŸŽŸàŸ y ÿ¢t£H¤›¬­Q¯…ÒÔ;ر؞ÙGÚóÚ~Û$ÜÍÜrÝÞÀÞißBà8ä¯ä æ~æ è„èÁéßêoùåùE¼þu¥Úƒúqå \2|óÎ"E#:$Æ$Þ(T)”*”+ ,€,;4±4s9é9_:Ï]y^_Û_Q`Æ`±a@bÐb©cdeže€o6tåw»x+�¢�ˆyˆï‰eŠÛŠŒ{ŒïŒÜ�RŽq�$·b¸Q¹ʹAº¦»¼Q¿¾Â™Å¾ÈäѺ҅ØüØÒÙDé»éë®ì`íŠï¯ðôñšó‰ôõïõgöU÷Í÷Cø1ùªù˜ú%ûü üýþ|þjÿ÷ÿårè×P@ξLó, ® ž   • … Šzóâu‘Ü“ó+j,80Ì3U8Ì8•: ;P<Ç<y@AxAlB÷BÇa=bcŒde×eœh+k­q/r¾r}z}ð~ �W‚΂„‹„Î…E†Þ‰TŠá‹XŒÏŒgŽ·Ž-�h�ú‘E“¼“•™–«—!˜|™ò™Çš¡›œi�ß�´ž*ŸµŸÉ ?¡¢„ÁüÁxÄÎÍ‹Îkà©á?âËâ¾å5æ*ç¶çiëàëÕìaí$ðÒðHñ#ò�ô÷„÷YøÀý6þá W â{À7›6~5 ö Õ!º"1#u$ì$`&×&+(¢(—)1*3+«+#,Î,]-R.Þ.·5c67š7)8¹8 9:½:i;ô;ƒ<=ãAžBEEÌG J•K¡LM‘MéNxONPÄPPQúQ·RSSÉScTŽUWðf×ihjêŒc�Ú�°Ž¸�Ž�Ì’C“Û•R–/™À™ŽœžžDŸ¤ ^¡l¢$£,¤ª¤y¥3¦A§ù§,ĺÄëÇÊÈWË.Ì'ÏþÏÚ-Û]Ü|ÝiÞGß‹àáàátâàã:åæçFèqétê›ë,ì¹ì­í8î¶òCó¹óDôµõ,öTúËúüýsþêþÂÿqå>Ì„×L8¿4• ú‹  ö ¢  ™ ©hÞ„ùn ã X!Í!B"·".#„'.(Ú(O))*¸*H+(9Ò9_:4;ª;<ù<ˆ=>ÿ?u@iAôAÍBCCêG•H$IšIJëJ{K L$OÏO^PÔPJQ%RµRFSòTÔU/V–VWšWXÒX…Y4Z±Z$[�[Å\Š]‘^o_ `ž`1aÄaWbËb}cXdíd¬eƒfŒgh|hqiýi¦j!k˜kEmùmïoÑp*q“qr—rsÏs‚t1u®u!v�vÂw‡xŽylz{›{.|Á|T}È}z~Uê¡€x��‚ú‚qƒf„ò„›…†�†2ˆÞˆlšâšœùœO�¥�û�Qž§ž9ŸÆŸº E¡­¦:§¬¯°´z´›¸M¹ä¹\ºñºf»@¼ϼ_½¾€¾ö¾ä¿\À;Á=׎Ü<ݲÝ�Þîâ}ãräèäÃåÕédêYëÏëªì`ò×òÌóXôµö,÷>úÏúT2Aèwlø+›+*,�,v-.i/�;<•<Š=>ïIfJ[KçKÜLRM¬N™O/Pº4 5Ú546Ž6è6(7P8[8ß87>B>º>Å>? ?F@Q@A™AQB\B¼BÇBÒBJCUC`C¥C°C»CÊCaDfEqEåEðEJFUF°F»FHIíI.J|JïJâP\Q§U$Y/Y~Y9Z›ZÿZD]8^�_å`:a§b!c¸gÃgÎgiui€iÔiCj¥jújJk`l´lmbmmm·mWnbnmn1pzˆzîzúz{{o{¼{ |\|¸| }m}Ô};~G€��%�v�…�“�¡�¯�½�3‚>‚‹‚f‡ö‡±‰;ŠFŠè‹ó‹þ‹Œ¿ŒÎŒX�¦�±�ñ�û�ŽŽŽ#Ž-Ž�ލŽD�O�_�n�|�Â�Ñ�á�ß‘ê‘=’H’u”€”&•q•Ì2"3-383x3ƒ34Å45Y5d5�5¨5³5¾5Ê5å56)6?6x6ƒ6™6Ò6Ý6ó637h7s7E8f8©8ê8k9v9;:F:‰:”:â:0;Ÿ;ª;Z<e<p<²<½<!=,=7=C=S=‰=”=,>M>¯>Ð> ?+?e?p?{?†?‘?œ?§?³?Ã?Ó?Þ?@@*@6@\@ž@ AMAXAŽA¤AÚAåAFBgBCoCÙCDlD¦D±DÿD E|EûE`FÆF5G@G8HCHNHœH§HôH=ISIøI9J‡JúJ4KnK¨K³KíK'LaLlL¦LàLM%M_M™MÓMÞMNRNŒNÆNO OEOOÃOÎOÙOP&PhPsPíPgQ«Q¶Q R+RnRyRÊSÕSàSìSüS–T¡T¬T!U,U7U†U‘UœU²U(V3VsV~V‰V”VèV,W7WzW…WÇWÒWXXY:Y‰YêY.ZDZ¦ZéZôZ [Y[d[³[¾[É[\#\h\s\~\‰\•\¥\ô\ÿ\ ]O]C^Z_e_q_Œ_À_Ë_Ö_â_ò_&`1`<`H`X`�`¨`³`¾`É`Õ`ð`Eaˆa“ažaàaëa-b8b²b,c|c‡cËcÖc'd2d’d�deLe�eÔeße"f-f|f‡fÊfÕfàfìfüfpg{g†g‘gœg¨gÙghh)h4h@hPh`hkhÂhÍhØhãhïhÿhi%i_iji‹ißiNj°jk?kUk‹k–k¡k¬k·kÂkÎkÞkl#l.l9lDlPlkl¿lmnLnxn²n½nÈn&o1ogoro&pGp„p°pqTq_q²qûqrrr'r3rCrŸrªrµrÀrËr×rVsŸst­tbuovâwíwøwxxx*x]xhxsx~x‰x•x°xçxýx4yJy„yIzz{±{Ç{||Q|g|­|Ã|}+}b}x}É}ß}0~¾~Ÿªäïú€€€,€<€R€Œ€—€¢€­€¸€À΀Ú€ê€ú€Ë�‚ ‚‚#‚I‚€‚–‚ЂÛ‚æ‚ñ‚ü‚ƒƒ#ƒ3ƒ>ƒxƒƒƒŽƒ™ƒ¤ƒ¯ƒ»ƒ˃Ûƒæƒñƒ„„ „/„=„K„Y„g„á„ì„<…œ…u„¯„º„ńф÷„1…G…‘…§…²…Â…Ñ…á…ð…þ… ††(†¢†­†ý†[‡6†p†{†††’†¸†ò†‡P‡q‡µ‡À‡ˆ�ˆ›ˆ¦ˆ±ˆ¼ˆȈ؈�‰›‰¦‰¼‰ŠQŠ‹Š8ŒrŒ}ŒˆŒ”Œ¤Œ´ŒÙŒ��c�:ŽÀŽüŽ���(�4�ñ�3�>�I�T�_�j�v�†�É�Ô�ß�ê�õ�‘ ‘‘_‘j‘u‘�‘‘‘Ô‘õ‘2’S’¬’·’Â’Í’Ø’ä’ô’3“>“I“T“_“j“v“†“‘“œ“§“³“ÓC”N”Y”e”‹”͔ؔ1•úÆ ÒÙ ¹ %" ª( {O Åk üm ²n Óo dp t – Kd e µ R<ƒI›N´TZl´ÍŸÞ—à³ä{çxí=ƒ [ ”{3}=@Vê|õ}!“%î(�,“1Ãd#p ^"ÎUûš  $Ó&2)Ù,SZ`Z``+›e­�HœH©HLj§•§­­£ÀêÊÍ*ÏEÕ"ÚËäækç)ë¸ëâï»ðÏñ•óEöÔö3ù úûåü±ÿp>{t´Ë5BáîERMZYfJW§´`mãðÑzãzT{a{¿‚Ì‚y‡†‡kŠxŠ‹‹l�y�†Ž“Ž—�¤�@“M“3”@”ǔԔ@•M•£•°•É–Ö–ò›ÿ›w�„�mžzž¡ ¡¢)¢v¬µ°Ú´¸¦»•¿:Ã/Ð#Úékì@ï1ðÛðS í Ì ÏPRjÙo×§¤¨_«—¬á®Y±¼¸žº8ÈcÍjÑÒmÙ.Ú—àBá…ð’ðTòaò#ô0ôvôkõ•÷Yú¶ýáÿ¤RÖãçE9f<¥[mkpraì¥ìWíäñ@ÈÁȬË%Ì|ÏõÏ{ê)º<¬JæQ•\z]a^__�eSf£l×?A»EqJ;LQUüWòZÜ\ó_2bd®dÍe½fÛgoaps*tƒ}ì}�~ø[�냢‡ ˆ«ˆ¬‹Ã�z�H“Œ•z·ÐçÐÃÑoÞ ßRå"é†é#ì�ì1íÖí?òìò˜óØô ö%÷ýN½ ] §   f¿M*Á0 5«5Q67À;ï?þB°K^N0W[._Î_n`4aìj4sýv»€½„”•‚™+žËžf §¡\¥Xª ®×·Ú¸(¾™¿´ÈMÍEѰÔH×à×½ÚK۱݉àá�ã�æ>ê£íJîñî˜ï?ðþðó|ö*ü�ÿø¶É2›Å­N^(™)ë,�/®2HBëBŽC1DZGõIFO“T‹«β€³cÍÐEÚ&+&,-Í-�.ñ0¨1�2»3·4g56Ç6w7™8P9:¸:\[‘_.abMi�jtk»nup×}Þƒð„Y…Â…,ˆ™;š‹�0 ¢W¯ú¯�° ´ȵ"ºܼIøèø—û¯ü¬ý]ÿ’ñ ±hŒ_ æ&|'à'b+Ò;ž?XA„D%FîHoIJQPºjók q­qzw[{|à}­~ƒM„=…5†P‡ˆûˆQ‘¥¤ ·†ÃÄÍÎ_Üw߀âë\ô*õøõïö`ù�ü'ýÊý|ÿÍrÚ€ # ,  ±·]ƒ9Ä _%Û&‹'(Î(ì+[1è2Ã4uJæOÝPº\Æd#e•eKfKgògßhÅikbm¯nüoáp±s¡v wýwÓxÚy¯z–{j|;}~à~´‚T‰Ø�Â�q˜\™¬Ƭw­6¯ʰL´–·­º‰»›¿ÇAÊ|ÍѪԂÖ:Ø ÜKázã§å*çXè\éøë'î²î¯ð°òãó�ô>õÈýkþ1 Ñ < ñ £  % ë ±! ¾$ Ú) 4- ´. ²3 >4 Ú8 -B )I 'O T �W Ç] »` th u \y Ýz º} _~ ±€ –� s‚ Qƒ ïƒ R„ µ„ u… n† h‡ ˆ ›“ Aœ � S§ ¼¨ ;² ² Þ³ ½´ ®µ Ÿ¶ U· F¸ ì¸ ¾» ·¼ a½ e¾ „¿ pÀ * ó D Ì T  0 rA ÌB ´C IO ¨O ÐQ S æS ·T ~U QV ÕZ a b @c Ác =d ¦d Fe æe Of "g ‹g ðg ýh ×i Pm óm �n Ko �p ‹q �r vs jt u ¸u õv ê| p} ‹~ ô~ =„ † p‡ Ù‡ {ˆ ‰ ì‰ UŠ $‹ › ï› õ· θ SÁ °Ê Ð xÓ LÕ K«®X±r²~³+º­ÁûÐÍfÈ  õ»5l*Zž{ Ã"–%Nuj{މfŠÿ‹¨�]–’˜·›Ê &¨éª¬«³Ùµ͸;¹¹ÃtÄ¡Å�ÈúÌ%Ï€ÒÞÒçÓIÔRÕÒÕ&Ößք׿Øþò˜ó¿ôõ¸õç ®M{3H !0"�$V'ƒ)‡*®+T.ùhþi köll{…ª‘î“2–&›&žœ¤¯³fµè߆â¶ã¶þŒ/¹L¾�½Œ¾ëÀèÁñÂHÄXÅUÆ^ÇDÌæÍãÎìϧÓçÙçæè›ì½ñsõ ùÄùÑú‡þNu6bñ  ÔDÃLaWßXZç\Y`™adlßw]xàŠ¯�ß•j˜ ›ÁŸ;¡œ¡Ê¢ͦ�í÷í•ï÷ñxóõ™ö:øù±úiû–üiV “ Ƨc�œþ Ž› Ì"«#$­%ð&ü($*§>iBáIaJ4\4]g^½^@fóf#hyháqKr§rt±uÏwÐxiz{A|$�G‚ˆ± ·´¾�À°ÂçÉžÆÏÈÔÊ…ÎtÓnÔxÕ}ÖØ Ù¾ÚÜQÞXßõàeá¾â%ãæpæyëÞë2ìí»íˆîðîJï#óÓóÑ÷tœ®ä™¦ ?Äy u±!�#o%žJLºM¿NÌOT�Ú�䥟¦Чá«%²æ²´¦¶YÏÄÏ`ѺÑÓvÓ”ÕîÕÄÙÄÚ½ü ´¹EFnI¼IíbRcÍc!dg‡"ˆî�¦ŽçßCàö÷6û¸ü§6 ­7 t@ &A ‹G &H ýL ÔM äT õU ”^ Ž_ ˆc hf Âu Sw Öˆ ]� Ž£ ó£ G¤ ¥ Ð¥ †¦ ž© ª « €« Ô« ¬ $­ Ú­ [Á øÁ à tà Ä ÔÄ Æ gÆ ìÆ BÇ ûÇ ÎÈ †É PÊ ´Ê 3Ë ‰Ë 8Ì Í ¸Í OÐ íÑ ^Ó cÔ ¦Õ ëÖ .Ø sÙ "Ú jÛ 8Ü þÜ !Þ Yß Yà ëè ]ê Yá â ã tã Gä ÿä æ Jç bð Sò Äó Ëô ö Q÷ ”ø ×ù †ú Ìû ˜ü \ý �þ ¹ÿ ¹ ) — ¹ n w Í • J S ˆ » ¹ h Ð , Å  „ ò $( Ø) + , z9 |: Ð: †; V< = Ù= ‘> š? L@ GP ej Éj k &l 2x œx 9z •z ž{ [ Å g� Ã� Í‚ ô‹ /� ÑŽ -� {� k‘ “ ‚” ´• – ˜ j˜ öœ T� ¥� ±ž Ÿ ¼Ÿ »  É¡ ¢ ó¢ º¥ ª ᪠?² b³ µ _¶ ĪÖ ¦ ‘ € ä!ºˆ$‰••ù•ñÂUÃÅÙ«ÚúÛIݘÞçß°à‚âúâä2åMæhç-éÇê–ìeî4ðòß7cŸÍ Îáå ç Dé &’*1MXPŽVÎ_îé Gê Ÿ® ¼¯ b± Ù± ?³ 6µ '¶ · η o8 ×8 Zò Ýò ½¹ ÚÀ ÙÕ )Ö yÖ ÉÖ × j× »× Ø \Ø ¬Ø ûØ JÙ šÙ êÙ :Ú ŠÚ ÛÚ +Û {Û ËÛ Ü mÜ ¾Ü Ý _Ý ¯Ý Þ QÞ ¢Þ óÞ Cß •ß çß 9à Šà Ûà +á {á Ëá â lâ ½â ã _ã °ã ä Qä  ä ïä ?å �å {æ Ìæ ›ç íç >è –è íè S6.7 8ä8¿9š:u;P<+=>á>¼?—@rAMB(CDÞD�é ÒöËù¢ê ÷ê Fë ”ë íë Pì ¡ì òì Cí ”í åí 6î ‡î ×î &ï wï ‚Î õÎ iÏ ÜÏ  Ò Õ VÖ ™× ÞØ Èï ð •î ï |ï ïï ó yõ ¼ö ÿ÷ Bù pð Äð ñ hñ ¸ñ ò aó ²ó ô Á à k Pv©ÏZ€• ¯"°Ùü²ÐðÝ)ý))ÞÒøK ßk ·¾öuG ª» £¼ M½ . B =9 Q9 e9 ®À ÄÀ =Á ªÚ=ÞQá»÷3øíea^@ VÛ $Ü êÜ ¸û „ü Hý R X l € ” ¨ ¼ ( )ºµÆÂÇ&ÈŠÈ¢É&ÊÖÊ>˦ËdÌ`ÍÆÍ,ÎÛΓЬÕÑæê�íNùùâ!?,4Ú6²7l=@â@ðE GªKÆL¬Q~VÐXe[9_’g²iíl¹n1q)sLuT…ø†¸ˆ“•©³ïÂâ�â,éÆê•ìdî3ðò²ø|ûýÍþå ��F ¸1ç6Ý7÷8ˆ;°>Õ?A¹EoJ9LQUúWðZÚ\ñ_0bd¬dËe»fÙg÷h_ps(tj{ê}Ž~öQ�郅 ˆ©ˆª‹¬�x� ‘ì“0–ÐÙнÑmÞßâß é„é!ì�ì/íÔí=òêò–óÖô ö#÷ý´þ» [ ¥   d½K*Š/ 5©5O67¾;í?üB®K·L.W[,_Ì_l`2aêj2sûv¹€¼�’•€™)žÉžd ¥¡Z¥Vª®Õ·ظ½оéÀBÌäÍ¥ÓF×Þ×»ÚIۯ݇àá›ãŽæç™ìHîïî–ï=ðüð»ñqõù…þLï Ç0™ÃPL\(—)é,Ž/¬2FBéBŒC/DÒDóIµL‘TSW̲~³aÍþÏ?ÚŽí$,-Ë-.ï0¦1‹2¹3µ4e56Å6u7—8N9:¶:¥>2\,a b>fŽjnkInpßq"�î„W…À…χÿ˜9š‰�. ¢U¯ø¯›°†±Ƶ’·Ú¼¦¾Ðø•û­üªý[ÿ�ï ¯fr!!z'Þ'`+Ð;œ?5A‚DFìHmIJœJ¸jÅkq«qxw{|Þ}«|ƒK„;…3†N‡þ‡ùˆR�£¤Ð¥„ÃÄËÎWÏuß~â ëZô(õöõíö^ùü%ýÈýzÿYpØ~ ! * ˜ ¯µ[�$P]% &‰'(Ì(‘*Y1æ2Á4Q60MWP�VÍ_!e“eIfIgðgÝhÃik`m­núoßp¯sŸv wûwÑxØy­z”{h|9} ~Þ~²‚e‡ì�À�o˜Z™¬Ĭu­4¯ȰJ´”·«º‡»™¿Ç?ÊzÍѨԀÖ8Ø Üåßxã¥å(çVèZéöë%î°î­ð®òáóŽô<õ¼öiþ/ _ : ï 1  # é ¯! ¼$ Ø) 2- ². °3 <4 ¥6 \@ sG ûL T âT Å] ’^ †c u Àu Ûz ¨} ]~ ¯€ ‡� q‚ Oƒ íƒ P„ ³„ s… l† f‡ ˆ Ôˆ ?œ � Œ£ º¨ œ© À² >³ »´ 5µ &¶ ÿ¶ Í· ê¸ 9» ¡¼ K½ c¾ ‚¿ nÀ YÁ ñ ¹ @ R  . ‚ ÊB ²C GO ¦O EP S äS µT |U OV ÓZ þ` b >c ¿c ;d ¤d De äe Mf g ‰g îg ûh Õi cj ñm ‹n Io ›p ‰q r ts ht u ¶u óv 0x n} ‰~ ò~ Y † n‡ ׇ yˆ ‰ ê‰ SŠ "‹ ò‹ í› ôœ ̸ »¹ ®Ê Ð vÓ JÕ ×Õ ®V±p²|³µ~¿­ÅÎËdÆ ¿ i Xj(Xœy B!”%$)h{h€dŠý‹¦�I��˜µ›È …¥çª¬«­×µ˸9¹û»rÄŸÅÈøÌ#Ï~ÒÜÒåÓGÔPÕÐÕ$ÖÝÖ‚×äØ®Ù–ó½ôõ¶õQ÷Ky1a!."Ž$T'�)…*¬+R.L0üikôlo�} ‡F“Š•Ÿ™$žš¤«ú²dµx·„â´ãPå¿0\N»„&¾—¿æÁïÂFÄVÅSÆ\DzÈKÍáÎêÏCÑ®Ô×çäè<ê¡íózöÂùÏú(ü�ÿs Ý`ö ´XGDOÝX}Zå\W`—a5c lÝw[xÞŠ­�ª“h˜›8ž9¡š¡È¢˦ªõí“ïõñvóõ—ö8øù¯úgû”ügT ‘ Ä¥aÎ�šüŒ™À Ê"©#$«%î&ú(Û)$+gBßI_JZ[2]e^»^�_ñf!hwhKiIr¥r t¯uÍwÎxgz{?|Õ}E‚܃ ´ º›À®ÂåÇżÆÍÈÒÊ�ÍrÓlÔvÕ{ÖØ Ù¨ÚÜ'ÞVßóàOá¼â#ãænæwëÜë0ìí¹í†îîîHï!óÑó¹÷1øš¬â—¤=Âëc _I Ž#m%ä&L¸M½NÊOOPØ�O‘�¦Χß«#²ä²´¤¶ ·ÂÏ^Ñ¸Ñ ÓtÓ’ÕìÕÂÙÂÚ]ÜË  FlIºIsJPcËcdÄd ˆR‰¤ŽÖ�AàIáÉù¶üÆý«7 Ø8 $A +B $H 'I ÒM %O óU ŽW Œ_ ¹` ff rh Qw Zy [� ™“ ñ£ E¤ þ¤ Î¥ „¦ Q§ þ© « ~« Ò« }¬ "­ Ø­ �® öÁ à rà Ä ÒÄ Æ eÆ êÆ @Ç ùÇ ÌÈ „É NÊ ²Ê 1Ë ‡Ë 6Ì þÌ ¶Í €Î ëÑ ŸÒ aÔ Õ UÖ ˜× ÝØ Ú TÛ "Ü èÜ Þ Wß Wà Wá [ê “î â ã rã Eä ýä æ Hç éè Qò ó Éô xõ »ö þ÷ Aù „ú ¶û ‚ü Fý þ ·ÿ · · • ( l u Ë “ H Q † ' · P , * à  Ê ð d% Ö) + , m8 z: Î: „; T< = ×= �> ˜? J@ pA ÎQ Çj k $l Nm šx 7z “z œ{ è| à e� Á� Ë‚ ;„ -� ÏŽ +� y� i‘ “ €” ²• – ˜ h˜ › R� £� ¯ž ÿž ºŸ ¹  Ç¡ ¢ ñ¢ ¸¥ }ª ߪ =² `³ þ´ ]¶ ó· J«*º¶ÆÃÇ'ȋȣÉ'Ê×Ê?˧ËeÌaÍÇÍ-ÎÜΔЭÕÒæêŽíOùú¥ � ß Oã!®"@,4ö6³7m=&@ã@ñEG«KÏL­QVÑXf[:_“g³iülºn6q*sMuU…ù†¹ˆ#‰�‰”•ø•\–ª³ðÂTøêÚùÛHÝ—Þæß¯à\áâùâä1åLægç‚èòéÁë�í_ï.ñýò³ø}ûýÎþæ ž­G ¹1è6Þ7ø8‰;±>Ö?AºEpJ:LQUûWñZÛ\ò_1bd­dÌe¼fÚgøh`ps)tk{ë}�~÷Z�ꃅ ˆªˆ«‹Â�y�©‘í“1–ÐæÐÂÑnÞ ßçß!é…é"ìŽì0íÕí>òëò—ó×ô ö$÷ýµþ¼ \ ¦   e¾L*‹/ 5ª5P67¿;î?ýB¯K¸L/W[-_Í_m`3aëj3süvº€½�“•�™*žÊže ¦¡[¥Wª®Ö·Ù¸½‹¾êÀCÌåͦÓG×ß×¼ÚJ۰݈àáœã�æçšìIîðî—ï>ðýð¼ñrõù†þM5ð È1šÄQM](˜)ê,�/­2GBêB�C0DÓDôIÂL’T`WdͲ³bÍÐDÚ�í%,-Ì-€.ð0§1Œ2º3¶4f56Æ6v7˜8O9:·:¦>3\-ab?f�jskJnpàq#�ï„X…Á…Ї™:šŠ�/ ¢V¯ù¯œ°‡±ǵŸ·Û¼³¾ ΄ÎÑø–û®ü«ý\ÿ‘ð °g s"!{'ß'a+Ñ;�?WAƒD$FíHnIJ�Jzæ ¹jÞk q¬qyw{|ß}¬}ƒL„<…4†O‡ÿ‡úˆS�¤¤ã¥šç …ÃÄÌÎXÏvßâ ë[ô)õ÷õîö_ù€ü&ýÉý{ÿZqÙ " + ™ °¶\‚8Q^%œé Ú&Š'(Í(ë+Z1ç2Â4R6åOÜP¹\ìb"e”eJfJgñgÞhÄikam®nûoàp°s v wüwÒxÙy®z•{i|:}~ß~³‚f‡í�Á�p˜[™¬Ŭv­5¯ɰK´•·¬ºˆ»š¿Ç@Ê{ÍÑ©Ô�Ö9Ø Üæßyã¦å)çFê Wè[é÷ë&î±î®ð¯ò¡ê âó�ô=õ½öjþ0 ` ; ð 2  $ ê °! ½$ Ù) 3- ³. ±3 =4 ¦6 ]@ tG üL T ãT Æ] “^ ‡c u Áu Üz ¹} ^~ °€ •� r‚ Pƒ îƒ Q„ ´„ t… m† g‡ ˆ Õˆ @œ � �£ »¨ �© »¯ ò° ر :² Á² ݳ ¼´ ­µ ž¶ T· E¸ ë¸ :» ¢¼ L½ d¾ ƒ¿ oÀ ZÁ ò º A S  / ƒ Ö8 <9 Üò `ó ËB ³C HO §O FP S åS ¶T }U PV ÔZ ÿ` b ?c Àc å 2ø›­ã�å ˜¥ >Ãìàå d `J �#n%å&L¹MËæ ¾NËOPPÙ�P‘ž¦ϧà«$²å²´¥¶ç ·ÃÏ_Ñ¹Ñ Óìç =è uÓ“ÕíÕÃÙÃÚ^Ü•è Ììè Cé à -78ã8¾9™:t;O<*=>à>»?–@qALB'CDÝD¸EFmI»ItJQcÌc dÅd!ˆS‰¥Ž×�íé BàJáõ÷Êù5û·üöê Çý¬7 Ù8 Eë %A ,B “ë %H (I ìë ÓM &O Oì ôU �W �_ º` gf sh Rw [y  ì ñì Bí “í äí 5î †î \� š“ Öî ò£ F¤ ÿ¤ Ï¥ …¦ R§ %ï ÿ© « « Ó« ~¬ #­ Ù­ ž® ÷Á à sà Ä ÓÄ Æ vï fÆ ëÆ AÇ úÇ ÍÈ …É OÊ Çï ³Ê 2Ë ˆË 7Ì ÿÌ ·Í �Î ôÎ hÏ ÛÏ NÐ ìÑ ]Ó bÔ ¥Õ êÖ -Ø rÙ !Ú UÛ #Ü éÜ Þ Xß Xà Xá \ê ”î ð â ã sã Fä oð þä æ Iç êè ï {ï îï að Rò Ãó Êô ö P÷ “ø Öù …ú ·û ƒü Gý €þ ¸ÿ ¸ ¸ – ) Ãð m v Ì ” ñ I R ‡ ( ¸ Q - + Ä  Ë ñ e% ×) + gñ , n8 ·ñ {: Ï: …; U< = Ø= ò �> ™? Yò K@ qA ÏQ Èj k %l Om ›x 8z ”z �{ é| Ä f� Â� Ì‚ <„ .� ÐŽ ,� z� j‘ “ �” ³• ±ó – ˜ i˜ › S� ¤� °ž Ÿ »Ÿ ô º  È¡ ¢ ò¢ ¹¥ ~ª ઠ>² a³ ÿ´ ^¶ Uô ô· s&'r'Ê'"(z(Ò(*s+Û,/¹051³0í•™Oïù!€#o$C&¶zDŠ»ÿÉ‘udÔÝãžËÙQÜŸÝíÞ7æ¬æ²Ã*Ã+¡9ý]Š5Œ©Œ Ž€¹¸ôö„÷`ùÇúBü3þ™ÿoíâI Í 6 ´ ©Œ‡ŒþŒ³Áû͸Îeb+Ú+R,æ5Î9C:BÐL)R�Êž\¤Ù¤ÈˆËXÏ*þügM* ( ²' œ !†!û!p"³'V9HSOVØVYWÜW_X»gÕjýpÕqVrÙr\s°‚Ê…1´º7¾Àn¾;ÉO«Î ž ‰ Ø í x H]ƒ¶Üg�¢-§"¼"‰†‰ñ•U–Mñý٣ÚòÛAÝ�Þßß¨à ³.dÝýê) *øÍ}Î6ÞßøX ìk·Ëö‚G ´¯ ë° Ñ± 3² ·» °¼ Z½ ; O Á8 )9 J9 ^9 r9 »À ÑÀ 5Á JÁ ·ÚJÞ^áÈ÷@øúrn"7ý7Ø8³9Ž:i;D<=ú=Õ>°?‹@fAABC÷CÒD­Eî÷.ûk@ íÎ QÏ ÔÏ 8Ð cÛ 1Ü ÷Ü ï dï çï Kð Åû ‘ü Uý _ e y � ¡ µ É ( "«Ò ¢ � Ü ñ | La‡ºàk‘¦1«"À" ‰Љõ•Y–QõÃÁÙ§ÚöÛEÝ”Þãß¬à ³2dáî)*üÍ�Î:Þãø\ ðk·Ïö†G ¸¯ ï° Õ± 7² »» ´¼ ^½ ? S Å8 -9 N9 b9 v9 ¿À ÕÀ 9Á NÁ »ÚNÞbáÌ÷Døþvr&78Ü8·9’:m;H<#=þ=Ù>´?�@jAEB CûCÖD±Eò÷2ûo@ ñÎ UÏ ØÏ <Ð gÛ 5Ü ûÜ ï hï ëï Oð Éû •ü Yý c i } ‘ ¥ ¹ Í !( ¸¡ L§ O° û· :¿ Ù¿ ©À ¼Á Aà —à HÄ hÅ ÞÆ <Ê îÊ ÜÌ æÎ xÏ ÌÏ (Ð ñÐ +Ò ¥Ò Ó ÔÓ åÖ ½Ù fß çá �ã ìè Úì Lï ãð ÷ ¿÷ Vø Sù Æú ô ´ ã ˜ Ž ú! v( �9 ^F cG ƒH £I gJ K zK ìK ¥L M oM âM BN ŸN _O BP úP ÄQ èS VW œX Y [Y oZ ÆZ [ t[ Î[ 1\ ] -^ h^ ®^ ô^ =_ Œ_ Õ_ ­` za µa úa Cb ‘b Úb ºc Ld žd ëd 0e Že …f 'g “g Ûg "h ih ±h øh Ai %j ùj fl ¿l m ám žn ¦o Ip ;q œq ¯r s ^s ôs ž“ – ˜ ò™ ŒŸ ¦¢ ç£ µ© ž­ 0± Á± ,² �² Ö² ¶ öÈ /Ý ƒí ´÷ ì Ø Ö ' ”0 .8 t< š> \J áN —P ìS ^V _X CY \ ^ ›^ 6_ =` ö` ja Vb Ùb d äd me (f �f öf ¿g Gi ¹i 'j «j 8k ½k (l ìl hm ïm cn Õn >o §o p “p q ‰q .r Ër &s t {ƒ Ž jš û  ã° 3½ ìÌ €× Xß ¿ñ „ü öü ìý _þ âþ øÿ ]~»$ÃÑ Y + ’ µŒ˜¢S…à5è®e³öÄŽ ô 6!y!P"#z#³#œ$4&x&Ì&!'y'Ñ')(�(Ù( *x+â, /À0:1¤1”2×8=<ë>J@]DZIrN�T+YZØ[²\K^7_2ad½dWe‹fXghÝhÙi‹j_k=l†sQt@uÊv2wy^z¦}�~Î�/ƒš„í…Û†î‡Í‰Š‹é‹¬™7›Tœ˜œçœ5� žÖžÎŸ6 Ž w¡ß¡8¢)£‘£ó£¬¥‘§ª$«Ü«­,®V¯÷¯Y°±s±ç±»²Ÿ´Uµ[¶¯¿ŸÍ)ÑöÓ|Þtà‡äTçQíS Ä Nòë!»'h-�0Ý6;Á>LhOCS Z®dIkŠl}vÏzE{A|®|}u}Î}'~S³€v€A�=‚øƒØ„x…º†e‡EˆåˆXŠ-‹RŒ2���ÅŽ’®’°“™"ž’¡«ýº‡ÃQÈ»ÏaØ2ÝÀáæ/èùê%í4ð ò2ó&ô õ7ö÷Ò÷®ø’ùSúOû+üýîý‚\D7‘î*> Ewt°!2#c$%—%J&#(Û(“)f*r,í-ä4J5¦56u6Ð6°7 8Ž9‘:›;È<À=Ã>G?o@×@3A ABaBGCÜDF(G8H=I3J KLMNrNcOÊO'P•PöP³QZSKT:U>VIWXöXîYUZ²Z [�[Û[¼\­]œ^ _«`¤aêbÚcÌdÍe4f‘fÿf`gºg›hŒi{jkŠlƒmÉn¹o«p«qrorÝr>s˜sytjuYv]whxØx{|â|B}~  €�„�â�?‚ƒ[„„ۅÀ†­‡¬ˆ‰x‰Ö‰3Š‹ŒpŒ‡�ä�ÍŽÆ�3�“�ï�>‘’c’)“£“”5•–•@–>—|˜º™©šé›ñœ¹� žÚž<Ÿ ~ ¸¡¢r¢ƒ£n¤B¥¦ë¦Â§°¨©|©à©Dª_«í«Ú¬S­¥­t®Ö®Ÿ¯°*±‹±ä±Ð²«³´„Ö&×ðÛ0åëåðæ^ç}èWé:êÇëŒìÃíï­ñgõqøÉú¬üGÄ23¼ r� R!h%º(Y,]1:x@¼BˆDœEÄFCH~IæK÷N“OrP"Q‚QRéR¹SøS<V’VyWYò_@c#gˆhŸi/lˆo4sötj{Ý}d�. .¢L¥ª¥„ªš³¡´ù¶¸Ü¹üº�¼¤½¡¿ü¿»ÃžÖÞ;å—îLó¤ù%ÿËÿvAÏ¿føO¬y^‹;¾ ¦¯G©û'R Ö @"#¢#$µ$š%&'{'i(à(\)**•*î*M+¹+,x,×,G-¯-.m. /�/õ/N0¦01S1J2¶2*3s4á4a5Ë506›6ÿ6{7 9m9Á9:K:�:Ñ:;Y;«;y<C=á>?{?à?AëAmBèB@CêCOD©DßEêF¹GFI›IJsJàJ[K°KL²LMxS¹UX0Z3]Ê`Kd%h­lÅo.v›v[|º€]„fŠ­‘¡N¦J¬dµG¹§Á.ÈËæËdÌÇÌ%Í¡ÍÎ}ÎãÎYÏÑþÑ×b×Î×¥Ø`ÛÜ™Ý+ßèßá‹ápåç+èéÌéeðÏòÄö0÷â÷;øNùúóúÊûwü˜ývþ›…E1& I k3¨m\òau í#Ÿ&ü(£,Ã3û8¡:C@yAƒB¹C EPF¢GïH>J3KnLŠNQ¶QR°RS‚SÞSPT´T|UØUJV¹V³XÿX8ZÀZ£[\n\ø\…]^…^_ê_Ú`Wa÷ajbÏb€cWe¤eþe{fIg h\i§iý|4€T�v‚uƒh„`…)†‡ä‡ŠˆE‰£‰4ŠÕЧ‹�Œ›�ú�‡‘h’›Î w¡à¡§¢«£a¤¥Í¥A¦¯¦§�§å§\¨Å¨*©Œ©ò©ýª˜«ð«¡¬G­Á­�®N¯L°é¾Ã›Ç�ÊÏ,ÒÒÛÎßPèàì™õšû'ÿ“/·’“#¼+‰-X.Ö/Þ1ø2X3¢3zHYK?SQZ^uduiolooPuÓyù|w�ð„5†ì†”‡dˆ"‰}‰à‰¬ŠõŠE‹‹‹æ‹ÌŒ›�2Ž;��J�œ‘”õ–X§×¬Õ­5® ¯æ¯ß°‘µ·‡ÀÎÊçÌ Ï)ÕÚ¦äöåEç.íÍî\ðpñ€òôg÷ø­ùÁúÐû_ý¸0î^ÍÎ ôÇl j"…#t$J&('é'þ(‹)*ª*©+™,á-Ñ.»/»0ˆ1Q2ë24î4±5ˆ6C78±8{9:ë: <=AæA‰BsCBFJH¿LIMIOÔOrPDRiS†TªUÉVæWY*ZC\Ú]þ^ `™ac3dTeÑfLh½hsicjkgkÈkl|¯t�‡6ˆÙŒü�ýŽ[�ð•:–€—„˜ü˜šÂš~›²œéž_Ÿ � �¡ã¢Y¬­z­“®T¯§¯—°b±Í± ³q³Ä³¼´rµÝµµ¶·o·û·ÿ¸j¹Bº©ºüºˆ»Œ¼÷¼Ï½6¾‰¾w¿-À˜ÀuÁÜÁ/Âà ċÄbÅ,ƈÆÐ Ñ�Ôڿ݈â@ãçã¨èêtêüênëÊëÂì8íÀí2î�î#ïð¼ðcùúæúmýÀÿUΖz®&óÏ� i . ”  –  ˜ N>ÚrQÎQ&T6V6X’ZN[ù[‰\]s])^§^_Ï_„`Á`adaÝfîi—l¼o©p–ruy¨{œ€ ‚6„ ˆª‹T’#–¶–J—Ø—p˜÷˜’™ šµš;›¾›Gœ¬œ�’�ú�ß «¡L¢‘¢×¢£m£¼£ ¤N¤—¤è¤ã¥K¦¦¦§Ã§ ¨�¨F©ªyªÎªI«”«â«x¬̬r­D®Á®ˆ¯ê¯¼°9±ü±‰³iµ¶Ö¶6·œ·¸ˆ¸ù¸Q¹©¹Wº0»›»¼½ƒ½é½ƒ¾é¾O¿ Ã×ÃTÄ¡ÄõÄIÅŸÅõÅHƞƀÇȇÈÉsɯÉÊYÊ#˘ËíËB̘ÌG͵ÍLÎÛÎ¥Ï0ÐsÐÉÐNÑéÑWÒÀÒNÓÝÓ1Õ�ÕëÕJÖ«Ö ×l×Ð×;ØPÙÚˆÚéÚÓÛÚÝ;Þ›ÞûÞ\ß½ßyà$áŸá â€â0ã†ãéãAä¡äùäŸåÒç}èÁéWð&òíóÝô9õäõ*öpöâö"÷b÷ø]ø£øéøfù¦ùæù&úäú*ûpû¶ûüû„üÄüýDý„ý/þuþºþ-ÿmÿ­ÿc©ï5²ò2r ’ŸþjÛ;¦¿Ç˹-V6(9I<]?éAšDªF HôJMMíO«QgSŽTêV4Z&[ï[•\;]"^=_ `á`‹ab²bcƒc dŸdWe…fhni÷lNp¡q|rSs3t¸tËunvØytz${€}ª~^o‚ƒÕ„%†2‡ˆqˆ‰Ç‹ü�Ž©�M�ø‘&“S”£•�–™—ò—Z˜®˜™u™Î™,š�šÕš.›�›é›wœÌœ–�Nž¬žèžzŸÌŸ  ] ¢ E£¤w¤á¬­­ö¯ÌÒÄÔ‚ØOÙŽÚ9ÛÕÛÝbÞ°ßáà€äNåUè#é_ê}ë¶ùƒú�[F³RB -ûaÄ’#ä#�$%%)ò)Q,-‚4O50:ý:À^¤_ `—`Sab™b)cðc½dYeõepêt„xys�A‚Jˆ‰¬Šy‹��ðŽ�·¹ºàºî»¼¼þ¿kÃFÆkɃÒÓÍØ›ÙÚŒéZê´ëúìî)ðNñ“ò9ôŸõ÷øáøHúÃûçü´ýÿ•¹†ïm”bËM ¶ 4 [)’Ø¥ d1;, -ì0€4�8k9Ý:«;˜<f=IAB²BNCbÛbAcÓd efwr]sK}~8€±�Ÿ‚mƒ\„*…†ä†%ŠòŠþŽË�¯�Ÿ’�“ë“À•á–ò—¿˜Ã™�šöšè›µœ°�}žãžpŸ  ¡Ý¡C¢C§Äñá†â#ãæÔæqçè±ëìí¹ílðñÅñ{ò3õU÷"øˆøþÔþ( õ –ÃLÖã±O| =!"#Ð#½$‹%¨&v's(A)Þ)‰*-ü-™.6/ª6U7ñ7‚89;¯;K<Ü<l=åBëErHÆJ;LbM0N1OP}P Q¨QÿR‚ST»T4V¦W7g&jk«�yŽߎW�½�“â“#–ñ–~™fš4�‹Ÿò ¢¹¢‚£Ç¥Ø¦Ž§W¨zÄ_ÅuÉÙÌ©ÐsìWíóí�îýòróÿó›ôýõËöœújû»þ‰ÿêÿ(éÑÛ§Ò Ÿ é ¶ ß «ï»¯|ÿ"Í#u( )Ë)€*+¡+:ý:c;ð;›<P=á=q>F@A¯AKBCáCÝHSIáI�JCKÕKfLP�PQÇQ}RS S!UV^VÝV`WãWfXY·YfZùZT[/\ ]å]ì^Ê_<`Ï`baõaˆbcd‹d5eåeÐfMhi¸iUjik7l’m�npq[qÚq]ràrcst´tcuöuQv,wxâxéyÇz9{Ì{_|ò|…}~ˆ2€Ú€Å�Bƒ„­„J…^†,‡ˆ‚‰³š€›Wœ€Ÿd ¡œ¡ô¦Ø§Ç¬M±µ9¹£º7»â»—¼(½¸½Ç¾”¿£À‚Á‹×Ö܃Ý/ÞåÞ6ãä¹äeåæêë ëLìí¨òvóô°ôýöË÷�úuû0³Pã+Y, -½-Z.f<4=Ñ=n>7JK¢K?L#MðMóNÔPJa�àþ°�’?’n’¦’Ð`Æk |3éÐPŸºwôlõ–÷Zú·ýâÿ¥´^ ` ᜠž %¡ ªÃ üÎ ôÓ ¯ ‹G óI �O Q ÑQ rY ?\ ] ì_ Ã` ùb Ðc Äe ›f 4g fi 8j ;k „k n Õp Äq (r 4‹ ­Œ ²� ,¶  O Ö^ p_ >l Üq 3s )eËС š!\"-#Ë#Þ#¯$Â$E1Ã1Ö1&5›6ÉDRU‡ZY^“_æiàv6w9•3–Ï–V�žýžŸâŸF ¦ ¹ ‹¡ì¡X¢k¢=£Ÿ£,¤u¨-ª!·Ÿ¼QÔË l(�?Üz®{W� „Ô…†w‡A‰|‰jŠ;‹v‹dŒ«�æ�»’bÅ!®# '+Ñ.ü29=Í=g?^H‰NoWYÑ`ód°lÑpìx¬{M}3�Œƒî…'‰—‹RŽž�Ò’£•f�­Ÿã¢'©u«­G¯U²!À¨Ì´Ï˜ÖÎçï­™1eG HÚI’PTØUžVÀþÂ'~˜³0`17�7 8Ã;…<i=‹>-AþAzBEöEøFáGïHKCM¼P%ËüË=ÑÒä×…Ù¯Ý.äBè$éÚêÖï«ø‰þnß,i@UJ�KÊLCRõSØVMX›^ç`Übˆf_g›hÆoƒy9zk…<†Ž¡æ¡¾¢¹£o¤%¥ï¥[¦ò§Ï­§®\¯·‰¸.—-n.ú.ë/1õ1°3Ø3ÿ3y†RŠŒÚŒ·�8ŽX�€�¨�-“]“n•–ÅŸh­â­á²›³Ãêlëßîjð†ñ’òßõˆö0ø»ùÖúâûIÿ'%*[ÛüêlÛÚ0ëÀ\x³ÿh U&%AüA–BkhÂhŽi¢i²j=nz{\‚‡.‰˜ŠçŒŽ ���Ð’ΓG”Û”S•R–”›Èœè�� �¡Û©a«ë|¬²¯°ϰϳ;´ß´z·l¸»ù»”¾ö¾š¿:œÂ�ÃXǵèíë�î�÷xø(úùú㨠� A ¡ " £ $ ¤ m€R”PÛQnR'S”\_ê_ÈcÞo¨�ïž’ í Ò¡ä¡¥%¥tº¼F¼›¼¾�¿OÁ�ÂÃêà ÉeÊ6ËçθÏèÓ•Ô÷ÚOÜ<Ýî5ôOôèôDõ{öm÷ôø1úü�ýÆþ¹ÿ@}�AΠJZH[ý[ `ø`¡a%bÈb-c’c$dµd{i�vH†q†^‡”ˆ&‰ ŽŒŽÈ•ܕŖA—™Øœª�Yžež;¢Ý¢R£&¤¬y¬î¬Á­¯ÑcÒÙÒëӮר�ØbÙÚ%Ú�Ú²ÚFÛ[ÛèÛ–Ü«Ü#Ý6ÝäÝùÝqÞ„Þ2ßGß¿ßÓß àÊãä�äbåæå[æÐæç@çyç±çëçbè6éŸérê½êQøMùÃùwþ#šoÜS(ÂÇaf¾_ØO0 à :ØZÑä!¬"##ù#Ž$£$r(¼(2)*p*æ*8+p+è+^,.1ì1Ñ2©34�499Ç9=:•]B^W^Ï^ä^¹_`¤`yaŽab®b=c‡cýcÒdfe{eön^oÁrÛsUwÃw™x»€ �€�–‡á‡Wˆ*‰u‰ʉCŠ¹ŠŒ‹ã‹WŒÍŒ �0Ž�O�™¶·Õ·@¸¹¨¹ºôº„»û»Õ½ ¿¡Áz½ÄUÅâÇzÈÔÐÂјÒÖcØÚذٓè"é™énêôêÇëXìíîhï=ð�ðbñÒñ§òxóLôßô²õEö÷«÷!øôøˆù[úûÖû~üôüÇýZþ-ÿÕÿ¨PÆ™.¬€*¡u ÞŒ ` õ É s G ñ h<Ñ¥Soåºûqc+Ñ+H,ç.ã/‰2w3Å738ª89¿9:s:ê:¿;.<¥<y=>A>z>³>?y?ê?#@\@¥@à@VA+B¿BÔBd`¥abðb†cjdàdµe—g�h k�qøq r‡rœrò{á|X}-~¹~Î~H]2€Ø€Å�5‚¬‚�ƒòƒi„>…¬…#†q‰¼‰2Š‹¼‹3ŒªŒ!�t�Ç�ÿ�JŽ•Ž �Þ�F�º�Ç‘³’#“š“ð“ç”Ô•b–w–ñ–—‰—ÿ—Ò˜Z™Й¥šúš›õ›ÈœG�½�’žéž}Ÿ’Ÿ § ¡ò¡HÁÚÁOÂVĶÉíÊ«ÍhÎÑÓÖÛMà(á‡áþá“â¨â åœåæéæ~ç“çƒêGë¾ë”ì)í>í¤îíïð|ð‘ð&ñëñò¨óZôƒöìöb÷7ø"ýžýþV ¿ 5 ‘�̺TâY.žêyðÅŠå\0 ‡ Ô H!³!("˜"#ä#S$Ê$Ÿ%>&µ&Š' (€(V)ù)*�*+†+þ+—,¬,&-;-.¦.».{5,6A6¹6Î6b7w78—8%9{9ð9†:›:;(;¼;Ñ;`<ñ<§AgB|BCˆDEÖF™GJIíIÛJbKcLøLoMDN²NÇNAOVO,PƒPQ-Q»Q€R•RS1SˆS+T@TÐT[UIVÍVFfÎfàh¤i3j­ŒA�¸�ŽŽäŽ–�l�\’ª’!“ö“Q”�”æ”"•^•¹•0–H˜ü˜‹™J›[œcž Ÿ"ŸšŸ­ŸK q ¡)¡¢Æ¢î¢•£¤¤¥D¥Ö¥þ¥í¦›§ç{ÃùÇĆÇbÈòÊÎËÂΞÏÊØdÚÛBÜaÝNÞ,ßnàáÅáYâÂãåíåùæ+èVéYê€ëõë ì‚ì—ìlíîîÆïò”ò ó!óxó ô!ôEõ“õ öäù2ú©úÀýQþÈþr5:µ*ü�äsèºi ß ² € ö È w ì ½‡ü9F¼�`ÕJ ¿ 4!©!"•" #H'÷' („(™(-)ñ)*•*&+í8›9°9(:=:;i;ý;Á<Ö<e=ö=“?Ý?S@(A¼AÑA_B«B!C­G^HsHíHIYIîI³JÈJXKêKçN˜O­O'Pòµò‹ó ô5ô'ö“ö ÷ù úšúÿ 8±Æ@U+ÀÕ”*þ*d+y+ó+,_,5-Ê-ß-H/Q;ü;s<I=Þ=ó=Q?@uBÔD„IÍIDJK¯KÄKRLºL0MNŠNþNüOž.0›• ë&ö�ÿK<hzõ‰$“S�?¼g¼Ô´ÜZ¢¬ð­$ÑÓÎ׃٠ÜWÝ¥ÞôßêãƒåVé“êpø—þ‘fˆP ø"‘(&*M1X9´]]co svwÜ€¶‡L‰­‹Á�%�¹¶÷·5¹»¾ÞÁúÄÈõÐ0Ö´è�êì:î`ð…ñÊòmôÓõ9÷ù|ú÷ûèýNÿÉ»$¢— ‚ ë i ^Ç%Ÿ„+2/Ô2æ7¢9â;›=„`¦c¸g|O~c€è�¤ƒa…‘‰'‹ÿ�ê�Ö’!”÷•$—ô˜›èœA hÁrÂ×É.å¤êÅî×ó£öBýv ÜuQ èP© j!K"$Â%­'À*›5G9ÇA·DGyI K…LfNÞQUyVffiÎŒ�}’”w˜y›ƒžÝŸÅ£©ÃÎÇ:Ë ÏêØæïfõúáý¯ZÛÓ è ÝY²h' 9³?€BÎGOpgŠj‹le‚…€‡š´›ƒœ¥œªb°æ³Mµȹì½È¿ÐÀ€Ö…ÛLâ2éññGöIù ´*q;q?sL$N-O‘.0Ž•ýêöƒÿ>/[z艓F�2¼Z¼ Ô§ÜM¢¬ã­ÑûÒÁ×vÙüÛJݘÞçßÝãvåIé†êcøŠþ„Yø{C ë÷!„(*@1K9§]PcoÿriwÏ€©‡?‰ ‹´��¬¶ê·(¹ »¾ÑÁíÄÈèÐ#Ö§è‚êôë-îSðxñ½ò`ôÆõ,÷ùoúêûÛýAÿ¼®•Šóu Þ \ Qº’w+%/Ç2Ù7•9Õ;Ž=w`™c«g|B~V€Û�—ƒT…„‰‹ò�Ý�É’”ê•—ç˜ ›Ûœ4 [ÁeÂÊÉ!å—ê¸îÊó–ö5ýi Ï hDÛCœ ]!>"ú#µ% '³*Ž5:9ºAªDøFlIÿJxLYNÑQóTlVYfiÁŒúŽp’ ”j˜l›vžП¸£œÃÁÇ-ËýÎÝØÙïYõøùÔý¡M÷ÎÆ Û ÐL¥['9¦?sBÁGûNcg}j~lX‚r…s‡ô™§›vœ¥�ªU°Ù³@µ»¹ß½»¿ÃÀsÖxÛ?â%éäñ:ö<ù §*d;d?fLN O‡ Š ‘ • œ £ § « ¸ Â É Õ Ü ç õ ù ý       ! % ) - 1 5 9 = A E I M Q U Y ] a e i m q u y } � … Œ � » Î ß ô  - B R V ] i z � – ¦ ­ ¼ À É Ð × ì   A W [ l p w † �   ³ Å Ò à ö ,:L\o}Š�¡¥´½ÄÏÖÝìóú "=ARcgn‚“¨ÁØó-9\`h‡‹“›£§¯¼ÄÚîò3K\ds…•©¹½ÅÉàø'>S`p‚ž´¼ÐÔÜàñ$1BO`dlp}‹™¡©¶ºÂÆÎÖÚåñ!9Thlzƒ‹�Ÿ¤©»ÃËÓÛãèð  (05:J]ejoty~†Ž–ž¦³¸½ÂÇÌÑÙÞãèíò÷ü $).38=BGLQV[`ejoty~ƒˆ�’—œ¡¦«½ÔÙáéñù !)19AIQY^ty~”™žÀÅçì(Ch~‘¬±ÌÑâ÷ü  5Jbgz‚‘£¨°¸½ÇÑÙáé6;T�˜­ÄÌßäöû-HPg€™ž¦®¶Ñéü,<Wz¡©±¶¾Òäéñù 7Cbx™ºÙáöþ'7<_yžÃæ%>FKPX`hpx€ˆ�•�®Øàý # + 8 = B G L Q Y | ¢ Ï Ô Ü á é î û !!$!,!1!9!>![!q!v!{!ƒ!�!’!¡!µ!Æ!×!é!û!"""/"I"["j"y"‰"™"ª"¼"Ä"Ó"ã"ë"ð"## ### #%#*#/#4#9#>#C#H#M#R#W#\#a#f#k#s#{#ƒ#‹#“#›# #¨#°#¸#À#È#Ð#á#ë#ó#û#$$$#$($7$F$N$S$[$c$k$s${$€$…$�$•$�$¥$¸$Ë$Û$ï$÷$ü$% %%%3%;%C%K%P%W%_%d%i%n%s%x%}%‚%‡%Œ%‘%–%›% %¥%µ%É%ß%ä%é%ù% &&&&;&[&`&|&�&‘&¡&°&µ&º&É&Î&Ó&ì&û&'' '''' '%'*'/'4'9'A'F'K'P'U'Z'_'d'i'x'€'”'Ÿ'ª'²'·'¿'Ä'Ì'Ñ'Ö'Þ'ã'ë'ð'ø'ý'( ((((/(4(9(A(F(N(S([(`(o(t(y(~(ƒ(ˆ(�(’(´(¹(¾(Ô(Ù(Þ(æ(ë(ð(õ(ú(ÿ() )%)*)/)4)B)G)L)Q)V)[)z))›) )¥)É)Î)Ó)ú)ÿ)*3*U*Z*k*‡*®*³*Ù*Þ*ã*è*+ +$+)+G+L+T+Y+^+c+h+m+r+w+|+�+†+‹+�+•+š+Ÿ+¤+©+®+³+¸+½+Â+Ç+Ì+Ñ+Ö+Û+à+å+ê+ï+ô+ù+þ+,, ,,,,!,&,+,0,5,F,\,d,w,|,„,Œ,”,œ,¤,©,±,¹,Á,É,Ñ,Ù,á,é,ñ,ù,- --&-.-6->-K-S-[-c-q-y-�-‰-Ž-–-©-À-Ô-õ-ú- .%.A.Z.€.….�.•.�.±.Ì.Ñ.ã.ë./ //// /(/0/=/P/X/`/e/~/ž/£/Á/Æ/ß/ô/ù/0 000(0-050=0E0M0R0Z0_0d0l0t0y0�0‰0‘0™0¡0¦0®0¶0¾0Æ0Ë0Ó0Ø0Ý0å0í0ò0ú01 1111'1/171<1D1L1Q1Y1a1i1q1v1~1†1Ž1–1§1¬1´1¼1Á1É1Ñ1Ù1Þ1æ1î122242J2d2�2—2®2¶2Í2â2ê2ò2ú2 33)3C3K3e33�3¾3Ø3ó3û34/4L4Q4V4s4x4}4�4ž4±4Æ4à4è4í4ò4ú45 5555!575R5Z5_5d5l5t5‰5Ž5“5˜5�5¢5§5¬5±5¶5»5À5Å5á5æ5ë5ó56$6)686=6B6X6]6b6g6l6q6v6{6ƒ6Ÿ6¾6å6ê6ø6ý677 773787N7S7X7h7m7r7w7|7�7†7‹7�7•7š7Ÿ7¤7©7®7³7¸7½7Â7Ç7Ì7Ñ7Ö7Û7à7å7ê7ï7ô7ù7þ788 8888!8&8+80858:8?8D8I8N8S8X8h8p8x8€8ˆ8�8˜8 8¨8°8¸8À8È8Í8Ò8Ú8â8ç8ü89"9'9/979?9G9O9W9_9g9l9q9y9~9†9Ž9–9›9£9½9Ò9ì9::>:C:K:S:[:c:k:p:x:}:‚:Š:’:š:¢:ª:¯:·:Û:à:è:ð:ø:;;;; ;(;0;8;=;E;J;g;‚;¥;ª;²;º;Â;Ê;Ò;Ú;â;ê;ò;ú;<<<<+<M<U<Z<b<j<r<z<‚<Š<’<š<¢<ª<²<Í<Ý<â<ç<ì<ñ<ö<û<== =====#=(=-=2=7=<=A=F=K=P=U=]=e=p=u=}=…=�=•=š=¢=ª=²=·=¿=Ä=É=Ñ=Ù=á=æ=î=ö=þ=>>#>+>3>8>@>E>J>R>Z>b>j>o>t>|>„>Œ>”>™>¡>©>®>¶>¾>Ã>È>Ð>Ø>à>è>÷>ü>? ????&?A?F?N?V?[?`?h?p?u?}?…?Š?�?—?Ÿ?§?¯?·?¼?Á?É?Ñ?Ù?á?é?ñ?ù?@@@@@&@+@3@;@@@H@P@U@]@e@j@o@w@@‡@�@—@œ@¡@©@±@¹@À@È@Ð@Õ@Ú@ß@ä@é@î@ó@ø@ý@AA AAAA A%A*A/A4A9A>ACAHAMARAnAsA{AƒA›A£A¿AÎAÖAÛAàAèAðAøABBBB B%B-B5B=BEBMBUB]BeBmBuB}B…B�B•B�B¢B¶B¾BÆBËBÛBãBëBÿBCC$C,C4CMCMHMMMRMWM\MaMfMkMsM{MƒM›M M¥M®M³M»MÀMÈMÐMÕMÞMíMûMN)N.N3N;N@NHNPNXN]NeNmNrNwN|N�N†N‹N�N•NšNŸN¬N¸N½NÅNÎNÖNÞNéNîNöNÿNOOO!O*O2O7OSCSHSMSRSWS\SaSfSkSpSuSzSS„S‰SŽS“S˜S�S¯S´S¼SÄSÌSÔSÜSäSéSîSöSþSTTTT&T.T3T;TCTKTST[TcTkTsT{TƒT‹T“T›T£T¨T°T¸TÀTÈTÐTØTàTèTðTøTUUUU U(U0U8U@UEUMUUUZU_UwU|U�U‰UŽU–U³UÀUÙUáUøUV+V0V8V@VHVPVXV]VbVjVrVzV‚VŠV�V”VœV¤V¬V±V¹V¾VÆVÎVÖVÞVãVëVóVøVWWW+W=WBWGWLWQWVW[W`WeWjWoWtWyW†W’W—WŸW¨W°W¸WÀWÈWÍWÖWçWýWX/X7XHXMXUXjXrXzXXˆX�X•XšX¦X®X¼XÁXÉXÎXÓXØXÝXëXùXYYY$Y)Y1Y6Y;YCYUYZY_YdYiYnYsYxY}Y‚Y‡YŒY‘Y–Y›Y¦Y¶Y»YÀYÅYÊYÏYÔYÙYáYìYùYZZ&Z+Z9ZMZRZZZ_ZgZlZ~Z�Z Z´Z½ZÅZØZáZéZñZ[ [$[,[1[A[W[\[c[h[p[u[}[…[�[’[š[¢[ª[¯[·[¿[Ç[Ì[Ô[Ü[ä[é[ð[õ[ý[\\%\*\2\7\?\G\W\m\r\z\�\•\ž\£\¬\´\¹\Â\Ç\Ï\Ô\Ü\ä\ì\ñ\ù\] ]]]] ]%]*]/]4]9]>]C]H]M]R]W]\]a]f]k]s]|]„]Œ]”]œ]­]Æ]Î]Ó]ä]ì]^%^*^/^H^f^k^p^^‡^�^”^™^ž^³^»^Ã^È^Í^Ò^×^à^ó^û^ ___1_9_D_P_U_]_e_p_u_}_…_�_’_š_¢_§_¯_·_¿_Ç_Ï_Ô_Ü_á_é_î_ö_þ_```` `(`-`<`Q`V`g`o`t`€`ˆ`‘`¦`¶`Ï`è`ð`õ`ý`aa3a;a@aYa^acakataŠa�a”aœa³aÉaæaïaôaüab bbbb b(b0b8b=bEbMbRbZb_bgblbtb|b„b’b—bœb¤b©b¾bÃbËbÓbØbàbèbûbcc cccCclcqc~c¥c®c³c¸cÀcÈcÍcÕcécd dd)d1d6d;d@dEdJdOdTd\dddldtdˆd�dŸd§d¿dÇdÚdâdee!e)eCeKeve~e¤e¬eÆeÎeÖeàeîeóeûefff%f*f2f:fBfJfOfWf_fgflftf|f„fŒf‘f™f¡f©f±fÇfÏf×fàféfîföfþfgggg$g,g4gpFpNpVp^pcpkpsp{p†p‹p“p›p£p«p³p¸pÀpÈpÐpØpÝpåpípõpýpq qqqqq#q(q-q2q7qtFtKtStXt`tot~tƒtˆt�t’t—tœt¤t¬t±t¶t¾tÆtËtÐtØtàtétñtötûtuu uuuu$u,u4u9uAuIuRuWu_uguluquyu�u†uŽu–uŸu¤u¬u´u¹u¾uÆuÎuÓuÛuãuìuúuÿuv vvvv v(v-v5v=vBvJvRv[vhvmvrvwv|v�v†vŽv–v›v v¨v°vµv½vÂvÇvÏvÔvÝvâvçvìvñvövûvww wwwww#w(w-w2w7wŠCŠHŠQŠgŠlŠqŠ’Š—ŠœŠ¡Š¦Š«Š°ŠµŠºŠ¿ŠÄŠÉŠÎŠÓŠÛŠàŠåŠêŠ‹ ‹‹(‹0‹8‹K‹S‹[‹f‹p‹y‹~‹‡‹’‹›‹©‹¸‹½‹Æ‹Ï‹Ø‹ã‹ì‹õ‹ŒŒŒ"Œ+Œ4Œ=ŒHŒQŒZŒcŒrŒ‚Œ‡Œ�Œ™Œ¢Œ«Œ´Œ¿ŒÈŒ×ŒèŒíŒöŒÿŒ���,�5�>�C�L�U�^�g�o�x�}�…�Ž�–�›�£�«�º�É�Ø�è�ø�ŽŽ ŽŽŽŽŽ#Ž(Ž0Ž8Ž@ŽLŽTŽaŽiŽrŽ‚Ž’ŽšŽ£Ž«Ž°ŽÁŽÐŽäŽøŽ���(�9�B�V�e�}�‚�Š�’�—�œ�¤�¬�´�¹�Â�Ê�Ò�Û�ã�è�ð�õ�ý�� ����'�,�4�9�A�F�N�S�[�`�h�q�y���†�Ž�–�Ÿ�§�¯�·�¿�È�Ñ�Ù�á�æ�î�÷�‘‘‘"‘1‘9‘B‘J‘O‘T‘\‘a‘i‘q‘y‘�‘†‘Ž‘Ÿ‘¤‘¬‘´‘¹‘Ú‘ß‘ç‘ï‘÷‘ÿ‘’ ’%’*’2’D’I’N’S’X’]’e’s’|’„’Œ’‘’™’¢’«’³’»’Ã’Ì’Õ’Ý’å’ê’ò’÷’ÿ’““#“,“5“F“K“P“\“a“o“‚“Š“�“¿“̓ԓܓä“ì“ð“ø“ü“””””%”-”1”9”=”E”[”c”k”…”š”§”³””ʔҔá”å”í”õ”ÿ”•••*•>•G•O•W•l•‡•‹•“•®•¶•¿•ʕΕ֕ޕê•ò•û•ÿ•– ––$–)–1–5–9–A–E–I–Q–U–Y–a–w–|–„–ˆ–Œ–”–˜–§–¬–´–¸–¼–Ä–È–Ô–Ù–á–å–é–ñ–õ–— ———*—2—6—>—B—J—_—j—o—w—ƒ—ˆ—�—¥—²—É—Ò—é—ò— ˜˜&˜1˜5˜=˜A˜I˜Y˜a˜o˜t˜|˜�˜—˜œ˜¤˜­˜µ˜½˜Å˜Ö˜ß˜î˜ö˜û˜™™™™&™/™8™L™[™d™�™”™®™¶™Ì™Ü™á™é™î™ö™ ššš#š+š0š8šAšIšQšYšašfšnšvš~š�š•š�š¥š­š²šºšÂšÊšÜšäšéš÷šÿš›››!›&›.›3›;›D›L›W›_›g›o›x›€›ˆ›�›˜› ›¥›­›²›º›¿›Æ›Ï›×›ß›ä›ì›ñ›ù›œ œœœ5œDœIœQœVœ^œcœkœpœuœ}œ†œŽœ“œ›œ œ¨œ±œºœ¿œÇœèœ÷œ�'�2�E�J�R�W�_�d�l�t�}�†�’�ž�¹�Å�Ê�Ò�×�ß�ñ�ö�þ�ž žžž+ž0ž8ž=žBžJžOžTž\žažhžmžužzž‚žŠž�ž”žœž¡ž©ž®ž¶žÎžÖžÛžãžèžðžõžýžŸŸŸŸ$Ÿ,Ÿ1Ÿ9ŸLŸTŸ\ŸdŸnŸvŸŸ„ŸŒŸ”ŸœŸ¤Ÿ­ŸµŸ½ŸÂŸÊŸÏŸ×ŸàŸèŸíŸõŸúŸ       % - 6 D M V _ d l q y ~ † ˜ © ® ¶ Â Ç Ï Ô Ü ÷ ü ¡ ¡¡'¡/¡4¡<¡E¡P¡Y¡^¡f¡t¡�¡�¡’¡š¡«¡°¡¸¡½¡Å¡Ê¡Ò¡ä¡ì¡ô¡ü¡¢ ¢¢¢¢'¢/¢8¢@¢I¢N¢V¢^¢f¢}¢…¢�¢–¢ž¢§¢°¢µ¢½¢Å¢Í¢Ú¢â¢ê¢ó¢û¢££££&£.£6£D£M£R£Z£b£j£s£…£Ž£–£ž£¦£·£¼£Ä£É£Ñ£Ú£â£ê£ù£¤ ¤¤¤"¤*¤2¤:¤B¤J¤R¤Z¤b¤j¤o¤w¤|¤„¤‰¤�¤™¤¡¤©¤±¤¶¤¾¤Ã¤Ë¤á¤é¤ò¤¥¥¥¥"¥+¥3¥8¥@¥H¥M¥U¥]¥i¥r¥{¥ƒ¥‘¥š¥¢¥ª¥²¥º¥¿¥Ç¥Þ¥æ¥ë¥ó¥¦¦¦¦&¦:¦B¦R¦[¦c¦k¦p¦x¦†¦‹¦“¦˜¦ ¦´¦¹¦Á¦Æ¦Î¦á¦æ¦î¦ó¦û¦§§"§'§/§4§<§\§a§i§n§v§•§š§¢§§§¯§´§¼§Ë§Ð§Ø§Ý§å§ú§ÿ§¨ ¨¨(¨-¨5¨:¨B¨G¨O¨]¨b¨j¨o¨w¨‹¨�¨˜¨�¨¥¨¸¨½¨Å¨Ê¨Ò¨×¨ß¨è¨í¨õ¨ú¨©©© ©%©-©B©G©O©T©\©w©|©„©‰©‘©«©°©¸©½©Å©Ê©Ò©ä©é©ñ©ö©þ©ªª#ª(ª0ª9ªBªKªPªXª]ªeªjªqªzª‚ªŠª�ª—ªœª¤ª­ªµª½ªÂªÊªÏª×ªíªõªýª««««(«-«5«=«E«M«g«o«w««ˆ«�«™«¢«§«¯«·«¿«Ç«Ð«Ù«è«í«õ«ú«¬¬¬&¬/¬E¬N¬V¬[¬c¬h¬p¬¬�¬•¬š¬¢¬§¬¯¬¼¬É¬Ñ¬â¬ë¬ù¬ ­­!­)­=­E­X­`­r­z­ƒ­‹­“­¥­¹­Â­Ë­Ð­Ý­å­ê­ò­÷­ÿ­® ®®®®'®/®8®@®H®]®f®n®w®®„®Œ®‘®™®ž®¥®®®·®¿®Ç®Ð®Ø®á®æ®î®ó®û®¯¯¯'¯,¯<¯A¯I¯N¯S¯X¯`¯e¯j¯r¯‚¯�¯˜¯ ¯²¯Ä¯×¯Ü¯ä¯é¯ñ¯° °°°°&°+°0°8°L°T°\°d°l°q°y°�°’°¢°´°¹°Á°Æ°Î°Þ°ç°ï°ô°ü°± ±#±+±3±8±@±E±M±V±^±c±k±p±x±�±Š±�±—±§±¬±´±½±Â±Ê±Ó±Ü±å±î±÷±² ²²-²5²P²U²Z²b²g²o²‚²‹²”²™²¡²ª²²²»²Ä²Ë²Ó²Ø²à²è²ñ²ú²³³³³³3³;³D³M³[³`³h³p³y³‚³Š³�³”³œ³¡³·³¿³È³Ð³Õ³Ý³â³ê³´ ´´´"´*´/´7´<´C´X´`´i´q´v´~´ƒ´‹´ ´¨´°´¸´½´Å´Ê´Ò´×´Þ´ã´ë´ð´õ´ý´µµ%µ-µ2µ:µ?µGµLµSµ\µaµiµnµvµƒµŒµ•µžµ¦µ®µ·µ¿µÈµÑµÚµâµëµôµýµ¶¶¶&¶/¶8¶A¶F¶N¶[¶`¶h¶q¶z¶‚¶Š¶“¶¦¶²¶¾¶Å¶Í¶Õ¶Þ¶ç¶ð¶õ¶þ¶· ··· ·%·*·2·K·T·Y·a·f·n·s·{·€·…·�·¥·®·³·»·À·È·Í·Õ·Ú·ß·ç·ð·ø·¸¸ ¸¸¸¸$¸,¸1¸9¸A¸F¸K¸S¸f¸n¸w¸†¸‹¸“¸›¸¤¸¬¸µ¸º¸Â¸Ç¸Ï¸Ô¸Û¸ä¸ì¸ô¸ù¸¹¹¹¹¹'¹,¹4¹9¹A¹J¹R¹Z¹b¹k¹s¹|¹…¹Š¹’¹š¹¢¹ª¹³¹»¹Ã¹Ë¹Ô¹Ü¹å¹î¹ó¹û¹º ººº%º1º9º>ºFºKºSºgºpº‚º‡º�º”ºœº­º¶ºÍºçºìºôºùº»»%»*»2»;»D»L»Q»Y»^»f»w»€»Œ»ž»§»¹»Í»Ò»Ú»ã»ì»ñ»ù»¼ ¼¼¼'¼7¼E¼S¼X¼`¼e¼m¼}¼…¼‘¼–¼ž¼£¼«¼½¼Å¼Î¼Ó¼Û¼à¼è¼í¼õ¼þ¼½½½"½*½/½7½<½D½I½N½S½[½m½x½}½…½�½•½�½©½®½¶½»½À½È½Í½Ò½Ú½ß½ç½ì½ñ½ù½¾ ¾¾¾¾$¾)¾.¾6¾;¾@¾H¾M¾U¾Z¾b¾r¾{¾€¾ˆ¾“¾˜¾ ¾¥¾ª¾²¾·¾¼¾Ä¾É¾Î¾Ö¾Û¾ã¾è¾ð¾¿¿¿¿¿¿'¿,¿1¿F¿N¿W¿_¿d¿l¿t¿”¿œ¿¥¿µ¿Å¿×¿Ü¿ä¿ì¿À ÀÀ#À,À1À9ÀAÀ_ÀgÀpÀyÀ~À†ÀŽÀ¢À§À¯À´À¼ÀÁÀÉÀØÀàÀåÀêÀòÀ÷ÀüÀÁ ÁÁÁÁ"Á'Á/Á=ÁBÁJÁOÁTÁYÁaÁfÁkÁpÁwÁ|Á„Á‰ÁŽÁ“Á›Á®Á¶Á¿ÁÇÁÌÁÔÁÜÁôÁüÁ ÂÂÂ"Â+Â3Â<ÂDÂIÂQÂlÂtÂ}…Š’šŸ§¯ÂÀÂÅÂÍÂÒÂÚÂßÂçÂìÂó ÃÃ1ÃFÃOÃTÃ\ÃaÃhÃ~ÆËÓØàúÃÃÃÌÃáÃéÃòÃÄÄ)Ä1ÄBÄJÄRÄWÄ_ÄdÄlĉđĚğħįĴļÄÄÄÝÄåÄíÄùÄ ÅÅÅ!Å)Å:Å?ÅGÅLÅQÅYÅ^ÅpÅxŃŋÅ�ŘÅ�ťŭŲźſÅÇÅÏÅÔÅÜÅäÅéÅñÅöÅþÅÆÆÆ!Æ&Æ.Æ<ÆAÆIÆNÆVÆ[ÆcÆkÆpÆxÆ}Æ…Æ�ƒƚƢƧƯƴƼÆÄÆÔÆÜÆäÆúÆÿÆÇÇÇÇ$Ç;Ç@ÇHÇPÇXÇ]ÇeÇmÇuLjÇ�Ç•Ç�ǥǪDzǺÇÂÇÖÇÛÇãÇëÇóÇøÇÈÈÈÈ&È+È0È;È@ÈEÈTÈYÈ^ÈkÈpÈuȆȋÈ�ȟȤȩȺȿÈÄÈÛÈàÈåÈøÈýÈÉÉ É%É;É@ÉEÉYÉ^ÉcÉ{ɀɅɛɠɥɿÉÄÉÉÉáÉæÉëÉÊ ÊÊ+Ê0Ê5Ê:Ê?ÊGÊLÊQÊYÊ^ÊfÊkÊpÊxʇÊ�ʔʙʡʦʫʲʷʿÊÄÊÉÊÑÊäÊíÊòÊúÊÿÊËË*Ë/Ë7Ë<ËDËdËiËqËvË~˃ˋ˜˿ËÄËÉËèËíËöËÌ ÌÌÌ!Ì)Ì1ÌDÌNÌSÌ[Ì`ÌhÌqÌvÌ~̃̈Ì�Ì•Ì�̸̫̰̽ÌÅÌÊÌÒÌáÌæÌîÌöÌûÌÍÍÍÍ$Í,Í4Í<ÍAÍIÍNÍVÍdÍmÍrÍzÍ͇͔ͤͷÍÊÍÏÍ×ÍÜÍäÍõÍþÍÎÎÎÎ"Î*Î8ÎAÎFÎNÎWÎ\ÎdÎmÎrÎz΃ΈÎ�ΙΞΦίδμÎÅÎÊÎÒÎ×ÎßÎäÎìÎÿÎÏ ÏÏÏÏ#Ï(Ï0Ï5Ï=ÏEÏJÏOÏWÏ\ÏdÏiÏqσψÏ�ϕϚϢϧϬϴϹÏÀÏÅÏÍÏÒÏÚÏâÏçÏìÏôÏùÏÐÐÐ%Ð-Ð2Ð:Ð?ÐGÐLÐTÐYÐ^ÐfÐ|ЇЌДЙСвзпÐÄÐÉÐÑÐÖÐÛÐâÐçÐïÐôÐüÐÑ ÑÑÑÑ#Ñ(Ñ0Ñ?ÑDÑLÑQÑVÑ^ÑcÑhÑoÑtÑ|Ñ�щёіћѣѨѰѵѽÑÂÑÊÑÒÑÛÑäÑìÑôÑýÑÒÒÒ!Ò*Ò3Ò8ÒAÒFÒOÒTÒ\ÒaÒiÒnÒvÒ~Ò†Ò‹Ò“Ò›Ò Ò¨Ò°Ò¸Ò½ÒÅÒÍÒÒÒÚÒßÒèÒðÒõÒþÒÓ ÓÓÓ!Ó*Ó2Ó7Ó?ÓDÓIÓQÓVÓ^ÓcÓkÓsÓxÓ€ÓˆÓ�Ó•Ó�Ó¥Ó»ÓÀÓÈÓÍÓÕÓÚÓâÓçÓïÓôÓùÓÔÔÔ#Ô(Ô0Ô5Ô=ÔVÔ^ÔgÔrÔwÔԇԌԔԜԡԩԱԺÔÃÔËÔÓÔÜÔåÔîÔ÷ÔÕ ÕÕÕ Õ%Õ.Õ3Õ;Õ@ÕHÕMÕUÕ]ÕeÕjÕrÕzÕÕ‡Õ�՗՜դլձչվÕÇÕÏÕÔÕÝÕåÕêÕóÕûÕÖ ÖÖÖÖ#Ö(Ö0Ö5Ö=ÖBÖJÖRÖWÖ_ÖgÖlÖtÖ|Ö„Ö˜Ö�Ö¥ÖªÖ²Ö·Ö¿ÖÄÖÌÖÑÖÖÖÞÖñÖöÖþÖ× ×××/×7×@×I×N×V×^×c×k×s×|ׅ׎דכנר׼×Ä×É×Î×Ö×ß×ò×÷×ü× ØØØ"Ø'Ø,Ø:Ø?ØDØRØWØ\ØxØ}؂؇،ؙؔ؞ئثسظؽØÅØÎØ×ØàØéØòØúØÙ ÙÙÙ'Ù0Ù5Ù:ÙBÙGÙLÙTÙcÙkÙsÙ�Ù†Ù�ٜٔ٤٬ÙÂÙÎÙÓÙÛÙóÙøÙÚÚ Ú)Ú8ÚAÚWÚ`ÚtÚ}ڔڜکڿÚÇÚÐÚéÚñÚùÚÛÛ0Û9ÛBÛKÛTÛ]ÛfÛoÛtÛ|Û�ÛŠÛ�Û—ÛœÛ¤Û©Û±Û¶Û¾ÛÆÛËÛÐÛØÛÝÛåÛêÛòÛ ÜÜÜÜ%Ü*Ü2ÜMÜRÜZÜ_ÜgÜ~܆ܟܤܬܴܼÜÅÜÎÜ×ÜàÜåÜíÜõÜÝ ÝÝÝÝ#Ý(Ý-Ý5Ý:ÝBÝJÝOÝTÝ\ÝmÝuÝ}݂݇Ý�ݔݙݡݦݮݳݻÝÃÝÈÝÍÝÕÝÞÝæÝïÝôÝùÝÞÞ ÞÞÞ Þ%Þ-Þ5Þ:Þ?ÞGÞYÞaÞnÞsÞ{Þ€ÞˆÞ�Þ•ÞšÞŸÞ§ÞÄÞÌÞÕÞÚÞâÞçÞïÞß ßßß#ß+ß0ß8ß@ßPßZß_ßjßoß~߃ߋß�ß•ß�ߢߧ߯ߴ߼ßÁ߯ßÎßßßèßíßòß÷ßÿßà àààà"à*à/à4à<àQàVàhàmàuàzà‚à‡à�à”àœà¡à¦à®àÄàÍàÖàÞàìàôà ááá%á*á2á7á?áDáLáQáVá^ápá|áˆá�á•ášá¢á³á»áÃáËáÐáØáíáòáúáâââââ%â,â3â9â?âEâKâQâXâ_âfâmâsâyââ…â‹â‘â—â�â¤â«â²â¸â¾âÄâÊâÐâÖâÜâãâéâïâõâûâãã ãããã%ã+ã1ã7ã=ãCãIãOãUã[ãaãgãmãsãyãã…ã‹ã‘ã—ã�ã£ã©ã¯ãµã»ãÁãÇãÍãÓãÙãßãåãëãñã÷ãýãä ääää!ä'ä-ä3ä:äAäHäOäVä]ädäkäräyä€ä‡äŽä•äœä£äªä±ä¸ä¿äÆäÍäÔäÛäâäéäðä÷äþäå ååå!å(å/å6å=åDåKåRåYå`ågånåuå|åƒåŠå‘å˜åŸå¦å­å´å»åÂåÉåÐå×åÞåååìåóåúåæææææ$æ+æ2æ9æ@æGæNæUæ\æcæjæqæxææ†æ�æ”æ›æ¢æ©æ°æ·æ¾æÅæÌæÓæÚæáæèæïæöæýæç ççç ç'ç.ç5ç<çCçJçQçXç_çfçmçtç{ç‚ç‰ç�ç—çžç¥ç¬ç³çºçÁçÈçÏçÖçÝçäçëçòçùçèèèèè#è*è1è8è?èFèMèTè[èbèièpèwè~è…èŒè“èšè¡è¨è¯è¶è½èÄèËèÒèÙèàèçèîèõèüèé éééé&é-é4é;éBéIéPéWé^éeélésézé�éˆé�é–é�é¤é«é²é¹éÀéÇéÎéÕéÜéãéêéñéøéÿéê êêê"ê)ê0ê7ê>êEêLêSêZêaêhêoêvê}ê„ê‹ê’ê™ê ê§ê®êµê¼êÃêÊêÑêØêßêæêíêôêûêë ëëëë%ë,ë3ë:ëAëHëOëVë]ëdëkërëyë€ë‡ëŽë•ëœë£ëªë±ë¸ë¿ëÆëÍëÔëÛëâëéëðë÷ëþëì ììì!ì(ì/ì6ì=ìDìKìRìYì`ìgìnìuì|ìƒìŠì‘ì˜ìŸì¦ì­ì´ì»ìÂìÉìÐì×ìÞìåìììóìúìííííí$í+í2í9í@íGíNíUí\ícíjíqíxíí†í�í”í›í¢í©í°í·í¾íÅíÌíÓíÚíáíèíïíöíýíî îîî î'î.î5î<îCîJîQîXî_îfîmîtî{î‚î‰î�î—îžî¥î¬î³îºîÁîÈîÏîÖîÝîäîëîòîùîïïïïï#ï*ï1ï8ï?ïFïMïTï[ïbïiïpïwï~ï…ïŒï“ïšï¡ï¨ï¯ï¶ï½ïÄïËïÒïÙïàïçïîïõïüïð ðððð&ð-ð4ð;ðBðIðPðWð^ðeðlðsðzð�ðˆð�ð–ð�ð¤ð«ð²ð¹ðÀðÇðÎðÕðÜðãðêðñðøðÿðñ ñññ"ñ)ñ0ñ7ñ>ñEñLñSñZñañhñoñvñ}ñ„ñ‹ñ’ñ™ñ ñ§ñ®ñµñ¼ñÃñÊñÑñØñßñæñíñôñûñò òòòò%ò,ò3ò:òAòHòOòVò]òdòkòròyò€ò‡òŽò•òœò£òªò±ò¸ò¿òÆòÍòÔòÛòâòéòðò÷òþòó óóó!ó(ó/ó6ó=óDóKóRóYó`ógónóuó|óƒóŠó‘ó˜óŸó¦ó­ó´ó»óÂóÉóÐó×óÞóåóìóóóúóôôôôô$ô+ô2ô9ô@ôGôNôUô\ôcôjôqôxôô†ô�ô”ô›ô¢ô©ô°ô·ô¾ôÅôÌôÓôÚôáôèôïôöôýôõ õõõ õ'õ.õ5õ<õCõJõQõXõ_õfõmõtõ{õ‚õ‰õ�õ—õžõ¥õ¬õ³õºõÁõÈõÏõÖõÝõäõëõòõùõööööö#ö*ö1ö8ö?öFöMöTö[öböiöpöwö~ö…öŒö“öšö¡ö¨ö¯ö¶ö½öÄöËöÒöÙöàöçöîöõöüö÷ ÷÷÷÷&÷-÷4÷;÷B÷I÷P÷W÷^÷e÷l÷s÷z÷�÷ˆ÷�÷–÷�÷¤÷«÷²÷¹÷À÷Ç÷Î÷Õ÷Ü÷ã÷ê÷ñ÷ø÷ÿ÷ø øøø"ø)ø0ø7ø>øEøLøSøZøaøhøoøvø}ø„ø‹ø’ø™ø ø§ø®øµø¼øÃøÊøÑøØøßøæøíøôøûøù ùùùù%ù,ù3ù:ùAùHùOùVù]ùdùkùrùyù€ù‡ùŽù•ùœù£ùªù±ù¸ù¿ùÆùÍùÔùÛùâùéùðù÷ùþùú úúú!ú(ú/ú6ú=úDúKúRúYú`úgúnúuú|úƒúŠú‘ú˜úŸú¦ú­ú´ú»úÂúÉúÐú×úÞúåúìúóúúúûûûûû$û+û2û9û@ûGûNûUû\ûcûjûqûxûû†û�û”û›û¢û©û°û·û¾ûÅûÌûÓûÚûáûèûïûöûýûü üüü ü'ü.ü5ü<üCüJüQüXü_üfümütü{ü‚ü‰ü�ü—üžü¥ü¬ü³üºüÁüÈüÏüÖüÝüäüëüòüùüýýýýý#ý*ý1ý8ý?ýFýMýTý[ýbýiýpýwý~ý…ýŒý“ýšý¡ý¨ý¯ý¶ý½ýÄýËýÒýÙýàýçýîýõýüýþ þþþþ&þ-þ4þ;þBþIþPþWþ^þeþlþsþzþ�þˆþ�þ–þ�þ¤þ«þ²þ¹þÀþÇþÎþÕþÜþãþêþñþøþÿþÿ ÿÿÿ"ÿ)ÿ0ÿ7ÿ>ÿEÿLÿSÿZÿaÿhÿoÿvÿ}ÿ„ÿ‹ÿ’ÿ™ÿ ÿ§ÿ®ÿµÿ¼ÿÃÿÊÿÑÿØÿßÿæÿíÿôÿûÿ %,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍÔÛâéð÷þ !(/6=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú$+29@GNU\cjqx†�”›¢©°·¾ÅÌÓÚáèïöý  '.5<CJQX_fmt{‚‰�—ž¥¬³ºÁÈÏÖÝäëòù#*18?FMT[bipw~…Œ“𡍝¶½ÄËÒÙàçîõü &-4;BIPW^elsz�ˆ�–�¤«²¹ÀÇÎÕÜãêñøÿ ")07>ELSZahov}„‹’™ §®µ¼ÃÊÑØßæíôû %,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍÔÛâéð÷þ !(/6=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú     $ + 2 9 @ G N U \ c j q x  † � ” › ¢ © ° · ¾ Å Ì Ó Ú á è ï ö ý      ' . 5 < C J Q X _ f m t { ‚ ‰ � — ž ¥ ¬ ³ º Á È Ï Ö Ý ä ë ò ù      # * 1 8 ? F M T [ b i p w ~ … Œ “ š ¡ ¨ ¯ ¶ ½ Ä Ë Ò Ù à ç î õ ü      & - 4 ; B I P W ^ e l s z � ˆ � – � ¤ « ² ¹ À Ç Î Õ Ü ã ê ñ ø ÿ     " ) 0 7 > E L S Z a h o v } „ ‹ ’ ™   § ® µ ¼ à Ê Ñ Ø ß æ í ô û  %,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍÔÛâéð÷þ !(/6=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú$+29@GNU\cjqx†�”›¢©°·¾ÅÌÓÚáèïöý  '.5<CJQX_fmt{‚‰�—ž¥¬³ºÁÈÏÖÝäëòù#*18?FMT[bipw~…Œ“𡍝¶½ÄËÒÙàçîõü &-4;BIPW^elsz�ˆ�–�¤«²¹ÀÇÎÕÜãêñøÿ ")07>ELSZahov}„‹’™ §®µ¼ÃÊÑØßæíôû %,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍÔÛâéð÷þ !(/6=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú$+29@GNU\cjqx†�”›¢©°·¾ÅÌÓÚáèïöý  '.5<CJQX_fmt{‚‰�—ž¥¬³ºÁÈÏÖÝäëòù#*18?FMT[bipw~…Œ“𡍝¶½ÄËÒÙàçîõü &-4;BIPW^elsz�ˆ�–�¤«²¹ÀÇÎÕÜãêñøÿ ")07>ELSZahov}„‹’™ §®µ¼ÃÊÑØßæíôû %,3:AHOV]dkry€‡Ž•œ£ª±¸¿ÆÍÔÛâéð÷þ !(/6=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú$+29@GNU\cjqx†�”›¢©°·¾ÅÌÓÚáèïöý  '.5<CJQX_fmt{‚‰�—ž¥¬³ºÁÈÏÖÝäëòù     # * 1 8 ? F M T [ b i p w ~ … Œ “ š ¡ ¨ ¯ ¶ ½ Ä Ë Ò Ù à ç î õ ü ! !!!!&!-!4!;!B!I!P!W!^!e!l!s!z!�!ˆ!�!–!�!¤!«!²!¹!À!Ç!Î!Õ!Ü!ã!ê!ñ!ø!ÿ!" """"")"0"7">"E"L"S"Z"a"h"o"v"}"„"‹"’"™" "§"®"µ"¼"Ã"Ê"Ñ"Ø"ß"æ"í"ô"û"# ####%#,#3#:#A#H#O#V#]#d#k#r#y#€#‡#Ž#•#œ#£#ª#±#¸#¿#Æ#Í#Ô#Û#â#é#ð#÷#þ#$ $$$!$($/$6$=$D$K$R$Y$`$g$n$u$|$ƒ$Š$‘$˜$Ÿ$¦$­$´$»$Â$É$Ð$×$Þ$å$ì$ó$ú$%%%%%$%+%2%9%@%G%N%U%\%c%j%q%x%%†%�%”%›%¢%©%°%·%¾%Å%Ì%Ó%Ú%á%è%ï%ö%ý%& &&& &'&.&5&<&C&J&Q&X&_&f&m&t&{&‚&‰&�&—&ž&¥&¬&³&º&Á&È&Ï&Ö&Ý&ä&ë&ò&ù&'''''#'*'1'8'?'F'M'T'['b'i'p'w'~'…'Œ'“'š'¡'¨'¯'¶'½'Ä'Ë'Ò'Ù'à'ç'î'õ'ü'( ((((&(-(4(;(B(I(P(W(^(e(l(s(z(�(ˆ(�(–(�(¤(«(²(¹(À(Ç(Î(Õ(Ü(ã(ê(ñ(ø(ÿ() )))")))0)7)>)E)L)S)Z)a)h)o)v)})„)‹)’)™) )§)®)µ)¼)Ã)Ê)Ñ)Ø)ß)æ)í)ô)û)* ****%*,*3*:*A*H*O*V*]*d*k*r*y*€*‡*Ž*•*œ*£*ª*±*¸*¿*Æ*Í*Ô*Û*â*é*ð*÷*þ*+ +++!+(+/+6+=+D+K+R+Y+`+g+n+u+|+ƒ+Š+‘+˜+Ÿ+¦+­+´+»+Â+É+Ð+×+Þ+å+ì+ó+ú+,,,,,$,+,2,9,@,G,N,U,\,c,j,q,x,,†,�,”,›,¢,©,°,·,¾,Å,Ì,Ó,Ú,á,è,ï,ö,ý,- --- -'-.-5-<-C-J-Q-X-_-f-m-t-{-‚-‰-�-—-ž-¥-¬-³-º-Á-È-Ï-Ö-Ý-ä-ë-ò-ù-.....#.*.1.8.?.F.M.T.[.b.i.p.w.~.….Œ.“.š.¡.¨.¯.¶.½.Ä.Ë.Ò.Ù.à.ç.î.õ.ü./ ////&/-/4/;/B/I/P/W/^/e/l/s/z/�/ˆ/�/–/�/¤/«/²/¹/À/Ç/Î/Õ/Ü/ã/ê/ñ/ø/ÿ/0 000"0)00070>0E0L0S0Z0a0h0o0v0}0„0‹0’0™0 0§0®0µ0¼0Ã0Ê0Ñ0Ø0ß0æ0í0ô0û01 1111%1,131:1A1H1O1V1]1d1k1r1y1€1‡1Ž1•1œ1£1ª1±1¸1¿1Æ1Í1Ô1Û1â1é1ð1÷1þ12 222!2(2/262=2D2K2R2Y2`2g2n2u2|2ƒ2Š2‘2˜2Ÿ2¦2­2¡.0ž• ë)ö“ÿN?kzø‰'“V�Ô·Ü\¢!¬ó­&Ñ ÓÐ×…Ù ÜYݧÞößìã—å«å¿åÆåÍåÔåÛåXé•êrø™þ“i”œ¥R ú"“(4*H*Q*X*U1\1c1Z9¶]_cosxwÞ€¸‡T‰]‰·‹Ë‹Ã�'�»¶ù·7¹»¾áÁýÄ"È÷Ð2Ö¶è‘êì<îbð‡ñÌòoôÕõ;÷ù~úùûêýPÿ˽&¤™ „ í k `É'¡†+5/×2è7¨9±9ä;³=º=Á=È=Ñ=Ü=ç=î=õ=ý=†`¨cÆgÎgÖg|Q~f€ê�¦ƒc…“‰A‹U‹i‹}‹†‹�‹–‹�‹�í�Ø’$”ù•&—ö˜›êœC jÁtÂñÉøÉ Ê Ê)Ê0Ê9ÊFÊNÊ0å¦êÇîÚó¥öDýx ßwSðR« l!M" $Ä%¯'Î*â*ö*�5Q9d9ÉAºDG|IK‡LhNàQU|VhfiÐŒ �’%”,”5”<”C”z˜|›…žàŸУ䣬ÃÑÇ=Ë Ï4Ù>ÙHÙRÙ\ÙfÙpÙzلَ٘٢٬ٶÙÀÙÊÙÔÙÞÙèïhõúãý²\ÝÕ ê ß[Ðäø  4Hj'9µ?‚BÐG OrgŒjŽlg‚�…ƒ‡š¶›�œ§œ±œ»œÅœÏœ¥Ÿªd°è³cµjµqµxµ�µе“µšµ¡µªµʹî½Ê¿ÒÀƒÖ‡ÛNâ4éóñIöLù- 5 = ¾*Æ*s;{?„?‹?’?uL&N0O<¡ =¡ >¡ ?¡ @¡ A¡ B¡ C¡ D¡ E¡ ¾Ã ¿Ã Àà Áà Âà Ãà Äà Ï Ï Ï Ï Ï !Ï "Ï #Ï Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô Ô !Ô "Ô #Ô $Ô Â Ã Ä Å Æ Ç šG ›G J J J J J J J J J J J �O :Q ?Q èQ éQ êQ ëQ ìQ •Y –Y —Y ˜Y ™Y šY ›Y œY �Y žY ŸY N\ =] >] ?] @] A] B] C] D] E] F] G] H] I] û_ â` ã` ä` å` æ` ç` è` é` ê` c éc êc ëc ìc íc îc Óe ¬f ±f Og Pg Qg Rg Sg Tg Ug ui Gj ÿk l l l n n n æp çp =r Br Gr Lr Ý� Þ� ß� à� á� â� ã� ä� å� æ� ç� è� é� ê� ë� C¶ D¶ E¶ F¶ G¶ 1 2 3 4 5 6 7 8 9 $O %O &O 'O (O )O *O +O å^ ½_ ¾_ ¿_ À_ Á_ Â_ Ã_ Ä_ Å_ Æ_ Ç_ È_ É_ Ê_ Ë_ Ì_ Í_ Î_ Ï_ {l |l }l ~l l €l �l ‚l ƒl „l …l ïq ðq ñq vs ws xs ys zs {s |s }s ~s s €s �s ‚s ƒs „s …s †s ‡s ˆs ‰s Šs ‹s Œs �s Žs �s �s ()*+,-.:;àáâãß´ µ ¶ ©!k">#?#í#û$ü$ý$þ$ÿ$%%%%%%%%% % % % % %%%%T1å1²6³6´6µ6¶6ÜDÝDÞDcUdUšZ›ZœZ‘^–^²_³_´_µ_¶_·_¸_¹_º_jjjjjjjïvè–é–ê–ë–ì–í–e�'žŸñŸU È š¡û¡z¢L£®£´¼µ¼¶¼·¼lÔmÔnÔoÔpÔqÔrÔâ ã ä å æ ƒ(„(…(†(‡(¬?­?®?¯?°?±?²?³?´?ëzÑ{Ò{Ó{Ô{Õ{Ö{×{Ø{Ù{Ú{Û{‚�ƒ�7„<„A„;†<†¤‡©‡®‡¥‰•ŠšŠŸ‹‘Œ–Œ›Œù�ú�û�““““““““““““““ “!“"“#“$“%“&“'“(“)“*“+“,“-“.“/“0“1“2“3“4“5“6“}~€�‚ƒ½# 44444444444o=>>©?®?³?¸?½?Â?Ç?Ì?Ñ?Ö?Û?yHzH{H|H}H~HH¬N±N¶N»NÀNÅNÊNÏNÔNÙNÞN€W�W7YeCeHeÅlÆlÇlÈlôpùpþpqq qqqq!q&q¿{À{Á{b}c}d}e}H�I�J�K�Ÿƒ ƒ¡ƒ††††<‰=‰>‰?‰¬‹­‹®‹¯‹gŽhŽiŽj޳�´�µ�¶�é’ê’ë’ì’í’¾•¿•À•Á••ÕÄ•{�|�}�~�ÄŸÅŸÆŸÇŸÈŸ££££££££<©=©>©?©†«‡«­­­­^¯_¯`¯a¯b¯h²i²j²±Ö²Ö³Ö´ÖµÖ¶Öéçêçëçìçíçîçïç?ï@ïAïBïCïDïEïFïGïHïIïJïKïLïÄÅÆÇȲ1³1´1µ1¶1·1�G¢GØHÝHïIðIñIòI«P¬P­P®P¯P°PéUêUåVæVçVèVéVêVëVìVíVîVïVðVñVòVóVôVõVöV÷VøVùVúVûVüVýVþVÿVWW-Ã.Ã/Ã0Ã1Ã2Ã3Ã4Ã5Ã6Ã7Ã8Ã9Ã:Ã;Ã<Ã=Ã6��³´µ¶·¸¹`abcdefghijklmnopqrstuvwxyz{|}~€Ä0Å0Ž1�1�1‘1’1“1”1•1–1—1$7,8-8.8/8081828384858Ò;”<¢>£>¤>¥>¦>¼:±œ  ƒ xácõÊ �á+X,0®3C8º8ƒ:ú:><µ<ð@fA;BäBµa+bczdðdÅer¬rñ|h}Þ~mõ€E‚¼‚„y„¼…3†̉BŠ¥Ž�V�ä‘3“ª“•‡–™—˜j™à™µš�›œW�Í�¢žùž¢Ÿ· -¡¢êÁfÄ—áâ¸â¬å#æùæ£çWëÎë¤ìNíð¡ð6ñòwôüör÷Gø®ý$þÏ E Äñòi®%‰õl# ä Ã!¨"#c$Ú$N&Å&(�(f)*¼,K-!.Ë.Q6Þ6‡78§8«:8;á;p<=ŒB/E¶G JKMM×NfOí?c@8AáA»B1CƒHIiIþIØJhKúK½OLP£P8QR¢R4SãSäSåSæSçSèSéSêSëSìSíSîSïSðSñSòSw[x\~\d]D^J^I_ó_``e`ó`ø`†a‹abbªbdcHd¯d´d�e8f=fógjh@iêik†k&mØmànánânãnänånænçnènénênënìnínînïntvuw{waxAyGyFzðz]{b{ð{õ{ƒ|ˆ|}}§}a~E¬±„€-�2�è‚_ƒ5„ß„†{†ˆ½ˆZšКþ›'Ÿ´Ÿ‰ 2¡›¦(§ï«�°h´‰¸JºÀºT»-¼¼¼M½n¾ä¾JÀ)Á'×|Ü Ý ÝzÞÜâkãAäÖä°åÃéRê(ë½ë—ìNòÅò›óEô£ö÷(ú·úÖe;å‰+,o,E-ï- <ƒ<Y=>ÝITJ*KÔKÊL@MšNP` a b ’z»~—íë±¶¿�Æ>ϸщÛìÞYáþäcçBè¯ô³öƒùUþò¶lÀ ?fË�Áƒ!v"B$z%ë%?'$(f/Å/$"0�0î0M1¬1 2j2É2("3•3ô3S4²45v5Õ576–6õ6T7³78q#8á#8O9®9 :r:|ãa3‡q¨hK>”ʰ=!]E^“­ °N·´·¸öž Ÿ0Ÿ&å'ò)ABøBZRS$T³ÚaۑܰÝ�Þ{ß¿àQáâ¨âänå<æHçzè¥é¨êÏë–ÑY€Z[Ît}uvç›.�„�Ú�0ž†žÜž.«F¡ Åà $Ï %Ô È œG J •O DQ íQ  Y S\ J] ` ë` c ïc Øe ¶f Vg zi Lj l n èp Qr ì� H¶ : ,O æ^ Ð_ †l òq ‘s /<ä"ä· ®!p"@#Ø#ò#%U1Ð1ê1·6ßDeU�Z›^»_jôvî–j�,ž Ÿ$ŸöŸV ³ Í Ÿ¡ü¡e¢¢Q£³£¸¼sÔç ˆ(µ?ðzÜ{„�F„û…=†³‡h‰¦‰ŸŠb‹ ‹ ŒÒ�ü�7“„¾#4p=>à?€HãN‚WnYê`MeÉl+qÂ{f}L�¢ƒ†@‰°‹kŽ·�î’Å•�ÉŸ£@©ˆ«­c¯k²·ÖðçMïɸ1§GâHóI±PëUW>Ã;‘º�Æ0˜1%768×;™<§>AAB–B2EF G I KQ9Ë$ÌQÑ*Òø×›ÙÈÝDäVèLéõïÍø½þŠø,Ž@—JÒKãL\RT{X®^aøbœfsg¯h^z…y†¢¡ú¡æ¢á£—¤M¥¦t¦ ¨ã­Ï®„¯ɸG«-/#1+2Ê3ò394˜†nŠ'ŒîŒõ�nŽr�š�Ð�q“>–‰­ö­Ö³¤ëÊï£ð»ñ}óÀöùôù ûÍü\&c\(Ô4<=šSÒõ� ¶&9ABñBhÒh›i¶iG{²‚h‡ûŠU�oŽ€�&”º”3•–•¼–á›Yžû ¢Ó«¬¬&°ÿ°K´µŠ·œ¸»)¼¿Ê¿¬Â½Ã€Ç”éGì­î‹ø<ú3ûB Ü » U ¼ = ¾ ? ´ z”mQ RIS°\%_`9p¼�¢ ¡ß¡¢¥9¥˺½¼#¾±Â-ÃÄ9ÉyÊ[ËûÎàÏÖÔÛzÝ™ôûô˜õœöÇ÷ù�ú6üãýçþhÇAökZŠ[\4`aµa@bÜbAc§c9dÎd£i»vU†…†�‡µˆ9‰Ž«ŽÕ•ð•]—9™ìœÒ�ò¢g£;¤ެ­>¯xÒ Ô.ؤØÚ:Ú«ÚÇÚTÛqÛ¤ÜÀÜ1ÝòÝÞÞ@ß\ßÍß5à+ä¢äèwè´éÒêbùØù8¯ñhñ�ídØ O%oæÁ"8#$œ$¹$Ñ(G)ý+s,.4¤4Ü9R:P^l^Ý^ù^Î_%`¹`‡a¤a3bÃbœcdçdte‘esotØw®x�•�ö‡lˆXŠΊâŒEŽd�·U¸½¹4º™»¼8¿©Â„Å©È×Ñ­ÒxØïØÅÙ7é®é ë”ìDí}ï¢ðçñ�óôôZöÀ÷6ø�ùû“ü ýoþêÿeÛCÁ?¶¡  ˆ }æh„úφæ+],0³3H8¿8ˆ:ÿ:C<º<õ@kA@BÍBêBºa0bcdõdÊer"r•r±rö|m}Ç~ã~Vrú€J‚Á‚„~„Á…8†щGŠªŽ �[�é‘8“¯“ •p–Œ–ÿ–ž—˜o™å™ºš”› œ\�Ò�§žþž‹Ÿ¨Ÿ¼ 2¡¢ïÁkÄœáâ¡â¾â±å(æþæŒç©ç\ëÓë©ì7íTíûïðŠð¦ð;ñùñò|ô÷w÷Lø³ý)þÔ J Éö÷n³*Žúq( é È!­"$#h$ß$S&Ê&(•(k)*$*¥,Á,4-P-&.´.Ñ.:6V6Ç6ã6p7�78¬8”:°:!;=;Ê;ç;v<=uB‘BC4E»GJ„K M„MÀNÜNOOkOAP˜P&QCQŽRªR*SFS�S9TVT}UïVãfÆiUjV�Í�£Ž«���¿’6“ΕE–™­™}œŸ7Ÿ¨Ÿf “ ¡K¡:¢á¢£7¥f¥ñ¥ ¦§¶§æ§Ä©Ä¬ÈÌàÏìì�ì¬ì�íî+î�ò©òó6ó�óô7ô¨õöGú¾úfþÝþjÊ?²'ˆý~ ô •  Œ œ[Ѫ"!#(!(’(®(B)ÿ)*«*;+©9Å96:R:';~;<Ï<ì<{= >ò?h@=AÊAçAÀB6ClHˆHûHInIJÁJÞJnKÿK¦OÂO5PQP¨P=QûQR¨R9SóS|[„\i]P^N_ø_j`ý`�a#b«bKcicId¹d�eBføgohEiÓiðik‹k+mÝmðnyv�wfxMyKzõzg{ú{�| }¨}H~f~F¶…€7�í‚dƒ:„È„å„ †€†ˆˆ_šÕšœŸ,Ÿ�Ÿ¹ŸŽ ¡8¡„¦ ¦§-§ô«¢°m´ޏOºźY»¼3¼¼R½s¾é¾OÀ.Á,×eÜ�ÜôÜÝ¥ÝcÞ€ÞÅâáâTãpãFäÛä™å¶å¬éÈé;êWê-ëÂë€ì�ìSòÊò ó.ôKô¨ö÷-ú¼ú¿ÛNj@Îër+Ž+,,t,J-Ø-õ-<ˆ<^=ì= >âIYJ/K½KÚKÏLEMŸNP3657:9482€�‚ƒÿŽ‘’½ ´µ²µ´¯±®³ÚâÞäæíêÝÙßéÛåëçØÜáïãàèìŸ ¡¥£¢‘�–’—“†Žˆ‡�º»´­²±¬³°¸©®¯µÉ’‘��ø ÷ ô ù ú û û € „ ý åèçäæ™ — š • ‘ ” œ ˜ › � Ž � ’ � “ – Ò Ñ Ó Ï Ð É Å Æ ¡“ú€ÿùþøýõûü¤ £ æ ì ë å é ä ê á ç è �Ž–*–+WVUÛÞÜÝßÍ ÃÙÚ×ÒÓÔÓ¥£¤ª ¦ § ® ­ ¶*ö*r¼½»º†…„Þœà Ó Ô À Ò Ñ Ð Õ Þ Ù Œ Õ Ö æèã²³µ¶®¯°±´¢�ËÔÈÉÝ ¢„‚‡¼¿¸¹½¾Ì¤ ¢ £ ç ê èêáå镘¡œ £¨™Ÿ›—¤ž�¬«§¢ª©”𥖽»¹º¸¹�‹Œð ïîíðñ¶²³¸¹·š™»¼€ ƒ ÝA=>CDBýðìíòóñÖ â Ñ á ç Í Ï æ å Ù ä ã Ø Ô Ð Ê Ì Ë Þ Ú × à ß Ò Û Õ Ó Ü Ø Ù Þ ß Ý –™ ©¬¥®¦¨«­§ªŸ ¢ Ç–”•½™š¿£À­¥›¡ª«ž�¢¤´¶¬²¯®Ÿ³µ °±§˜¦¾¨©œÌÅÆÒÑÄÅÀÁÂÃÀ(ý§¿¦ÔÑÛÞÑÖÍ ® ñòðï¹£�‹ñðï„»ˆà ¡Ÿ¢ÿ¿¬Ðˆ ˜*¨*«*®*±*‘+”+™+ž+«¬­ª®¾³ûžîëêíï´*¹*¾*ø*ˆ+‹+Ž+‹çåáµ´¶‚À¿ÁÀÖ€¬ ›�޾¿À ”ÄØ‚° ¤ùöõøúø÷óÙ×ØÈ…² §„ˆÝÛÜÌÁ‰’Š ‰ … ‹¥ÐÞ”ŽÒ¿Ìœ › — ‘óÄ�”õ†å¥—˜–…“õó¨Î  �† ¡ †Á½¼¿Âœ—–™žãàßâ䉆…ˆŠÓÏÎÒԙ꭛îüÿþ��™ò¹œ±‡ÂŽ�µ¶Å¹ÏÒÈ™�Õw•¦×w•¦Õwž™Õw—£ÕwÇÙw°ÿÕwå¢Ùw¥XřǙș­É™Ê™àË™óG*¤�R{9 ñÇ °F�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫóÇ ©Ý®Uÿ øÝ®þW´Ù#¯€àÐ&þW×�Ç·â'þW×�›†¤¢'þW×�àÝþWÅž‹¢Ñÿ÷ˆàþWÅž‹¢Òÿ÷ˆàþWÅž‹¢ÑýûˆàþWÅž‹¢ÒýûˆàþWÅž‹¢ÑœùˆàþWÅž‹¢ÒœùˆàþWÅž‹¢ÑìùˆàþWÅž‹¢ÒìùˆàþWÅž‹¢ÑÈúˆàþWÅž‹¢ÒÈúˆàþWÅž‹¢Ñ°ûˆàþWÅž‹¢Ò°ûˆàþWÅž‹¢ÑÌøˆàþWÅž‹¢ÒÌøˆàþW‹¢ö Ôÿ÷ŠéþW‹¢ö ÔýûŠéþW‹¢ö ÔœùŠéþW‹¢ö ÔìùŠéþW‹¢ö ÔÈúŠéþW‹¢ö Ô°ûŠéþW‹¢ö ÔÌøŠéþWö ›†äÑþWö ›†¦ÕþWö ›†ýéþWö ›†ãôþWö ›†€úþWö ›†ªîþWö «ãýêþWö «ãÕý�Xö ˜XÃþäü¸Ýªô%ðþ%˜XÃþäü¸Ýô ªô%  Ýô þWìæìñ»ò˜X¡Þ ´�Ú ñÇ ¡Þ ØÚUÿ˜Xòþ%äü¾•§íþ%ÿþ%þW²Ýžš÷©˜X¡ž Ç›Á˜X¡ž ÇÅÔƒXèñ"þWÏžÀýƒX¶�Ú ñÇ �Ú:ûù9ƒXµ�Ú ñÇ �Ú:ûù9º_ܧÛ†ô µ¢ߪÇ_�´Û†ô‡߬Ç_ÄÜÛ†ô‡ƳÇ_ÄÜÛ†ô‡•¿º_´Ù#éÙ#›Ú#Ç_Âðëû©„Ê²ÝæûµüÇ_‰ô̈©„˲ÝLjµüÇ_‰ôÐÆ ×°‰Üº_×�ЄÇ·â'º_×�Є›†¤¢'Ç_×�Є¶ßËæ¯­ì®²Ý¥µ³µÇ_×�Є¶ßËáMáMâMÁÙäMóØM 6­ƒ‘0þæ¯®í®²Ý¥µ³µÇ_×�Є¶ßäœÂ¥µ­¦Ç_×�Є¶ßä²Ý¥µ­¦Ç_ÇЄ»�‡ã'Ç_›†ú‰¶ß‚©Ç_›†Єú‰ô¢'Ç_°ÿÒýÛ†áÑ Ç_°ÿÒýÛ†¼Ü Ç_££¤öž¥óï  ŠÒܤ‰cZ4ºº“ »õEï .ú@²û!p°ø$‹  ñ”äý(áï®°ø$Uÿ ËË̦¡Íóï  [¤lâæ õÝô Ç_®ï®áï®°ø$‹òþ%Ôå:«ð®ºð®Ç_®ï®áï®°ø$‹¾ç®Ø£)«ð®ºð®Ç_¾ð®»»¼ª§½óï  )ºÜŸb†û°ø$Šœð®äý(ìñ®°ø$UÿÇ_¾ð®ìñ®°ø$Šòþ%Ôå:·ò®Ç_¾ð®ìñ®°ø$Š¾ç®Ø£)·ò®Ç_�»×°¸ïšìÇ_�»×°Øû˜ß Ç_Û†ô‡ŠË½šÿ Çšÿ ¹šÿ Û… á… áÅž¼•§¶Ý¶Ýô §fÛ†§f±…(§f´Ö§fÍ®§fóЧf‡« ±f©fêì©fžî©fÄí©f×�©fÇ©f›†©fôí©f¯ñ©f†‘©f¢ã©fÅž©fªÓ©fÞЩf°ÿ©fÍÍú¹Î‚Ï’OÃRÄ[m©fÝÁ©f•§©f§®©f¢«©f®©©f©¨©f៩fâÔ©f¬å©f²ÝÚ ÈšÜ … â … ¹ñ”¹Ý¹Ýô ’ÝÂ’Ýô ÜÝÂÜÝô ‚Ý‚Ýô ÊÝÂÊÝô ¶jÝ ²²ÝÂÝ´jÝÂÒú®dÄÄ—Æý�Ó ÇÅœÓ Èã÷Ó É÷œÓ ¹UÏG^!ß¶¸ãó¸£ý£ý¤ýÀ ˆÙÅQòƒåUÒÝÂÒÝô æÝÂæÝô –g†0†0aˆ0�ñ.×"®®>¾ ©m˜gÑü®‡ý® �žš×��î �þ ûžš×��î �þ û½™°ÿ�î �þÈšÆÔå:ÆØ£)Èòþ%Ôå:È¾ç®Ø£)„µ¢¨ ²Ý« ‰ô« •§ñ µ¢ŠÈš‹g‹g‹g‹g‹g‹g‹g‹g ‹g!‹g#‹g#‹g%‹g%‹g'‹g)‹g)‹g*‹g+‹g1‹g7‹g8‹g:‹g<‹g>‹g>‹g@‹gA‹gB‹gC‹gD‹gL‹gM‹gQ‹gQ‹gT‹gV‹gp‹gv‹gy‹g}‹g ‹g¿Ñü®õ Ñü®�î Uÿ�î ÂÑü®ú‹¯�î ¾ ÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ‰ô³ ‰ôžÀHð÷¾ ÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ•§³ •§ •§¸úUÿð÷° ‰ô° •§ñÝÂñÝô «žš×��î �þ�žš×��î �þ�½™°ÿ�î �þÈšªŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#Èš�þšòþ%Ôå:š¾ç®Ø£)¡Èš¦���DefaultFrequencyRankÁ ¹ÅÌ"*RÈšº²ÝǬ쮭쮲ÝÇûì®®í®²Ý…e½éìñ…eìæ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫž™…e¸Û�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ—£…eñÇ øÝ®…eÍŠŒî*…eãÉ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ›†…eĆ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ墅e÷ýݧ*«Ýô  ¼žš×��þ Äžš×��î  �–¯Uÿ �î  Ê�–¯�þ Êžšžš×�·–¯UÿœÂ�–¯ Ð�–¯�þ Êžš×�ù–¯Òü ¸�–¯�þ�–¯ ¼½™°ÿ�þ Ľ™°ÿ�î  ß—¯UÿÉ–¯ Êß—¯�þ ʽ™½™°ÿ†˜¯Uÿ¶æ ì—¯ Ðß—¯�þ ÊÈš½™°ÿƝÝô  ¸ß—¯�þì—¯¢œð®äý(¢òþ%Ôå:¢¾ç®Ø£)âœÂâ²Ý¥eœÂÒ¹ãã�‡çèì ÏiôC[^2Ξš×�´²Ýúœð®äý(úòþ%Ôå:ú¾ç®Ø£)‡œð®äý(‡òþ%Ôå:‡¾ç®Ø£)„œð®äý(„òþ%Ôå:„¾ç®Ø£)Jýú®?²Ýî²ÝÚ ²Ý ™�–¯ ™ß—¯ ›�–¯�þ ›ß—¯�þ ‰�þ ‹�þ™… ™Åž í�–¯ íß—¯ñDéë�þšŒšŒTakeÁœŒ�¥I�Œ¤¥I]”£• ÛŽÛŽRepeatÁÝŽelementÁÏNï«JþÒH"éëñDÇ�þç‰ç‰ClonedÁé‰ÛËô:³^‡Ã/ã¬ìŠìŠRevÁîŠ�ÄF‡ÂœrMºNÓŒî*ïDÇ�þÊï*ñD°ÿ�þšŒšŒ霯œŒ�¥I�Œ¤¥I]”£• ÛŽÛŽ«�¯ÝŽ»�¯ÏNï«JþÒH"°ÿñD·É�þÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþìŠìжž¯îŠ�ÄF‡ÂœrMºNÓð‰ð‰CopiedÁò‰ÛËÃ;غ¶Ÿ·ûv¾Œî*©»hñD•§�þÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ«Ž¯Ï•§Š�¯•§UÿñD•§�þÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþ€�¯Ï‰ô�Ø:•§UÿñD�þšŒšŒ霯œŒ�¥I�Œ¤¥I]”£• ÛŽÛŽ«�¯ÝŽ»�¯ÏNï«JþÒH"DzÝ͉ôÍ•§±�Ú ñÇ É9ÈšÜ9¥µ¥µ¤¦µßƒ†§µ¦ƒ†¼ºàË£ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw®®«°¿ ”3¯f*²Û�Èšõõĵ AllocErrorÁ Ô]YO^÷`UÿÝ9  Ý8Ý8ArcInnerÁß8strongÁä7à8Âä7á8êÒä71%wãÿÃxdÈšUÿûù9šD•¦šDÇšDªºšDé·å;ä3ÝÂÒú®€¬ù«ý­ý­ MaybeUninitÁÿ­uninitÁ瀮�çÙW£Ÿì·œ ÝÂù« ¨ª¯› — — RawTableInnerÁ ˜ bucket_maskÁ K ™ctrlÁ K š growth_leftÁ K ›itemsÁ KT“ ×Gפâ›Ç›ݪ›°ÿ›Ý›ŒÈƒ  îöŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ØÚ�þöŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#�þðݪð°ÿðŒÈôð£ôô¢ô‹Îôµ÷ôÞšñȪ¯ñÇñݪñ°ÿñÝÂñŒÈïéëïÇÝÂëÚ ÚÞ œí%“2“2©ˆ$•2�ñ.ç–\*=°"�řǙș­É™Ê™àË™óG*¤�R{9 ËŽ“2“2©ˆ$•2�ñ.ç–\*=°"�…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ËŽ�þ�þ“2“2©ˆ$•2�ñ.ç–\*=°"�¿¡“2“2©ˆ$•2�ñ.ç–\*=°"�‡ “2“2©ˆ$•2�ñ.ç–\*=°"�¢Ê“2“2©ˆ$•2�ñ.ç–\*=°"�θ“2“2©ˆ$•2�ñ.ç–\*=°"��©“2“2©ˆ$•2�ñ.ç–\*=°"�í®½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*r¿¡½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*r‡ ½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*r¢Ê½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*rθ½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*r�©½1½1‹ŒÀ1�ñ.Á1ìŠñ.?Ý3 ×*rí®ý1ý1Ãë€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòür¿¡ý1ý1Ãë€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòür‡ ý1ý1Ãë€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòür¢Êý1ý1Ãë€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòürθ¹ìý1ý1Ãë€2�ñ.�2ìŠñ.‚2… ñ.뜿Eòürí®„¡ÌŸ�ÊûÊ�ȈɃ¹ àŽ[Ù™úœ쯯›¡‹�ì䟇ȹ ¥îĪßÿÿ‚ì‹¡æ%ËÛ#ÃÓ㘞™çºè°¯…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÁ(Á(Â(û—Ä(óß ä;|¤•¯Ž²6²6¨´6ð 6µ6£þ# 6¶6êÒ 6M‹3àT—rè°¯�þ•¾Ü× …C…CüˆC¾‚Ð=‰C¶Ð=ò¹Úàŧ§ ScalarRangeÁ¨‚…©’…å!$n~"ç�þ¿¡³…•ö¥�[†¦ 𣈨™žô¢‡ ˜�…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅ¿š�þê“ò¹ï©‹ÎØæÉþ°—Éåö¯Øì ¨ϼ…C…CüˆC¾‚Ð=‰C¶Ð=ò¹ÚàÅÇÇ�þ£÷”ž”Þ Öì%ŽÓ îØ Ïœ¸ÕŽô(žšÅ8Å8WeakÁÈ8í ä7É8«ä7=ÆÖ�BÚÞ  �þÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�Bœí%�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�B¶Š�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�B¢‰�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�BÍÞ�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�BÔ»�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�BÈš�ïÅ8Å8åÁ¯È8í ä7É8«ä7=ÆÖ�B�ïÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ÿ÷Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ýûÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„œùÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ìùÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ÈúÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„°ûÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÝÝ”ÊßѶ‚àÖ]‚ð•]±p¢i„ÌøÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxd¶ŠÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxd¢‰Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdŒ–Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxd¾•Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdý”Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdØ“Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÍÞÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÔ»Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdÿ÷Ý8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxdýûÝ8Ý8š§¯ß8«§¯ä7à8Âä7á8êÒä71%wãÿÃxd°ûªÚ ¤¬¯ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ý­ý­娯ÿ­ú¨¯ç€®�çÙW£Ÿì·œ�Ó¯�þŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ý­ý­娯ÿ­ú¨¯ç€®�çÙW£Ÿì·œ‰ô�þŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ôôÖÞ÷öÒßøæãßùôãßú�äß�wÁ¢”6Õ–ËŽªÚ �þ£±¯ÒÀ*ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#‹Œ�InvalidInputAnchoredÁŽ�InvalidInputUnanchoredÁ�UnsupportedStreamÁ‘•ð’UnsupportedOverlappingÁ“•ð”•UnsupportedEmptyÁçîä—qJ¤�þƒ‰ʹô¬¯((RawVecÁ+ð,üð©XÕ”ˆó‰Ù™�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰•¦�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ž™�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰£±¯�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰Ÿ½¯�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰—£�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰óÇ �þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ó¾¯�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ú¡�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰éë�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰Ç�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰›†�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰°ÿ�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰²Í�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ÑË�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰šË�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰•Ì�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰äÌ�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰«¶�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰¿š�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ï´�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ªº�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰é·�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰ÝÁ�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰Ƚ�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰·É�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰þ¥�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰¼¯�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰»¤�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰½™�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰•§�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰å¢�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰úÁ¯�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰Þ÷�þ((ÏÛ¯+ð,üð©XÕ”ˆó‰Ïž�þ š  š ScopeGuardÁ � dropfnÁ “  ž � “ ¥êÚ»­å�>Ȫ¯ ´�þ Ȫ¯Uÿ�ï ” ” TableLayoutÁ •ß K – ctrl_alignÁ KÓk®%¹Õ– š  š ‚î¯ � •î¯ “  ž � “ ¥êÚ»­å�>  ‘ ‘RawTableÁ ””ª K •« K –…  K¸:1‹{hoß—¯�þ µß—¯�þ €ñ¯Uÿ š  š ‚î¯ � •î¯ “  ž � “ ¥êÚ»­å�> Ȫ¯ » Æò¯UÿřǙș­É™Ê™àË™óG*¤�R{9 ‹¨¯ÿ ± ±’ ¶ hash_builderÁ  ·”ª ›j™£ôÒSÍžš×��î �þ ± ±’ ¶Úò¯  ·”ª ›j™£ôÒSͽ™°ÿ�î �þ ‘ ‘Œð¯ ””ª K •« K –…  K¸:1‹{ho�–¯�þ‚ñ¯©7«7¬7OsÁ­7óÙ6®7¯7SimpleÁ°7óÙ6±7²7 SimpleMessageÁ³7óÙ6´7µ7CustomÁ¶7óÙ6VNè7Oö‡ö‡÷‡ CustomOwnerÁø‡óÙ6 fûËÒñD¶ÚÇþÇþIntoIterÁÊþðÓ(¯AzF¢oqf­ì®ÇþÇþ½ö¯ÊþðÓ(¯AzF¢oqfæ¯ÇþÇþ½ö¯ÊþðÓ(¯AzF¢oqfæ¯ñǯ�ɯ‘ʯ¡Ë¯±Ì¯ÁͯÑί¡Ô#£þ?óÙ ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—±÷¯ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�ø¯ƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Êø¯¾¾�ÑÁêÒ¶ÂöҶÄӶ⑌#®�ØÚØÔ#¾¾�ÑÁêÒ¶ÂöҶÄӶ⑌#®�Ùþ?œÙ¯Ÿ½¯—£Õí Ó½¯ðlðl CopyOnDropÁòlsrcÁ§lólÜ„§lôl¶§lnóȘΉq¢Ý­j­j MergeStateÁ¯j‚¥j°j’¥j±jÜ„¥jAâÙùdÝ¢ ¢ DropOnPanicÁ¤ ð� ¯�|Âz×.¨ª¯–3–3 DropGuardÁš3–½2›3num_initÁ½2Ýiz÷‰Q:CÙ™�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:Cž™�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:C‰ô�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:C²Í�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:CÑË�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:CšË�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:C•Ì�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:CäÌ�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:Cªº�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:Cé·�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:Cþ¥�þ–3–3™þ¯š3–½2›3·þ¯½2Ýiz÷‰Q:C¼¯�þóDéë�þÝ�¯éëUÿ éëŒBŒB SetLenOnDropÁŽB¶‹B�B local_lenÁ‹BÌþõ²µ³°òóDÇ�þòž¯»¹[ ÇÖ†°óD°ÿ�þˆ ¯áÄ5Uÿ °ÿÖ†°óD·É�þ’¡¯·ÉUÿ ·ÉÖ†°óD•§�þÔ¢¯�Ø:Uÿ •§Ö†°óD•§�þÅ£¯ψ°Úˆ°óD�þ´¤¯ÆÔHUÿ‹¨¯Ö†°Ð‰ôñ®ü®Ð•§ñ®ü®±DÇ·É©»hìQ·É†ˆ°·ÉUÿ†ˆ°ÇUÿ„а©»h±D•§•§ˆ¤¯ìQ•§ꈰ•§Uÿꈰôа⊰ˆ¤¯±DÍŠÇü†ìQÇ«‡°¯Š°«‡°ÍŠUÿ¶‹°ü†±DŒ�¯•§—£¯ìQ•§¹ˆ°ôа¹ˆ°Œ�¯Uÿ‹Œ°—£¯Þ;Ç ÇUÿ¶‹°„а‹Œ°⊰üIé묆°éëØÚUÿ¬†°üI°ÿÕ‡°°ÿØÚUÿÕ‡°üIމ°ØÚUÿމ°™ø=ïïé�Gð range_stackÁ…«ÿó»JpÔÐÆ »î$ìö¯éÙ#¸ïøï¶û¡é�ë½çëñ¬’¶ŠËŽÅ�¢‰Ó‘ñ‰Œ–¾•ý”Ø“žœó—ä›åš¹—«š×�¸˜Ëž‘ž¬™ò˜ª›ÿ–ñ™�ªݪÛ†¶ßÍÞ÷ߘÛýÝÃþäüµ÷ïòûó¯øõùØû™ü�ƒá�݃©©÷Þ«Ö’¬þ9’­ß'’®ôè’ Zà†ý½ÿÿ€ÛÀ�óª  ¿Ç!q\³ê6ê6ë6ß�ì6óÚ6í6ôÚ6 BÆi�½£šË¢Ê¿³¿šï´θ�·é·÷À‘À�»Ô»Ƚ×°˜±ŒÈ±ÇÊÃðÄ£ÄÛÈþ¥�©·¬¼¯í®«¡ì£„ Þ °¥è›Þ𣛽™ÿ÷ýû°û†îÙì £±¯ Ÿ½¯ñßôú= šË ¿š ï´ é·Ч þ¥ ¼¯ ½™�–¯ß—¯Æy•¦Æyú¡Ê[ÇÇÊ[°ÿ°ÿ‰ö êã‰ö ž÷ƒö êã†ö ž÷Õ•§½™ˆ Ùa õañ˜°þ6ìö¯ý6 Õ7Õ7Âõ¯Ö7¦Ù6×7°@Ù6Ø7 error_dropÁÙ6Ù7 outer_dropÁÙ6ß*I]@ÆDàìö¯UÿßM®í®ÔNéëÔN°ÿÔN„kÝÂÒú®¢Â¡lÝÂÒú®žlÝÂÒú®…mÝÂÒú®‹mÝÂÒú®—mÝÂÒú®ˆmÝÂÒú®ìlÝÂÒú®ÐjÝÂÒú®ÓjÝÂÒú®ÄjÝÂÒú®ªjÝÂÒú®çjÝÂæjÝÂÒú® Ý ÝÂUÿ Òú®çjÝÂÒú®ãjÝÂÒú®êwÇêwÝÂûA•¦�þûAÇ�þûAªº�þûAé·�þˆgÑü®”3ž™�þ”3Ù™�þ”3‰ô�þ”3²Í�þ”3ÑË�þ”3šË�þ”3•Ì�þ”3äÌ�þ”3ªº�þ”3é·�þ”3þ¥�þ”3¼¯�þÏiëBëBìB DefaultHasherÁíBóë ô™ldñÎaÇD·ÉС¯©»h„аÇD•§€�¯ˆ¤¯⊰ÇD�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÝ”ÝÂÒå:Uÿ£S‘¬¯ÏžUÿ‘¬¯ÇDÛ °¹Ý·¡°�S‘¬¯Ù¡°ä¡°ÇD•§«Ž¯—£¯‹Œ°ÇD�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÝô ”Ýô Ø£)UÿÈ¡°ÇDÚ¢°¹Ýô ¶£°”¢°…<Œî*Çž;Èš�þÓŸ°ž;�þÓŸ°º©‰ô² ‰ôéÛ:ð÷µ©‰ôÌŠ°º©ÝÂèÝÂÏå:º©ÝÂóÝÂÏå:¼©ÝÂÔÝÂÏå:µ©Ý±DÔå:ª¡°È¡°Ôå:UÿÈ¡°ª¡°µ©Ý±DÔå:ü¡°”¢°š¦°”¢°ü¡°º©•§² •§Š�¯Uÿð÷µ©•§ô‹°º©Ýô èÝô ¹£°Uÿº©Ýô óÝô Õ§°¼©Ýô ÔÝô Õ§°µ©Ýô ±DØ£)©£°È¡°Ø£)UÿÈ¡°©£°µ©Ýô ±DØ£)ߣ°”¢°ݨ°”¢°ߣ°ØiÓŸ°ÜižšÓŸ°Üi½™ÓŸ°ÜiÈšÓŸ°ÜiÓŸ°í¦ÓŸ°õIŸž¯¬†°õIÈ ¯Õ‡°õIô¤¯މ°ÙFƒ¢¯ÙFŒî*¡‹°ÊIŸž¯¬†°ÊIÈ ¯Õ‡°ÊIô¤¯މ°•;ªŸ¯Ç¶‹°è<Œî*ÙR”àüß”àÊüÍüÎümÏüóÐüÑü[Òüó}µŒOƒDê^”àUÿü߉¬°£3ú¡�þ£3Ç�þ£3ÝÁ�þ·,ÓŸ°ÎDÇÊï*ÎD•§Ô¢¯ÎD•§Å£¯çDéë�þÝ�¯çD°ÿ�þˆ ¯çD·É�þ’¡¯çD�þ´¤¯þDÇ�þªŸ¯þDÇ�þŒî*Ë+ú¡ÞQÙ*Ù*¨Û*ÛËÙÜ*ì¨ÙFÝ™�''àë�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ²Ýå‚ãQ€�¯¸úÏ�¯ãQ€�¯•§ˆ¤¯ÞQ�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫú¡¼çßPŒî*¡‹°ßPŒî*ËŒ°ªSŒî*ǰRŒî*ó<ÍŠ‰¬°î«°Ú‹°‰¬°Uÿî«° ‰¬°ãQÛ °ª¡°ãQÛ °ü¡°ãQ«Ž¯•§—£¯ãQ«Ž¯¸úúޝãQÚ¢°©£°ãQÚ¢°ߣ°°RŸž¯§�°ØÚ°RÈ ¯Ö�°ØÚ°Rô¤¯…ްØÚæQ’¡¯†ˆ°ŽRÅ£¯¨æQÅ£¯ꈰ�SÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþÛ °ª¡°‘¬¯ÀRÁ´°È¡°ŠSÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþÛ °ü¡°‘¬¯ÀRªµ°”¢°ŽRÔ¢¯¨æQÔ¢¯¹ˆ°�SÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþÚ¢°©£°‘¬¯ÀR¸¶°È¡°ŠSÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþÚ¢°ߣ°‘¬¯ÀR¡·°”¢°ãQС¯·É©»hãQªŸ¯Çü†­SªŸ¯ÇæQòž¯«‡°ãQ�Š�Š€ÄK�Š�‘ŠœÄK²=²=J/VÔáËƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Œî*þßÝÁÚãÓRœ¹°üßíQœ¹°þߎRÊï*•ö©i�î œÂ©i�î ¶æ ©i�î Ýô ©i�î ²Ý¾•§íþ%ÿþ%¸Ýªô%ðþ%¸Ýô ªô%¼ç®”Ý·¡°”Ýô ¶£°ÔÝÂÏå:ÔÝô Õ§°èÝÂÏå:èÝô Õ§°ô µ¢ߪ² ‰ôéÛ:ð÷³ ‰ôžÀHð÷² •§‘§°ð÷³ •§‡�¯ð÷óÝÂÏå:óÝô Õ§°Ë¬ì®­ì®²Ý¥µ³µËûì®®í®²Ý¥µ³µ ¾�–¯�þ�–¯Ûï¯Uÿ �–¯ ¿�–¯�þ�–¯‰¨¯Uÿ Í�–¯�þä–¯�–¯�Ú: ä–¯ ïô¯ Ò�–¯�þ£—¯�Ú: £—¯´¿° ¾ß—¯�þì—¯þ° ì—¯ ¿ß—¯�þì—¯ù¾° Íß—¯�þ¯˜¯ì—¯�Ú: ¯˜¯ ‚ñ¯ Òß—¯�þ�Ú: ßÀ°äœÂ¥µ­¦ä²Ý¥µ­¦Šœð®äý(·ò®‹œð®äý(«ð®ºð®Šòþ%Ôå:·ò®‹òþ%Ôå:«ð®ºð®Š¾ç®Ø£)·ò®‹¾ç®Ø£)«ð®ºð® ´�þÔï¯ëï¯óDéë�þÝ�¯†°φ°óDÇ�þòž¯»¹[ҰóD°ÿ�þˆ ¯뇰ö‡°óD·É�þ’¡¯œˆ°©ˆ°óD•§�þÔ¢¯ψ°Úˆ°óD•§�þÅ£¯ψ°Úˆ°óD�þ´¤¯£‰°®‰°Ê²Ýæûµü˲ÝLjµüωô•¤¯Ð‰ôñ®ü®Ï•§¤£¯Ð•§ñ®ü®´�Ú ñÇ üç®¶�Ú ñÇ �Ú:ûù9µ�Ú ñÇ �Ú:ûù9 Äžš×��î ²–¯É–¯ Ľ™°ÿ�î �˜¯É–¯ Êžšžš×�ù–¯†—¯ ʽ™½™°ÿƝј¯ ÊÈš½™°ÿƝˆ™¯ Êžš×�ù–¯Òü±DÇ·É©»h„а¯Š°¾Š°±D•§•§ˆ¤¯⊰ôа’‹°±DÍŠÇü†¶‹°׋°æ‹°±DÔå:ª¡°È¡°š¦°©¦°±DÔå:ü¡°”¢°š¦°馰±DŒ�¯•§—£¯‹Œ°¬Œ°¼Œ°±DØ£)©£°È¡°ݨ°쨰±DØ£)ߣ°”¢°ݨ°¬©°Þ;ÇàŒ°øŒ°æjÝÂÒú®ܰ䜰ÙR”àüßÿ«°߬°�S‘¬¯Ù¡°ä¡°ìQÇ«‡°¯Š°Í‹°ìQ·É†ˆ°–а¥Š°ìQ•§¹ˆ°ôа¢Œ°ìQ•§ꈰôаƒ‹°üIé묆°»�°Ë�°üI°ÿÕ‡°ê�°ú�°üIމ°˜Ž°§Ž°ó<ÍŠ‰¬°î«°�²°›²°¹Ý·¡°¹Ýô ¶£°¼†ë¿†ë»¤Ú#­mřǙș­É™Ê™àË™óG*¤�R{9  řǙș­É™Ê™àË™óG*¤�R{9 Ñü® Ñü®UÿõƒŒ¯Ì£Ñ ±Ñ 룄 ±Ñ š†ê›†êˆ †êŠ †ê‹ †ê‰ †ê°FøÝ®ÊÞ®ÖÞ®©âÀðÀÒÄòÕÉýÏéݶ‡à·ãã¯âÀšÔ µß—¯�þêñ¯ö è¬ø è¬û è¬þ 謻¬á¹ã¾¬á¹ãÁÕ‡ ¹ã »×ò¯îò¯Ü9ý¥¯Ý9†¨¯ûù9º¸Û#Ôÿ÷ŠéÑÿ÷ˆàÒÿ÷ˆàÔýûŠéÑýûˆàÒýûˆàÔœùŠéÑœùˆàÒœùˆàÔìùŠéÑìùˆàÒìùˆàÔÈúŠéÑÈúˆàÒÈúˆàÔ°ûŠéѰûˆàÒ°ûˆàÔÌøŠéÑÌøˆàÒÌøˆàý6›™°áò¡ ïþ ŒCž™ŒC£±¯ŒCÙ™ŒC•¦�CŸ½¯ŒC—£ŒCóÇ ŒCú¡ŒCéëŒCÇŒC›†ŒC°ÿŒC²ÍŒCÑËŒCšËŒC•ÌŒCäÌŒC¿šŒCªºŒCé·�CÝÁŒCÝÁŒC·ÉŒC¼¯ŒC»¤ŒC½™ŒC墌CúÁ¯ŒCÞ÷Œ3‰ôŒ3Çÿ2ÝÂŒ3ÝÂŒ3ÝÁìwÙ™øx•¦íw•¦ìwž™ìwÂðìwóÇ øxú¡´wú¡ìwéëçwéë�xÇ’xÇìwÇçwÇéwÇíwÇ�xÝÂ’xÝÂéwÝ´wÝÂìw�ÏìwÑËìwšËìw«¶ìwï´ìwÝÁíwÝÁ¼wÝÁìwȽìwþ¥ìw•§ìwÝô ìw²Ý»wå¢íwå¢ìwúÁ¯ìwÏž»wÏžìwíwøx­xíwðWȹ �XØÚùWØÚðWžš’Xžš’XŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#�þùWìññWØ–íWØ–ñW�ëðW�ëñWËŽðWä›êWä›ðW«šðWÊŸêWÊŸðW‘žðWò˜ðW��êW��÷WÇùWÇ÷W›†íW›†êW›†ùW‚óêW‹¢÷Wö íWö êWö �Xù¦ùWù¦�XÚ×ñWÚ×íWÚ×ùWÚ×ðWäüêWäü÷W°ÿ«XËõñWËõðWËõ÷WËõñWûóðWûóñW�ƒðW�ƒðW�»ðW±Ç�X¼«ùW¼««XаðWаíWа÷W¼¯ðWì£ýW—í ÷WÎŒ ùWÀ„êW¢ÅêWÿÄ«X뢫Xõ¯«XÛ‰�X�XùW�XíWêWÒ_řǙș­É™Ê™àË™óG*¤�R{9 ìÜV›“°¶_¿É%°ø$Ò_×�ЄÒ_Ç»�Ò_ýݶßÒ_°ÿÕþÒ_²Ý÷’+Ò_–¤¶_éÙ#ã_éÙ#¶ËŽªÚ æØÚæížš×�í½™°ÿ´H… ›kÝÂõjÝ រ×��î �þÞhÚ¦Ú¦Û¦ Sip13RoundsÁ �¸I£±¨%ÎÙþ?ÏÙþ?¡+�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫï´¡+�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫȽ¡+�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫþ¥‡D•¦�þ‡DÇ�þ‡D�þ Çžš×��î �þ ǽ™°ÿ�î �þÃX•¦ÄX×�ÃXÇÃXˆËŽªÚ Š½™°ÿ�î �þ‘½™°ÿ�î �þÁ*ǯ°Á*µpµpÛ�¸pí óo¹p¦‡óoºpüðóo¥hECØ8G墯žš×��î �þ¯½™°ÿ�î �þ”D•¦�þ”DÇ�þ”Dªº�þ”Dé·�þ”D�þ±aØÚ»a·a±a¯FøÝ®½Fž™�þ½FÙ™�þ½FŸ½¯�þ½F—£�þ½FóÇ �þ½Fú¡�þ½FÇ�þ½F›†�þ½F®ï®�þ½F²Í�þ½FÑË�þ½FšË�þ½F•Ì�þ½FäÌ�þ½F«¶�þ½F¿š�þ½Fï´�þ½FÝÁ�þ½FȽ�þ½F·É�þ½Fþ¥�þ½F¼¯�þ½F»¤�þ½F½™�þ½Få¢�þ½FúÁ¯�þ½FÞ÷�þ½FÏž�þ­pÙ™­pž™­pÂð­póÇ ­péë­pÇ­p�Ï­pÑË­pšË­p«¶­pï´­pÝÁ­pȽ­pþ¥­p•§­pÝô ­p²Ý­púÁ¯­pÏž­p¤ËŽªÚ Å6è°¯ù#ø#÷ØÚ÷ù Ï�–¯�þ Ïß—¯�þ ´ß—¯�þ²)­ì®²)毑Mž™�þ’Mž™�þ‘MÙ™�þ’MÙ™�þ‘MŸ½¯�þ’MŸ½¯�þ‘M—£�þ’M—£�þ‘MóÇ �þ’MóÇ �þ‘Mú¡�þ’Mú¡�þ‘MÇ�þ’MÇ�þ‘M›†�þ’M›†�þ‘M®ï®�þ’M®ï®�þ‘Mààáµ¢âóï  �” j=i�þ’M¶ü°�þ‘M²Í�þ’M²Í�þ‘MÑË�þ’MÑË�þ‘MšË�þ’MšË�þ‘M•Ì�þ’M•Ì�þ‘MäÌ�þ’MäÌ�þ‘M¿š�þ’M¿š�þ‘Mï´�þ’Mï´�þ‘MÝÁ�þ’MÝÁ�þ‘MȽ�þ’MȽ�þ‘M·É�þ’M·É�þ‘Mþ¥�þ’Mþ¥�þ‘M¼¯�þ’M¼¯�þ‘M»¤�þ’M»¤�þ‘M½™�þ’M½™�þ‘Må¢�þ’Må¢�þ‘MúÁ¯�þ’MúÁ¯�þ‘MÞ÷�þ’MÞ÷�þ‘MÏž�þ’MÏž�þ¤Cž™�þéCž™�þèCž™�þêCž™�þéCÙ™�þéC•¦�þ C•¦�þ¬C•¦�þŸCŸ½¯�þ¤C—£�þéC—£�þ C‹Ï�þàCú¡�þèCú¡�þ¤Céë�þéCéë�þ Céë�þ¤CÇ�þåCÇ�þ¨CÇ�þéCÇ�þàCÇ�þèCÇ�þ CÇ�þŸCÇ�þêCÇ�þ¬CÇ�þéC°ÿ�þèC°ÿ�þ C°ÿ�þ¤C��—¬Ž—»’�¥ ’�À’vä ((EÌ¥�þ¤C——ÕÛ˜¾¾’™À’´N§9Øè› �þ¤Cƒƒ´Ù„° ’…à ’†¨¤’‡failÁ’ˆdepthÁ’¨²Ž)F:#��þàC²Í�þèC²Í�þ·CÑË�þéCÑË�þèCÑË�þ¶CÑË�þåCšË�þéCšË�þàCšË�þäCšË�þ CšË�þàC•Ì�þèC•Ì�þàCäÌ�þèCäÌ�þ·C«¶�þéC«¶�þ¶C«¶�þêC«¶�þàC¿š�þéCï´�þéCªº�þ Cªº�þêCªº�þéCé·�þ Cé·�þêCé·�þ¨CÝÁ�þéCÝÁ�þàCÝÁ�þêCÝÁ�þ¤CȽ�þéCȽ�þéC·É�þàC·É�þèC·É�þ C·É�þéCþ¥�þèCþ¥�þéC¼¯�þàC¼¯�þèC¼¯�þéC»¤�þàC»¤�þèC»¤�þ C»¤�þéC½™�þèC½™�þ C•§�þ¤Cå¢�þéCå¢�þàCÞ÷�þêCÏž�þ¨C�þèC�þ­C�þŸC�þéC�þ C�þ¬C�þ¾‰ô�þ¿‰ô�þ¬Ùþ?Åp•¦ÅpÇÅpÝÁÅpå¢ÅpÅpé8ñǯé8�ɯé8‘ʯé8¡Ë¯é8±Ì¯é8Áͯé8Ñίé8¶Šé8¢‰é8Œ–é8¾•é8ý”é8Ø“é8ÍÞé8Ô»é8ÿ÷é8ýûé8œùé8ìùé8Èúé8°ûé8Ìø ì�–¯ ìß—¯Å9ÚÞ �þÅ9œí%�þÅ9¶Š�þÅ9¢‰�þÅ9ÍÞ�þÅ9Ô»�þÅ9Èš�þ¾9�þÅ9�þÞ9Û9€1¿¡€1‡ €1¢Ê€1θ€1�©€1í®Š1¿¡ˆ1¿¡Š1‡ ˆ1‡ Š1¢Êˆ1¢ÊŠ1θˆ1θŠ1�©ˆ1�©Š1í®ˆ1í® ½žšžš ½½™½™ ½Èš½™ ½žšÕžšÕ‰ôÕ½™ºñ”ÈšºžšºÝÂÈšºÝô ÈšºïBÇÊï*�þÚBÇÊï*ÚB•§Ô¢¯ÚB•§Å£¯ÅBÇÊï*§"”à¨"”à§"¨"þ'ñ‰ô–Pûì®–P’¡¯–PÌŠÌŠ†§ÏŠ�Њœ“D^)c˜þOþݸ°Úã–PÂŒ¯–PÅ£¯–Pí�¯–PÔ¢¯–PªŸ¯–P²Œ²Œñ‚µŒ—ÍJ¶Œ˜ÍJ·Œ÷ÍJ¸Œ¶ÍJÉ by­]òН°å‚–PÝ�¯–Pˆ ¯–P´¤¯–PâŠâŠPeekableÁäŠ�„FåŠpeekedÁ„F¤™Â·|&ÚøÝ®–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—ø™±–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—ûì®–Pêù¯–P²ú¯–Púú¯–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫñ”–Pœ¹°–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Û °–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ�Ï–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫšË–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Ú—–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Ú¢°–PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—슖PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—þŠ–PØ––PƒŠƒŠȆ…Š�Ð<†ŠŠÐ< 0{?i—Õ––Pìñ–PË’¯–P«“¯–På‚–PøÝ®–PŒî*–P¶”¯–P†Ç–P«Ž¯–PÚ¢°–P–•¯–P�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫúÁ¯–Pݧ*–PÑŽ–PµpµpÛ�¸pí óo¹p¦‡óoºpüðóo¥hECØ8GÇ–PµpµpÛ�¸pí óo¹p¦‡óoºpüðóo¥hECØ8GÝÁ–PµpµpÛ�¸pí óo¹p¦‡óoºpüðóo¥hECØ8G–PµpµpÛ�¸pí óo¹p¦‡óoºpüðóo¥hECØ8G–P¹+¹+�®»+ÛËÙ¼+ì¨Ù¨$KPߢ²ì°–P¹+¹+�®»+ÛËÙ¼+ì¨Ù¨$KPߢŠí°–P¹+¹+�®»+ÛËÙ¼+ì¨Ù¨$KPߢâí°–PН°–PÙ*Ù*¨Û*ÛËÙÜ*ì¨ÙFÝ™�''àëªð°–P‰š¯–PºŽ°–Pøî–PÊï*–Pµò–P´Æ–P“Ê–P�±–P�˜–PéîÙNéëÚNéëÙN°ÿÚN°ÿÙNÚN§ ¨ª¯ 3ž™�þ 3Ù™�þ 3‰ô�þ 3²Í�þ 3ÑË�þ 3šË�þ 3•Ì�þ 3äÌ�þ 3ªº�þ 3é·�þ 3þ¥�þ 3¼¯�þÛ‰ôÍÿ÷Ìÿ÷Ïÿ÷Îÿ÷Êÿ÷ÍýûÌýûÏýûÎýûÊýûÍœùÌœùÏœùΜùÊœùÍìùÌìùÏìùÎìùÊìùÍÈúÌÈúÏÈúÎÈúÊÈúͰṵ̂ûϰûΰûʰûÍÌøÌÌøÏÌøÎÌøÊÌøœp•¦ùn•¦ún•¦ùnž™ýnž™þnž™ùn—£ýn—£þn—£þn‰ôýnéëþnéëùnÇýnÇþnÇûn°ÿýn°ÿþn°ÿýnÑËþnÑËýnšËþnšËýnï´þnï´ýnªºþnªºýné·þné·ýnÝÁýnȽýnþ¥þnþ¥ýn¼¯þn¼¯ýn½™ùnå¢ýnå¢þnå¢ûnþnýnþnÂD·ÉС¯©»hÁDÝÁݸ°ÚãÁD¸ú€�¯Ï�¯ÂD•§€�¯ˆ¤¯ÁDÛ °ª¡°ÁDÛ °ü¡°ÁD¸ú«Ž¯úޝÂD•§«Ž¯—£¯ÁDÚ¢°©£°ÁDÚ¢°ߣ°€<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ�=ݧ*ýjÝœ*Ÿ*£*ž™£*—££*墦*ž™¦*—£¦*Ǧ*墬;¦¦×�×�¥+²ì°¥+Ší°¥+âí°Rž™�þR£±¯�þRÙ™�þR•¦�þRŸ½¯�þR—£�þRóÇ �þRó¾¯�þRú¡�þRéë�þRÇ�þR›†�þR°ÿ�þR²Í�þRÑË�þRšË�þR•Ì�þRäÌ�þR«¶�þR¿š�þRï´�þRªº�þRé·�þRÝÁ�þRȽ�þR·É�þRþ¥�þR¼¯�þR»¤�þR½™�þR•§�þRå¢�þRúÁ¯�þRÞ÷�þRÏž�þ ² Ȫ¯Çï¯ ² €ñ¯Øñ¯ ² Æò¯Îò¯Æ¬�¯¬�¯Æ… ÅžÆÛ†ì…ÆÛ†ô‡ÆÅžÅžÆµ¢µ¢Æýú®ýú®ÆÝô ñ”ÆÿBǪŸ¯�þü•¦¡#¨àþß½ŒН°å‚¾ŒН°å‚å=œ¹°þß–¥ˆ‚%–¥ƒ¹ –¥“Ú–¥Ù™–¥›¡–¥‹�–¥€÷–¥ìä–¥Ÿ‡–¥”Ó–¥ȹ –¥ØÚ–¥ž™–¥¥�[–¥ŽÓ –¥Ïœ–¥žš–¥ŸŸ ¸Ù £ó‹¤ô‹ljô²ßk#ÈÈ PropertiesIÁ ɼ›ãÊ maximum_lenÁãËäÅ1ãÌlook_set_prefixÁãÍlook_set_suffixÁãΫ¢ãÏlook_set_suffix_anyÁãЂ�ãÑexplicit_captures_lenÁãÒstatic_explicit_captures_lenÁãÓÐãÔalternation_literalÁãŠJ¢ºÓÊNÓ�þ–¥ÒÀ*–¥”Ú¯–¥—£–¥ŽŽú¹�‚�’äOÇ:H G–¥ëû–¥óÇ –¥̈–¥ÐÆ –¥»î$–¥¡é–¥Ø“–¥�Ÿ–¥ä›–¥¹—–¥«š–¥ÊŸ–¥‘ž–¥ò˜–¥ãœ–¥��–¥×�–¥ú‰–¥Є–¥Ç–¥›†–¥Ïó–¥ô향إ–¥ù¦–¥ãØ–¥Ú×–¥¶ß–¥÷ß–¥ýÝ–¥äü–¥°ÿ–¥ïò–¥á�–¥’û$–¥ÑË–¥šË–¥«¶–¥ï´–¥ÝÁ–¥�»–¥Ƚ–¥˜±–¥ðÄ–¥¼«–¥«¡–¥å¢Å*ǯ°Å*ªð°œ¥»�œ¥ú‰œ¥²Ýœ¥œ¥Ý;�þá;�þü*Çü*Ƚƒ+ǃ+šËƒ+ï´ƒ+Ƚƒ+þ¥ƒ+†+dž+šË†+ï´†+þ¥†+ª©Ù™±©Ù™°©Ù™ª©ž™ª©—£ª©Âðª©óÇ ª©ú¡ª©é목ǰ©Çª©›†ª©²Íª©�Ϫ©Ñ˰©Ñ˪©šËª©•̪©ä̪©«¶ª©ï´ª©ªºª©é·ª©ÝÁ°©ÝÁª©Ƚª©þ¥Ç©¼¯ª©¼¯°©¼¯ª©•§°©•§ª©Ýô ª©²Ýª©å¢ª©úÁ¯ª©Ïžª©°©ΩÇΩç©•¦ç©Çç©ÝÁç©Ƚç©å¢ç©ç©„CÇ�þÿ•¦î)­ì®î)æ¯î)æ¯�nÝÁÝÁ�o•¦�oú¡×ØÚØÔ#×Ùþ?ÙËŽªÚ éhÕë°ëhÕë°êhÕë°ðL’KѰ°�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ¼¯“KѰ°�Ú±ÑXȹ ÑXØÚÑXžšÑX»á°ÑX¯€ÑX›†ÑX‚óÑXù¦ÑXÚ×ÑXäüÑX¼«ÑXаÑXÑXÑÝô ¬�"Š*­ì®Š*毊*毢o•¦¢oú¡Ú*Ö‚M«o•¦ªoú¡ªoǪo«¶÷lÝÂΞš×��î �þ¯Dž™�þ¯DÙ™�þ¯D•¦�þ¯D—£�þ¯DÂð�þ¯DóÇ �þ¯Dú¡�þ¯DÇ�þ¯D°ÿ�þ¯DÑË�þ¯DšË�þ¯D«¶�þ¯Dï´�þ¯DÝÁ�þ¯DȽ�þ¯Dþ¥�þ¯D•§�þ¯Då¢�þ¯DúÁ¯�þ¯DÏž�þÙXȹ ÙXØÚÙX›†ÙX‚óÙXù¦ÙXÚ×ÙX¼«ÙXÙXÀ¨¹¨¹¿Í(³D•¦�þ³Déë�þ³DÇ�þ³DÝÁ�þ³Då¢�þ³D�þ�ëÚ �þ�ØÚ�þ��ׯ�þ��د�þ�œÙ¯�þ�ËŽ�þ�Ȩ�þ�ÓÚ¯�þ�ìá�þ�‰º�þ��þé3ÝÂê3Ý¡¶š>€�¯¢:ÚÞ �þ¢:œí%�þ¢:¶Š�þ¢:¢‰�þ¢:ÍÞ�þ¢:Ô»�þ¢:Èš�þ¢:�þ ¶žš×�îY•¦îY²Ô:îY¿É%îY¯€îYÇîY›†îYôíîYÅžîY‹¢îYö îYäüîY�È%îYÿ÷îYËÀîY¸ÛîY†�îY¢ÅîYšµîY‘·îYæŠîYÍŒîYáŸîY¬åîY¼ÔîYÍ®îYòþ%îY¡ž îYùÓ@îYæ¯îYÏžñY­ãñY”Þ ñY›†ñYôíñYÅžñY‹¢ñYö ñYýûñY†�ñY¢ÅñYšµñY‘·ñYæŠñYÍŒñYùÓ@ñYÇáŸñYǬåñYǼÔñY›†ËÀñY›†Í®ñY›†æ¯ñYåÊ@ñYž•MÕ:ÚÞ �ïÕ:œí%�ïÕ:¶Š�ïÕ:¢‰�ïÕ:ÍÞ�ïÕ:Ô»�ïÕ:Èš�ïÕ:�ïã:Èš�þã:�þ†2¿¡†2¢Ê†2θ†2�©è:Èš�þè:�þ‰2¿¡‰2‡ ‰2¢Ê‰2θ‰2�©‰2í®À™ȹ À™ØÚÀ™¥�[À™žšÀ™ä›À™«šÀ™ÊŸÀ™‘žÀ™ò˜À™��À™›†À™ù¦À™Ú×À™äüÀ™�»À™¼«À™À™€;œí%�þ€;¶Š�þ€;ÍÞ�þ€;Ô»�þ€;�þ‡;ÍÞÊLÝÁÝÁ�þôBéëÝ�¯�þôBÇòž¯�þôB°ÿˆ ¯�þôB·É’¡¯�þôB•§Ô¢¯�þôB•§Å£¯�þôB´¤¯�þÉB•§Ô¢¯ÉB•§Å£¯¬"”à¬"Ú)­ì®Ú)æ¯Ú)毖pñ”–pú¡–pÝ–pÝÁ–p•§–pÝô –p²ÝëM®í®ÒFƒ¢¯ÑFŒî*ÒFŒî*åJѰ°�Ú±åJН°å‚ºIŸž¯ºIÈ ¯ºIô¤¯�;ªŸ¯Çï;Œî*Ç’FøÝ®ä<ø™±ä<ûì®ä<±÷¯ä<�ø¯ä<Êø¯ä<ìñä<Ë’¯ä<€�¯ä<ƒˆä<Œî*ä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ²Íä<ò ±ä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫÑËä<‰¢±ä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫ•Ìä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫäÌä<Ú—ä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫªºä<�p�p�‡ pí óo¡p¦‡óo¢püðóoÛê2ÝЫé·ä<âí°ä<�Ú±ä<Ú¢°ä<ݧ*å<ݧ*ä<ìŠä<þŠä<——ç<——å<——ä<Õ–ºjݺDž™�þºDÙ™�þºD‰ô�þºDú¡�þºDÇ�þºD²Í�þºDÑË�þºDšË�þºD•Ì�þºDäÌ�þºDªº�þºDé·�þºDÝÁ�þºDþ¥�þºD¼¯�þý*æÿ÷æýûæœùæìùæÈúæ°ûæÌøÆDž™�þÆD•¦âä�þÆD—£�þÆDéë… �þÆDéë�þÆDÇâä�þÆDÇ�þÆD°ÿ�þÆDÑË�þÆDšË�þÆD«¶úò�þÆDï´�þÆDªº�þÆDé·�þÆDÝÁ�þÆDȽ�þÆDþ¥�þÆD¼¯�þÆD½™�þÆDå¢�þÆDúò�þÆD�þËDž™�þËD•¦… �þËD•¦âä�þËD—£�þËD‰ô�þËDéë�þËDÇ�þËD°ÿ�þËDÑË�þËDšË�þËDï´�þËDªº�þËDé·�þËDþ¥�þËD¼¯�þËDå¢�þËD… �þËD�þËD�þž‰ô�þ”+•¦âä”+ú¡âä”+�Ïâä£�þš+ú¡âä«$¬$ÜDóÇ �þÜD‰ô�þÜD¼¯�þ Ý�–¯�þ Ýß—¯�þãDȽ�þ·+ú¡Ç$È$ŽE�þڠƱ�þÚȨ�þÚÓÚ¯�þ’Ež™�þ’E£±¯�þ’EÙ™�þ’E•¦�þ’EŸ½¯�þ’E—£�þ’EóÇ �þ’Eó¾¯�þ’Eú¡�þ’Eéë�þ’EÇ�þ’E›†�þ’E°ÿ�þ’E²Í�þ’EÑË�þ’EšË�þ’E•Ì�þ’EäÌ�þ’E«¶�þ’E¿š�þ’Eï´�þ’Eªº�þ’Eé·�þ’EÝÁ�þ’EȽ�þ’E·É�þ’Eþ¥�þ’E¼¯�þ’E»¤�þ’E½™�þ’E•§�þ’Eå¢�þ’EúÁ¯�þ’EÞ÷�þ’EÏž�þ•Ež™•E—£•EÇ•E«¶•EÝÁ•EȽ•Eþ¥•E墕EÏžã�þ×`Û—ô‡×`ܧÛ†×`�´Û†×`ÄÜÛ†×`ÄÜì…×`æâÛ†×`”Þ ©„×`Âð©„×`‰ô©„×`‰ô×°×`¿É%°ø$×`Ø“©„×`¸˜©„×`ÿ–©„×`×�¶ß×`ÇÛ†×`Ǹï×`Ç×°×`›†¶ß×`›†×°×`Úרû×`ýݶß×`°ÿÕþ×`°ÿÒý×`°ÿÛ†×`ïòØû×`Ë Ë ä® Ì ½ ®Í �É%®Î Ð®Ï þ9®Ð �®Ñ à®Ò ¿®Ó íÉ%®Ô ˆÊ%®Õ � ®èD Ql9‹þ°ø$×`õ õ ä® ö �’÷ œ¡’ø ° ’ù à ’ú ¨¤’û �É%’ü þ9’ý ¿’þ íÉ%’ÿ ˆÊ%’€� ’GL¯OÀ¼°ø$×`Á’°°ø$×`®ï®°ø$×`¾ð®°ø$×`�»×°×`�»¸ï×`�»©„×`�»Øû×`ðÄ©„×`¸­×°×`åâ×°×`«¡©„×`Ïó×`¸ï×`Ïó×`Û†×`¶ß×`Õþ×`›“°×`×°™Ež™�þ™EÙ™�þ™E—£�þ™EóÇ �þ™EÇ�þ™E›†�þ™Eå¢�þÜ`Û—Û†ô‡Ü`Ÿ‡©„©„Ü`ܧÛ†Û†Ü`�´Û†Û†Ü`�´ì…ì…Ü`�´ô‡ì…Ü`ÄÜÛ†Û†Ü`ÄÜì…ì…Ü`ÄÜÛ†ì…Ü`æâÛ†Û†Ü`”Þ ©„©„Ü`»î$°ø$°ø$Ü`¡é¸ï¸ïÜ`Þˆ©„©„Ü`Ø“©„©„Ü`¹—©„©„Ü`Ǹï¸ïÜ`Ç×°×°Ü`›†×°×°Ü`ýݶ߶ßÜ`°ÿÕþÕþÜ`°ÿÒýÒýÜ`°ÿÛ†Û†Ü`ïòØûØûÜ`á�ØûØûÜ`“”²°ø$°ø$Ü`�»×°×°Ü`ðÄ×°×°Ü`¸­×°×°Ü`åâ×°×°Ü`«¡×°×°Ü`ÏóÏóÜ`ØûØûÜ`¸ï¸ïÜ`ÏóÏóÜ`Û†Û†Ü`¶ß¶ßÜ`×°×°¯hÙ™¯hž™¯h—£¯hóÇ ¯hǯh›†¯h墯hø9ü9ÚÞ �þü9œí%�þü9¶Š�þü9¢‰�þü9ÍÞ�þü9Ô»�þü9Èš�þü9�þ¬E‡:ÚÞ �þ‡:œí%�þ‡:¶Š�þ‡:¢‰�þ‡:ÍÞ�þ‡:Ô»�þ‡:Èš�þ‡:�þ™1¿¡™1‡ ™1¢Ê™1θ™1�©™1í®± žš×�òQ±÷¯òQ�ø¯òQÊø¯òQ€Ÿ±óQøÝ®òQ€�¯òQƒˆ¤SŒî*òQŒî*òQÛ °òQò ±òQ‰¢±òQÚ— ²ì° Ší° âí°ÆK�Ú±òQÚ¢°Ÿǯ°òQݧ*Ÿªð°òQûì®üQŸž¯üQÈ ¯üQô¤¯òQø™±ýRÁ´°üRªµ°ýR¸¶°üR¡·°¤Sƒ¢¯„ÐÆ …ÐÆ ‚ÐÆ †ÐÆ ƒÐÆ ú±éëéëòQ습²ÇÇú±ÇÇÊQÊï*„Ïó…Ïó‚Ïó†ÏóƒÏóú±ù¦ù¦òQþŠ„¶ß…¶ß†¶ßƒ¶ßòQ——„Õþ…Õþ‚Õþ†ÕþƒÕþ‹iÓŸ°’iÓŸ°²²ÝÂÝÂòQÕ–ú±¨¹¨¹ú±ÝÁÝÁ„×°…×°†×°ƒ×°£Ü ’ ¾Ñ…™  ÜÒ ºô ÏæðË ¾ «´–è öÇÿ ù𫝠”·ß ¹ Ú œ ÎæòÖ ƒ í ¸ ¥ ‚ŸÒ„ »Î º¶« È € °òð ࣠õ¿ –¤š « �´Ý µ Ö âÑÊÖÛÓ ùí þÕ ï Ú� Ê‹ œÖ§ ¿ ³î Ê © à” Å ‡¡· ¬�ü í ÜŸ ñ’Û ±• Ñ ÇÞþ Òײ õúé §¤Öµ® ‘ˆ ˜… ê Æ Ü� èô³ Œø Ø› íÛŽ­¼Ù Î ’ Úû ΰ ñŠ£É ¿÷ÒËŽú­‚ ¹ æ ‰Œ ¿ ˆ¯ ‡à á Ô騕 ¦ „©× ãÀÊ ÖÊå Å ‡ »Îù ö°¯µ À   Ôˆ âÛ „ƒÝ • Š ´ ‘ £ ßÕ ¹½Òá Î Á ·ë Êõ ¨ € ü¬­þº± ļ Ý … ߀¨ ¢Û ‡ „˜Ÿ ÛÑ Îó ¬ ïå½ •³õÆç ãø™û® Þ ¸ › Ù ÙÕ ì · ü�ž»Ø ò ݃ ² Ž Í Ù ïÇ ¯ÿ ñߢ ô¾ •ª Ô ÚÒ øýì Ù€ ¸ÉŠ Õ¦ ¾ ²í É ¨ æ ßö“ Ä �¶ «Ž�û ‡ ì Ûž 𑨠°NÐ ” ÌÆÝý Ñôè ù¦Ì Õ­ ‡ �°„ ¼ é Å òÛ� ç ‹² Š÷ â š ×ìÚ�˜ Ÿ¬»‘ ÙÄú ÍÔÍ ‰öÈ ‰ ¾Ñ�ù“¬¸ å £ ×ßî‹ ¾ ‡® ©à Ó艔 â¿É ÀÉöä Ñ Ä ºî Íø õ�´ ¦ã ½¿ Óë‡ áÚ ƒ« ‚¥Ü »” ‰ ³ � ¢ ÞÔ ¸Æ ë ­ èà Í À ¶ê ɧ û㋜ý¹» Ü „ Þÿ§ „¡† ž Ð Úò ÍïÊ ¼ ”‚ ²ôæ Åâà÷˜­ ¶· š Ø äØÔ ¶ û€�× ºñ Ü­± � žØÁ Éîù– ¹ ®�þ Þ¡ ó½ ”© ³îÁÓ — à€ÔÙÑ ÷�üë ´Í ËØÿ ·° “šÔ¥ ½ ±ì È å § õ’ êà Žµ �Žú ªë � Úï�¯Ï ÜÐŒóç ø±¥Ë ÇÔ¬ † ü–¯» è Ä Úñ¾þŽ Á б ŒÖ댞— «ÂÌ ÃØÌõÇ ½«ÃÐø· ¿ä ¢ ÏíŠ äÝ ½ †­ ýš‰¨ß Ò— ç¶ “ ˆ¥ ‚¨á»È Ô÷ ® õã Ð à ¹í Ì÷ ³ ¼¥â ¾ ƆÒÙ ‚ª †¤Û “ Ò� ¡ Ó ÝÅ Ðõ €çñÌ ¿ µé Èâú›¬à ¸º Û çƒó× ¹ ¦ ƒ … Ó¼Ï ·ÌíäîÉ » ±“� å óñ ᤠöÀ —¥¬ µé¶ × ™ Ëã� ×úÿî ¹Ö ÈÎð ÛЂ ËŒ ד Ì À Èï Ë ª á• Æ ¸ ý ­  Ýò¼ “™ ²Ü À– ßÿ Ò ÓØÐ ³ öê û³¨Ê×þ ¯ ¶’ë� Ê ë Ç ä ‘ éõ�´ �ù ê Ùœ û î�Ú ® ¿ÅàÊÅÛÏò‹æ ¤Ê ÆÓÌ�û®º ç Š� À ‰° ›‹á ¥Õê– § ªäØ œ½ÁË ×˯ Æ ¼ˆ ÏÉ‘÷¶ œ¾Á ¡ ‰ Ü ã¼ ý™…„ˆ§Þ – µ ’ ¤ Ö àºÓö â Ï  ¸ì Ëö © � ý�ž² §¤á »Å½ ÙÑ…éº �© Ú ðØðØeç,Í;}”V¯core_intrinsicsÁderive_clone_copy_internalsÁð‰âÕ"‰IG¼°d l8 6Ù²XÉ´‡$…ÿ‚]´œÕ"‰IG¼°d22˜¤EªÚ— è„ ðØ fmt_internalsÁfmt_arguments_from_strÁÕ"‰IG¼°d§BláÐK,qqí,ã³ }©Ø …Ͳfmt_helpers_for_deriveÁ¢g¡gÕ"‰IG¼°d1¬3³Yëü¤ì%ðØÕ"‰IG¼°dô“Sæ‘‹8 ¹4ðØÕ"‰IG¼°d´Yc?TÝ^qÿ,Á™œ…Ͳïβ¢g¡gÕ"‰IG¼°ddè~SÒà¿ ·Õ ðØúûèÕ"‰IG¼°d²¢Ë¬bÁ¼ðØúûèÕ"‰IG¼°d"IV9,fq•,¼Ÿ 3…Ͳïβ¢g¡gÕ"‰IG¼°dŸ“žÞ,³q®,îVk…Ͳïβ¢g¡gÕ"‰IG¼°d‡ªG{ÅKü߬�ðØÕ"‰IG¼°d«Éµ%�Ý N~ž¬2,eöi_…Ͳderive_eq_internalsÁ¢ŒÏ¾Õ"‰IG¼°d|çº�©R«èq,ø…Ͳïβ¢g¡gÕ"‰IG¼°d8Aò+½ÒŒße:,óË8…Ͳ—Ͳð‰âÕ"‰IG¼°d6jæÑÎ ,n¶¦L‚�ÀO_…Ͳ¢Ë¾Õ"‰IG¼°dÔ ˜xRˆøTFÉðØúûèÕ"‰IG¼°d:¦Ä×ðN q­,…Ù÷…Ͳïβ¢g¡gÕ"‰IG¼°dýÌo�»04ürÌ<‰¤�Äl…ͲøôÕ"‰IG¼°d®�Æ,ÀðšKðØúûèÕ"‰IG¼°dgÅ4$Û½ Ú�ðØúûèÕ"‰IG¼°d·× Iû¤fN$crate::assert_eqÁ€á—ò[]µŽ ]panic_internalsÁ�‹Õ"‰IG¼°dûoIJ)å÷ í¯ ðØúûèÕ"‰IG¼°d`U‰[!c»É„€¢%Í´œÕ"‰IG¼°d»„`�Í•J ñ‡%ðØúûèÕ"‰IG¼°d±´ú]µg\ɼò +´œÕ"‰IG¼°d›¨E”´]¶eþ,ºs ¼…Ͳ—Ͳð‰âÕ"‰IG¼°d\NY/ìTÁ lŽÒðØÕ"‰IG¼°dºåÓÿ(é%•É„£¹´œÕ"‰IG¼°d¨è ¤=´«q�,¾�+f…Ͳïβ¢g¡gÕ"‰IG¼°d5…ö®Å¦têõü©ÒF,ü¿u­O,�ÙÕ"‰IG¼°d"©jM÷"(D$crate::panic::panic_2021Áôøº ‡¥˜%¥Â`ÂֲϢ[ˆZÕ"‰IG¼°dó¨j©Š‹rµ<¹ƒ ù…ͲøôÕ"‰IG¼°dÏ/ürIæ�ð ŒøðØúûèÕ"‰IG¼°d.‹eúQ%ú ~£üÐ,Â…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d9Ô´V„4jHÉüÏš2N´œÕ"‰IG¼°dæõF|-O× ÛæðØ•β¥Î²Õ"‰IG¼°d´h4Ø�ÈíRÉ„¥O¬´œÕ"‰IG¼°d 3nŽÇq™,ŒÓY…Ͳïβ¢g¡gÕ"‰IG¼°dÅ5uBoEk‘Þ.ðØúûèÕ"‰IG¼°dΠupžçEõÐÞ@üÛz(�’" hint_must_useÁliballoc_internalsÁÕ"‰IG¼°d þòÑ••¶´$crate::panic::unreachable_2021Ážø…ëœ.Õü`ÂÖ²¤[ˆZÕ"‰IG¼°dóò¡¯a TºoÔ$Šðu‚‚´…Ͳ—Ͳú Ì Õ"‰IG¼°dgl¦ºèÀY–qK,�%ª…Ͳïβ¢g¡gÕ"‰IG¼°d¡ŒÆÍšB´/ ³Š ðØúûèÕ"‰IG¼°dæyÙÙÜnÉüè6” ´œÕ"‰IG¼°dô;�µ¡Ô].q¸,ÃËA …Ͳïβ¢g¡gÕ"‰IG¼°d0rMä�ÁóíÞ²Àøàë§-GÂÖ²¤[ˆZÕ"‰IG¼°d¬ÅœAÍ*�I ðØúûèÕ"‰IG¼°dâxȃo­ Å2ðØÕ"‰IG¼°dÒ'BÅâëa éÔ ðØúûèÕ"‰IG¼°d¼&—|ã>‚ɼQ)· ´œÕ"‰IG¼°d[yæíoCºR.$crate::thread::local_impl::thread_local_innerÁú ùØ „hQaåùethread_local_internalsÁ‚Ö– ŸgâfÕ"‰IG¼°d8B çÞB9Ïo“$•” z…Ͳ—Ͳú Ì Õ"‰IG¼°d! ç{ÕÛÉ_ ‹ðØúûèÕ"‰IG¼°d•O�bp×ï–|ÄŽ …— ù »Þ²Õ"‰IG¼°d…òÒ3sìÞ ež,�2,l …Ͳ—Ͳð‰âÕ"‰IG¼°dO¥³íªÀ+rÅ<˜G#’…ͲøôÕ"‰IG¼°dz6Ì«V¼xìeí,ßuÚ …Ͳ—Ͳð‰âÕ"‰IG¼°dŸ\ÓÚ¹´*±¥ÆmÝŸ_…Ͳò¾Õ"‰IG¼°d+ºÅÐï`&bðØúûèÕ"‰IG¼°d ¦[ß&'ÀeÈ,åÅ| …Ͳ—Ͳð‰âÕ"‰IG¼°d4¦Ù+peÒ,îI · …Ͳ—Ͳð‰âÕ"‰IG¼°d£K|øø,z Ü›œðØÕ"‰IG¼°d Ná_£ª¶}LÊm¤ …Ͳ¢Ë¾Õ"‰IG¼°d¿cf÷¹a�” �¯ ðØúûèÕ"‰IG¼°d•À+õdá•Ʉɿ%´œÕ"‰IG¼°dHuI‚1¶ÔŒqñ,܃%È …Ͳïβ¢g¡gÕ"‰IG¼°d“s8 2heý,œ å…Ͳ—Ͳð‰âÕ"‰IG¼°dcZævÞϤŒÉ„´† ½´œÕ"‰IG¼°d<¬éGÿÌOë ì€%ðØúûèÕ"‰IG¼°dyÙ¾œ�l ãqš,ø ™…Ͳïβ¢g¡gÕ"‰IG¼°du ÷úî^²£ðØúûèÕ"‰IG¼°dü¸ÿGtùq‹,a*ÿ…Ͳïβ¢g¡gÕ"‰IG¼°d6Çç@.¦Tɼóp,¸´œÕ"‰IG¼°d7Fi¸aÿ'i–4€÷ ù »Þ²Õ"‰IG¼°d·†O!/Å ,¥1ðØÕ"‰IG¼°d‚‘ÉC¨…: üæðØúûèÕ"‰IG¼°dË|¿­G=aÛóðØúûèÕ"‰IG¼°d–NAFºVd±¢ÔË,î…Ͳò¾Õ"‰IG¼°dV|ˆç1«þÉü¹% #Ô´œÕ"‰IG¼°dv×Ö«ŠáuÍqè (Õ Ø¾,ƒ…Ͳïβ¢g¡gÕ"‰IG¼°d»üµR �ÇÔq—,©Î¼…Ͳïβ¢g¡gÕ"‰IG¼°dk1Ìξ2ËF yðØúûèÕ"‰IG¼°dd'�Íš�™Ý+ðØúûèÕ"‰IG¼°dK·ŸÞ\:¥Ã$crate::const_format_argsÁËùþŽ"`õÄ–]•β¥Î²ŸœÕ"‰IG¼°d¤#_%}eÒ,±&�…Ͳ—Ͳð‰âÕ"‰IG¼°dÏ`ñ®e‚»Úqµ,á¥ç…Ͳïβ¢g¡gÕ"‰IG¼°deÅþ«‰n9û Êë ðØúûèÕ"‰IG¼°dêê&°W@ÑPrtðØúûèÕ"‰IG¼°dk’¤HA“TÉ„ðá´œÕ"‰IG¼°d4Pš¥ªñ²ýùÙŽ"`C•β¥Î²ŸœÕ"‰IG¼°dnJ� Ú9ep,ÂÏ…Ͳ—Ͳð‰âÕ"‰IG¼°dþÄ9‹¶Gåeã,¡— …Ͳ—Ͳð‰âÕ"‰IG¼°dÓg¸15Oɼáàã´œÕ"‰IG¼°dË»|ó�4íÞ²æp­–Ž \ ÂÖ²¤[ˆZÕ"‰IG¼°d éã2!~Øqü,͆É…Ͳïβ¢g¡gÕ"‰IG¼°di‡¯È5èïɼQ'�´œÕ"‰IG¼°d`Ð¥ Ý  ¹Ó ðØúûèÕ"‰IG¼°dzÛ7ú,ÉaéÉü± ß´œÕ"‰IG¼°dúæ_„²Z×S¶œLœ,ý…Ͳ¢Ë¾Õ"‰IG¼°dþ§�ñ=K~ÄþE#÷…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d7Y•¤Í^õ ,»‰ðØÕ"‰IG¼°d3ÊÊŒ¡æáeÑ (Á ù¶,…Ͳ—Ͳð‰âÕ"‰IG¼°de„WÛW�,™É¼Û 0å´œÕ"‰IG¼°d:m»oÏ|¬që,ô‘…Ͳïβ¢g¡gÕ"‰IG¼°dâéA�ÍO ÄéÅðØÕ"‰IG¼°dØ¥f²+pÎíÞ²‡øÌƒ¶0½ ÂÖ²¤[ˆZÕ"‰IG¼°dµ”æö3JÁÆo¥$¥º …Ͳ—Ͳú Ì Õ"‰IG¼°d›x›íÇ>É„³@â´œÕ"‰IG¼°d>Êv,æEý� „ÄðØúûèÕ"‰IG¼°d¯Ín�°Œ’`ªñ²âù¦Ž"`U•β¥Î²ŸœÕ"‰IG¼°d£¿Ä'œÉÄeÙ,¬¿ã…Ͳ—Ͳð‰âÕ"‰IG¼°dR¶z£ ÜùqÎ,â 9…Ͳïβ¢g¡gÕ"‰IG¼°dä‹e}ÿ±Ï$±|À?@ …Ͳò¾Õ"‰IG¼°d7òôÆE:«L¨¤üÒÅ,¥Ý{]º �•‹Õ"‰IG¼°d«„0PMQɼ‘8%^´œÕ"‰IG¼°dGjY~_d!Ô �® ðØúûèÕ"‰IG¼°d×QËT¤ê— áðØ•β¥Î²Õ"‰IG¼°d‡Ùí ‘qeú,‚— Q…Ͳ—Ͳð‰âÕ"‰IG¼°dÿ­c~¹›¹üË�ðØúûèÕ"‰IG¼°deõÈ’åùɼ…åX´œÕ"‰IG¼°d³_=²žEcñðØúûèÕ"‰IG¼°dß®a`G™6q‰,×(3…Ͳïβ¢g¡gÕ"‰IG¼°dËsÆEì…Å«ªñ²Û ù« Ž"`•β¥Î²ŸœÕ"‰IG¼°dNÅÞ†�†‰ ÎàðØúûèÕ"‰IG¼°d¯s‡tÃ�¥ÉüÔ \´œÕ"‰IG¼°dý+äFê«æ¢q¹,î¡ …Ͳïβ¢g¡gÕ"‰IG¼°d½álj }~¢³Ë,w…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dbjò¨�6j¾É„£š ´œÕ"‰IG¼°dävp2Ç e‰,çK“…Ͳ—Ͳð‰âÕ"‰IG¼°d6ïpê4’8ɼ�Hj´œÕ"‰IG¼°d·âq4B“j ôɽðØÕ"‰IG¼°dS™-’‘ '](ðØúûèÕ"‰IG¼°dçôÕË'”.eÊ,ú?P…Ͳ—Ͳð‰âÕ"‰IG¼°d"DYbA¼Ë? †� ðØúûèÕ"‰IG¼°dŽpž^t7“‰umðØúûèÕ"‰IG¼°dèIÞ^0Påeâ,—ƒë…Ͳ—Ͳð‰âÕ"‰IG¼°dæY€´§t<ªíÞ²âp¡Íú ÂÖ²¤[ˆZÕ"‰IG¼°dÕo¹qàðPqù,ý¦{…Ͳïβ¢g¡gÕ"‰IG¼°d7 uºÁ¼Ç¬É„Ú³ 5´œÕ"‰IG¼°dÅ®0ã`|vo‰$‰¡ s…Ͳ—Ͳú Ì Õ"‰IG¼°d/´š²Äü‘1eœ,…,ÿ…Ͳ—Ͳð‰âÕ"‰IG¼°dØÍ#ºo3ƒ $»ùðØÕ"‰IG¼°dj ©mGü8qÃ,Î@#{…Ͳïβ¢g¡gÕ"‰IG¼°d?¡p½�¹ ~Ï Á ’±,ë…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d¦¶nп ”¾“ðØÕ"‰IG¼°dÿ?Ôü'òwç–4ð¼Êù »Þ²Õ"‰IG¼°dWè{Ó±—e0,è�4…Ͳ—Ͳð‰âÕ"‰IG¼°d8Ý�4…kTxq²,û/Š…Ͳïβ¢g¡gÕ"‰IG¼°dÙUÔLúÞ ‘›ðØ•β¥Î²Õ"‰IG¼°dú¥w-§áE«É¼ø“u´œÕ"‰IG¼°dªØDEDÅ þñðØúûèÕ"‰IG¼°dËîÿmc£‘×$ðšuÔ=‰…Ͳ�i€iÕ"‰IG¼°d¼óQ¢hN¿=Ʉإ ´œÕ"‰IG¼°dDH{/á1£qË,Æ ·…Ͳïβ¢g¡gÕ"‰IG¼°do@Ñ,¼ŒÕ?íÿðØúûèÕ"‰IG¼°dŽµÞ¨…,¯ê~|Ÿ?R…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d`êä?+�ø “wðØúûèÕ"‰IG¼°d¬…~fæfqiqë,¡8%Š …Ͳïβ¢g¡gÕ"‰IG¼°dÇ+EzÈÛÉüÄ;,D!´œÕ"‰IG¼°dNCD­8h ®§ ðØúûèÕ"‰IG¼°dõ´6’\ ÊôɼåI ¡!´œÕ"‰IG¼°d—:£<£Âqö,¼à N!…Ͳïβ¢g¡gÕ"‰IG¼°d*<7¼¬‰²™ëÝðØúûèÕ"‰IG¼°dùtIEGŒðØúûèÕ"‰IG¼°dï{ ´ç(Nq‡,a(ã!…Ͳïβ¢g¡gÕ"‰IG¼°dà‘Cšqº[ ›× ðØúûèÕ"‰IG¼°dõryrPž: –ÑðØúûèÕ"‰IG¼°d:ÇŠ¾‚Ne¸,åãa#…Ͳ—Ͳð‰âÕ"‰IG¼°dÇyxcRý+ɼì8#´œÕ"‰IG¼°dƒ|…ï»@aq¡,ƒq,ä"…Ͳïβ¢g¡gÕ"‰IG¼°d_³H�¤%il ðØúûèÕ"‰IG¼°dä΀`]B¶×L´ç¾ …Ͳ¢Ë¾Õ"‰IG¼°dÕ¾I/WÙ#É„»8 $´œÕ"‰IG¼°dô"׆½�× fðØ•β¥Î²Õ"‰IG¼°d�yB™×3d¤e†,ÜÇÇ$…Ͳ—Ͳð‰âÕ"‰IG¼°d‚N�€4‡\ Ç-ðØúûèÕ"‰IG¼°dÊÕ·.@r÷‘É$ð,ú…Ͳ�i€iÕ"‰IG¼°dðÌÜ~"4×eA,Žåe%…Ͳ—Ͳð‰âÕ"‰IG¼°d»Ñ×>°þBt ÓX ðØúûèÕ"‰IG¼°d,¶ÔØnjecðØúûèÕ"‰IG¼°dÖŽêØÞˈxqá,¢ã%…Ͳïβ¢g¡gÕ"‰IG¼°dTlªø·áì›em,¬ù 7&…Ͳ—Ͳð‰âÕ"‰IG¼°dÇ@`É¿ÉÌù£&´œÕ"‰IG¼°d6Jy¯éÆ CqÚ,ý†¼%…Ͳïβ¢g¡gÕ"‰IG¼°d �Þ(·²qÞ,‚à õ%…Ͳïβ¢g¡gÕ"‰IG¼°d9íN­ééÈÆ¶öLî[Ÿ#…Ͳ¢Ë¾Õ"‰IG¼°dºþÌ �zÔë^!ðØúûèÕ"‰IG¼°dr#" ŽªFWÉ„ì– '´œÕ"‰IG¼°dí¹d˜nsyÛeˆ,Ý ¦'…Ͳ—Ͳð‰âÕ"‰IG¼°d¥úÒ¨÷›ÑÈÉ„�}'´œÕ"‰IG¼°d:]UÀ„3 ¤§ØðØÕ"‰IG¼°dÑÄ?+ õ¸e¾,Â%#4(…Ͳ—Ͳð‰âÕ"‰IG¼°dúNÆUø³"ɤ¸Á Ⱦ,(´œÕ"‰IG¼°dþªò«ê#—ÉüŽƒ&>(´œÕ"‰IG¼°dDð¥0¦«É”·÷l(´œÕ"‰IG¼°d‰èw)Œ©šoç$Òðª…Ͳ—Ͳú Ì Õ"‰IG¼°dñAA�”Ó Ð0 ðØúûèÕ"‰IG¼°d�}JW­m ÉüÜã )´œÕ"‰IG¼°d[Äq1¼o»q®,Ê"-¯(…Ͳïβ¢g¡gÕ"‰IG¼°dØOqwâž6É„§Ëi)´œÕ"‰IG¼°d€@òOÊA üº–"ðØÕ"‰IG¼°dÛh×Ço匪ñ²Úù˜Ž"`Ó•β¥Î²ŸœÕ"‰IG¼°d¬ÎèSçQ¹ã ¸ºðØúûèÕ"‰IG¼°dÙìÃÇã™ še×,Øš‘*…Ͳ—Ͳð‰âÕ"‰IG¼°d‚“²©ñÜÿqW,�¢ç)…Ͳïβ¢g¡gÕ"‰IG¼°dA'"Tä ý ˜›ðØúûèÕ"‰IG¼°dÆ‘¼gmÉ*r»<£Û '…ͲøôÕ"‰IG¼°d…¯Ü°ezže|,‚?g+…Ͳ—Ͳð‰âÕ"‰IG¼°d„¹S˜$¨Fü�÷† ðØÕ"‰IG¼°d!"ÊQãEqè,›=å*…Ͳïβ¢g¡gÕ"‰IG¼°dÐ� Š@Ö^eò,ËP ,…Ͳ—Ͳð‰âÕ"‰IG¼°dDå&:N’É¼Ò Ù+´œÕ"‰IG¼°dºœ¡ÐÃ.Aóí‰ðØúûèÕ"‰IG¼°dh&á’@,€ü·Öœ ðØÕ"‰IG¼°dçë�2bxe¡,÷"Á,…Ͳ—Ͳð‰âÕ"‰IG¼°dEDi'‡ «ÏðØúûèÕ"‰IG¼°d× O->{)´É¼ƒ¾ É,´œÕ"‰IG¼°dѨÓMyÔ”qµ,¿¡v,…Ͳïβ¢g¡gÕ"‰IG¼°dÆéfÞÎ{e~Ÿ˜l,ã*…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dZÉã µÄf*É„ôj m-´œÕ"‰IG¼°dÇ©²¿·Öu¿eä (Õ „±,.…Ͳ—Ͳð‰âÕ"‰IG¼°dÎ&Á³¼úq‚,ôûX-…Ͳïβ¢g¡gÕ"‰IG¼°d88“Ûf�ûë %]ðØ•β¥Î²Õ"‰IG¼°dé(P¼˜;Éeª,¤F¦.…Ͳ—Ͳð‰âÕ"‰IG¼°dïä Õm[Ù Ë– ðØúûèÕ"‰IG¼°deõQµÌÇ œñðØúûèÕ"‰IG¼°d’ÕÿZƒõÉ„óŸÞ.´œÕ"‰IG¼°dZÇø5Û‹¶ßLµ¨ý+…Ͳ¢Ë¾Õ"‰IG¼°d+qª°cƒr ÉüÜÅ E/´œÕ"‰IG¼°d¥\è'‚Å(2ðØúûèÕ"‰IG¼°dÛWu¿‹‡êøe…,ãë0…Ͳ—Ͳð‰âÕ"‰IG¼°dñÈùæ*}wþeö,Ô[A0…Ͳ—Ͳð‰âÕ"‰IG¼°drXÿ&¾"êɼº³0´œÕ"‰IG¼°d•ã�8¤ì† ÍÂðØúûèÕ"‰IG¼°dnBõ¿J Ž®ðØúûèÕ"‰IG¼°d"-‰Ò3îf1Éü¡f,¥0´œÕ"‰IG¼°d\Œmu·ð?ào»$†Ÿ ã'…Ͳ—Ͳú Ì Õ"‰IG¼°doiwÉÚÖɼ†¡  1´œÕ"‰IG¼°dWèwq ë­µÅðØúûèÕ"‰IG¼°d#éÐû<ƒÉ¤øÁ û°&,m1´œÕ"‰IG¼°dþa1Y…›É¼§ü›1´œÕ"‰IG¼°dqð”³ïL±qæ,¡ÚH1…Ͳïβ¢g¡gÕ"‰IG¼°d£³9kôGKɄؑ2´œÕ"‰IG¼°d}–M:ÞÏð_e+,ƒó“2…Ͳ—Ͳð‰âÕ"‰IG¼°džéÙðÿÕ ~¬¾f0…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d1‰�òÀ!q�,õƒ(2…Ͳïβ¢g¡gÕ"‰IG¼°dî;íýYO; ášðØúûèÕ"‰IG¼°dóÒ'†ˆ,ðqÖ,ˉ‘2…Ͳïβ¢g¡gÕ"‰IG¼°dòJÚ�°6Aß~º¼Ùÿ0…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d·[ŒNAu“L lÐ� ðØÕ"‰IG¼°dïQò¬+ɼªn¯3´œÕ"‰IG¼°düÅ$´Ç0Úqê,ë 0[3…Ͳïβ¢g¡gÕ"‰IG¼°d§ÍÉ‚otl~çá;È1…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dÅN4dŸV„{~ðØúûèÕ"‰IG¼°d�yÃ�éyÿpɴί‚4´œÕ"‰IG¼°d·FÖâðp½3çðØúûèÕ"‰IG¼°dTŠm±�b  Ä·ðØúûèÕ"‰IG¼°dF‡!ÖšS e—,�¡ s5…Ͳ—Ͳð‰âÕ"‰IG¼°dîx§X6°Ve°,„ѯ5…Ͳ—Ͳð‰âÕ"‰IG¼°dç(4,-»[·žTÁ2,¥™‘_…Ͳ÷¾Õ"‰IG¼°d¡\¯,=sqà,š�=5…Ͳïβ¢g¡gÕ"‰IG¼°dÂѨ6q,ºnt5…Ͳïβ¢g¡gÕ"‰IG¼°dBôøOo|éÉ¥¸Õ ð¶,16´œÕ"‰IG¼°dGH{:E&Dnqÿ,°ËÞ5…Ͳïβ¢g¡gÕ"‰IG¼°dçq;…Kƒ£6 È… ðØúûèÕ"‰IG¼°d±·†•Ê0ýei,�¯+7…Ͳ—Ͳð‰âÕ"‰IG¼°dÖá]ôͲ˼eß,�¨g7…Ͳ—Ͳð‰âÕ"‰IG¼°d2êw÷r"eÔ,êà£7…Ͳ—Ͳð‰âÕ"‰IG¼°dLã/† cm¨ Õï ðØúûèÕ"‰IG¼°dS†�eCeØ,×w 8…Ͳ—Ͳð‰âÕ"‰IG¼°dœ›•`…ˆ Y$crate::assertÁ�É›‡T]�±ù]…ͲÂÖ²ƒgeneric_assert_internalsÁ±œÕ"‰IG¼°d0mØèì�+oõ$½`/…Ͳ—Ͳú Ì Õ"‰IG¼°d| c2]É;IÉüË[.‰8´œÕ"‰IG¼°d1$ÊÜL_wR ¯ðØ•β¥Î²Õ"‰IG¼°d œ bð2n¿2ÕðØúûèÕ"‰IG¼°d23„r|_a6ÐÝðØúûèÕ"‰IG¼°d¯+þ÷%MJÉì…” F9´œÕ"‰IG¼°dµèÚÑàü�½‚ðØÕ"‰IG¼°dDÂÛžaÚ‡·£T‘Ñ,…Ͳ÷¾Õ"‰IG¼°dÔñÑjÜaÉü�G #Ñ9´œÕ"‰IG¼°d9[Fãÿ¿‚Šqå,ƒÁ~9…Ͳïβ¢g¡gÕ"‰IG¼°dr1émñS!ɼûÐ8:´œÕ"‰IG¼°d™}߇«€3_~œÄ‚8…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dËfj†dàòé É™ðØúûèÕ"‰IG¼°d‚Ò§ç%BQªñ²ÒùŠŽ"`ê(•β¥Î²ŸœÕ"‰IG¼°d#Ý÷帗Œ¶ÔLšð8…Ͳ¢Ë¾Õ"‰IG¼°dó¡›úÇ] lÝ� ðØÕ"‰IG¼°dŒ¶}öæðØúûèÕ"‰IG¼°d¹áòÙR[Bɼ®�+!=´œÕ"‰IG¼°d°Ø°�¢‡Øªñ²ý ùÜ Ž"`d+•β¥Î²ŸœÕ"‰IG¼°dH†å~Dàɼ€ö Ž=´œÕ"‰IG¼°dZó“ ¬e•,µŸ  >…Ͳ—Ͳð‰âÕ"‰IG¼°dÝ:1ÈÃmL³q­,®Ov=…Ͳïβ¢g¡gÕ"‰IG¼°d±«%›¥ý}rž<£2,~:…ͲøôÕ"‰IG¼°d ‰ö†Hp-É„è! b>´œÕ"‰IG¼°d>?$V~‚°qÜ,µ<>…Ͳïβ¢g¡gÕ"‰IG¼°d¶®ˆÐÂúµ¥øÕ ̓~,�ý¿]¤œÕ"‰IG¼°d’F©>.<e,ñ_?…Ͳ—Ͳð‰âÕ"‰IG¼°d>‘V3¸+q”~¦þê<…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d�É!ŽíÚUÓqÜ,ýõô>…Ͳïβ¢g¡gÕ"‰IG¼°d׿%FÕŠãÉ„§+­?´œÕ"‰IG¼°d±˲å•.1qÌ,‚¤Z?…Ͳïβ¢g¡gÕ"‰IG¼°dö3‚ðwÀ­¾qÔ,òX ’?…Ͳïβ¢g¡gÕ"‰IG¼°d' ŒûAŒÚ®KðØúûèÕ"‰IG¼°d=ÞŒuPGbÓðØúûèÕ"‰IG¼°dªé}O@×Àqó,‰¢%)@…Ͳïβ¢g¡gÕ"‰IG¼°dç‹<˜i²l~îðØúûèÕ"‰IG¼°d€2 ûÕiàw¶ýL® >…Ͳ¢Ë¾Õ"‰IG¼°d­3))\ý <š1ðØÕ"‰IG¼°di, ²~(b €ÏðØúûèÕ"‰IG¼°d_áã‰bÚe�,·�+B…Ͳ—Ͳð‰âÕ"‰IG¼°d)z ÇGQÔ�êõüÙÑN,º;�ÙÕ"‰IG¼°dÞ}åÂ){k¶eµ,²ƒ nB…Ͳ—Ͳð‰âÕ"‰IG¼°dI¸ÓÓPeÚðØúûèÕ"‰IG¼°d¶x„WºFɼ‡>tB´œÕ"‰IG¼°dw$ƒBTr£<óÐ,ñ>…ͲøôÕ"‰IG¼°d½Èw0æ9Éüµ‰2×B´œÕ"‰IG¼°dõ¢ ×LKUte§,Ÿ<hC…Ͳ—Ͳð‰âÕ"‰IG¼°dŠê€¦å½ ie™,…Ó¤C…Ͳ—Ͳð‰âÕ"‰IG¼°d³½ñ@Tø  ²™ðØúûèÕ"‰IG¼°dДÄ+¶}?eK,ú$D…Ͳ—Ͳð‰âÕ"‰IG¼°d­hˆÞ¸ÌááeÔ,ƒðJD…Ͳ—Ͳð‰âÕ"‰IG¼°dÌšî\�ôèÉü•6"D´œÕ"‰IG¼°dËHÎiÉ,¼e¸,¼Ë´D…Ͳ—Ͳð‰âÕ"‰IG¼°d ¦@èõ²0 ã¹ðØúûèÕ"‰IG¼°d=¢‡ Ë›o6ðØúûèÕ"‰IG¼°d ý{Î+¶ãL³—ÜA…Ͳ¢Ë¾Õ"‰IG¼°d¡ŒÐ„åTUjqé,õ– ¢D…Ͳïβ¢g¡gÕ"‰IG¼°dcTT¼öxɼÇ([E´œÕ"‰IG¼°d¦�µ–@›¯6$crate::thread::local_impl::thread_local_process_attrsÁù ù× ˆX¹aýŽ3$aÿã²´¨Õ"‰IG¼°d¸F)©ª4Ÿóe“,Ž” _F…Ͳ—Ͳð‰âÕ"‰IG¼°d�ù´‡¥�ÄÊ–¬µ¡ e:ù »Þ²Õ"‰IG¼°d0â¥bí_®mÝðØúûèÕ"‰IG¼°dÉÅSÅwâ#qÅ,‘G#F…Ͳïβ¢g¡gÕ"‰IG¼°dÞZF »óíü²‰‡ðØÕ"‰IG¼°dž«~9à˜qì,�HyF…Ͳïβ¢g¡gÕ"‰IG¼°db�×0q�( ÄìÙðØÕ"‰IG¼°dîïð‚:éªñ²³ùÑŽ"`n5•β¥Î²ŸœÕ"‰IG¼°dW@÷5Ó´‘o5$Þ¯§>…Ͳ—Ͳú Ì Õ"‰IG¼°dœ]¬^éÖ3·¥TºI…Ͳ÷¾Õ"‰IG¼°dužbºþB †áðØúûèÕ"‰IG¼°d¬ZfëGˆ»üæÐGðØÕ"‰IG¼°d¶Ö‰…Sµå¶ÙL¾¿LE…Ͳ¢Ë¾Õ"‰IG¼°dÏ~_KU›i›qÇ,Ï„H…Ͳïβ¢g¡gÕ"‰IG¼°dÿÀ©. Õë~}Æm~F…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d±¾,È J{J–|¿ª7=ù »Þ²Õ"‰IG¼°d5Uš¸ò/¸ªñ²Þ ù² Ž"`S7•β¥Î²ŸœÕ"‰IG¼°d�å™ÞñJ·FÚ¬œÏ%†…ͲÂÖ²ƒí½³±œÕ"‰IG¼°d0U4àŸÔÍ‘˜åðØúûèÕ"‰IG¼°dLmmˆT'âÉ„ä€ íI´œÕ"‰IG¼°d¿¨9~µzÈ(qû,µž šI…Ͳïβ¢g¡gÕ"‰IG¼°d‹®~ýVeš,ñ ·J…Ͳ—Ͳð‰âÕ"‰IG¼°dƒ;¹ #ÛËìÐðØúûèÕ"‰IG¼°d|zK�D¹3e‹,Z* K…Ͳ—Ͳð‰âÕ"‰IG¼°d�¯ÉiiÀᥠßôðØúûèÕ"‰IG¼°dKÔ±;s³†OÒðØúûèÕ"‰IG¼°d5§žÔ;Ÿëɼ¯Ú WK´œÕ"‰IG¼°dãøc˜š”Ëu¼½ ðØÕ"‰IG¼°dxå]׆:Ô·¢TÈË,$…Ͳ÷¾Õ"‰IG¼°d,ݶbž É„¨&ÞK´œÕ"‰IG¼°d¿Ýb§ÜÚ·íüëÂU+ðØÕ"‰IG¼°dwÀ–·°%›åɼò#2L´œÕ"‰IG¼°d�\?"†1Ž&eè (Õ Ñ¾,ÆL…Ͳ—Ͳð‰âÕ"‰IG¼°d«Œ�4Ô'f{e—,¢ÎM…Ͳ—Ͳð‰âÕ"‰IG¼°d¶Ôë;Ѷ†–|ñÒAù »Þ²Õ"‰IG¼°dÈ­¸.¢ï¹ ì�ðØúûèÕ"‰IG¼°dÄ̵\Å(×y©Ú²Êùü–\`ÔFÂֲϢ[ˆZÕ"‰IG¼°d™“d„»œ› ½oðØ•β¥Î²Õ"‰IG¼°d§ °–ñ•¸eÍ,öRN…Ͳ—Ͳð‰âÕ"‰IG¼°d+ÙëÂÀÞ¥q´,ÆŸgM…Ͳïβ¢g¡gÕ"‰IG¼°d,;VÜ™“—0ðØúûèÕ"‰IG¼°d£w$;§»Vµ ¤¡ðØúûèÕ"‰IG¼°dXá_J {©Ú²üù×–\`HÂֲϢ[ˆZÕ"‰IG¼°dGLc¨Àqo,ü:N…Ͳïβ¢g¡gÕ"‰IG¼°d­âû�¦¶âL©ƒåK…Ͳ¢Ë¾Õ"‰IG¼°d£Ôó]ÑÖ7†É¼ìÞ,O´œÕ"‰IG¼°d”å¼‰Ô ð  Ý"ðØÕ"‰IG¼°d~Œ~L…Ñ™ìíÞ²åpªŒ‰ ÊFÂÖ²¤[ˆZÕ"‰IG¼°d¥9¡h BYɼ�Ó¸O´œÕ"‰IG¼°dS“ìÁO®UÁeü,ƆJP…Ͳ—Ͳð‰âÕ"‰IG¼°dkÍŸõð?PjÛðØúûèÕ"‰IG¼°dk1~ B¥òq‹,¿Ú ÐO…Ͳïβ¢g¡gÕ"‰IG¼°dáÜ‘Ó-o«‘œ$–,¶0…Ͳ�i€iÕ"‰IG¼°džbJm"£ü²ùÓðØÕ"‰IG¼°d?©*‘Ì~>rÄ<õE#4M…ͲøôÕ"‰IG¼°d.ÊòEΣŠÈ ÷2ðØ•β¥Î²Õ"‰IG¼°d9?0î Ä•eë,í­Q…Ͳ—Ͳð‰âÕ"‰IG¼°dÑì.ó-I  ”èÌðØÕ"‰IG¼°d¬e¡]o˜É¼ÓÇ«Q´œÕ"‰IG¼°d©»k½£hîe¥,žŸ¾n—Éüä £V´œÕ"‰IG¼°dg¾²O µžTeˆ,èH4W…Ͳ—Ͳð‰âÕ"‰IG¼°dQ�5Q»¦p³±É�-ZJ…Ͳò¾Õ"‰IG¼°dº‹+�bhkðØúûèÕ"‰IG¼°d¥z‚#^'™Éü߃,pW´œÕ"‰IG¼°d¦)OaìOà— ÿùðØúûèÕ"‰IG¼°dèh’=ÕñYø>áeÏðØÕ"‰IG¼°dÑØÛYçÃÚ¶mL¾ù æT…Ͳ¢Ë¾Õ"‰IG¼°dÖÏxq™éÊoÜ$—$ðØúûèÕ"‰IG¼°döc1& |µ:~×ìšfY…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dw/L 6·+É„½Ÿñ[´œÕ"‰IG¼°d¨¿£ßYßÃc¶ðØúûèÕ"‰IG¼°dYó±±}G¥/r|<–?›X…ͲøôÕ"‰IG¼°da]ÂèK4ÕOÄðØúûèÕ"‰IG¼°dùN;v~£y+eë,š8%]…Ͳ—Ͳð‰âÕ"‰IG¼°dä~JÁ®·¥rqó,¦† i\…Ͳïβ¢g¡gÕ"‰IG¼°d°mŽþ„1e› òÇðØúûèÕ"‰IG¼°dŽÖé×Ä(ï ­ñðØúûèÕ"‰IG¼°dÔŒ9üg¯¤çðØúûèÕ"‰IG¼°db#°ü5üe‡,Z(^…Ͳ—Ͳð‰âÕ"‰IG¼°d<›Ó2 íhÌÃðØúûèÕ"‰IG¼°dûCϯ 5`de·,ƒÈ^…Ͳ—Ͳð‰âÕ"‰IG¼°dÎ{O:°J©…e¡,üp,º^…Ͳ—Ͳð‰âÕ"‰IG¼°dùÔ•]ösäɼñ?‘^´œÕ"‰IG¼°d{¬s¬A&â~×°çs\…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dv‰ÝuËÉÌ©ƒ þ^´œÕ"‰IG¼°dË·ûûžœ'ü…J;ðØÕ"‰IG¼°dÝÙ„Í•ñá¶ä HÕ –±,E\…Ͳ¢Ë¾Õ"‰IG¼°d"Ô©æZmv¾ ðØúûèÕ"‰IG¼°dˆn¸/(¿¸ÉüÂð+¼_´œÕ"‰IG¼°d KùézþsÈq@,ùãh_…Ͳïβ¢g¡gÕ"‰IG¼°dæá”Ħ}@j~Éì,Õ]…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dn i]o(!ɼüÒ``´œÕ"‰IG¼°d,´–ÝØñ¢ðØúûèÕ"‰IG¼°dŸÒÆD$£×â öøðØúûèÕ"‰IG¼°dÕž£¾Rs‡rá<™ã<]…ͲøôÕ"‰IG¼°d×ÅjËøÓeÚ,ö†…a…Ͳ—Ͳð‰âÕ"‰IG¼°d²š.}ª‡ –4œî‹Uù »Þ²Õ"‰IG¼°dÉOëQVBOeÞ,û öa…Ͳ—Ͳð‰âÕ"‰IG¼°dëÜ|ÖI{6~öê[�_…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d‘’ì‹›k‹� õ—%ðØúûèÕ"‰IG¼°da³·¢p["»É„ב ë$ÛEDíЩڲÙù––\`ˆ^ÂֲϢ[ˆZÕ"‰IG¼°dfCL¹¤ $4ðØúûèÕ"‰IG¼°dÚ^~�Þ¨:qV,¾™Ýd…Ͳïβ¢g¡gÕ"‰IG¼°dh¸�÷.F¾¶ÖL܉ˆb…Ͳ¢Ë¾Õ"‰IG¼°dÀ)Ÿ¯Ï[o»$�Ûß\…Ͳ—Ͳú Ì Õ"‰IG¼°dÓɘ²=9Èhoè$•=]…Ͳ—Ͳú Ì Õ"‰IG¼°dRU@@Ê»:Yrñ<È Žb…ͲøôÕ"‰IG¼°dôL�­ÖÝÆq„,a&ðe…Ͳïβ¢g¡gÕ"‰IG¼°d­OAÓ�2 ¬Ö ðØúûèÕ"‰IG¼°d{‡1y÷è�;¶ÁðØúûèÕ"‰IG¼°d.a ¯aKm©q ,â"‡f…Ͳïβ¢g¡gÕ"‰IG¼°d¬{ºÒ¶5ËOq´,á‘Àf…Ͳïβ¢g¡gÕ"‰IG¼°d‰~žh¥DqŸ,‘l,øf…Ͳïβ¢g¡gÕ"‰IG¼°dSJÆ2”�¦e‚,íûh…Ͳ—Ͳð‰âÕ"‰IG¼°d?ïŽl °Gû 'YðØ•β¥Î²Õ"‰IG¼°dcgr·ê­­óðØúûèÕ"‰IG¼°dÈ4GIqNÉTðØúûèÕ"‰IG¼°dp ,ùà_I~ß±¨1f…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d;”Œ�¥Ðúhɼ¿„¼h´œÕ"‰IG¼°d5¿Kþ–ÍY’ ÝñðØúûèÕ"‰IG¼°d×bD¶k�‹üqÚ,½† ™h…Ͳïβ¢g¡gÕ"‰IG¼°dÍcÿï)Ð^ìe„,Ô»·i…Ͳ—Ͳð‰âÕ"‰IG¼°dß̳©%-¶õLÎf…Ͳ¢Ë¾Õ"‰IG¼°d—ÔjH |#ðÉ¼í¦Æi´œÕ"‰IG¼°dVM.iV ÞðØ•β¥Î²Õ"‰IG¼°dê™cD­0M ä± ðØúûèÕ"‰IG¼°d@hý’–¦ìdɼڼUj´œÕ"‰IG¼°d ºž'+_6üŒ¿·ðØÕ"‰IG¼°d(û² ÍéOXɼ—  «j´œÕ"‰IG¼°d!Ü\%}ce»,ÿž =k…Ͳ—Ͳð‰âÕ"‰IG¼°d^Ô¬áó/2Ö $�ßðØÕ"‰IG¼°döU¸·l'8ºeæ,šÚŸk…Ͳ—Ͳð‰âÕ"‰IG¼°dúìÑÚÍÁGÉ„ú�wk´œÕ"‰IG¼°d®Ïíg+Ùèq¬,·f#k…Ͳïβ¢g¡gÕ"‰IG¼°dæ¼ä®]Déq),�Ó[k…Ͳïβ¢g¡gÕ"‰IG¼°d [—Ù‡ì‡I ôó’ðØÕ"‰IG¼°d'TµÍТo�$ïƒKc…Ͳ—Ͳú Ì Õ"‰IG¼°d—"í~Dì ó€2ðØúûèÕ"‰IG¼°d&ÓA?X~*oÖ$ʼn³c…Ͳ—Ͳú Ì Õ"‰IG¼°dZGŸ™Gœ0�qO,ê¼Zl…Ͳïβ¢g¡gÕ"‰IG¼°d1ö +æh- ›� ðØúûèÕ"‰IG¼°d‹RNOMˆçrº<³Ù“i…ͲøôÕ"‰IG¼°d�˜±ìJ�âyeê,ä 0Ûm…Ͳ—Ͳð‰âÕ"‰IG¼°dÂ.‡Tå2?¤Éüè ³m´œÕ"‰IG¼°d£@^Q‘$1Øqç,Ú;_m…Ͳïβ¢g¡gÕ"‰IG¼°d÷s£÷‹áÛö Î6ðØÕ"‰IG¼°dhÀb1'4íÞ²ïp½¶Ô ‰eÂÖ²¤[ˆZÕ"‰IG¼°db*ù¿ $«; ÜÕ ðØúûèÕ"‰IG¼°d:¬ ɛĠ\$crate::assert_neÁ�áà åc]µŸ]ÂֲދÕ"‰IG¼°d! Á”Ù³-½ðØúûèÕ"‰IG¼°d^ÍcÍÂò¸ ɼ¥ž  o´œÕ"‰IG¼°dR&¾;ÃÂq–,§  Ín…Ͳïβ¢g¡gÕ"‰IG¼°dyÌâ´‹|Ùq¯,ÄÐo…Ͳïβ¢g¡gÕ"‰IG¼°d¢œ#Ÿêøg¶žL¶2,°l…Ͳ¢Ë¾Õ"‰IG¼°dLóÔ§íüüìè'ðØÕ"‰IG¼°d*J‹—ž!:Ú$crate::__export::format_argsÁßùþ„#(Åõ‘]•β¥Î²žœÕ"‰IG¼°dø°û² me,³nÝp…Ͳ—Ͳð‰âÕ"‰IG¼°dhÊÚ]ÊÅqþ,ñÁ4p…Ͳïβ¢g¡gÕ"‰IG¼°dQ$Ù£0ɹq�,ùámp…Ͳïβ¢g¡gÕ"‰IG¼°d´=âyeAlƒÜÑðØúûèÕ"‰IG¼°déUhÈ�Q±¦™¤d…Ͳò¾Õ"‰IG¼°dÁT·Cȉ÷qÞ,·ü q…Ͳïβ¢g¡gÕ"‰IG¼°d„ý-|ÆÒOqh,ë™Aq…Ͳïβ¢g¡gÕ"‰IG¼°d¯ÕdǤ{(¥PðØúûèÕ"‰IG¼°dÜèÅÊÅëN+qÓ,üÞ©q…Ͳïβ¢g¡gÕ"‰IG¼°d hnt‚»lò 䥠ðØÕ"‰IG¼°dÏÕ퉋vÊÙ Ÿ° ðØúûèÕ"‰IG¼°dÿ€ê§ä4ßÉü­,¹r´œÕ"‰IG¼°d¡“)êwš®eõ,¶Js…Ͳ—Ͳð‰âÕ"‰IG¼°dAj¢LE S É„ŸÑ "s´œÕ"‰IG¼°dŒ-ràHD¤Îrþ<Ès žo…ͲøôÕ"‰IG¼°dªUÖÍê •ì%ðØúûèÕ"‰IG¼°dÍ ªZ#nɼñ$²s´œÕ"‰IG¼°d®zrÚ|„�ÿqŸ,«. ^s…Ͳïβ¢g¡gÕ"‰IG¼°dPåÆuè®É„–<t´œÕ"‰IG¼°d› ÏGTQ” lòÔðØÕ"‰IG¼°dõçÛ¤ÍÉü¯m&kt´œÕ"‰IG¼°d @œmûTζ£L†Ñ,Šq…Ͳ¢Ë¾Õ"‰IG¼°dd?}5ib¸Éü£¿&Òt´œÕ"‰IG¼°d‹¯•3q‚ÊÉüÞE/#u´œÕ"‰IG¼°d=l{³‹^¬eå,üÀ’u…Ͳ—Ͳð‰âÕ"‰IG¼°dzá Ü”¯âq âŠðØúûèÕ"‰IG¼°dµ]i,¹É¼´Ðšu´œÕ"‰IG¼°d[6ô‹ûRqœ,½‚Gu…Ͳïβ¢g¡gÕ"‰IG¼°dN æC;àN.ðØúûèÕ"‰IG¼°d/|Yž6Bî©Ú²Ñùˆ–\`ÅoÂֲϢ[ˆZÕ"‰IG¼°dG«þbVÑ‘Ô$”ðšV…Ͳ�i€iÕ"‰IG¼°d—„>®}ü¼½³LÉœ‡T]¯>…ͲÂÖ²ƒí½³±œÕ"‰IG¼°dVÕªƒoÙ œŒ ðØúûèÕ"‰IG¼°d'gÁÔB ÿ©Ú²ƒ ùã–\`¬pÂֲϢ[ˆZÕ"‰IG¼°dª-’‰n~D ìÀðØúûèÕ"‰IG¼°dî_/É©qt,Š!w…Ͳïβ¢g¡gÕ"‰IG¼°dWGZ”QÊÞP Y ðØ•β¥Î²Õ"‰IG¼°d3º½ÔjÁɼí†ëw´œÕ"‰IG¼°d¹ÀHÝÚ´¥Seì,ºª }x…Ͳ—Ͳð‰âÕ"‰IG¼°d®³ “Q ÷2ðØÕ"‰IG¼°d2NÚÂ[ú7¾É´ß�zx´œÕ"‰IG¼°dô* ‰r0‘ɼØ(+§x´œÕ"‰IG¼°dŒÌzµ Yí©Ú²ü øÚ Õ”5jrÂֲϢ[ˆZÕ"‰IG¼°dâÌc«Kq”,¶ž ‘x…Ͳïβ¢g¡gÕ"‰IG¼°dT„Ì!5NÉ„�ê Ky´œÕ"‰IG¼°dRŽbèÿÉ­ ŽÕ ðØúûèÕ"‰IG¼°d¥¯iŸå÷+qž,œ2,'y…Ͳïβ¢g¡gÕ"‰IG¼°dÉ)_ì¤qŠrÍ<À÷0v…ͲøôÕ"‰IG¼°d{'‡^`ÔðäeÜ,®<xz…Ͳ—Ͳð‰âÕ"‰IG¼°d6ÅCbY ›qÓ (Á ؾ,Ñy…Ͳïβ¢g¡gÕ"‰IG¼°d�š’H“wêkÉ„¥<0Šz´œÕ"‰IG¼°dßÀ2 � g ”üÛðØÕ"‰IG¼°d[e“…õÕ\ o¦$øíq…Ͳ—Ͳú Ì Õ"‰IG¼°dƒ�H¦½ê‰cqe,¸í”z…Ͳïβ¢g¡gÕ"‰IG¼°dà‘JbCöÑíeÜ,öõ²{…Ͳ—Ͳð‰âÕ"‰IG¼°d(áÐ[¸ýMIÉ„¤þŠ{´œÕ"‰IG¼°dN÷D~"œ€ZrÈ<óÅx…ͲøôÕ"‰IG¼°d‹�+|ü­’qÓ,øR j{…Ͳïβ¢g¡gÕ"‰IG¼°d”¶åå 9Óq,’¡{…Ͳïβ¢g¡gÕ"‰IG¼°dhU@‘å¼)ɄӃ%[|´œÕ"‰IG¼°d²®oeéÎPªñ²á ù· Ž"`žj•β¥Î²ŸœÕ"‰IG¼°däÈæÇx>× �†%ðØúûèÕ"‰IG¼°da~Œ=v~ýª «z…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dÜßRÀÄ»�°¥ðØúûèÕ"‰IG¼°d÷¤1>GÍóq›,Å ã|…Ͳïβ¢g¡gÕ"‰IG¼°d .ª€ÀN�s lˬðØÕ"‰IG¼°dï¨�od{qŒ,è(+A}…Ͳïβ¢g¡gÕ"‰IG¼°dö ¶iãõÉüÝÐE,ü}´œÕ"‰IG¼°dîÕþMÍǵq²,ýj ¨}…Ͳïβ¢g¡gÕ"‰IG¼°dƒõ`ÑZ�¯+ ¹¯ ðØúûèÕ"‰IG¼°dö6¾ h~Qýo£$íÐ,¢u…Ͳ—Ͳú Ì Õ"‰IG¼°dΦtF¸©×* á ðØ•β¥Î²Õ"‰IG¼°d3Ã&£bq¦,Í!z~…Ͳïβ¢g¡gÕ"‰IG¼°dvF�ó{{Kq˜,àг~…Ͳïβ¢g¡gÕ"‰IG¼°dÜûݺ8 å” ”ÓÕðØÕ"‰IG¼°d³ïÙ«@�ÇK-ðØúûèÕ"‰IG¼°d¨[W­Gñ-qJ,¤=?…Ͳïβ¢g¡gÕ"‰IG¼°dÉ Ÿ9nê̪ñ²© ù Ž"`n•β¥Î²ŸœÕ"‰IG¼°dvÖÐÞªCq·,œ¹·…Ͳïβ¢g¡gÕ"‰IG¼°dmþêÅ‚( †ˆ ðØúûèÕ"‰IG¼°dt¼zåw1a_“ðØúûèÕ"‰IG¼°dö¶þJ"ˆÎ ŒÉ ðØúûèÕ"‰IG¼°dȱù;Ð`êÏ~㯗´~…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dúÍAEE—qè,à‘ ¾€…Ͳïβ¢g¡gÕ"‰IG¼°d>{áðÒŽî ¶Ô ðØúûèÕ"‰IG¼°dÞÔ—ŠeÕÉ¼Ž (§�´œÕ"‰IG¼°d—S§'e]Êɼ–† Õ�´œÕ"‰IG¼°dlr¨ ÎCµ±œ³,Qu…Ͳò¾Õ"‰IG¼°duzá˜ÞeeÅ,ŠG#š‚…Ͳ—Ͳð‰âÕ"‰IG¼°d;?P<OÉü çs‚´œÕ"‰IG¼°d53i$ml¬eì,–Hƒ…Ͳ—Ͳð‰âÕ"‰IG¼°dãKôÔÁ{_©Ú²²ùÏ–\`q|ÂֲϢ[ˆZÕ"‰IG¼°dÃ샣ŸŸïe5,ׯ|ƒ…Ͳ—Ͳð‰âÕ"‰IG¼°dqK¯×ôýçÉ„ÞKSƒ´œÕ"‰IG¼°dÁ~WC5ä¶¥L¯q€…Ͳ¢Ë¾Õ"‰IG¼°dt>ì¨ÀE%»¹OðØúûèÕ"‰IG¼°dØV»‘DS¼š~Ùº¿›�…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dÝi:Áf˜eÇ,È„Š„…Ͳ—Ͳð‰âÕ"‰IG¼°d{—=d·„ssÉü�Û.c„´œÕ"‰IG¼°d2Z‡ïn qÐ,€1 „…Ͳïβ¢g¡gÕ"‰IG¼°d·Op+¾y*q},¿mF„…Ͳïβ¢g¡gÕ"‰IG¼°dÅÑ¢¾Ïiµ¤¨¤ü�Ý,Úlº �•‹Õ"‰IG¼°d�ƒËùv×Y'¼ ðØÕ"‰IG¼°d1Û¡Õ±&™©Ú²ðø° Ïì™%ò~ÂֲϢ[ˆZÕ"‰IG¼°d¬tüŒi:IX  %ðØúûèÕ"‰IG¼°dĚ؈>7ŠÉ¼Îw È…´œÕ"‰IG¼°d%¡tÝO.E¾eû,®ž Z†…Ͳ—Ͳð‰âÕ"‰IG¼°dÂO2Îö~Î+I‘ðØúûèÕ"‰IG¼°d\1¡t�ß­¯ lï©ðØÕ"‰IG¼°dô)µýoqŠ,a)†…Ͳïβ¢g¡gÕ"‰IG¼°dÝÆm—$¤TßÉü�l&,¾†´œÕ"‰IG¼°dkï% ‹{ ÁæðØúûèÕ"‰IG¼°d¿Âqdjkeª,ñ! ‡…Ͳ—Ͳð‰âÕ"‰IG¼°d í׊Ã~ ¨± ðØúûèÕ"‰IG¼°d¼U•…ßÌšu¶¢L½Ë,x„…Ͳ¢Ë¾Õ"‰IG¼°dD�ïFùI-|–¬¢óí{ù »Þ²Õ"‰IG¼°d¬ fS»óí0)ðØúûèÕ"‰IG¼°dNOM‚ûeÌ,óE†ˆ…Ͳ—Ͳð‰âÕ"‰IG¼°d€p!çD¬ü  ”¢ ðØúûèÕ"‰IG¼°d€~»ý„_Fí+sðØúûèÕ"‰IG¼°d¹]vƒÂB_í~⥃q†…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dn¬RÞg|†eo,õ^‰…Ͳ—Ͳð‰âÕ"‰IG¼°d¿Ò$-¼Qù›Ûü©Ä;Ý„ÂÖ²�‹Õ"‰IG¼°dâ2¢†‡ íÞ²äp§÷ƒ ¶€ÂÖ²¤[ˆZÕ"‰IG¼°dÚaÊf âŽúÉ„«Ä¤‰´œÕ"‰IG¼°dlxìÕC-Õqú,ʳQ‰…Ͳïβ¢g¡gÕ"‰IG¼°dÒSýóŸØˆ ɼQ& Š´œÕ"‰IG¼°dJóPŽ4‡“e‹,¸Ú ›Š…Ͳ—Ͳð‰âÕ"‰IG¼°díD¦ûÔKåù~œ’,&ˆ…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°då+W†/iúɼî"°Š´œÕ"‰IG¼°dTF²˜âÙqÄ,îE#\Š…Ͳïβ¢g¡gÕ"‰IG¼°dÿR"´–@©ëqê,¡ÿ•Š…Ͳïβ¢g¡gÕ"‰IG¼°d ï·}"]¾£ çÅðØúûèÕ"‰IG¼°dƒ¤|;–Z  ˆ˜ðØúûèÕ"‰IG¼°dÍ+áÒ¯´ î©Ú²Øø× Ô¢5D…ÂֲϢ[ˆZÕ"‰IG¼°d‹n‰Ñ+É„“¹ì‹´œÕ"‰IG¼°d/{<ÛÉ¿¿q¿,­þ™‹…Ͳïβ¢g¡gÕ"‰IG¼°dî¾,ÎY¼* Ô·ŽðØÕ"‰IG¼°dxXŒ4™™�¬É„²ƒyŒ´œÕ"‰IG¼°dþ–56äcg—¶|L©?–‰…Ͳ¢Ë¾Õ"‰IG¼°d{+S¯ߨªñ²Ù ù§ Ž"`òz•β¥Î²ŸœÕ"‰IG¼°d¿7ƒ¬…#ƒ ·­ ðØúûèÕ"‰IG¼°d½¨ÅÏÒYô8eø,‰ö °�…Ͳ—Ͳð‰âÕ"‰IG¼°d ¯¹µ•Ê+ÀÉ„éX ‡�´œÕ"‰IG¼°d{nÖ�EÿT�ŽðØúûèÕ"‰IG¼°d 7¶AäýáŸÉ„ÐÛä�´œÕ"‰IG¼°dŒà ›•‰ßêðØúûèÕ"‰IG¼°dûŒÐÃ1—ºvqˆ,ž (¿�…Ͳïβ¢g¡gÕ"‰IG¼°dMýϯCgÞg “àðØúûèÕ"‰IG¼°d0¥øC®œjü Ç× ðØúûèÕ"‰IG¼°d¢CóT¿[r¸<óã(‹…ͲøôÕ"‰IG¼°dˆºSZë‰ã™o¢$¤Ë,†…Ͳ—Ͳú Ì Õ"‰IG¼°d|åþÎÖ½>É„íRE�´œÕ"‰IG¼°düªú_Ú ¤à¼n ðØúûèÕ"‰IG¼°d_?0Ôs&Ãreæ (Õ ù¶,�…Ͳ—Ͳð‰âÕ"‰IG¼°dfXWØú+ÆÞÉ„˜ÿà�´œÕ"‰IG¼°d!ì3ÕXLÄÊe‡,¼@q�…Ͳ—Ͳð‰âÕ"‰IG¼°d‡.²ÝÎöQ·ÉT�-ÂZ…Ͳ÷¾Õ"‰IG¼°d?ÂËPÛA[ðØúûèÕ"‰IG¼°dgLÅš-ô ±· ðØúûèÕ"‰IG¼°dTòš{0.sqk,“¾ —™…Ͳïβ¢g¡gÕ"‰IG¼°d1 Š�õœ�%oá$“ãa‘…Ͳ—Ͳú Ì Õ"‰IG¼°d7ÞÕ}˜†\–4ùí¸Žù »Þ²Õ"‰IG¼°d­‚`è� Drö<á[ —…ͲøôÕ"‰IG¼°dëçðÍKãç¡É¼½†òš´œÕ"‰IG¼°dB“ÉW•6=ðØúûèÕ"‰IG¼°d…Bv~]âsÉì´"-N›´œÕ"‰IG¼°dù× xëD.ÖðØúûèÕ"‰IG¼°dà%?t™û™e½,û#œ…Ͳ—Ͳð‰âÕ"‰IG¼°dl`]é†FjɼĻ更œÕ"‰IG¼°dk.¼ö:$:ɤ¸Á ð¶,œ´œÕ"‰IG¼°d²½�X/™Ý¨¤ü…²5„º �•‹Õ"‰IG¼°d!vÅŨ|r¶æL¬Úm™…Ͳ¢Ë¾Õ"‰IG¼°dN–é9ÖiÉ„³®´œ´œÕ"‰IG¼°dwù o¾KCe®,½"-E�…Ͳ—Ͳð‰âÕ"‰IG¼°d&¿æÈH6~+�óК…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d„ÁÚš“bAâ‹ðØúûèÕ"‰IG¼°d¦²{-  ¶�L€„{š…Ͳ¢Ë¾Õ"‰IG¼°d/xºÉÍË; àšðØúûèÕ"‰IG¼°dåGW%÷²âž ¨±ðØúûèÕ"‰IG¼°dfJUVU£ZòeV,·™…ž…Ͳ—Ͳð‰âÕ"‰IG¼°d•Ư3Ô¬Šî‘Ö$Ö‰Š~…Ͳ�i€iÕ"‰IG¼°do/R|¯ e»,–Ûöž…Ͳ—Ͳð‰âÕ"‰IG¼°d@×YY|_ùïqz,—>Kž…Ͳïβ¢g¡gÕ"‰IG¼°d÷­‰‡fneè,Ž=hŸ…Ͳ—Ͳð‰âÕ"‰IG¼°dâ_ÔÉYê6É„¨ ?Ÿ´œÕ"‰IG¼°d÷šAÄûÕÀqñ,Á ëž…Ͳïβ¢g¡gÕ"‰IG¼°d–à<r€Ööe„,Z& …Ͳ—Ͳð‰âÕ"‰IG¼°d? ­`‡ÍZRçðØúûèÕ"‰IG¼°ddÉRIÔž\’Éü±s  ´œÕ"‰IG¼°d—ÇñœH²Je ,Û"Ÿ …Ͳ—Ͳð‰âÕ"‰IG¼°d*ì6æò±·q³,ƒ‚öŸ…Ͳïβ¢g¡gÕ"‰IG¼°d¬Áž�rÉü”¯ ± ´œÕ"‰IG¼°d?dsÒÒ jƒeŸ,Šl,B¡…Ͳ—Ͳð‰âÕ"‰IG¼°dµàµ«11ËK ¤�¯ðØÕ"‰IG¼°dzæYøÅ¤É¼µ ?¡´œÕ"‰IG¼°dg9§UÓ>¯É¥¸Õ Ⱦ,p¡´œÕ"‰IG¼°d ¶žsÏ�e ,»ƒ¢…Ͳ—Ͳð‰âÕ"‰IG¼°dÆ©»ã4âÔi ÃŒðØúûèÕ"‰IG¼°d$ù,£ßعÔq€,ÑÖˆ¡…Ͳïβ¢g¡gÕ"‰IG¼°dÁ£ANaC"E ÃÏ ðØúûèÕ"‰IG¼°dÒnËWÆ6BüÔî„ ðØÕ"‰IG¼°dàÓ™� Ðqß,ª¨¢…Ͳïβ¢g¡gÕ"‰IG¼°d"ฯ@µ)øri<«¯!Ÿ…ͲøôÕ"‰IG¼°déÚ%ÄÏ[§M †ï ðØúûèÕ"‰IG¼°d¨wFSÚÐ *qÙ,í€ µ¢…Ͳïβ¢g¡gÕ"‰IG¼°d˜¿" UĆ'ðØúûèÕ"‰IG¼°dÊþÈMüÖ Éq„,Í»£…Ͳïβ¢g¡gÕ"‰IG¼°dW�ÞlqÿîÄðØúûèÕ"‰IG¼°dÓN<š¢aD™~õʹ¡…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°då{3š|òªÍ ƒ‰%ðØúûèÕ"‰IG¼°dÀ˜+ï=pÍ*Ú´À¨}l…ͲÂÖ²ƒí½³±œÕ"‰IG¼°d’D†tķɼ¬Ÿ µ¤´œÕ"‰IG¼°dy·–wñí qº,¬š b¤…Ͳïβ¢g¡gÕ"‰IG¼°dV­Ì^É¿j Û¾ðØúûèÕ"‰IG¼°d%xýØ¢´NÝɼíõL¥´œÕ"‰IG¼°dMï8(_~€–µ¤øÁ ̓~,²f¤œÕ"‰IG¼°d4 Ç„"CL¶åLŽÁ�¢…Ͳ¢Ë¾Õ"‰IG¼°d|P6L£k»Á óÂ,ðØúûèÕ"‰IG¼°dþØÃÔÚpbe),–Óy¦…Ͳ—Ͳð‰âÕ"‰IG¼°d4¾0Æþ€ o¬$±f`�…Ͳ—Ͳú Ì Õ"‰IG¼°d€Û ÁËßõ¦e�,èƒí¦…Ͳ—Ͳð‰âÕ"‰IG¼°d²½ùy߃éø ΑðØúûèÕ"‰IG¼°d6ÿ¨ƒNäá œšðØúûèÕ"‰IG¼°dˆS(SÒeO,㼈§…Ͳ—Ͳð‰âÕ"‰IG¼°d#½RÀÕ‰eÖ,¾‰ħ…Ͳ—Ͳð‰âÕ"‰IG¼°dLË“?h¨“qº,¬Ù§…Ͳïβ¢g¡gÕ"‰IG¼°doÂ^A¬w assert_neÁüÀ…{$9ÂֲދÕ"‰IG¼°dw¤5èTb}L;ðØúûèÕ"‰IG¼°d¹¶½B±.ß±ðØðØÜ Õ"‰IG¼°d«XÁò™W¢„oç$Ô;zŸ…Ͳ—Ͳú Ì Õ"‰IG¼°dMä·ïÏîqî,–¹ "¨…Ͳïβ¢g¡gÕ"‰IG¼°d§M²¦ÅßgçðØúûèÕ"‰IG¼°dçM"G ~e–,   o©…Ͳ—Ͳð‰âÕ"‰IG¼°dAuv·§ü€É¼ù– G©´œÕ"‰IG¼°d,O®¤f{v¤ ‰·ðØúûèÕ"‰IG¼°dÞS–мêŠÊÉ„¯í¥©´œÕ"‰IG¼°d÷Fk.Aå�Ie¯,½Ð7ª…Ͳ—Ͳð‰âÕ"‰IG¼°dõãB¥dà)‘ž$°2,;Š…Ͳ�i€iÕ"‰IG¼°d És£<�mÜ ´Á­ðØÕ"‰IG¼°d ±Q€þ`ir<ÿ¶¦…ͲøôÕ"‰IG¼°d°wÁêçm4tÉ¥øÕ û°&,Ÿª´œÕ"‰IG¼°dROì\øŽõ` ܺ‹ðØÕ"‰IG¼°dpšµßïo:$úË¢…Ͳ—Ͳú Ì Õ"‰IG¼°dK*÷×µ®\›·¦T�¤u…Ͳ÷¾Õ"‰IG¼°dÕ³“½¦ ÀV ðØúûèÕ"‰IG¼°d ò¹le:éeh,ä™ñ«…Ͳ—Ͳð‰âÕ"‰IG¼°d§6OSFeÞ,°ü-¬…Ͳ—Ͳð‰âÕ"‰IG¼°dú_£p7ÁÅeÓ,õÞi¬…Ͳ—Ͳð‰âÕ"‰IG¼°d[®•`Ó”ÙÅ �å ðØúûèÕ"‰IG¼°diñœGÝ| èÉ„üØq¬´œÕ"‰IG¼°duRA›B“€µˆñ™è]e<•β¥Î²žœÕ"‰IG¼°dvò8&·£¬…ÖðØúûèÕ"‰IG¼°d�Ô:œDjªñ²ä ù¼ Ž"`!›•β¥Î²ŸœÕ"‰IG¼°dñŒWÏØy_ûqþ,Ás ɬ…Ͳïβ¢g¡gÕ"‰IG¼°d7ŒÎý#ÉÉ„×Ë ƒ­´œÕ"‰IG¼°dÌê-O®Ó�€ ðØúûèÕ"‰IG¼°dEÑ;a‚Iõ—É„›=ß­´œÕ"‰IG¼°df'Zr˜²qž,Ç' ‹­…Ͳïβ¢g¡gÕ"‰IG¼°dÊÑqøÏÊgɼ½!D®´œÕ"‰IG¼°d'à`¶wŒV8 $¹€ðØÕ"‰IG¼°dUñ29‚W¢ÔÉüô>S˜®´œÕ"‰IG¼°d›‘%W\<‘£$€Ñ,óŽ…Ͳ�i€iÕ"‰IG¼°dè¢üô"D¦´÷ðØúûèÕ"‰IG¼°dg.&¾~äɼ¾@#)¯´œÕ"‰IG¼°d\«w©ähÉ„åVV¯´œÕ"‰IG¼°d–Ýë){0>‚eœ,¶‚诅Ͳ—Ͳð‰âÕ"‰IG¼°dÄD"ŠÓÒY ìéŒðØÕ"‰IG¼°dy¢Ø£ziά Ù™ðØúûèÕ"‰IG¼°dÖ¹fï‰éÖÃÉ„‘�°´œÕ"‰IG¼°d<\ǯWø~Ô�ðø­…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dLGUÜçA9†Ä8ðØúûèÕ"‰IG¼°d©XÝ÷²8 et,ƒ!±…Ͳ—Ͳð‰âÕ"‰IG¼°dì" Ñ�z�v ìg.ðØúûèÕ"‰IG¼°dbÌèÞÞ Ž¼½³åÉ� ‡T])y…ͲÂÖ²ƒí½³±œÕ"‰IG¼°d§EÞ‚O™Ï?4ÞðØúûèÕ"‰IG¼°døãâZF¢íɼQ*ޱ´œÕ"‰IG¼°dÀ‰‰cÚ\[ ÚªðØúûèÕ"‰IG¼°d¨3ÿ&;»ÀÉ„³à ì±´œÕ"‰IG¼°d%pÿG©åã�q“,›” ™±…Ͳïβ¢g¡gÕ"‰IG¼°d¾€.“ˆŽžb œè¬ðØÕ"‰IG¼°d0¿>Àlûëož$–2,ˆ©…Ͳ—Ͳú Ì Õ"‰IG¼°d� çTfY»eÊ,›>³…Ͳ—Ͳð‰âÕ"‰IG¼°d Üñ÷ÔF¢eÓ (Á Ѿ,R³…Ͳ—Ͳð‰âÕ"‰IG¼°d¼Ç³’"c�~qí,æu¨²…Ͳïβ¢g¡gÕ"‰IG¼°d¨ÒƒÍl`£‰e¦,ñų…Ͳ—Ͳð‰âÕ"‰IG¼°dÞcd àÑt øöðØúûèÕ"‰IG¼°d½ÉAç€ÈnqÈ,ìÅL³…Ͳïβ¢g¡gÕ"‰IG¼°džktx™ÌGÉ„†û´´œÕ"‰IG¼°d:"‚ÜËPOqÒ,õI ²³…Ͳïβ¢g¡gÕ"‰IG¼°dÝÀNMIÅÓ2ÒðØúûèÕ"‰IG¼°dnÞs«B ©Ú²òøµ ½‰”%1®ÂֲϢ[ˆZÕ"‰IG¼°d§Þ¦íŠèëðØúûèÕ"‰IG¼°dŠ'D¸­lqý,£ †´…Ͳïβ¢g¡gÕ"‰IG¼°d:¥ ó—Owe›,¾ £µ…Ͳ—Ͳð‰âÕ"‰IG¼°dãf½•ië™  öÇðØúûèÕ"‰IG¼°dÚ’Ü÷C‚ÖeŒ,á(+¶…Ͳ—Ͳð‰âÕ"‰IG¼°d?gòRT€JûÉü”ËE,çµ´œÕ"‰IG¼°d�1”Pok‰b $Œ÷ðØÕ"‰IG¼°dh¿+™Ìl –«ðØúûèÕ"‰IG¼°díEÆRÇÂqÁ,®%!éµ…Ͳïβ¢g¡gÕ"‰IG¼°d·G¡Õ<Ô˜ e£,æÐ,·…Ͳ—Ͳð‰âÕ"‰IG¼°d40Læ˜ þÉüúï+à¶´œÕ"‰IG¼°dšrÙ´çÄte¦,Æ!q·…Ͳ—Ͳð‰âÕ"‰IG¼°dÔ�^‹²Í– ½ÍðØúûèÕ"‰IG¼°dJ;Ö'ø$De˜,ÙÐÝ·…Ͳ—Ͳð‰âÕ"‰IG¼°do ȶÏ)Œ^ æ–ðØúûèÕ"‰IG¼°d!õÔ£Iu›É¼¥<ä·´œÕ"‰IG¼°düMRÔJ˜™Û©Ú²ÓøÀ °“稱ÂֲϢ[ˆZÕ"‰IG¼°dšp?§=qI,¬Í·…Ͳïβ¢g¡gÕ"‰IG¼°d6ל~0RøsB4ðØúûèÕ"‰IG¼°d¾‡Ïq¶,œ³5¸…Ͳïβ¢g¡gÕ"‰IG¼°dÅ-»a¿$�n Í¡ðØúûèÕ"‰IG¼°dP6ðâ4/ç¯ðØúûèÕ"‰IG¼°dã›XàFtù€qã,¨—͸…Ͳïβ¢g¡gÕ"‰IG¼°dµä6™kmqp,ɹ…Ͳïβ¢g¡gÕ"‰IG¼°d–ð©èkCÅ„ l¹#ðØÕ"‰IG¼°dÖ%åX³’;•Éüúò%ä¹´œÕ"‰IG¼°d¹W䯰¹X+¦ÜðØúûèÕ"‰IG¼°d˜º<8†œ˜ÝɼQ(?º´œÕ"‰IG¼°d_”ÏŽÛ°åɼÂP lº´œÕ"‰IG¼°dàÇÆ6¯fØ)·œT§,……Ͳ÷¾Õ"‰IG¼°dLç*ä‘ÕX\¶ÄL‚F#¾·…Ͳ¢Ë¾Õ"‰IG¼°d ÍàûC6hŸqÑ (Á €·,†º…Ͳïβ¢g¡gÕ"‰IG¼°dʘ” �+…É„•0?»´œÕ"‰IG¼°dj3LZ³t³¨rë<û»·…ͲøôÕ"‰IG¼°d_·tDª¸§É„¥%!Ÿ»´œÕ"‰IG¼°d2$Ø{-J;É„ßHÌ»´œÕ"‰IG¼°d_DXÙã$›‹~¥«­¹…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dˆêϵ-Á2]qÙ,³¿·»…Ͳïβ¢g¡gÕ"‰IG¼°d}`{ÚÿW´Éü–Ù5r¼´œÕ"‰IG¼°d´újÛ„b^qÏ,ö" ¼…Ͳïβ¢g¡gÕ"‰IG¼°d’_Ãè†7÷œ Ü«’ðØÕ"‰IG¼°dÚæˆMÉe},¸m`½…Ͳ—Ͳð‰âÕ"‰IG¼°dvcž¤æeë�ÀðØúûèÕ"‰IG¼°ds±BKb'qï,Òæ%æ¼…Ͳïβ¢g¡gÕ"‰IG¼°d½uØøUÚ𖬚Êαù »Þ²Õ"‰IG¼°dþ~e”X¤Íqú,‰— T½…Ͳïβ¢g¡gÕ"‰IG¼°d‹Ä"Á—H‰¤’º ðØÕ"‰IG¼°d’\÷õ} M §ôðØúûèÕ"‰IG¼°dQ¤ž „Äz ®¨ðØúûèÕ"‰IG¼°d³8=¶jê@mYãðØúûèÕ"‰IG¼°dB,0¼[ZeŠ,Z)$¿…Ͳ—Ͳð‰âÕ"‰IG¼°dö§ZWŸ> Éü�2S,ü¾´œÕ"‰IG¼°dwïo ä·ì•ÑðØúûèÕ"‰IG¼°d˜(“­Ý+þLÉìù  Y¿´œÕ"‰IG¼°dpþ×Ï÷…šÉ¼ú †¿´œÕ"‰IG¼°dÄíÃ"TX ó‘¢$·Ë,ៅͲ�i€iÕ"‰IG¼°dÀrqAÆ4=qÉ´öž é¿´œÕ"‰IG¼°dæ/­ÀÞЦmɼÖuÀ´œÕ"‰IG¼°d¹F‘“ Ø�ðØúûèÕ"‰IG¼°d\…C¤ÜŽjíÞ²›øùÄ”.À·ÂÖ²¤[ˆZÕ"‰IG¼°dõPƒ•.i¡_qÊ,�@,À…Ͳïβ¢g¡gÕ"‰IG¼°dŒÂZïIˆ;ðØúûèÕ"‰IG¼°dfBΚ � _íÞ²½øÔ�Ÿ-a¸ÂÖ²¤[ˆZÕ"‰IG¼°dÅÚn'¡€qÿ ¾‘ðØúûèÕ"‰IG¼°dûì“ KwŸqâ,žƒþÀ…Ͳïβ¢g¡gÕ"‰IG¼°d¼K¸ü¥#žãÛü±Ã1_½ÂÖ²�‹Õ"‰IG¼°døÕC {Ê º ðØÕ"‰IG¼°d6ˆ'QôU íÞ²ãp¤§ÿ ]¹ÂÖ²¤[ˆZÕ"‰IG¼°dÅóª,� þ†eú,ó¯Â…Ͳ—Ͳð‰âÕ"‰IG¼°dìmc=Íè[«�µüÌÃ$ÏSÂֲދÕ"‰IG¼°d}oú÷,«iQq‰,�¡ =Â…Ͳïβ¢g¡gÕ"‰IG¼°dÖÚœwv#ÚÉ„�¹ ÷´œÕ"‰IG¼°dþ^A™ÿ‰Ýžoœ$Œ,4º…Ͳ—Ͳú Ì Õ"‰IG¼°däZ‹�’ÕöeÄ,çE#ÀÃ…Ͳ—Ͳð‰âÕ"‰IG¼°dhv ¤pjɼÒ"—ôœÕ"‰IG¼°dÛr,°Û‘¶Ï HÁ –±,¸À…Ͳ¢Ë¾Õ"‰IG¼°dýJtlßtÜo0$ï�»…Ͳ—Ͳú Ì Õ"‰IG¼°d›Ÿ*[êhq³,À0µÃ…Ͳïβ¢g¡gÕ"‰IG¼°dYËMüY¾T.°ðØúûèÕ"‰IG¼°dGzF{æÒ#:DðØúûèÕ"‰IG¼°dx…õó&�X@íÞ²¦ø¡îÀ£¼ÂÖ²¤[ˆZÕ"‰IG¼°d܃»Ñ^ ï¶×LöšùÁ…Ͳ¢Ë¾Õ"‰IG¼°dKùY@@¨cæq¾,�û¿Ä…Ͳïβ¢g¡gÕ"‰IG¼°dSzÑ~÷äÉ„“³yÅ´œÕ"‰IG¼°d-ýµ5ëÛ  ±ŠðØúûèÕ"‰IG¼°d£ß@»•<¬~á©ã$È…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dÎ�P»ù&"qÛ,ÍŽ.Ê…Ͳïβ¢g¡gÕ"‰IG¼°dö&‘­�Kœ ¸ðØÕ"‰IG¼°d—:l·£}�«qß,àË ŒÊ…Ͳïβ¢g¡gÕ"‰IG¼°dÁS#Óc/É„¸™FË´œÕ"‰IG¼°dÿ)»ÇcQÈN ͤ%ðØúûèÕ"‰IG¼°d�ã°ýêŒÄqˆ,ä "Ë…Ͳïβ¢g¡gÕ"‰IG¼°d 7!¨SÞ{ƒq¾,É%#ZË…Ͳïβ¢g¡gÕ"‰IG¼°dÒ\+�Œ¾˜ºÉü˜—&Ì´œÕ"‰IG¼°dýøt¡$ˆòÕ óÂ,ðØúûèÕ"‰IG¼°dáŠë]=Àœ~çØð)Ê…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dg––÷›ï–ɼޡ´Ì´œÕ"‰IG¼°d@ÅÞQóþ(q¯,É`Ì…Ͳïβ¢g¡gÕ"‰IG¼°dé¨u£úwŒ™É¼ÁÖÍ´œÕ"‰IG¼°dæ*ºQ›¢š3ðØúûèÕ"‰IG¼°d Ì÷.…i´9ðØúûèÕ"‰IG¼°dÆìTàjyo×$ßš¶Ä…Ͳ—Ͳú Ì Õ"‰IG¼°dLj.'yaD½~»¬Û“Ë…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d먦yÝÆo|$‰?,Å…Ͳ—Ͳú Ì Õ"‰IG¼°d+–è3Û�Û@O®ðØúûèÕ"‰IG¼°d}ÌølÞÍz~è¢=7Ì…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d[kHg‘ýÉ„í" ÁδœÕ"‰IG¼°d~4ë0™uÞqò,ÒP mÎ…Ͳïβ¢g¡gÕ"‰IG¼°dWÆ$�àŠñðØúûèÕ"‰IG¼°dêgïÄ�?�É´êËWÏ´œÕ"‰IG¼°dKð0ÉE•-le†,Z'çÏ…Ͳ—Ͳð‰âÕ"‰IG¼°d Î=WñߪýëâðØúûèÕ"‰IG¼°dÑÝxQζ¤ $–ÐðØÕ"‰IG¼°ds<âÈ•q¡,þ"’Ï…Ͳïβ¢g¡gÕ"‰IG¼°d,3¨9q¶,¼®ËÏ…Ͳïβ¢g¡gÕ"‰IG¼°dP18Ûg $çüø®[ðØÕ"‰IG¼°dVieŸ~ÏW¶ŸLœl,œÍ…Ͳ¢Ë¾Õ"‰IG¼°dj¦¤óÄ&�É„¾' âдœÕ"‰IG¼°d؉G4ðæ qä (Õ ‹±,‘Ð…Ͳïβ¢g¡gÕ"‰IG¼°dŠc_ƒn ô€ªðØÕ"‰IG¼°dšã%ö ëÉüóÀ&rÑ´œÕ"‰IG¼°d_yx®iNJeƒ,�”Ò…Ͳ—Ͳð‰âÕ"‰IG¼°d÷ŒþÍHìq?,ÙÛZÑ…Ͳïβ¢g¡gÕ"‰IG¼°dø|IŸõ†¸ÁüðØúûèÕ"‰IG¼°dKyÙ£ýÅÖɼ™ÎCÒ´œÕ"‰IG¼°dp–ñåàÝ+oª$«F€É…Ͳ—Ͳú Ì Õ"‰IG¼°dú:z PÈUek,Œ¾ pÓ…Ͳ—Ͳð‰âÕ"‰IG¼°dûziš<ü?ã–4ÖívÇù »Þ²Õ"‰IG¼°d¹n2¯·P ÍôðØúûèÕ"‰IG¼°dÃu{£+²_q…,êë,Ó…Ͳïβ¢g¡gÕ"‰IG¼°d­A>Ón �@ è² ðØúûèÕ"‰IG¼°d)›v¤ ºoö$Û[%Ë…Ͳ—Ͳú Ì Õ"‰IG¼°d,ýÕbt1 Ę%ðØúûèÕ"‰IG¼°d±‰%­  –4í-«Èù »Þ²Õ"‰IG¼°dóPv9^µ"R $çáðØÕ"‰IG¼°dš$›Gò¦Îu ›ÁðØúûèÕ"‰IG¼°dkàÓ®@‹æÙÉ„À±Õ´œÕ"‰IG¼°dc¦_«qÞtÉü”¨,7Õ´œÕ"‰IG¼°daJ—:P%É„’>dÕ´œÕ"‰IG¼°dá¿ì!§¾&œ~æ¨ÚFÓ…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°d_i¸‡t¿Ø±É„¶¡ÑÕ´œÕ"‰IG¼°d´,Ð&?ô‚o+$ŠóÍ…Ͳ—Ͳú Ì Õ"‰IG¼°döÁxÂbV„?¶¬LÂf'Ó…Ͳ¢Ë¾Õ"‰IG¼°d$̺‘B˜ä~�üƒ"Ô…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dësª6 •bíÞ²¢ø“ ­£úÍÂÖ²¤[ˆZÕ"‰IG¼°dºC£ ÎÊ~H.ðØúûèÕ"‰IG¼°d\ç�¦(TÓ~ÖÒ‰ËÔ…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dgswµJ‡1ôö1ðØúûèÕ"‰IG¼°dTŸœ\ü‰"¶ºLÀÙvÔ…Ͳ¢Ë¾Õ"‰IG¼°dt<&kŒ�eë,ž0 Ø…Ͳ—Ͳð‰âÕ"‰IG¼°dJ†®³S˜_É„Á›ø×´œÕ"‰IG¼°dj—ÖËÕ¶ez,�>ˆØ…Ͳ—Ͳð‰âÕ"‰IG¼°dî©l¹Ý<~¶çLå;PÕ…Ͳ¢Ë¾Õ"‰IG¼°dù5›FL½‚Áeñ,º úØ…Ͳ—Ͳð‰âÕ"‰IG¼°dZj)ÕCÒÿÉ„½ ÑØ´œÕ"‰IG¼°d#‹‰¸jÅkÿ ËOðØúûèÕ"‰IG¼°dná,iõóO lª7ðØÕ"‰IG¼°d8ퟯÁûÈ †Ö ðØúûèÕ"‰IG¼°dˆ+i)FCýª´‚áã åc]ÍjÂֲދÕ"‰IG¼°dδ;Fo/6q—,–¡ ;Ù…Ͳïβ¢g¡gÕ"‰IG¼°d ~3¥bƒ'ùÉü“& õÙ´œÕ"‰IG¼°dböÄMŸ£� $«ÎðØÕ"‰IG¼°dð€GS5dàɼۙIÚ´œÕ"‰IG¼°dÕxjmlZq°,‹ÑöÙ…Ͳïβ¢g¡gÕ"‰IG¼°dO q¸rÈɱžÍ2,þÍ…Ͳò¾Õ"‰IG¼°dq¸’WN²(�ü¸­­ðØÕ"‰IG¼°d¾„B¥O?u-É¼è  Û´œÕ"‰IG¼°dÑ\9ŒëØ£°q,Ê›·Ú…Ͳïβ¢g¡gÕ"‰IG¼°dõñÂAp�#`e€,ÊÖÕÛ…Ͳ—Ͳð‰âÕ"‰IG¼°dªùe™~ÌÛæQðØúûèÕ"‰IG¼°dÝ?žNt×¼.ÕêðØúûèÕ"‰IG¼°dD:lÏñFqi,¤¯‰Û…Ͳïβ¢g¡gÕ"‰IG¼°dC>�œDçoß$¤¨SÓ…Ͳ—Ͳú Ì Õ"‰IG¼°drdvÆò´®qÔ,ñàûÛ…Ͳïβ¢g¡gÕ"‰IG¼°dwWA”–Ó¬8VðØúûèÕ"‰IG¼°dãÅ^öÝ˵{qØ,Þw bÜ…Ͳïβ¢g¡gÕ"‰IG¼°dÀqó¾ª,Éqƒ,ɱ›Ü…Ͳïβ¢g¡gÕ"‰IG¼°d#ì’§Ÿ¤,zqõ,ÃÓÜ…Ͳïβ¢g¡gÕ"‰IG¼°dhÈþK¢ Ô° ðØúûèÕ"‰IG¼°d†n‡/Çî÷ëEðØúûèÕ"‰IG¼°d/k„%5J q¡,Ä8 jÝ…Ͳïβ¢g¡gÕ"‰IG¼°dÌy�ӕв¾ðØúûèÕ"‰IG¼°dh4à¦×†ÐÉ„­ž SÞ´œÕ"‰IG¼°dBõ­5Çþ+ ¹�ðØúûèÕ"‰IG¼°dÛ-*ÁYA"É„‰°Þ´œÕ"‰IG¼°däÀrcÚu‹í±£�Ñ,-Ò…Ͳò¾Õ"‰IG¼°dØ]°º òôÇ~åŠÁÇÜ…Ͳ¹Ò²¢ŒÏ¾Õ"‰IG¼°dd�×›E¶.Ië ðØúûèÕ"‰IG¼°dA54*Ê q(,´ÄÿÞ…Ͳïβ¢g¡gÕ"‰IG¼°dB@•dàg^e¬,ªfà…Ͳ—Ͳð‰âÕ"‰IG¼°dè/+Ât5¶œLÈ‚åÜ…Ͳ¢Ë¾Õ"‰IG¼°dþh ÊqFßXˆðØúûèÕ"‰IG¼°dbÅ~BŠÊ=0ðØúûèÕ"‰IG¼°d¯(m1z:Xõ¼½³MÉ ‡T]—¨…ͲÂÖ²ƒí½³±œÕ"‰IG¼°dïº;ŒÏµ°oº$¦Ùß×…Ͳ—Ͳú Ì Õ"‰IG¼°d›§¤U,±×É´›Fá´œÕ"‰IG¼°d°=ó=çöÿ‰�‡ÑÀ¦§ãíβ؋Óà ª ò¬ Ü áåLãÝ þ ï³ ß åü ¢™Û�Õ ¥½ å ô›ÿÌÖü¨ Ú Ú ¾ ž‡æ… æM£á⃠¸ â § ‰ €âìÓäù æ•Ù‚ÚþûʽÁ ¤ðÒ´debug_assert_neÁü¬¥'å÷b]“‹Õ"‰IG¼°dl`qÀ�9´ö ü‡¥˜%•Ú]ƒŒ‹Õ"‰IG¼°d2?Y, õ®Óüƒ¶0ÅšÂ]ƒ™‹Õ"‰IG¼°d@ ,¯ vÚüÔ¢5$«…ͲÂÖ²ƒí½³±œÕ"‰IG¼°dB¥>«9È $crate::panicÁÐù‡–\`½ƒŒ‹Õ"‰IG¼°dSJø®šŠÕ+ debug_assertÁüç4&ÍœS]ƒ‘‹Õ"‰IG¼°dÏo¸G͹²”¶‚ ùâ–\`4ƒŒ‹Õ"‰IG¼°dÆI}=0ŽJö ü½‰”%hƒŒ‹Õ"‰IG¼°dþãÅÉÏS©1ö û üÕ”5œƒŒ‹Õ"‰IG¼°d†sãb¿ Óüëœ.šƒ™‹Õ"‰IG¼°dyråSu\Cô”¶üè & ƒ‘‹Õ"‰IG¼°däB–®_§hpö üÏì™%7ƒŒ‹Õ"‰IG¼°dÙ–ÿ¯Z£1ߨ³þùÖ ©wGa[Ÿÿã²´¨Õ"‰IG¼°d¹Lw�ûw2ÓüÄ”.oƒ™‹Õ"‰IG¼°d�ˆ°VW¦:Ót–Ž ¡ƒ™‹Õ"‰IG¼°duÔrfUª!sÚü°“çí…ͲÂÖ²ƒí½³±œÕ"‰IG¼°dlh5ÛNJµŒ²”¶Øù•–\`QƒŒ‹Õ"‰IG¼°dŸÄqˆ‡úÓüë§-Oƒ™‹Õ"‰IG¼°dÀƲÛGõåÓtŒ‰ �ƒ™‹Õ"‰IG¼°dL*:JZÙÓüîÀ£µƒ™‹Õ"‰IG¼°dÈ™¡SiÁhºö üŠz”%ƒŒ‹Õ"‰IG¼°dŸÝ_±ÈX«X²”¶±ùΖ\`UƒŒ‹Õ"‰IG¼°d¹«2~›½·éÓt÷ƒ Rƒ™‹Õ"‰IG¼°dW!Ðöº«Ëžö üùZ™%ºƒŒ‹Õ"‰IG¼°d"`ACÏ™Zô”¶üÌŸ-õƒ‘‹Õ"‰IG¼°dBìú#YQñí²”¶Éùû–\`'ƒŒ‹Õ"‰IG¼°d!·|îCHc²”¶ûùÖ–\`_ƒŒ‹Õ"‰IG¼°dtŒLÜ5ù*»Ót§ÿ \ƒ™‹Õ"‰IG¼°d Z˜ ‰Ê'Óü�Ÿ-�ƒ™‹Õ"‰IG¼°d·ˆÃ'2".debug_assert_eqÁü­ž•å„[]’‹Õ"‰IG¼°d©H^(‘/Ót¶Ô ƒ™‹Õ"‰IG¼°d˜•SÅÝŽÓtÍú 4ƒ™‹Õ"‰IG¼°dp=.U‡¢ô”¶ü¹Ã#¤ƒ‘‹Õ"‰IG¼°d›ôhIÿÀ*x²”¶àù£–\`ÖƒŒ‹Õ"‰IG¼°dÙ´ÚÐô Ótþõ Óƒ™‹Õ"‰IG¼°d_­%Aì‹Óü ­£ƒ™‹Õ"‰IG¼°dyl>iƒøô”¶ü©§#wƒ‘‹Õ"‰IG¼°d„±»J,=�Ä’¶ü�¯'Ø“‹Õ"‰IG¼°d(9Åß÷¸gâþÖüߌÜÍàvaÿã²µ¨Õ"‰IG¼°dMÕ† ÞÇýÕˆ-¡¡,(š,¸•,‘¢,ò�,ƒ™,•,®—,¡¤,æŸ,A›,û–,Ü£,œ,½—,¯¤,T›,—,ù£,2Ÿ,K™,Д,T ,›,Û•,´¢,!œ,Ç—,¹¤, ,Y›,4�,¾˜,¼¥,¡,^ˆ-¥,Õˆ-c¤,›,–£,Óž,™,¦,t¡,ê›,Ø–,´£,ñž,Pš,–,��,(™,éœ,‚˜,u¥,¾ ,�›,6—,¤,nŸ,n¢,Ô�,| ,ù›,ÒŸ,2›,ç–,Í£,Ÿ,_š,#–,ð¢,Gž,Ø™,€•,@¢,¬�,’¡,ñˆ-�¥,Ý ,ˆ-á¤,E—,1¤,‡Ÿ,Òš,�–,—,ô£,(Ÿ,sš,”•,T¢,Á”,<Ÿ,‚š,K–,,£,yž, š,Å�,U™,Ú”,¾¡,*�,´˜,·¥,¡,vœ,'˜, ¥,Ì›,m—,â,,¦,y¡,:œ,Û—,Ȥ,•,ň-ן,2ˆ-Ò£,Ÿ, �,£ˆ-G¥,%‰-¸—,ª¤,Àˆ-£,ˆ-Š•,O¢,‚ˆ- ˜,‰-³›,^—,"ˆ-ž,Ùˆ-ú¡,u�,þ£,+‰-¡™,®ˆ-„�,™,ˆ-Ì—,߈-^›,—,Ñ›,|—,›,º–,›£,Ýž,Ò¢,$ž,µ™,S•,s˜,f¥,® ,0œ,_Ÿ, š,i–,K£,Tˆ-¤•,öˆ-i™,bˆ-C�,‰-.¡,xˆ-.¥,‰-�—,Ý–,¾£,=ž,Ι,v•,6¢,mˆ-6¦,z¥,È ,Iœ,å—,Ò¤,1 ,†›,;—,"¤,sŸ,¹š,x–,Z£,š,©•,s¢,Ù�,ý”,á¡,R�,Ò˜,Ð¥,=¡,™œ,E¦,œ¡,�,–˜,™¥,ç ,ù—,ç¤,@ ,Œ¢,÷�,�™,•,ð¡,a�,á˜,ߥ,L¡,¨œ,-–,£,[ž,ì™,J¤,%•,õ˜,ó¥,ùŸ,O›,—,}š,A–,'£,ož,š,¯¡, �,ª˜,¨¥,¡,qœ,˜,û¤,Y ,½›,‡£,à•,AŸ,‡š,P–,õ•,È¢,ž,°™,I•,¢,Ž�,™,!¦,o¡,Õœ,n˜,a¥, ,m›,'—,¤,UŸ,›š,d–,F£,ˆž,š,¹£,öž,Uš,–,8ž,Ä™,g•,1¢,ƒ¡,îœ,‡˜,p¥,à,M�,͘,Ë¥,8¡,”œ,@˜,�¤,ÍŸ,-›,ì–,È£, Ÿ,dš,–,õ¢,š›,J—,6¤,ŒŸ,ך,’–,d£,¦ž,#š,®•,‡¢,è�,J˜,=¥,‹ ,œ,¼”,¥¡,�,›˜,ž¥,ñ ,¤›,T—,E¤,›Ÿ,ìš,¡–,n£,°ž,2š,Ç•, ¢,k�,ð˜,î¥,ôŸ,J›, —,ï£,-Ÿ,xš,<–,"£,jž,û™,Æ”,ª¡,�,¥˜,£¥,û ,}£,ºž,<š,Ñ•,ª¢,Yˆ-¤,Ј-1£,š,™•,Y¢,À�,Z™,ß”,¹¡,/�,¹˜,²¥,"˜,¥,ûˆ-r—,Y¤,-ˆ-°–,‘£,Ξ,ð•,6‰-«™,D•,¢,Iˆ-¦,j¡,Ëœ,žˆ-© ,+œ,Ö—,ä, ,h›,"—, ¤,PŸ,–š,_–,A£,Ê�,d™,é”,Í¡,Æ¥,)¡,W‘- ‰-à›,†—,}ˆ-›,Ζ,¥£,çž,�ˆ-á¢,‰-l•,'¢,˜�,#™,äœ,}˜,k¥,¹ ,Dœ,à—,ͤ,, ,|›,1—,¤,iŸ,´š,s–,U£,’ž,{•,;¢,§�,2™,@¦,�¡,øœ,Ò ,Sœ,ï—,ܤ,; ,�›,@—,,¤,}Ÿ,Ú,ƒ–,_£,—ž,x¢,Þ�,t™,•,æ¡,W�,ט,Õ¥,B¡,žœ,E˜,3¥,� ,þ›,¤—,—¤,áŸ,<›,ö–,Ÿ,(–,ÿ¢,Qž,ç™,<™,·”,]œ,þ—,ì¤,Ÿ›,;¤,–Ÿ,âš,—–,½•,–¢,ë˜,é¥,V¡,²œ,Y˜,ê£,#Ÿ,nš,7–,£,ež,ö™,�•,J¢,¶�,A™,�, ˜,»�,P™,Õ”,´¡,%�,¯˜,­¥, ¡,˜,¥,ûš,‰-Äž,Fš,å•,¹¢,ž,¦™,9•,™,¦,[¡,Áœ,i˜,V¥,Ÿ ,&œ,Ñ—,¾¤,  ,c›,8ˆ-FŸ,Œš,U–,7£,~ž,š,á,9�,¡,€œ,1˜,¥,h ,ï›,w—,n¤,´Ÿ, ›,¿–,ª£,Øž,Kš,ú•,Í¢,)ž,º™,N•,¢,“�,™,¤,ZŸ,¥š,>�,É™,q•,Lž,Ý™,…•,E¢,±�,7™,²”,—¡,�,”¥,â ,Xœ,� ,œ¤,êŸ,à£,Ÿ, £,Šœ,;˜,)¥,w ,å›,‹—,~¤,¾Ÿ,#›,Ó–,¯£,ìž, –,æ¢,3ž,¿™,ø”,Ü¡,3¡,�œ,ýœ,‘˜,Š¥,ô—,•›,‚Ÿ,Íš,¡ž,‚¢,ã�,y™,•,·œ,^˜,Q¥,š ,œ,—,´¤,þŸ, ˆ- ¦,e¡,Æœ,KŸ,‘š,Z–,;‰-ž•,^¢,ä”,Ø,…œ,m ,Û›,¨ˆ-s¤,=ˆ-›,Ä–,‡ˆ-–,×¢,X•,'ˆ-&¦,~¡,Úœ,x˜,5œ, ,w›,,—,ªš,n–,P£,‰-h¢,ʈ-n™,ó”,ס,H�,•—,ƒ¤,ÈŸ,(›,â–,ã,ûž,Zš,–,ë¢,Bž,Ó™,¢�,-™,;¦,ˆ¡,óœ,Œ˜,…¥,Í ,Nœ,ê—,פ,6 ,‹›,'¤,xŸ,¾š,Ÿ—,’¤,ÜŸ,7›,ñ–,×£,ü�,ˆ™, •,õ¡,f�,æ˜,ä¥,Q¡,­œ,T˜,B¥,• , œ,³—,¥¤,ïŸ,E›,ÿ–,å£,Ÿ,iš,2–,£,`ž,ñ™,ö ,gœ,˜,ö¤,J ,®›,Y—,O¤,¥Ÿ,ñš,¦–,x£,µž,7š,Ì•,¥¢, ž,—™,*•,ÿ¡,p�,ú˜,ø¥,F™,Ë”,¡,lœ,O ,¸›,c—,T¤,ªŸ,öš,«–,‚£,¿ž,Aš,Ö•,¯¢,ž,œ™,/•,¢,�,¦,b•,,¢,ëˆ-& ,‘Ÿ,Èš,ˆ–,i£,œž,š,³•,}¢,í�,~™, •,ë¡,\�,ܘ,Ú¥,G¡,£œ,O˜,8¥,† ,œ,©—,£,ì ,bœ,˜,ñ¤,E ,©›,O—,@¤, Ÿ,çš,œ–,s£,«ž,-š,•,›¢,ž,’™,z�,ý¥,¼œ,L¥,œ, ,—,7Ÿ,F–,tž,´ˆ-¡,Nˆ-˜,¥,^ ,Ç›,h—,^¤,¯Ÿ,›,µ–,Œ£,Éž,rˆ-ê•,¾¢,ž,åˆ->•,¢,‰�, ™,¦,`¡,М,˜ˆ-[¥,¤ ,<£,ƒž,c¢,Ï�,_™,î”,È¡,Ș,Á¥,$¡,6˜,$¥,r ,Ö›,�—,y¤,¹Ÿ,›,É–, £,âž,ÿ•,Ü¢,.ž,]•,"¢,1¦,ßœ,gˆ-³ ,?œ,! ,r›,dŸ,¯š,�ž,Ò¡,ô›,š—,ˆ¤,ß,Ÿ,0‰-¥,× ,’ˆ-Üš,}–,ú¢,Vž,â™,4•, ¢,Cˆ-ÿ˜,ºˆ-c˜,{œ,,˜,¥,c ,i¤,J¦,O-†-ƒÚ,Ë~-L3-iú,ù¾,sd-Ó+-Üï,w0-‹ö,¶`-M-UÛ,*v-·4-¦û,+À,�¬,³T-†-ñ�-�-GK-(-19-b-xP-�-ƒG-œÓ,§=- Ê,o-Zf-Hé,kU->-„…-y�-oŽ-Û{-¹B- -ß�-H-¶w-ž>-ØÊ,€®,*V-m- á,J-ÕØ,¤|-‡C-œ -ÕÏ,‡s-Â-oÅ,sb-¸^-¯,éV-±Õ,·‰-Ó¹,&Œ-Q‹-½�-k�-DS-F�-�-¥-F-­Ò,•u-y<-uÈ,¯m-[4-œ,-Àð,�µ,þ«,VT-õ-‹�-ì�-�- Ž-9�-YŒ- -èÍ,øÿ,Ä,Êi-º�-²»,@a-¨(- í,¥²,¿X- -aä,P-ó-È€-áF-/Á,,f-*ò,¹¶,à,&…-ˆK-~-ß×,kj-„1-6å,AÔ,Ñ-ÕÁ,¼f-ó,§·,ýU-Ó-¤à,8|-?Ï,E)-Dx-E?-Ž-³6-vý,>Â,êf-’.-­ó,i -<Ð,ís-÷-HÆ,~ø,¶½, b-'*-y-_@-3-P7-Bþ,õê,g°,Û‡-¨N-Ä-ÞÆ,Ll-¿2-’ù,Dc-5+-ÙZ-]"-�æ,�-Ö,z-]A-0-âÌ,‹h- 0-ÿõ,¶º,¾-ðâ,Ô¦,„‹-qŠ-È,m-2¿,<Ž-Ÿ�-Pð,î´,¸‹-.#-éŠ- «,�‰-Œ-\ß,™-ìÖ,ÅA-\‘-r-˜8-A‰-&‘-Zi-Þ0-V»,a-{(-/ì,Œ±,cX-{-ôã,ü,Ïe-‘--Œ¶,¹\-Î$-­è,ó¬,U-ë-x×,Q{-"B-= -QÎ,_9-�->-e-°o-6-²ò,‹Œ-²]-©é, ®,í‰-¤-L-nØ, |-C-1 -Ï,çr-¹¼,b-^!-Ðå,q©,]-è -cå,ñ-‘Ü,a:-D½,Ò�-¯)-,î,Á-Gg-¤Ž-ô,§¸,j¯,/Š--¨á,€}-ÎŒ-Æ -‘Ð, k-S�-çø,¾,Kª,èg-ÜŽ-Sõ,º,ΰ,±Š-ê-�â, Ç,ªl-ûù,޾,sc-d+-'´,[-¿"-çæ,~Þ,·ƒ- J-í-e-IÍ,àq-_8-]ÿ,–Ã,åh->0-Rö,äº,(-öë,ì-dã,T§,vO--j-@F- -rÒ,Âu-¦<-½-¢È,Üm-4-=û,À¿,¨d-É,-îð,Uµ,Û[-Ë#-åç,,¬,T-#-Î,wr-Í8-&-6Ä,‘i- 1-$÷,Îì,=²,íX-å-�ä,‡¨,ÞO-!-âÛ,�€-G-Ü -1Ó,çv-ï--ý$-Ýè,}­,¶K-¬-¦×,~B-j -¤Î,¯r-Œ9-ä-ÐÄ,0j-±1-¹÷,¼,¡a- )-ní,³,„Y-´ -=>-’- Ê,-Òà,æ…-L--œØ,e|-OC-` -mÏ,Hs-ý9-Z-é1-ø,æ¼,@b-t)-Îí,J³,ýY-ˆ-2Ý,D‚-ÜH-…-¬Ô,sx- ?-6Ë, p-á6-¤ý,Â,qó,¸,L^-&-ê,­®,WV-›-9á,dž-\M--|Ù,A}-]D-¬ø,~½,Íb-T*-£î,…³,5Z-±!- æ,ã©,þQ-)-Õ,Dy-@-»ô,;¹,‰_- '-#ë,•°,Eâ,¢‡-oN--Ú,X~-eE-¢ -¤Ñ,²t-k;-l-í2-Àù,ù*-fï,ë³, Z-‹"-®æ,„ª,ØR-ý-Þ,Oƒ-ô-Í,‚q-$8-ÿ,îW-ã,p¦,>O-´-èÚ,3-ØE-Û -:Ò,Wu-<-‚-ßÇ,Cm-°3- ú,ÀÀ,:d-/,-ð,µ,n[-\#-}ç,&­,ßS-º-$ß,(„-ÙJ-b-±Ö,éz-’A-¡-‚Í,–ÿ,ÏÃ,i-¥0-¹ö,»,ì‹-\ì,¸±,‹-¨-"ä,ð§,z-V€-xF-F -Xv-@=-…-9É,un-5-Ôû,ˆÀ,•e-Z--‘ñ,U¶,~\-–$-qè,º¬,oÄ,øi-F1-]÷,à»,ma-Ö(-ܲ,LY-| -å, ©,âP-“-ZÜ,ƒ�-²G-M-Ô,w-*-9Ê,to-à5-Øü,–Á,‡f-Z.-}ò,r·,v]-e%-ué,á­,™U-l-oà,±…-ML-<Ø,çB-ßÎ,¿9--Å,˜j-{¼,Øa-¿Y-#!-›å,nQ-Ý,@H-nÔ,ãw-Ë>-%-u6-;ý,3ó,Õ·,á]-Ï%-Øé,Œ†-$M-x->Ù, }-µC- -Ð,µs-š:-ßÅ, k-Õ?-õ-¡Ë,¤p-7-ßý,ÀÂ,�g-ö.-€ô,¹,å^-Ì&-¹ê,ï,W-@-çá,3N-v-åÙ,ê}-0E-j -Ñ,yt-2;-…-¦Æ,Ûk-‚2-Sù,R¾, c-º*-.ï,!"-Hæ,œR-]-ÖÝ,ƒ-mI-P-ßÕ,¤y-$A-À-nÌ,Cq-ì7-¡þ,ZÃ,Rh-�/-Çõ,zº,!`-Ó'-¾ë,K-°Ú,�~-Ú;-ò-°Ç,=-ö-ÛÈ,En-å4-vû,YÀ,6e-4--C·,]-p$-&Y-ø¨,Q-·�-íG-Xw-»}-ÅD-— -ÐÐ,Jt-Ò:-V-vÆ,qk-R2-$ù,ã½,‹*-×î,¼³,pZ-ò_-£'-'-Àâ,DÇ,zl-&3-«c-b´,ç,éª,6-BJ-½-FÖ,Pz-Gà,÷„-ïK-V- Ø,«{-OB-¢ -O®,ÎU-=-2:-’-IÅ,ì÷,½,î,‹!- Q-€‚-¬H-Á-åÔ,x-Ë,Ep-kÂ,Oô,I¸,^-@&-“V-ÿ†-˜M-è-.D-9 -jÐ,%-Æ,Bk-"2-Xø,ª,2R-ú-kÝ,¯‚-I-ò-QÕ,çx-¼@-a-Ì,þ,ûÂ,¹g-1/-ôô,t¹,Z_-D'-�ë,7°,VW-º-â,æN-ç-]Ú,ºª,S-Î-NÞ,ˆƒ-ÙI-Ò,(u-I<-S-EÈ,€m-ï3-Ýú,_¿, d-*.-bñ,¾´,?[-5%-Nç,p«,°S-\-»ß,`„-ªJ-ø-×,¹z-õö,‚»,å`-K(-?í,\±,4X-L -Åã,(¨,¯O-J-ƒÛ,&€-²F-} - Ó,’v-w=-V-pÉ,°n-|5-�ã,¤§,&Û,Ò-ÚÒ,úu-â<-&- É,n-ˆ4-lü,ü¿,e---Ëñ,&¶,N\- $-Aè,g¬,-y>-ÿ-ž%-‘Â,g-Ç.-âó,x¸,ˆ^-f&-Oê,æ®,¹V-Ô-xá,.‡-ÈM-G-µÙ,)~-•D- -tÑ,t-;-ï,EI-!-�Õ,|y-�@-�-?Ì,Ûp-7-qþ,+Ã,"h-a/-#õ,¤¹,Â_-t'-_ë,»q-8ÿ,Àh--ö,‘`-7±,(-˧,ì-€- û,�¿,fe-m,-‘ð,¾µ,¬[-›#-¶ç,Ϋ,„T-V-Šß,�„-K-Ç-I×,!{-óA-ß-¹Í,Gr-9-Òÿ,v²,�X-X¨,HP-Ä-²Û,ö€-­ -lÓ,Áv-¿- É,ßn-L5-=ü,ÿÀ,ýe-¿--ûñ,·,è\-é,±­,EU-êß,T…-è-…{-Ò -~Î,½-ªÄ,‘÷,U¼,¦í,Ê-qÊ,Ýo-F6- ý,ßò,%†-·L-¦Ï,s-t?-_-rË,±,¿W-�-§,ád- ,-Xò,î¶,è,`¦,.O-¤- Ú,é~-j3-�ú,"¿,˜d-ú+-ð,•0-©ö,Õ`-k-sÛ,Hv-Õ4-Äû,IÀ,ª¬,ÐT-£-‘-C�-xK-F-O9-€-–P-:�-¢G-ºÓ,Æ=-)Ê,+o-wf-eé,‰U-\-¡…-ª�-”Ž-ù{-×B-! -ü�-0H-Ów-»>-õÊ,�®,GV-‹-)á,h-óØ,Â|-¥C-º -ôÏ,¥s-ç-”Å,�b-Õ^-Z¯,W-ÏÕ,݉-ñ¹,IŒ-t‹-á�-��-bS-i�-)�-Â-0F-ÊÒ,²u-–<-’È,Ìm-x4-¹,-Þð,®µ,¬,tT--­�-�-6�-,Ž-[�-{Œ-- -Î,-&Ä,èi-Ü�-л,]a-Æ(-/í,̲,ÝX-< -ä,8P--æ€-ÿF-MÁ,Jf-Hò,Þ¶,7à,D…-¦K-œ-ý×,ˆj-¡1-Så,^Ô,ï-óÁ,Úf-#ó,Å·,V-ñ-Âà,U|-]Ï,d)-cx-d?-­-Ñ6-”ý,[Â,g-·.-Òó,‡ -ZÐ, t--fÆ,œø,Ó½,½b-D*-4y-}@-Q-o7-aþ,ë,…°,ø‡-ÖN-â-üÆ,jl-Ý2-°ù,cc-T+-÷Z-{"-žæ,­-6Ö,@z-‚A-U-Í,°h-.0-ö,Ôº,Ü-ã,ô¦,¨‹-¡Š-5È,3m-O¿,_Ž-Â�-�ð, µ,Ü‹-L#- ‹-¾«,§‰-ª-zß,·- ×,ãA-„‘-7r-½8-q‰-G‘-�i-ú0-r»,0a-˜(-Lì,¨±,X-˜-ä,-ü,íe-¯--©¶,Ø\-í$-Íè,­,5U--–×,u{-?B-Z -nÎ,|9-­-->-‚-Ío-66-Ïò,¾Œ-Ñ]-Èé,?®,Š-Ã-=L-ŒØ,(|-?C-P -/Ï,s-Ö¼,0b-{!-úå,˜©,^Q-x-ñÜ,4‚-œH-|†-M-Ø-.Ù,ú|-D-ñ -ÏÅ,új-*-“î,Ó©,îQ-×x-Å?-å-Ì,”p-J_-¼&-©ê,'°,ª-’‡-#N-×- E-Z -dÑ,"-ŒR-¾-ÆÝ,ƒ-ÉI- z-A-ÒÌ,3q-Ü7-ðþ,ù/-·õ,jº,�`-¯W-}-#-ÈE-Ò,u-Ê;-C- Ç,m- 3-Yú,é¾,ûc-Ã+-Ìï,®´,#-`«, S-ß,„-šJ-R-¡Ö,©z-Rñ,¶,>\-`$-U-Û-ç„-óä,è¨,ÒP-ƒ-JÜ,s�-sG-=-óÓ,Hw-ÿ=--üÉ,do-Ð5-Èü,†Á,f]-!-‹å,>-ºÜ,Š:-n½,ú�-Ü)-[î,ê-qg-ÌŽ-?ô,ð¸,³¯,aŠ-0-×á,«}-öŒ-ó -ÀÐ,Ëk-{�-ù,B¾,tª,h-�-€õ,0º,ø°,ÙŠ--°â,4Ç,Òl-&ú,¶¾,›c-Œ+-R´,/[-ç"-ç,©Þ,߃-2J--‘-rÍ, r-ˆ8-†ÿ,¿Ã,i-g0-{ö, »,;(-ì,-�ã,”§,ŸO-:-•-hF-6 -�Ò,êu-Ò<-æ-ËÈ,n-K4-fû,ì¿,Ñd-õ,-ñ,€µ,\-ù#- è,W¬,FT-F-AÎ,Ÿr-ð8-R-_Ä,ºi-61-M÷,úì,f²,Y- -»ä,°¨, P-J-Ü,¸€-:G--\Ó,w-.-%%- é,¡­,ßK-Ø-Ï×,©B-’ -ÏÎ,×r-¯9--øÄ,[j-Ù1-Ü÷,E¼,Èa-5)-–í,:³,¯Y-Ø -i>-Á-ÈÊ,--ûà,†-§L-:-ÅØ,”|-wC-Œ -–Ï,ws-":-‚-2-Hø,½,cb-Ÿ)-öí,u³,%Z-±-[Ý,p‚-I-±-ÕÔ,Ÿx-5?-bË,5p- 7-Ïý,.Â,�ó,9¸,x^-0&-?ê,Ö®,ƒV-Ä-há,ï†-ˆM-7-¥Ù,p}-…D-×ø,¦½,ûb-{*-Çî,¬³,`Z-Ù!-8æ, ª,"R-M-AÕ,ly-O@-äô,d¹,²_-4'-Oë,¾°,qâ,ˇ-˜N-;-MÚ,€~-‘E-Ë -ÈÑ,át-“;-Þ,xƒ- -9Í,«q-O8-(ÿ,$X-Tã,Ħ,fO-Ü-Û,Z-F- -bÒ,…u-9<-­-È,pm-ß3-Íú,ïÀ,cd-],-@ð,Eµ,œ[-‹#-¦ç,m­,T-å-Lß,P„-K-‰-ÜÖ,{-µA-Ï-©Í,Âÿ,øÃ,Ji-Î0-åö,F»,Œ-¾ì,-²,A‹-Õ-Qä,¨,´-€-¢F-m -‚v-g=-¯-`É, n-<5-ÿû,°À,¿e-�--»ñ,|¶,©\-¾$-�è,ã¬,šÄ, j-t1-�÷,¼,‘a-ú(-³,tY-¤ -&å,a©,Q-º-�Ü,§�-ÝG-u-1Ô,¦w-U-aÊ, o- 6-üü,ÅÁ,¬f-‚.-¢ò,—·,¢]-Ž%-™é,®,¾U-”-”à,Ö…-oL-^Ø,C-Ï,í9-J-9Å,Âj-©¼,b-íY-N!-Àå,�Q-"Ý,aH-œÔ,x-ü>-O-£6-fý,aó,¸, ^-÷%-ê,·†-LM- -lÙ,1}-àC-) -,Ð,Ýs-Â:-Æ,2k-@-#-ÅË,Ëp-@7-þ,ëÂ,©g-!/-«ô,+¹,_-û&-åê,ð¯,FW-e-â,_N-Ÿ-Ú,~-UE-’ -,Ñ,¢t-[;-´-ÎÆ,l-¯2-‚ù,~¾,4c-é*-Vï,M"-qæ,ÈR-†-Þ,?ƒ-–I--Ö,Ðy-MA-ä-—Ì,rq-8-¹þ,†Ã,{h-¿/-ïõ,¦º,J`-(-æë,v-ØÚ,»~-<--ÏÇ,0=--úÈ,en-5-–û,xÀ,Ve-J--b·,.]-†$-ç, «,L-aJ-Ý-eÖ,pz-_à,…-L-n-,Ø,Ë{-nB- -p®,íU-]-Q:-²-_Å, ø,4½,î,¡!-¶Q-Ÿ‚-ÌH-â-Õ,4x-&Ë,\p-�Â,pô,h¸,<^-V&-©V-‡-¸M-þ-MD-Y -�Ð,F-8Æ,ak-B2-nø,;ª,QR--‹Ý,΂-5I--qÕ,y-Ü@-€-/Ì,2þ,Ã,Øg-Q/-õ,”¹,y_-d'-®ë,W°,uW-Ú-5â,O--sÚ,Ùª,4S-í-nÞ,§ƒ-ùI-*Ò,Gu-i<-r-eÈ,Ÿm-4-üú,¿,*d-J.-�ñ,Þ´,^[-U%-mç,�«,ÏS-|-Úß,€„-ÉJ--9×,Ùz-÷,¢»,a-k(-^í,|±,SX-l -äã,H¨,ÎO-j-¢Û,F€-ÑF-� -!Ó,±v-—=-u-�É,Ïn-œ5-µã,»§,EÛ,ñ-ùÒ,v-=-F-)É,5n-§4-Œü,À,&e-$--ëñ,E¶,n\-($-aè,}¬,.-Ž>--¿%-°Â,7g-æ.-ô,—¸,¨^-…&-oê,¯,ÙV-ó-˜á,M‡-èM-f-ÕÙ,H~-µD-" -”Ñ,:t-";-ï,]I-@-¡Õ,”y-¬@-°-^Ì,ûp-ž7-‘þ,JÃ,Bh-€/-Cõ,ù,â_-“'-ë,Ðq-Mÿ,Õh-Bö,¦`-L±,=-à§,-€--û,°¿,…e-Œ,-°ð,Þµ,Ë[-»#-Õç,î«,£T-v-«ß,¯„-7K-è-h×,A{-B-ÿ-ØÍ,gr-!9-èÿ,•²,¯X-w¨,hP-ã-ÒÛ, �-Ì -ŒÓ,×v-Þ-ÀÉ,þn-l5-\ü,Á,f-ß--ò,3·,þ\-8é,Ñ­,[U- à,t…-þ-›{-ó -”Î,Ô-ÀÄ,©÷,k¼,¾í,á-�Ê,üo-e6-+ý,öò,D†-ÙL-ÅÏ,8s-Š?-~-‘Ë,'±,ÞW-®-D§,öd-,-mò,·,1è,°€ ODHT Ž"@·ÞñÚá²€¬¨Zœ½‰€VŒÕQ%ÿ†@X3 ˆÆÏW À”S£ýï' Çòþûû) Àô·Xúk+ ?–:¶8ë€M%’7KÄÌ€]w¥ä¶â˜@««’ k�[%Àx»*œ9 ‚z‰MU@5,oÁ`´·€Wm1�€^@¤ÐÚ¢žÝ@ò°˜ÓSÌ€ AÎ�xß@ÃK·7"þ@E‰²‰7R€ØØ5V* @>¶ÕZy_ €ó¢ŠüÖ#@žÖn' ¥~,À½† È ¥-ÔaÛþ†Îú,À´LÐä·Â3@ù^riô©3.¬)Oš<õͪ8Ü >ÅÌÓs±®?@¾° Ý£#é@€ˆõ¿ê\¬B@óñT´7ö$E€ÃÒ ,ª=jEÀOxÀk¤G@‰1 ¯: AH@ëÖ)ÎügJW£cõ*KuMÀ1ýÔ!:gbNÀ´îÇ•—uO¦#3¡ ¢N€bö Ð�‘³T°àl€ =ò?ÑjÍdLý\ׄ�º�˜^‰u;fÛ�L“³šeR$AÉè�¼ë$ÁÐzøÙ¨(»$ÙaZ :Ü'�JH‹œá2'¹}dؘ͎)�s8 P|.”'�öTã“yÆ™,AÙ<‘nË—,/�5m„nÌëW/A�ÿ ^:§c1Vá3H2ZÞx ·ý1Ao4ÛÞjÿ�5�7aZKˆ[7Á™ÈðgD±<‚�êíqI=Á¿|? ÞCÁ9¥ëù€iCÁ|tþÎË1ðEÒq…À�xFÁYÑm:¦YGA—L R›À0GÁoi�ñw�JÁÓÆ@HàM�^’ŽfÄûOù8�y�ûoS¯v“ ËÜǬU�Û ^õøTâVA“hÿ¤›‚æY­jý+?ò[Á°ó^æFz\ÁuŠœØÇñ\ÐÕs Ê’,^\ÈY™r:^ø¶“ ^�%µ‚bGádA6€L’ôì„fÁ[—–cÓÛhAóM¥ 8žˆDlÁ� ì r­ÛnAö‡» °ßF;oÁ8T ÃfónÉìòäWØw�0J‰®¶ÁíxIJ! ïÊ�y�}UùS?OKzÁÁÔ ~÷b zÁ:Ùì!É:x'³=w†vwAŸ§aJË@k}Y8ø@‡Abn�XñÎË…Aڶלo‚ †�Î*=u:qŒG:S *J�AGŠsaÑÊŒA²Ü, Õ¼�Á.�² ÿÇ#�Áo{m´ªDR��lت`q²“AÝ�yéd¾™½Óy,OÄš5ÉñËA,G¦ã7§ÍAËåmi ]ÍÁc¦¿ éÝÂ_Ò�ÎbvK@‰ÖAx~Ê’ФÖß½Œ¿EbÄÛÁH¦½D†“‚ÜÁ©¯ äÛÝ�NbîÇÚÜdJ-TE-Þ�ÿ4îaüÚàA`x]«ë=bã�pÕÁérä߯Û„/¸å�yç¸@HçA-u/™üèÁ:L¬#ZÌ(ëÁ_¿ù{T-VëAœý� Ø d¯í·„I¢è …îà yN([ðA×ønÔ/£‘ý(\:lKþÂX-o"ðk»ð‚}~† #mjÂcÆu¢âŽ TD µlÕž†°P�‚­Â`ëü÷#s³ Blù(%’Ï:  ¦ �#¯ 4Ùùí‘k ‚(¢ Šnø\ ÂÝÊ?«L  ëº æèB]+> {“ÿDÂ%˜j#‘Ãc‚¿FÍèèUËBMÛjǯ ‚˜¡& ¶¤Ôv‚y }T¹*Hÿ1í«ì4Õ¯Öx…‚‘éÏW´6‚»ï [#N:#S_ y1&“#‚'¬? [L‰N%´hçkˆ%Ând’Nä…s&›qß·Åy%Â^OlaŠäK&‚œJæå5’Ë,¼°² *ÂàÅ-§𫠱ŽÙ�.ž˜gno§Ó/Ðà΂ †Ñ0‚üLЀLi0äÀ\!µBÌw4ÂÓ Õ~y�©4¿ÐÉâÔeË8xxÚæwòv;BJÜí€y^ÓB—»w‚ƒ| Þña:x‚óA� ƒC›u‚ “·{‘ÇtÂY6¿!^À”~BÀÔe_·E€‚ñ--™WNd‚‚4} y®dÂ…¿è« †ƒ…ÂñÔÇŸVwŠB:duŠ4©ç‹Bx¨ {ZŸ!Œ‚„«BTÙ�Ú= ¬fùê�ÁŒ�Ø8�çŽBmÎ8úE�ƒãJ4U‘‚$.• ºÜùQ’Âù�ô „¹ˆë‹‚ÇQy!Bü¬•» £�éH¶šÂ'p͆a¢âŸSÐóçÿ~¢FäaKàsY£BþDv¬-]“£Â3ƒØãâb¥Âë#˜ƒ ¨BSÀ ¤™ø]©B¥iÜï8KªBš¦q¾B©Bê�½Ì�Mª—‰œ …²aO¥ÍÖG$²‚ÂÃîˆ _δ‚=Ÿ©TªŒ¶Â×Ì©1[?\¹7�Áæ›–­º'Úòäk»B�‹"³OªÚ¼B…ôký“òÃBÖê9 ÇdÑÇÂö€&|Z�ÉÂ�œCosøÊtñ§dê;ÒB-L!sÈì‡ÙB“%|×8.IÛÙ*—is7×ÜpN/.¶ÄÝÀW)y{òóà{z¥¶ìþåÂ!ï>L²™ˆæ‚†pÿC‰ 5çÝs·2‹3•ëB‘bð”Ðäî‚1%�yñSsòBj’Uë?pø‚.±ÆîsVªùøñ( n¹¿úB;WêÙnÛ<ùEºÁ# Bü‚7K*@síûBƒ²æ]áN³úÂ|/Å ê&!XÿÂ’RæqéÿE…øíR‡ÃEL‘!ƒålN,ú™ éhCݤQßÃ2éqÌçCƒW¡ Ï þCyÖÖ³C~™CÇz ´£JZƒ§nCmnïÏfFúNÃõ$Иvî ìªÂ"‚^%)ù¸CðRúìu^Þ–dˆüÃÇÔBd´XÄCºŸÂ+r/"Ú5G–Ø=%ƒð„³@~™˜&p=D•Ì„f%ƒŒÿ##ø+(B°îl”8Û*t¸ !ÖÎÒ+ƒSÐI<…#‰+ƒöûÃÁFt�/z-èÆÄß0C!wñÎRЏ/¾-(m=]2Ï0ÞuR3ƒU칡B¾F0C±ô kc°o0ÃAJi"Üî…6Cðª2 FÞcº7Ã_/{6§÷Ð8Cjz +þ¥8ØÞòË(ô:[j, ` ÿS;C¨sê!�aøË>C'2Ö�@?H¹ �£ ?ÃGÀ`€”0À@f�É™Q7#BCXâp´'IC CS»žðDƒúªU¤ì¡:CƒéFséM”~DCPB‚",Q§IÖ< =ëµ�JÓÞ?Á¬ÑJCzOß ”mPMCJ»·!«—NC,È¿š[SƒÎ[BÞƒSƒƒßxÙ4Vƒ¬.Å Bjƒû]à ±g"iÄÌè`ƒ»Ó´¤IGyaƒ˜»„'u/bC&w "ÓÐ jÃVëC¨ò„kCë÷€–Ah¢kzáCÐ�ÆnÙTé�hn sùzÜyÚqƒ+uò iÛrCï}¤&�rC¬kF!wQvƒÃ(zÙ¥x?9AQ NùyÃ2Ô�iêzd' ÇGÒ{CÅ�Ø1S:Ñ{Ã\„ŸøY·H}CÌÞ‹ �¥¿yƲíT³äzÃã­øñSòd�LiœXÒp…ÓÀóc_r†ƒŸ©€5˜~‹ÃµPb!Tªp‘�ƒ5ê¡Ç�P�C&xRo9᎓CóŸ ®1®™ƒ�U»užT!šõ%l*–ÉžÃæÉµ#Ÿ”·À�;æ ÃÑ�? > Y¢ƒc6S;h„¦ƒ±`ò2‹š§ãÀ‘û÷£¨Ã¤‰b 3)ú­ÙQµÈ©Te­ƒ ºÝ€&´Ã|2Ç ŽÈ¡´ƒ°¹iW0®‚¹C(¶Î”ï^®ºÉ„R$O5½Ãæ­Â{6Ì ¿Ãzm½¯‘ºÂÃ7ö¡ÅўśYÕõ|ǃ(°‰ 0ûæÈƒ6ª�BÖ¹ÉCãz 3>#Î Ø ´™ÔƒUb ›&-×Ãò~a : Ør¯M ‡ÛY×Cn Z{ÙCtN#³®ÛƒŸ.Ë ~¼ÞŒ³>!TîáÃÝf14TeâƒÛ"”ü÷ÓäÃÛøþ± á�åƒJ–mòÅ1æÍ`Yš–çײ"ÙÙìè|Tî fËŸçUo$«WÙèCè2X>7ÍväÃqؘ*æ»Q2‘ ¢åƒ´ê°U”¨îC%š0©‘£íÃO$’ÅÍïCN$ ¸ äCÃáÚ!+,~ÒòCB 3 m‚9Áôßí]â½rïöÆHVÌIÝøC(3RV]µÛúCôûÒ É¼û}ûCl3¨ÉV û¸Ád½å>ý{ßh……êIþÃe(ze¨àýÃ: ÑÃ$Å3D¶;¿«@·ÜD‘ƒ¸Ù5ÿÊDu=À¸÷¦„€I… wÉ™•gÆ×ñĉ¼Ìÿ\ü „« cu6˜D¥'�! »Ò âŸÖvZÐÊ „;¹aïyËĸí"”ùaD uá6,ª‘¡°T/dûÄ ±!È/ú²„ê‚ ®­Ãf D5p­ ?Ÿ !Äð}a :ÃÐ(„µã–ìî,DŒ)R ™ªó–-ÄÇï�Ç0)$ëÎÛNx0óŠÄñD5Ä),F�ØÏ8Ìùà É(9ƒ:õDºk9Äbƒ« ”ì¢:„PVÖÙ ¢p=”-°ŸT?DcS Š? µBD¼T†W&+�IDÖ9gZP¤ÜIÄÞ%!ŒžêK„Íù;àqCÊL •} F¦x*NĥР0,WîOÄÝ­„NŠSœ:ÉMSÄ—ê†mÜèNVRNÜAY"à[Dd¡`È ^�?¢T¢Ë_D—é}xáåØ_DxêŸ µiÉOa,Gùè WO_Dòç6ÕÖO�b„@3!1˾Kf„k¿ú!iŽ iÄ^üãƒrlD„8s›K€ßm±‚9nsÖmD*«Ê/ÜÃnÄ]¥X“ «pÖÄQ Ùª�oÄA¢ó³‘s#sD|¿Ê åsuÄc[F9½éxÄ¥¼°¨[´îyœ¬¹Ô¦š‰zD A©CyíèyÄCê¼ñ '‹|ÄX�z heŠ|D�n» ˜÷sr~D¯×êî9~÷�ز€€D«=’ is&"{„ê>+" ,VsƒDW­‘î6„>‚c [þ$7…„˜R,;éè„à…ÆíˆÄä;v ‰„Äð|(0sèŠD¾È/ÇE0 ŒÄYŽ/¶)¨Ô�„ÞDÛh�ü"2 ÍËÖb“„mfôÆÍ�4”Ä~y« Qü¯“”ꢑ{õ™Äí:êŬe¶™„‰jÅœÔ/šD«ÿÝ#Õˆ¬ž}F `娟„u´ˆ اÀ¡Ä[ i Ÿ¸w_£D½ÓüÑ/£„‹4!7ƒKà¥Dbi ÏÅ9¥ÄX®hÞ'¨DìZ3éñ©Ä!ö˜—7±�ªDy[�žÙ¨™BS.©Û©DcΉ�Ä•¯DM5¶¨hŸ°Äðî±CêÕ°Ä¶Ì 8LH²Ä6Í’¯tú+²Ä�H= ¾†Ó°„y[F²Ùäù³ÄrSøu®~¸„Î’MK\W·¹ÄÒ±Ô¡¿¹D2Ê"?šHx¿§˜ý yW8ž¿Ä„û"üEºÁÄó4“^fÁD.Ö·oÄ„ª¿„N�}"}Ö1ÈÅÄH-Šâ_qÆÄ�5ñv±a¾Ç~¤RÛ†ˆ%É„™ ’8pÊDúu— ø‚éÊÄh¿  Yj‡¨ÌĈ¾Ùà•)¡ÍDöÜ«sÐb[ÎD†Ðé’¹÷’ÔÄ\¶©ˆïZ×ÕÄÓÿGÙ5|ÍÖº¢JqÓAÞ„ÕÄu ©Òã6ß„˜¸îÓSšWàD%eeë’¥?ßÄíá_‘`K³âD1xz¼ù`zàÄ¿YäÍeéãDUO Î49ÈåD¯ÈÚ³@+OèIJÍëÝ*¦øñ�ïgÀa�òÄùP“‚ 3Mö„Ôú]ãËÊöÂ訥†)xøÄÆ4r!ß.^wüDPƒEçÐvÿD´±˜F¯ÿD4m�§Ý#t Ÿ ô`Å7w´ByhäE?`Ø ö�…]ÚÝ [™É Å „íà E±v¾3µG  Rn Gj]g Å(!—þÌŸ½#.Þg<·…?K¬^àá …Òë}Ç>’mEw…ŠHM$òE|õù›Iš…Ac-<��b!æ:®e ‹’xòšÀNE`ÈêPùŬ@—¬ãŠshhù!û®« ER!Ÿð™Ô ‹a¶lž¢"P’bR¬Ï Åßi]ŽeXÍ!퉗*[B%•íFÇË&EgÁì Ûª`–%E`I¤Ѷ6…†Ñ:X•J-9¤DëÓë<Å{”÷W:^?…G†¹m™ÇBÅ�Ì â�qCEæüB9Ã(×D yCÎtD…ðD\ ŸÉOÃRņްüø^WÅöµà/އ•Y…È\v ^µåY…Ý&Nîþ\[EtÕ÷¢mùº\…¶XÂï>®¹]E%ŽÙ¯¢)_Þy¿{ezYÃzD3Ùh…òZ'+½èjEy{Æ6­U&k…^uè”@]¹m…lh�'zé”otÌ­3 ÖsEÊ8 ”x�ßu…]J! ÞìvÅ¡[¶"Â\åz:þø?( V€ÅApò.láÏ„…Ã8×qÙ*……hõ2LQ–Ó†…žA vl‡E"¯Â¯ÿB$‹¡�­Ʋ󺌪z ho%Ï�ëÕ=°ùI�"Œròj…_Ž…æËÍ5kÔ�E6) !“ÑZŒÅ©ÕŒ„€þ’Å„+mRžH”r.à ðqq”…ß|qPÑ™™•Åîé¾c ”…©¾iTž¡™E’gòX"TÚEö7zÌyûšŸª®ÁŠ)ŽF¢EnYºŽ]!°£ÅxÐæ”¬X*£*îôN#!Q¥Ešª]$‚¥Åü"³ 6”1o§E½_>†È¨šqø¶,ðI¥…z¡ìfWªÅÏ síE ›´”¯ñô…à‹èùòûEü9 | ‚ûÅøOܦÖûŽý…‘·§/ :F6”( Š~dÆÈÎ#=N1@†ne-ò@0QFéM  É]‡F…¾zú0S=Æ¿ßisÄ †àÇýÔ+‹ óÊñÄíË F·å*vÄ–›Fû‘p͆F½†V"ý.¡ U†íºH �öxÎRöÔ¥Uºt†ºdŒ7¼"†r#? eýŸ$Æ œ1N3Û«&†¥Kt.»Ô'í½-’¢<+šq Ø20X,Ƹ*o1ÂrT-†BOi—MïÀ-�‡tˆ´{/Æ,‹¥�/€.F^4!JT}.Fù)P }"�!0ÌAw@d—3U Â#1¾3Æb¼ù öé]l5F%ö ]/÷3†±@8 À(¦01­ËÞ˜‚’8Fa-Á ¹¦ž‡3u÷!_tÑ©<ƪ½§ø••=FÛŽÒìl«š?ÆCOb[Ù Ã@FxñiwjB±A†‰PML@uh?FúÕ ÿÅC†Up ®ýlFƧ ½ qg�©GFeßZ¿;rÄGíç! xÉ!L-ö jÅÖ#LXÅÿ!ô_‘ñOÆÌ¦Ôw*ëúO2Üï X“DIpGîôY†+…«Öƒ€ºZƪ§—¶Y*Y†ë N Íx¦ªYF£ �,¹YF "(‰›._Êèƒ+Âk_†ßÏ“?Ï®c]! °@,fFiaß s7¨$i†Y<µµ¬–jÆËxÒ|އ oFo¾“@ QpÆ·\¬:û´”rÀwý¢ZsÆÊ‡I ܵŽsFÝ„!¡P†x†k�É#âî {†œå¡îx}FKÊŠJ¥ô}eŽÂw›œšÆ�Œž3ñdƒOü$†r–-\�FíK)Ù¢‘�ÊF è~Ùj’F³é:O¡¥’F¶²â¥Ù�Àˆ!"ëêô�•Æ�,ëFbž˜‘š]Ï‹1šÆô)unÂ&e›F[AÄï(’¸œÆ·ƒ ÊÀ(~šFÅ%Ó!æG[óžÆ@«my †Z�ô @ë14¥ÆXélº;“ø¦Æü ×GQ—§k5¼ <¨ÆÎœIÿ’€¾¯F\hjŽ'B°Æ’sÉÿâ%²FÓ½šñêc²†‹É¶!T>† ´kð¢Òf¹F æÁÓvšÛºF6fX(àV‡½F £°ðLf¾FºÊ7 Hž~x¿†HÏx±Ú0ÂÑ€)Ìù ÂéæÉ!Ü—ô“ÅÆ]üªÑeÉdž>:¿TxE§É†³‚·Þòφ3!Æ Á[φ¹"m©{ZÑÆh¬ƒ"ND1uÓÆ�¦àèlå׆TqÛ¥ªÉÚ† o°™&’î݆®øMtA“ØÞƈ&ÛPáø%ßF­p[±[߯#¯òÁQÊßßFòÛ; §àF7ðO úÙÕ¹áFa\ T‰Žæ†í�Tqƒâ¦êì)‚d[{ìÀÞ�´¬FLîFfÇN HññÆQ[E ]“ô†Cñ�"¥³½õFzùGÎG½öF›Ý!Gò2@õ†Œ`ÞŠ\pø‚ÜÐ�ØQkûƳ7�9œ'ŽüÆ–çås|*ütÔ‚“@ÒGrN­¸ø—øÇ9/û ´ë–7Dè?Wÿ‡,Ä ¸.Š ‡‚CÄF° ÇÒ�s™U–¢ älÁ7 q Ç> ït7 G9r’ çÝèuBZ.@MÇ\¤ÿŽëÇræ !2&}Gî —Ã̰‡ÕÏù ‚3G�º"Qí9PG`úôª£ËmGUó>¨×4“Sm8Êð̇39;"‘ªë!Çw“Ü9 Œ!‡Éø S\ú"‡\´Ô’CN#Çù…Ya&ÇÆkl|•æ&‡Ì›\ú×�5&Éž"d`6+[âµÏ�#,‡"m ë\õ®.4ìø Å%Ô'/ÇàCí,I4‡¢–ü‰ÀfK6ŒrûØB�9Óõ×ìù½: ¨æ ¶‘ ¿@WXåû¡“Ú@‡]tU›rôB©/k’p̯C‡ÿØ£ ÃDDÇs^z¿ç£HGG˜^¦©¼aRHÇ®º�uð©ˆNÍlIbFØP‡xÞw ¹ðˆ PGï—�¾5`RǨ$2ò›QÒUÇs-rßhäYG„¬ä òWÑYGÔùî:³–]ÇKüö¨�Xo`ÇOCU ”…LaGv¢ ?éK_cÇw Ç)­ÐeGðÞhÆ©¦°eG´1t:9ëügÇ$ý1J„Óh’Ž«˜c¤—g)G!‹øjÇY\Fƒ�*)mG71alrn‡*?þ^(Þ�nÇuàûO+ËpGhš¿×ükqÇu›!\»úpÇçaç5¼m‡ƒºw"L¨LwÇâóàézv‡úÿð#~zF¢ØöÆ0¦}GHî%Ê¥ñ~)`ˆ%ì^GOž­e6É€‡<‰Ì ÷è,û€Gm!!½°ºTƒ‡ÿÚ ,TƒÇþ—A!‚–ó…‡Î¼Òì…‡¤GR"9?u ‡GR8¥ È÷Ž/ˆ‡ÐbØ:3‹‡5K*ê%–‹GpJ ~}�ÇdE,ìÛŽ‡›(üG�Gr>²…Ý÷(�É*>;( ‘Ç„å»Ó„xË�‡þ‰õÓº}’‡3é•åš”‡EØg]p[•x»H†V¸–¨\õ¢>¤‰•Ç=< Œfö>–�ŸÆ€œ.–Ç1¢S‰:�\Gxr¨—‡ÄÙð‰Mî³�i,õ!Ã÷¤T”ÇÄ!l"4”+lŸGߟäÇyê ‡nlÓFê|U¢G–Ç‚ ;£Ž�Óʉÿí¤GÕ«ÆlzÑ䥇»=žœ‚tQ¢‡èe$Dù§Ç×¥ý½)ù¦‡?ë!&º³´«‡–Xª "8…'«Gœõ?n˜«Ç'ÈÑj¹a䮇f.# KÕi±G-s2 4š˜w²‡Áqee.0Š´Gƒn” õS(öµG70ÿ){Kê»GA ¤š„׎¼(ß°¿G‹ íÑÁÿÅ¿6 †4€ÜÆÇ2› 7]ÈGË�_ ¢[@ɇ­ µ|P}͇µ4ê š'ÏGBBrJ"3ÑéÑå!Óìš�ÓÇJ³o4¤Ô�ûµ½k*ºÓGK©!rmpÖǽn\-åÜ×G"ʆwHxØÇÑl ,c߮؇ì—ì ‘ÐkUÖù­hJ&ÝG\˜á#øbÊÞGþ“}Þ>�ôÝÂý[UÀÎÝGý5]ò�wÞGŠ‘‹™‰‰–â‡æ2À_ù…õäG“ó>�Eîëä§–=U1Ørå‡k0ˆ¢ýÆhç‡Öš¥,zÕRé‡T&/I¶‚¾ê‡eÙ•Ì*jíÇá±AU®à™îG4ŽõUüõTïS‹³!TfñÇóׇ Ïf/Hù©˜\󙪙úÇ­qYJƒgúGð:TÓù°-Îè¦×ýGëa£Ê¿ÃHU¶ˆIǽü÷Y5“) Ȧ yÞD£Ç÷9'PnHœŠ¼.ìv–H~¢Çt*¤ Hœñ>ê:ÂH>˜ àÜpãï¾ògöRò°Â€ÍFÏÈ•¥ UÓ^vÈ|è¬áûa‘H‘ÎËïU·Hq•Ä:wˆXe© °ÿ擈Âc…”?l¡HŠkÉ ‘ˆçoKÙU G> ú�Lbw� zª HÀ}EŒÀ` ˆP¾º¸©k"HÇB1"àö)Š#ˆxç b$[Z$>Å4 ¬Ô3%ˆóuçÕ8&È -Õ¦¾'˜¸ê™ÄÿÚ%HðâŽÇ%á$ˆCL0³ÚÈf+Ç>Xíâ1iÛÏ€ow4ÈÐGo�ž5CÊÉÓg@ˆ½Æ¦ÄèïJDÈZÏRg°EÈÜf òç�DÈ‚"4|�Í5Hȵá (»]¯Iˆ æØ !Ó|O*34D;ÚTÈð©`MÝÜîT~¿ÔÀÂ]ˆŠT>äVœÁ_ˆÔ‡</¯õsaˆÜ�¬H\±cˆ©Û<¥b9@dH£GÀòÎC°d}⟱ü kHãay ðÃ4lÈ� 2:-qqû!RtvŒäÛævˆèÿŸ lE­¥v…÷­Î%£yˆtu è”�„xˆx´ž©eÙÉ|Ë’)+=úÈ– Ï6 ÜO€H¥}µU6àH"ß�ùè ‚È±j¤ }¶¿éƒ¸:�øÀås‡ÈÖð á–Ä ‰PÜSƒoþcŠH„I+ž´Í¹‹ÈºAHy­Ð÷�(yÀDI&=‘æË’:ʹ’»²Áéàˆ-—Hõ2åõÛ˜ˆn$Ý@›|�Å!¶¾“†œøËa2  HÎ3°÷˜ È·ŸH¸5ã¾¢H¡·Bsê$£¼Ü ¯ìüQ¡ˆîj!ÀE9©ü‘SƒÍ~¤ªHS¤—x\ª8¤›?Ù¢ ®H—!ÚÚßw®ˆ ¹DëúܯȆ1°R˜Š˜±Èºë¸ØúްH�²3ÿÌ™b³HLDʼn�OìÚ˜K‰ÎDàqÙ† C4øœ¸Îo q‰XUÉ(˜ä™‰   ÁStIbINXµÇO¤g X>8P!þ ‰ÿ¾9jé ´i¿i£Åú‰î(C­ÕIf?�>G‡Ø#‰„vp½Ñ›Ñ#I[ Ï_’§%I9‘DÚóž&I¿}ªÜ#p*É ©³º„-Éü=w¹Ÿ- =[9ˆ Ú/IÜNlÛ$],3IV!ÞË-3‰§l^YHïs8‰CÓs¿.Æé<‰ À¤ "M@=‰dl÷}0? J‰U‹B°@IÍD’¶_`@I˜š¤ ›ß͸BÉ�õ𠟘�jA 2„!§ÊÔDIqêí}o^J ÷�x%+oUJÉÒ–>'V°3L 3eÔÃ¥éÛL Ë5ùú¹N èËÑ|¥‰ÓM ¥Ô].²ìÄPÉ43\ц#'Q ¾^nçiO?RI¿\ÂÜÌÊ’R >1\œfTTÉ{„ÍæàùO‰Úã øÕ¬ZXIÁ€Þyå~ÐZIÿT‚ 1ó[I!�µ¼h×ZÉG ãÛ� ]‰ŸR\zší€ZI Â+àfGë]‰ÛvLý`”�`‰Â]“ê·ƒ·]Éu¾W št;eÉoĪ!¨ `fI¹}&HH4Lh‰ßz:câHyiIBŨܞjÉ“¶ãZŽÝmɳÅÂZN+o í4å¿j'[uÉVÝ©J±:™v ÆwÒg34vÉÍãàIm=zÉñF^ -ê3U}ÉHR|�Ú;Š ¯ oµ�š�I¥5 $ÜÄ8�‰Ú¨½ wÓDƒIÓ0ª 4V„Iþpør¾žI…‰¸QëÉdÒSRÖäì fV¢d¥ëɯýÐ JŽtP¬wvïI ]$ �GÕ»ïI<6_ ÆØH'õÉ’Æþ ™îÑö  DVMIáQúÉ-swÕ¦ 2ýIÓ(ñ±Š,¬ý‰¢„\ÊâfþI¤ÅiõµuÇJ¬+°:VÓŠR 6xVf ñœ~îžiй‰p ¾$Vê y)+JMÑ Ÿ ÉÊ>j¤V/;_ÊyéY�(¶Â o •Êm0c ÉŸ R©/ZÊŠU—†  �ä ”Ñoø×¡JŠ‚‚½¯i%~ŠÁâÏ÷ †Šåì�–œDÏ õÛVÁ' 1)JîlÝ'ŠîórG Ý Û— Wõ¹{#ŠÈú.X,Îd&Š«ßâ ‹îq'Š/ÃÖy M×( jG 8hÀ&Šïò¹ ßxö(,Š“ : 7,Jm«*¦}âÄ1J£ˆî3Ž1J¯  Ô`U×4J‚c\ )Í–7Š#$ÿâUÐ~7ŠŸ'ÊÏž ì>J,¯- GìE? 5�¢7/Ù?ʵixsÀ¨Ø?J¿T ëJÚÚCJc;ÀDB H ˜M „°¸ÑJ æ~c26‘ÞKʵq ]Jd³NÊFQàw`n}OŠ@zŒpŽ…¤PÊs:d 5%#þPJã3QÓÑÙñNÊg®Jf�pS åJú9È V ,’Gž �WŠl«Aã§¿–YJdÚíþÖ [ œ(žcHé`Êñï¯Q^Äu`J+ö$ ´D’eʪ÷Ç K‹ØvlJwVúžÌÓlJÖó ×­/nŠŽI³Úòá p µ!ü2‘Ò´r ˆàTà¥ÏrJu«:|½ÌtÊFT$mÅs õ÷ô>i¶÷v 櫵‚y´twŠ47)2&WtŠvœ�”KäwyÊp kÝEÑ({Ê+Õ×½p„ï~ °pcd®PB~ʳ2.çŽý€Ê¯N�þ5Oñ�Š>“éãìÉ€Êì@8~ Ü… ˜gæ!ûªt‡Jº4yÆ�¸-‰ŠŸ*ò&95㌊X ¯ J‹Ô�ÊJô dï‹ïŽJ]²²Ýg0*� yýì æ{¬ò� ïÝG �_ƒ�JØPâ 3Ì‘¦”ŠÌ´„ðZ •ŠE1VùZ}– ~hf;bî›Ê4tìvnß œ [?¤�¹·žÊ�Šº ¿bHŸŠsèQ šÐ9± Ê Š€kÑÿ¿¢J®^ø«údâ§Šuv{‚á6©J,_óm>ÝÊ«ÊT{³°‚ÚQ¬Êög'ËÇ­ÊŸ°f²±JJè-›¸8æ² …z Éa#³Ê™HIû3ÞбŠËNžóÁ3µ nZH«lˆ¶J(l¦›u¶ÊS8 ýP=· çR7�Q¯“µJüPHž1¢éµŠ¶ð e¸ÈÕ»Šô°Ôû£-µ C¯ ÚƒèáºÊ¨«!R‰g@¾Š%ÕÃ`¥”‚¾ŠmÏ ã ÷s¾Êöâ€ã?¾ {•λaÒÁ aK• &ûrÂÃÊ6¿GwŸŽ�Êóë¾~‹I�ÈŠµC'Œ¥ÉJ_þˆ¨4ØqÊJ LÄÊŠ¤íŸI­7È Ìy•ŸIñΊüü¦'—ŒŒÐJ»ÏT"U.ßPÑJPÎQ^jØ ÔÊÀr; ãó%×ÖŠ‹ÑÍ—ÛQÙ ºëCþ£Ú "&ø nùÚ Âàí g2µ>ÜŠN & Ä’q¨Ú 1ŽÞLézÝŠmö¢-âJæu¥9âÊãùúþž]äÊ&ýŸRy3èJôäÞ¹<›èJT‡ ãpiÞê %¶E Tü=ë ä˜J \ˆ£éŠ1î oðÎXï Ê1 qóP>ð ïï¡Ï«Ž¡ðʦ€·ô�|âïÊp’8Þ\1ôÊ í]ÎÍLòúJjâÔ m†FOûJgþHßžÛü Ïó˜�·VAüJþV?ø.“þŠP½ØQª¹úJLö¸:.e# E¿UGr³ý J?ï àJËê�\ f�—‹™Ð±²ß‡Ky„ +�hM ËÕ—sC#�H ‹Ò¾zÒ¨l� X­ðøº[ õÁ]Ïð5 Kõ»ƒ TX€_Ë=Þ Ë{E-cššu  ¦úÿ…‡K1r� ú²!ðKá{7‰È9¿ ßà!Ÿköÿ‹Ôs‰ W,Å‹-¼~ l&;ëKÈ“bº™n„Ëbô# Â<çiKcúö5 às"ËFz­”rˆ¸#ˋڀŠCn#Ë>)ȳ\‰&% �ÂÎMô¥'KÙ¸¡€ß'Ë¥Ž?’�u„) êkž á¡US) ZoêgX+K„"m f9–)-K•ò¶+B˜ƒ-K͑ӣ~Ù- üb�p뮟0KcÌ ML‚.3Ë«¦‹+Šç4‹­ïZ¤A3K° ¸kþ¯Ò6‹‡g5a Ò:‹ˆÖ]Ñl( :Kq½úh 'Çš}u@‹SZû�Ÿ]AK¶ÌQßÚE§C Ü�Ü írnDKM—;ÓEK‚Nô k°"IË= ¦ ’ë²¢JK• O[ÕúLË)‡÷Rì6ºMKŠòg­R ­NË žÔÏØYbLËSéŠ×Í7Q r…~Q yZ)â0>_ § BbÞaËþÚϔؖb vÝø¼…Id‹žÏV.=d‹ymšÈÉnÎhËBîÿ.NqLh‹‘|ÝÎ#pclËû{…¡¼]¼l˾÷ kP®+p‹rêU ÐfpK`}µIQwrËK Ý´©t³!@Œjmm"÷À™‹EŒ‰±î¤}OGLx"ªz†IŒÝ¹ÛÀ—SILüvÁ¹˜7KŒõ?�xjìÛJL¢P_Š%\eI iå Ϲ¿_QŒa®|ËŠ®ÄRÌðvp pÂÀX °ìÞ¥ ‚YL¦ Ýì‡nZÌdåv©¿8jZŒ•#ÈWYT^ŒÔ"© Ȕ§cL*ù-®bqÈcŒá"ó䬧cL &º”Ÿ§„fL�µàÜÀng ÞjßûD hL(Ü‘bJThŒÍý¡¡¯0iL}‡ö p±I7lŒÎŠvpÌËP\'|aËrLËg &TIÅu ®•ÀAç„Úv BƒS%¾D-xŒ+”�ÿÿ~ ^càqŒ’!M G@ž�Ll�˜éÙ%‚ŒëO®!10ÉØ„Ìi$G 2Šƒ¯…L*’Æn]A… ¬£J ô)C�ˆLõ6›&¾ ”‰L¹j±©±NŠŒ\!~#Û鋌 CÅCƒ´C‹Ì0Þóz„OÜŽLbg÷ Ï”{“Lâ‹aß&„«“ŒÞÀ;­Bó±•L•‘�‚eG•–Œ˜‰Ÿù�éòšÌ±°ت<“ ŒŠåÂÀõÖ_¡L„~º3 ÷~¦Ìr FØSݨLGƒý›°p讌o„\#ÄÄ®Ì}u]þ´7±Œº!?Ó‚¡W±Œ†‘ãs·0»³Ì3¯þ å¢Â± ]×Fý‚�.³ ÝÇcó£Ëù± üû\ÙW´ºŒ5† t[à;¼Ì_š«b/†h½Lt”•»Dp¾Œ�§Ø Ù9 ¿Lš�ª1 -ÄL-öåzEÖ¶Ä "_ �x…¨ÆŒÔò»d‰ò«ÆL¿�hFT@ÉŒÝ|ã€cKƒÊÌ˃7GOi�ÌLÝ©`  ÏÌ7…n ËòhÏÌ·Íuó ÑL”+8 ÞïMÔL€§¶ñ}²ÕŒüÄéÓ”–ÕLö%j;RŽÚ ³0@– ÛŒy¿.Ùw>NßÌmg†š¹�ÞàŒ–çMéàáÌú‘ðª×Ö!âÌí§ TäOã XÔ"ü=â ;n.}¶°æ ¦âV�q%çŒf‚¤ÍÀBëÌ”¹dÞBc:îLœñ׆pqïÌ=„þ!}±w4ðLßø‹Í~jñ̆í0MRO-òÌaO Í“îöLÀP½ç®ÃùL®út!…ðúŒB§Ÿ$«É¦ûLcÿé0lNüÌ¨É _M—ÚýL¢©J"*ýãíþL‚;Õ,µaþŒä%qÙï^�3�î„Í;SFSЩ ë…6 ÒîîõMt$‹ ?X÷ ÐÛË ôZM…÷“£�FËâÑZZò�d's$Ó�¤¨;‰`l o IƒPÏ!ͯ#’‡Ø$M¹¿‹ *ó'ÍË¡õvÜý-'�ìXG> 1î+Í>…11‹@š/�:@µê0�«ö²R¡[/M)Ðk!”§’½3�X|»n<ÿ/5Í‘V‘×~Z¦7ÍÙºT 5@å³8 ˆñ<P¶ ù9�ʧ¥è³PÜ8Í­øÔ éÈ <�þÅ8îzçö>MR :Të[BÍèJ!yÊEµDÍ5úy­^džD;W þ“}µD /O. ~K·F â’Þp}EM¬‚±?z®I ̯‚ÈeÑ›JÍ`Ï7!»Ç%÷O�[gÎÙáVSM³�ܨt‘ÙSÍXñ¼„J{›U�á‰aØ‹ÔoXÍþО(MW'Y͉{6ÃéYMo ] š[M?ëüUuøX ; Óûø´Ì`�GÒdó{n)a =ehv$¢úd óê$ù}�hM£7b�m°«i i«­{–9hM¸‡oȰkÍ�}®Z5p�þ>ÝêjUsMÇ( ͯX´tÍs€Þ Ç”BtÍ[Û,=7crx�É?µ–¸`û{MÆ‘+¤•{ MSú › »‚Mºd� 7­GñƒMÄØàíê߃ ¹ú^PÅ|ü‚ /þ«Ÿû„ I`3• ŒˆÍôê 3XŒ ]8"-aÏ��,W«Ì¿üŽÍˆ@–µC?��ׂgL—� ò€« b&wŽÍ¬ôÝ!”€’�¸¤Û :,Øý”ÍFô”>©I•�) ³ƒ!¹–MÂïůµkOœ��`à 7y� Ï}�¼á©�¡�Ša^‡„Qú¥ nk[ {ZÅ|ªMÓhÜy³<«Í$œìt”œ…®�’ò±01œ¡´Ío„Ê”˜jŸµ�o%¿‰vѵ�Ó»fë¿¶M“·¼�a¶ ^ÝN!É&\Ç»M¡#ü h´Fd¼M�ñçv¼�Æ^!@ ëÁÀ�òø¯‚LWÁ�ƒm` +àaøÁ œo· È`Ä Ÿ¨Å;Æ ¥g©†…ÇMáúÉ\†Êͳ™l HŽÇÎM.²Là§ðÎ�£ðÐÜÒËÎ Å.<ÂÁ�ÕMm»Š �×MvpÒûo ×�±Ñý >²X÷ÜM�úµÒæÌúÞMͽ^}yåÇßÍ/©I Õ³„GáMrµ©o `ˆå Ð’— „áç�jœuæèè £—¹æ,8ëMálúJ ðWñ�ö<èð�þ òM8n® R¨üXò�•t<¬o‹ó�Rcˆ—ö�õ' 97³Ã÷�,Ëpwa¦÷MAË55Ýéû vdüàÐhªÿ�$ì¥ B—²¡\Døª–׎Í=Ùá Ú”Πpœb† Ž�²cÓ:Î׎ŸÈ ùÝñ‘ÝÇmF îyÎ „oC¬ªÎ?.%"û7†ú�‚ž¦ÿN”G+†þ`޾¡îyM$]ŽS…¤z9)–ΰÀ°hÿÛÝ Îð’¿]Ý7U!NŽŸu™{"e㢨w\À#Ž“Øà“Xˆ"ζ%`éø§%N‹–BÜQqnrFIÎuãÌ¿ÒIÎÅth6öÞH�["ÕB·¤QÎ"í¦2•vSޑɄ t�„Tާkw7!UN,dºçœàºVN¬Â""‘“àK^ÎCÈy™N!`[mg<˜"ZaŽÔ½¦&s2•dÀA„YéÞ eΚ™T€âЙfŽTitYõÓf€î(ÏjiNàžQ!BÍ o`5 çZp9ÇþÅ›ïpË·¯ª^ÀrŽõ6+&ûkäoN|gÃ_ç8þuÎrü¥_ñ8ývâ—‚{ºoçxι4ÇÎ&„9yŽVùøö7= zާt i©Ž{çò«§t}|NŠˆ>öý3€ÎëYø!rã�ÎzÔ—¥ÉéÛ†ÎA.¡+6³ˆNã Ë 󴮈ÎÎä0‚¯ëHŠŽŠÙ¿3â%‹Ž„’yȶhœ‹NÆ{"b©ôŠ�Nt · h^yK‘ ÈŽÒ;ä$“smX¹™ÎžTF}ý�´E‹Çà ËŸÌ�È´>ŸŽâ®»³éR¢ÎܨE—ÈÉ£%¨ø<Õ)£ÎD`¶«¹&X¥Ž§s]@ö”Ø©¤¥Bo£°/J^lJ}¸Î¶¤¾f|ǹN6À�(é¹fº-™M¸zHƒ½ŽÛË.*e¿ÎX wƒ#=ÁÎ�%°!�ð ‹ÂÎ!Ž�¾Û®ÃNŒ "v¹³ÄŽì¾µÀ³Å6ÅOÇuÔ�yÇÎ^2v ¤¸ŒÖÈÎÑ+-V4QÇ=w{ޝ€Ê¦ öp� ËŽÁa~©ŽÏÃÌÎQ¯õ`ÚàÏÎ÷3 ¼Ù^KÏŽóü5&«š�ÑNºý ü€]‰ÒŽ�h $ó–oÓNdÂI?O£DÓŽEA÷ã|tÓŽÇ`óÿÄ›TÔŽ\¾v‘ã&ÏN<êúÒ‡ÞNã.(18ÙAÞÎÎJ¼¼ÔßáDü׃(‘­äÎN�•¬z¹˜å8} ú Œ‹äÎáeŠƒ$GäŽ{ÇX!ðƒ°¨èŽqë …¥_‡éÅ{+¡r-ëŽí' "ø ìNúÍÍ!¯éfQðÜÊ*Ìëä”ðŽDå“™ÀÆŽðå!e­ËD+òΚ¤Ì|,`ñõŽçF>ŒÆÒö`ùhB¦~t÷9ý¥4à¢ù©õY Ô�9üúŽ ¸Ñô0rþN‰VN” š®´¡sλHO Œ I°·È Ï�Y¼ ؤK5 Ϭm«ÍÍ× ÏeÿJ ¤«Dû�v²v^Ç;l©ýñ}?gG§Ö~fw{ÏÙŒ iûÈ(�°4l•#! Ï|áœ!FåptOÇŇ ë2�K6¨Ž%•OÙ‚“¡t�èú³¡Z>i�ª³Æx1k"�’ë· G£.OF ™�¤JA M2�FO=>Ó„éL!é`¶x¾ !Ï#°-iÓTŒ!_ñ]ÏÍd$ÏÝð’Öq'ÏM2u§*OÊ­ýÃn;h*ω°âr`YÛ-�éʺ.aïÍK¢+.Ouk;îF«h1· TbþP2�Þ€„쇄63�†»PĤ¹Ò1†”úË>E35Ï2*A¬8!LÞ†(ip:+~1]–„:;É¿Ÿ{cH{7¢‘Ë¥JrŒp§DKO¯æ³ �ÒhïJ�“" "D—*Oö§9ËÞ„PQÝ ßä ðP�#[E䪫�èsä´¥˜?±�W‘†þ"dû³@6n²ÉÈ´ÏT’;m”´OÖía üب·O1L¦×¤6 ºÏγ% ¢;ŽxºÏ�RÄ \ÚöC¼ÏFÍ cì¾½Oè H +žu¾¿>Ufñ-¿�:¤} »ƒž•¾�²‘7 ŒFQ€»ÏÙð00Là¾XK+!N߯�ÆÏðˆÀþÂmTË�ê õEò·Ì�|í9B2‚‰ÍOzHÉM€á\ÏÏv#ö™€�ÐºÆ Kª_²Ô&ÙC°;ǪÖ�.µüP÷jØÏyf­þ&òTÞÏË‘P°�}ß�ãu{ÆH÷âÏ™mçxr%ãã�°é®P²”å�cÔC :hßYæÜ? ÷ç` åÏoƒB_£¶¹æOâÒ‡!#Äëé�Ì ®”ã>ê�‚¡ÇŸêH³ëOË€Íù�ìOxÛ¥ir9wíO�½» ¯§ íî�o(XŽŸãïω„š’ñÏ}äóŽx¥«ô�–¬– †1çÆ÷©©+½® ø�u§M HEŸ÷ùQqÚœÈNïúÏ£°>›¦êÇû�}/8°·}üO¸52< ªû�ÅùçÅ×þˆèéòÚ“Šý�Æ�üÔÓÔ‡P=!¦"|"�ŽL‰.›ÒÚ3 =[Èg LÓmáµ Ðð ³ â :J ÐÚÀDr·° Ðçq˜Ý´íŒ P6± ¡T-3PbcœÑ½jШ³ª,…-Ôдã„=='›P=j *w¤IP‡¸¾"Œã}�¨G„\fˆP×ÈYéV�gÞM ­Óyt�JÛA—;Pb°<çÔèë�(vÓ -�mÜ�oDCƒÝ Ž ›|ŽŸEL¸œ¼v®øÓ#¢‘÷•bü(Ði ‡;~G)P”4æ øß�ï+ÐÛ›T :(þ.-�gës" Ý*q.�æ[H}ÁÌ.ø7ìç 3�haèÁ´ç6Ð�þ®tcöÉ7ÐÓ…˜᫃‚8ÐS˜ ¢§8�À&Ý~"‘c7� ­!0i2¨8Ðj6Ø!2w°>�ËL­š’‹APŠ› ³G^BPóîsfVéGÐ+Œ¿ÝNH�‹Dx1TšI‰º œ¦Š3KP¢*Äú,ÓcLõ!l‡‹MPÀ•ëe`ýËN*`#áÍt.OШ ÂÌ”ãPÐUWXhò`¨Q|…—þÁSÎÃ#lŒƒËYÐü•5a? [Ðc•¤ófÕ•\�²ØŸQQ]�r{� ¼A©]p!ÉV#Ÿ_GÔˆÏT]N`�3³4žº »`Ð;IÌBR)b$�zóbårhÐ˯~5÷ wi�AÊ�VG,õkЉpl�¨Lïm�/{ì[n�D£�hoPsK )ëÅn�¿âõöÛrPÏ3!߈ÌXyÐ8åŽ Í� ÿzŠ®Mʦ¿z�N‹7 c̨t{�>Ü´‡zе£¸=UP|™ë“J¤ÇÙP’ùpV.±”€P=8ZRr��/å7fyP¶·ÈPÇW†P±¸p!V{ukŠ-±_'ú‹�I|h"Uã÷‹Âq N*ŒÐ:)Ls¬õ#‘Ðk/²™äþŒ‘«§L’#˜“УغY'³›•P7´—¹-–�YM´ðÆô•нËã â4ÀYšE—S †£?ÜœDV sT�ãQ$_›ožÐà¾ðð?ŸÐÊÏdÞÉüa�På£ü!Å^,¢Ð¢˜ 姬Ð} ç‹~¦¥Ð¶µ�¸ç%¦�•Y qaŠ«�5!çk~Ú¬Ðsa'1Q”¢¯O¦!гÐX$òÒQ´ÐÁ¡-K¼Ð.�‚BK$z½�õ¾¼*v{·½Ðž2ufuàE½›Á�ÔsÆ��.4"*‚p¨ÈPêdlrÐ|ÈЭœ lJdÈ�{‰0 ÉW€ËÐ$zÖ ±lÌI< à.Þ¥ÌPDÀ±ÐÏ6²Ì�8“^lÌuXm‘×ÏTÏÐäå9!ynK¬ÑÆžëÅ?0ÑP~\z §1ÓP²×Ë:OSÔP.¤}1ÊûÕÐYÌæ %Açã×PfÄ0당‰ØÐ7/¡¶ìøÙÐâzø²š`Ù76aoCuÛÐ}*@'ªN_Úõ[ª 2tè¾àG13 ôLÅâÐ’—"±Š±›äæÊ "ƒîoð�L57+óœ‰ñ�MZÊËYaùóé¶6J!ª6ôÐÚ1+¿ŒhõĘB!>†•âö�)-ö[ ®*þPÛ®ù&ßè�Ä’$ö°Á ‘¤Í<î¼Ä Q>©‡ ÑZ¸©ÎB‰n‘Ç„äXlÑß� RZ QQeø�ذQÝeéð„�m¨`´p¦õD‘üG ? íÒt_hÌþkÈÑ`—öàÀØÛ‘&Ý ÜÌG$%Qª"ÌÖf'‘—šC†ójõ)-N ô»)Ñ©ZrÆÀ†i/Q‡.õû1¬1Ñ‚_€Wó`�3Q)�é-S5QøÉ¡Î_¸5‘‹?çý  5Q:Ö\b99‘rð'îâj@Q0F 3ãÌCÑÿ³ú«ë CߘÓŽìxNGQ($«V«VÜHfé1 ·á ”Iѳ„² ã€VJ‘:ë ?$JÞNv.\Í ÚO�¸'e*`Qcek”êSÑIÈ8Ñ�›S‘Ýànyçg£Toà ‘u~]UQÇûˆŒwß ZÑV×V?oöZÑMÚS™I!ã[Q6µMˆ6˜±]‘H ¼0<- ^Q Lº$hYâ_‘•aKÅ-_ºsÝ7Òc‘î· ûƒ¸Gd‘²&ÊUŠ¢Àe‘QF°1ùï,g@æQíqJ[iQŽØþl ìÛkѾ¨ÈC!n‘?•:žEoѼ573_‘pÑ)œ Rk¢esÑoóõ¯Ï2t›¸ ^ÆÀÿuË‚÷{ÂÄêvQä§!Âô¥|xQ/¾ CSø`zÑãÙ/�[žë{é">þ1ß|‘ò�Yù…ñ7~Ñ6Vp½΀ªå vEk!„‘prÏJ>ËÙ…‘|ô.!Î}ù†Q-/=�7‡Qóú[ê%å†QµA&®; ˆQ Ê `ŠQN¿™§8Hˆ’•ÛŠ/»$�Ñg´´P¡µÐŽ‘ÛÀÛ ƒÞ‚�QÍ6u$ø1�‘7ÃåhC¼”Ñ#I@(%£–ÖKHù)7J˜Qb¼Æ éËrÕ˜_íl&´E˜X¾D®¦ûÙ›QfÊ;oø,œÑÕƒ� º=䪛Qæ#Ö�ò�О‘¥jÙ9ÓB;œQŒ’þl<˜‘HßU"ÊŸÑì{»;…vœQ"h ¥ï'f¥ùO6 €}ꦑHòƒUûó¨QERæýÓrÔ©‘K'5R C«÷>ä!) Ž®O46砯т/I Pºd°Ñég xÀß±‘¾mòV¶D%²Ñ›Ë¤G3 ±Æ÷…Àþ]F´‘×P(ë QͯÑÛlèÜ*¶Q¬Ñ›J˜ƒ—´‘ˆ®,vñ�ȹÑ2Ó>HøT½‘Pé7ƒÙ’½ÑñÝ=T"5¤¿‘Sw¦òD»À‘‰vîÛ–KÆÁÑ2‡#‹OºÅÑ<ð#¡1-ÉÑγ+C”bÊQ¹¶¦|Œ+áÍÑ–FÃ<×ôÃÎ]ì9¿ÁOÌÍQè±ôÞÿÜÑÑ }%7ÑÔц2÷ND7‰ÕQ¯ïŒ3�”×Q·�£^�hîØQúǪ?ʦ×ÖaÌ…ßèÜÚÑ1«Ø²€gÝ‘nÿî |Â@Ò+UzØêRÁµáh ’`â1o÷÷Ÿ’Å«*�,0ø’í¥77W’°D0Œ|-R-17Œ<ç`’¬!Ö ¢ ŠRš RòÃZ’4!Q ª’B·Ò¼°�ò`´$’ã­;$2hù&Ò—ôËi3„' ¾ h·‚±&RñÞˆ&œ)Òz® yÆï*RA]N‹Ãö�+RT—Ü v`'+ÒQA+LÑV$*Rh�Q·2à¬.ÃÔžèê.2Ñ8ÛZT|5’©9˜‡ÿÈQ7#†mA8˜õl(ÖäBšÌY-´ã'BR¡‹!G×£B’Ѥe"£­jEÒtHî%h'FR5?‰òû€ñH’2-îz9›1I’Løä ½ã+wI’å©ÜoS KÒ : ܺu·KÒ¾}0 ˜€0LRbgëÁ¿M¥QGR°5Oj  2DX´P©´9 ú듹Q†€Ë»º×Rè±'Å·°çM’¬ñJ ÏJLÒ„ˆì!ÓèVõñUe¬TäX’üoh³µìZÒ—] `'c»`Ò㻦èÿ¤cRÄ’QÕ¶cR†ÓjR^cRJ Ä“A`ËfR–íËÀ!Ò*fÒvL™ ßþzÒhRéF5†ìÈh’Ǿ°Äøîjlž¬öNIi’2†(ƒ˜bk’å¬öê–ˉh!›ª5qÏnÒ­AüiëåTo·ÎN@œpFc 6ݲšpÒZ^fap’ázô! „r’·Ùöê6± k’þe»éûâps’D]U6v’iý´i_¦wÒó’ 3OÑwÒc¡Î\¾ôeRXFüý—­“u’•ýŒ"Ãæ|RkãS ·’Ÿ}’P¡@«ŠÑ€’‹/YXÚBƒR ©÷¤/W‡ÒW;oĬ@Ћ’ƒâî˜È.ŒÒ1÷XÀ5«nŽR¬(ß< Š�’ƒI×7�’Pæü2‡#Œ“R q ¾Ð꥔RÂG›½QAƒ•Ò(�s½¯/Ò˜R§Á=ËWS˜R\lx!¹‰6œR…úX4žÕ�’³¸Ö•ÖÁ�’¦oΦyf=¤RMrß²gkX¥’crÒkÆ`䦷Y›³ $à§Rhµ� 'ŽÀ±¨ÒÝž[×äðÔªR.�~% «R‹�à»úòˬ’ÐìE'to®Ò›-—T¯’ÇÊ(eáþ—¯’eÏ”¥KîµÒy­̃9Œ·Òñ×_äit¸ø:PE4ù¹Ò5УºÒçËžß·tÛ¾Ùei!j§óÀ’ï¡�8ŽùÂY¨¦ð>bÃÒnß| ²L6ÄRTÑ7@@ÃÅäI yYþ°ÆRºgMÎAÂÍijIšwÐ�È+ÎŽóÁ’ÉÒʶÎE¾êÌRÃC ËöõzÑÒÕZcÙÈÒ’-5 t¿ÒÒR‚NÁ˜6ÕRºazÆÇ×Õ¤LŽ~]Ê5Ø’<ÎWBÚ’<²åÝÒMõ%w‚yá’$óë  ¶ âRÕqÕQ’»½äÒÉÙ^µX+åA¿F °ÞMäõüþ�×û#篊çl˜n)ëD°’dìR´™Í7Ó5É풾ƩJ6òî:› `Ã¥#ëRÿYá°“ª«ëR’ø£‘ëøñR¶ïK¤Z¬ñT¤oÒ œ`õÒ0Üç‘}¯ø’Í)SΑ-âù‘.“v�úÜûïZ /àšFûR[ŽôPŽÖ“Ìÿ)t^}¿�$©mÝ–…‰ éó[aŽß´ ŠôÆ0T™/ iº´7Ó·Be eM� “k dz�)M Ó7Ã÷w«,k S¡Û¢hÖŠ St|›×�'; Óbܬ:NÓÚÛ$Çí�ÓVl{¸“¹±²¢¿waP×”PJ“¼ÕÇDÃþæ“÷ÀŒW=ÐBÓ§ðZˆz¿n“Χ ‚%̃!Óz&3"¹ÚÖÌ$£vRêX(Sô!I1c)Óºyúu†Võ.†¶7§2€F1 Î *¯`3“ Àæù¶D*5 oÌ@í†?8SïQý[ÖÊ<°¤ä�¬ô=SÊýÏ ñNz>*™ Úˆ¥)?Óøç 8žž>S•zŸ@E“'öÀ6Îè‰JÓð…þ¾H4JS<¨ à ˆL˜ªD¤‘FMS… Ä'Ò«VNÓ­Ùt¾D/yOSxÓ ãã(ÂP“MÛ)ð¹%PÓ•› dTNtvf×`Jã ñ‰ˆuTÓ9cm¿•US\nÜA>cíO“Q› �û\\\S¬ÁÞKÌm\ÓP³jBs½\–Æziñû˜]Ó/]f5å`SŸ ±„)Üi“_)@ІC”l“W’^sè5m•Ni 'í%oSd¯f LeqSðÔÔ[z{rÓ;éÐr#ˆs“ÆiÙé™Óu%ìºà2×ÖvÓ9‘Ä5kvÓ–lO!W;Cx“×–œ¦Š~çyS î ¬yzÓèÕ®’éú}S…#k·x}ÓM"@ªFI˜Ówá3ß‚Qñ�“ BO9ƒÓ©ÙA�ä¿eƒŒŒÆ+�N‰Sv"ÛðZ�ŒÓ¬»{œœ¼Q�“´Ã‹^óD�Ưé�ÒÀ�“ î€ûå9‘SF{ñ�…^,’Sðb�;½5s•ÓÕ%�pÆp˜“ 9ŸÓ œ“Nñz³í�Ó'a�£ Ö¢ÓÍiú*޵f£S Ç[yŒä)¦þ-Ù0ZVæ©)Ö,0féþ«Ó—LßK<—«Ó�!KVøm¯òo£63 ö±“>œEsµñ±SojjÏÜø±´]9'© 6µSÐWk›èÊ´“Â@[¬EŸÑ´SO2!ñʃ-¸ÓîS€ _шKºÓŽÇ»öãC½“UT:­¸¿Såç{Søöe¿Ól#©n�ÏÁ“õ'× V=¶ÂSvvF!PZîßÇÓ ‡¬ÕËÓ0RÖ°�ÌS"ªÛ»ºÎÞÙ�œX3¸Ï!¸˜R+MÐÓ6í××}F•ÓÃâ‘5W»rß“hFx{{�à� Ö¤Ð×däC[*ÙÒŸÐ䓱T…"iNÑ‹æ)ÙÚsø ™ê“­i}%oßêS/‰¸¥Djìùfu °Nûãí“ô\-ò:"YîS €ïSÍv« ¾h/$ðùI7PXèñ“\¦ºwšó“s œwVôdPB‹ 2÷Ód»ÌÉcïúÓIœXÌñŠüÓ·40 ©-”,Fñ M‘7`T¾W_"|e]TýRVÀžù&Tþ�NNµtÔ8œù Àá•c”vyʇ³* ¢nßr¶Ñÿ T^͹LØú ”Ê%žñ›”ò¦Š D�KÓ”ÌÆ V§±Ô3C\è›u†T²teéD”ü–{\*ì‰ Ô§Æ"—‹˜ÓÔé?5ÚåªÃÔ[•�Ü#Õ”¹Ñu— bT5?‡òò§”°ŸzI¼�T‹j lý�ÔÃk .<èGØ}`* ›”/"a.ë8²`t>z TËþH ÑÆ½#”XUz¬Ö$Ô˜¥Ggż�%TJ¸D¶À9$ñ¿3œpj*,nÚ8*©ô%}èÈ/”~¾¨ßÂ%3”Äù§ùžT4”M?ZºK#5ÔjÆüó‘v6´¼ÝÎ�9T&S"-ôåâ<Ôš¼žI#¢ë*º# •|‘ó qSaµU6¬§‹H0UUëŽ/^º.‡ ¶æÐèY2àL…‚¹´-ëìq Õ˜hIÎŒø!•™ƒ’{€%"•]J†²¿/#•ÔúQ íÜn $$˜¶ æõš!Õb_GÑÔ”&•AÅo¡5(•ÍùV"ù§)Õ4þ" ¼ƒÌh.Gâé¡5t4/U# =€ïǧ/U�1Ö?0P¨.‚m!ê.2Õ;ÐBLJÜ4•$©¤{¥ 6Õ[à§LfVЉ…~à-¶V-i×€nV+¤  ¥ñØ3"–»žå¯ÏÌ)#Ö[,ûÇðÌu'æB® Hpým(Vn…t‘ú‚,VßZwÇ‹,V@ ùš9¤/–ØV,Ý9{0gYr¤Ÿw2V]¯næû6Ö¡€fÇÇÁÜ7–`¸•œ››:–,tîæ˜<´YGMÍû=–¦táÖ´ÿ°=2Üͨ´BÖŸe³®C\ÙCV€Ñ¯ß>f˜FV%L²K|ãÅFÖ0Z“ ÐÃÒæIÖÚ#ÌI€„P–Ë- O7ÌüSVÉ{UÊû–S–½2 4FtÙUüGjÒÿTbWõ.ž ô§JYÖSm[Aj¾ZÖÊÅóÓkZ–@Eg×ñC\¶j à†bE\L™{ qÆoé]ÈG´\•ö_–ÛÄÉ@h jeŽÖë�l ½Á›ÑÏl–.¯Z F_ƒVmV¶3 2¸dp°\VÐ÷wGp–£Œ‹—!:ˆp–våǪAsV.`NUlWs–‰Á ÁÐxQ´Oé)Þ }VÀUê‹ò ¯„–"¿ºdÍ}†V¡^Á!:‚Y†–p.÷!°Òsé–0a*ˆA, ’wÁžŒV\Ò¬1qŽ–œXÍh,'�V>yRïc�`�Ö^� ÕdÒ‘mîóä0ËÜ�–—�ã!-³‘�V] 4éÀg×”QFÊjé —V௕Hª_›–B“ÉóÿDœ–B×½ÇRõœ ¯^'À`•�–¥˜ÃD¢O�ŸÖ³Iã+4øœÒ`t¨å¡–¢VtÆŽŸAœs!eÁ¥–(NL ¨H™¥ÖUÀ¶IÕ÷ §ðñVb –­Ö JèˆpН–7é :d ¯Ö|¥œ“W±V㮳 1šò•°Öñ·î*+k�µ–應ýi>Š¶Ö˜�©~ë·VÍz�ÁÌ·VìžR§ˆ[¹Ö`©AÇ�ͺêE> ±GjóºÖ]yEz=û“¶VÓóÒu"]5¾ܱŠ%ð>ÂiÊèQ9Ã|. q^ÇÖn\€ã†cÊ­¸ø —6ÊVŒû!zÐ[MÌ#KÕ“>ÖÖÛEÂùêQÚÖ•†-fÚ«ÎÝÖ’K¨õÉ Tß–�Øq÷ÙºàÖäDÏ ÊòÕä>=x| "×åÍ"A4¾ëV-:x  È 3CW”FXž!+ÌWf–#i±Ê M%¸øîË#é:c$§WÝýä!šR¹Ùƒí>"¶îhbוlV ½ñ®ÂUC9b| W’¹(µFûÑ׬Jm8à¤W¶’è ¯2¨%|Í e®AQ¿Ke´gWâö‡¯½E�h×Í»÷ ÊÜ9eW™{gù¸sf—êé)"b³6kʺr¹\l—ñ“\ÞÁ(q—®§F Á ?,q½£“§6s W Ñøou¬]# ®8jxF©^ºï {×Oú>2M°}We.£Á÷~לª›‹�Ýó§!„P¦Í~×9Ã^)¬˜�ý†mP@ó‚W×^Ãøe¦&ƒ''"¦ÉNÚ†^9KH˜ê$‡W(4£�¾ш×ÉC¤=ðò�WKÞ o}Ê�—lC ,Hö‘— ·0jµ’W¿ÞZ_•3ì“×Ð}{Í`”×&^€µr–×W– ©Òžð —ÇИ ä6 «£×5Ùî(àN›¥W™ÛøšÐÃ¥×)9TYåme¨/fÈ�\%vªWšƒå"ßã®Wð_}ºJl®—ðÿQ§¥xF±o!(d²æŠè:mœ²—R‹"…\ú‚·W¼Bû•‘ ¸—�”emk1è¹——2ÊWÝl ¸×NERÚ˜ÎV»—þS åRWÁ¾Wìôµ¹dT:¿×6#ƒí=”ŸÄW˜£àä…Å×Å]½ÀwϼÈWá7 ÿ¶ø�Ì×z9ð i¤šÌW(mzÞðjcÒ—W¬Û!qHÜÓW€sNŠÔíŒF L—'ÔWš¨<—<. Ô×¹HsÛ°WØØ× ’= ;¥ç×Ú× ;�A®¾ÚW �6 §OÄAÞ—äŠÃÑSàWÊýçïÓŒiâ—›U‚èåä×�P{ +ahçׂŽ~¨êö¾é×>âù¦)¾ëW™6J½ˆBwì×* tÔ +ì×’Eáòú*í—Òô¡®(*]ö—ŽËZ©ÉbúW(›W U)¿û—_2C5œ2ü—/�UAÌüWBš†¤¯þ—w²¸JÑÀÓý—NKw  â…ýfÊHnH ÿWó¯,À´¡m˜ã‹ZÕÎåþLÐ_á Ø•’r®Ž¢¥zè Ä9˜cÐ�Ý|¨ØÈfd~%LûØ´‚Gzéï˜ÌF:`k!Ø#t=bвØ^ï䯫²mý— lãÍßÍ»˜.œÛ·¦•î“äë�£ÉX0§ò”RØn:ß­ø¡äXÞ£÷¥í-™XD£ r ¶â{¦ÃUîÁZËpÛDšö—XTЉ�‰{%ØÂ²îJ’�U&˜†à0Š'�‚ã?{Á´)ÖÃKGS+XºG蹜 +.Ø]£zöé ÿ/Xe§±ßõÐ0˜JâÚ ºÉQœ1Öã<IHEÌ1X`íþ 1žÂò1˜Ö8,«ÈÞ0€ kp:¨6˜#ºŽlø¡+6˜“>‰'¸�Œ6XÍúñsŸ•:˜¬6U‚–7<˜y›4P<%Qí:om�>Ø“ÀŽ˜¦–sBX¹q»±UÄAI˜e¿£³t/®J˜QDDB‡K˜ü�r$-MØt™dÃéOX ñè]´sRXÓÔ˜Çùµ­S0*áãUvCÃ9/œtVàê6öz‚‰WÛ„ÛÇ�l¥W†‰EHéÔSY˜Jà¨ò!Y–C™=$]‡�Née^X_lÿa‘¬ _¡˜Á ·òÒía˜,û˜  Ò8bX‚…@d<õñc˺ \Må díú hÉ&÷aâË?‘åEf$÷S¦’}kX~àÕ«½1âl˜޾„un¢l˜’Œ/ aü' oXV&� ³Š¦ho£âÝ>a¨*r˜ürC@Í'Ðx¸.“ã^¤yÝq—ä=¸©zU©h!e‰O{pÕ>w-Ñç|XÿÚ3í³�{Ø�¿n¬mqr{˜¹áù‰÷‘¥~n×­½î‚Љ° žú[ƒ˜ §Ìut ‚ÈŠ•ñA\…Ø“Z‘I_ñc‚ØN{‰Ùe‡P™W¬»Mí‹X°'DL?`†ŽXÍ"�”îê�X�Jì¶\˜À•X1ÓoÏM%–˜a) rÛ†ú•XÉí™ܱÇ͘XóVkþjwÛš3»«S˜c›˜Ó¥öÔí{šX€ŠL/´× žØsŒ”!¡¥Xºí� ”ŒÇ¦Xò´pmt¨Xàœrô¡v'©×ý²Éª˜ûPŠ ¸pÑ’­˜©wb©ƒÚ¯˜b-O¸Sܰ˜1{‹¼¿<𰘟²ÜSþã�¶Ø�i•Á:Z¶X{ÆHد”K¹˜š–ªür}ºXKù Ç vã½ØæÅò!ª5¤òÁ0[ŠÔy ÅØ}‚�5W·Å؃™Õ Õ?%ŘÆ)#.*IÈX‰‡³WÒªÉKªp ?â?Źø8ãäÊòÆX )Çõǧ!ÉXVZ½çÖw0ÍØ+Ó]Q¹ŽÎةР„ATË08ì †Mð kæ®I×Xj‘_O÷íÚ˜™“' þ~àPÛØ*"K Ö5ˆðÜØÕŽ)Ú,Þw¬#jˆâØo烕•‚æØ‹Äv¶Q„˜èØó¥É ê�vûìXÝœÆ'`^Oñ›–“ À‚‡‰ò˜Â-¬ áÜÆöQ}J*Oˆ³øØWÚP©Ïîú˜ Þ,pýØïC«V-Þ2ÿ˜¯¨ lZÿ[™o5bwgçXYº¬ž£”÷é�Z—Ó¯™D¢ ±`¬úº& f¼'8YUŠqó‹ãr Ù¶Ø —ÙÛø Y�éWéÄ^¨YØr] ï·XNê›/@VL²èúà1™Ú : ç�ÊZ2YaÄ:ò¸-1ù²,!Rë6ù?YƒåL&êZ*@™@ê #\LDY¤�˜sçDEYǕᣴͷEÙß\žv#xªFÙ'Ÿ¨Wr‹HYûªÞƒ=–gH;Ä"® ÛLY¬žNÇš¾QYi$~ý˦ðR™ÅB ´ëK†S™šõwììÁ˜TÙz¬ê‘Pˆ'UYèPÉ�s·2V™‘“,и¥FZÙ«þ†œXø\ÙcìàxQ¿t]Ù$yò·32³^™8<< êRÖ`Ù­”—™ bÛ_^~£= c¤³ìêô§cPm—8(¸c™ ä³)Úï1hí©ÃsÛƒiY ï$pãTj’àìZŽnÙÇ‚¿-ês“r ¯•ctÙº¶Ì¤Qw™j¨Óú +Ž€Y…IÊåÎø(ƒ™bÌzù6z„ÙI0ç„™Ïÿ "Ö=S…™{ð3=ýà܈ð&¡Ps{‹±èË…ŒÙüUº<�™”À#Ó\MŽn ~ä/~ä�™·ó\-F7‹™iíqÚó@–™²lH‰ã ™Å»•¯óËLœÙ€wꢌ¯�Ymö–÷Z Ï�ȳ<wûµŽ ™lÆ26áΤَU._ÎË«™b(;ÊzU°™lŽ­õycO´YL³x`uï°¸Ù¶m"ʲ�A¼ï�IÛn¥¿ÙMÝúa3®¿ÙѩՖ#°À™|È*Ú€¿YŒÝÇ&uÃÙõ#?ò^ë PŽíÅ™7y*SÝ3Å™ô£û‘�²ÊÈÙ¬žh!ÚÁ"üÉVE×§�TÍ/ý©®÷29ÍÙä–bµö!�ÐÙ�&ç îÁb ÕÙx-ˆ¦ )†Õtÿ Fnsg×YjåX¤Üç"Ö™Óm“È$eÚíN•¥fÚáù­Älì!ÉãY¯#gˆV3è DZàÕéU®ªëÀþë™ðè * >Àó2K΂æˆôÙæ=€ &ÑõŠ* ¤Ì‚ô™t)‚^Ú%]ø™%ªv9KÖúÙyc !Ö}¢û Ì€ã§%üY”J ð¿npû&¢Ü0Ù¢úÙ× «‡] ˆÿ­ @–xýa(á|ך¨}ùýNZÂRÊ©^ÿÚt¯rª’À=ZôB�ƒÙV– ÚžüÉõ� Z;Ÿü5ô„ Z) XïWáÚ›Þ°šˆNà @щ^�‘¡gÚÙh9?Z3Úˆ–LmùU Z? 6mXÌ·7´ ÑTZ ‘ìí«ù®Úd8!ØGaÚ§ œQŽLòZÙâ´àYVZ÷Ã@Àä!ÚsK¯MÑ€6"Z¶%´H"ç#@6 >$-¼X¹\8&šDi<k‹;.Ú-}å £.ï¿2š/´Ϥ×89ÚÝ�¢N«)?ÚÜQC"N“2Ý@Ú‘¡^üŽ|A°°ª Êã²BZØ`ŒÌW¡ZCÚ)£ ŸtO�DÚ¿žê¬Í¼ø@5{"Sóê´FÚ I ¸¹k•GZŸÆˆ"f™YQJÚ@­ü¿Î3MZA–ÀWŽMZ4šÜ±{jÝV•Ž Ê Ÿ„WÚy_ Ü £Xš3ž¢ßáXÓ^Ñ\døžÿi_škc÷zÝbšSÃ2 1átÒeša‡"¼‹n)iJª í©HjZѶ‰Ç–ìlÚ†8°‹c£mBucö�^ošaæ¼éÔ pZJëøóršHDËbˆ` sš@í^þ¢sÚêÊè¡Ü•štšd!!é|Z0"„¤)M~Z2®ðøÍq� ˆ, –�­ÉAX½?S‰šâÞ2þ�ô‰šKÉ éŸs¬‰šÖÕXmnv.ŒÍ~ïU‡ŒÚZÞë¬É(È“‰úäé᜕Ž[�Þžw§–ZǼ™ kžœ• × ðK{¹™šîп RyZÕœ}Kî>«¯Ì�šÈQ®I:§ÆœÚ¹˜9pÙG� šztsÍò¢šS:¤yƒc(£ÚQkKÍ'4£š¿Ô9²% ¥#.þ5Ù¦šÝ6 ž«˦šÍÍáúR¨Zíd�yóF©šI×€=ä_¯š¿À ÁTrN°ÚíGŽ'|µZª}Ñ�Eó“·¤ŽH·£8·y‚ Û ‚©¸š¶jÀ£W÷¿Úñ€ìRíI=ÚǢç :¦è�ÄÒ|f%ŠOEĚѵ Añ ?ÃÚm\ŠËÇ¥�ÅÚÞã}-ůʚÆÂ¡Ê«Ã~ΚHtg zÛÅ<ÏZ7#37…ÑZ#ÿ� �¹ÒMÓÚ" *»wÔš� ‘onÇך´*Í ÒÁvÚâve8�Ü;hü�¯®ÜZĤÈôó°:ßÚ… … ÏåâZã@ïÌKKhèše}L =f9éóU’*¾�üêZ70®ö7d=ìÚ�Ô…Üw‡âíšÄ åÔÙY¬îÚqøçfsÄïïZgyÑ–áÎóÝSIêÅž‹õ.­þH-wö§ä× Û¡-øšc´I ÑŸA>ùš‰K(Fc  úÚq§ [θ�ùZwf”«¦vüÚ«—)Ô!ýZ)œpåóËü6:·µ9($øZ O9 àªÛ.¨ŒD¤–Xa.Óó�ªßÛÿ÷ÁV(¹úÚ~é!-“y .·R|ÛWôÂÈ$ì9[QÕžêLó [$á Í«$( [ÉRm€ ›HÞþq ?¶˜ ›‚p¼^"Úr[ËÕ(*1:— –‚Ä ´‘)Ý |Ø|‡Ò8éÕ2›�š "O¾º›[‚¸ÔRÔ[!jfœPvGæ`›“–>[úëæ!óBù¸Ûs1™Ö~ÍÜÕ@+÷Æn›¯¥V ²±wãGÙæ-ÛñL­�Kz[G“­;¿†× [@ý“x¶© ã1 "¶yºÛù†Z"]ýöJ%Ûe-ð˜šÔ&[U�S š±R([/ïe«#¸å)›ä†}2mJ`*›Í„À7ë¤*ÛÕøgÞ–l)Û“';Š£…5-› Å*E¦ =.› ¹¡óÐä,[@öÙ/Ïë¥0›zá, ô7~-7ÿŽ£õ˜3›³Ae±ˆÕ4!¥}³¬þ6[t™qI/89› ü›V#;Û+Õn"†¯\?ПRЉAsÅ ÓþCÛ`Xa¥A‘F�•¦ @­�GG[ž™QLIÛç¾bÛ|øJ[V>‘ Ù§L[·€d'ë MÛæç¶˜®MÛy, ­§‡‘PÛ²8v†d'QÛë�ûjàä)R0öjb]¹SÛ.þ6"òjV[fÒ,l¯\Û»d|•�¤;]×;¿ ¥h*Ô^›«|ƒ’Ò_ÛSnYDýxJ_[¸,¡:.oªc›c·º!odO~e›]„Ô\VfúmÞ�g›¬Å*˜íìh_käeêÿ i[ôˆM&ú–fºÍ¦ù–M0k›˜<‰ˆO ¨l›ŠˆÚVòym›© <¨GÆ¥n÷‡Š×ðq[ ¸ß89pžr»—Ï €·ešuÛ÷¸˜t"éUwÛf]r¬÷aÒxÛ”†Í ÐÙ&pyÛ”Uìt•ÿzGl".êU}›dÒd¨'©¬É꬀[ýS…Îî‚¶‹Ô$‚£öŸ‚V†$x¾ ´_݈[�4>B¼™‡‰­î%­éBf‹Û'®¶A7| Œ›;ô!e½ž�›Y“ïæ#û�¿rNbe®O’›FÅ¥2²Ê’›µ7”M·"%’Û,‹ _k•ÛtÎ m�£–[–>^+S,—[4 HÜИÛû0½ j�™[’ˆâmš›×ŸÛœ¸Ñg››&Ç“ŒOÉœ›ˆÃÒ!ÞŠ÷›Ûw²öcÂüœ›Ü¦¦ 7Aß�Ûs|Í% ŠÝÈ A¤�[ƃÛ‰‰]¢²ûµ8󑣞I ŸKüü¤›+áÓkï:8¤[)Â.b?3™Û�å~°–%Úª›Æ$üè7Ÿ¬ðPksæ �®ºã`w¡¯Šìpä)¯›—-Œ·sÁR³[Úy- ��Pµ›f.¤òkµ›ÅH_©ÿ¤¹–ìö¼ëV¬¾Û:B`|a�“ÀÛa½ªÄÏ,ÁÛQT?^c„µÊ¬X“i>ò›Ë[‚žý»rFxЛ>¿K¦ ~ÑÛÝ_)r¾j^ÓÛ³vµD°Ó Af"¬ÝCÕ›œyp K/ÂI×Ûû^IžZ{Ùû|àB×)Ú›º ªzr­¸Þd3cìÝ©»ß›ÊH‚!íwrÚä^‘À–¡žä‰!ÛÁñ²Úæ[�?…4ŸÓ&æ[°Û™“Va6æ[«gD§ÊŠaéϨ¶º7ˆ3ë[b‹ qžC{ìrÑÃ>¥¯í[ñ’ýŒcüì›ÃØ� ’yëï[Z½KA•ð[¾‰ Úï¥ôìt`FÀ»míÛ[ŸeV>f웓žt¾_€ôÆÏÈB…g÷›eMÈÂ’\ÆùÛÆ7¨¶¶íLúÛÍæ¦›Œ>Ûü›#ëA ÈKwtÜaM~ VnrÜ{f z(C�\T u5õ² -àm¶öœ‹9¢fÄ&÷o" 4#ŸœœWyÉÝ%ÝXÇlÒOx \õã»* œc› ¢©2# ܯ>þ Žöê(ÅA»OŠœÀÖ ¹H€ôÜpÿT‰{Ÿg\mŠõ EÞêƒ܋΢¦9ÔËœ[›G]±ê윦ډ l, ‹Ü؃ùµûØõÔ§ýòxØTö4¸w\ÅCƒ 0Ü “¶G-©œÙç�]å6¡!Ü_ä�|³‚"Üåƒ�N�„æ#œkýýž4lš$\"'Œ+ÔŠ‚"Û7[>ú!&ÜæŽ(Ü((B‘”ðRÀ+¤6¨æUÜ,Gûò × ˜/á3_{·¬0\uyò 3îøÇ1\z¬—ÀäŸ�2Ü®Ä 5`YI2œn|æÂT�&1ÜœÞ�ÎB:œ B{PÊðÍ>�½óØ¡…T?\FuÛ l ÒY?\ßÀM}©ü@BÜÕ*¿‹óÿ%BÜýù†I”�WFœ Y ´¹êFïl N"'wHœ;Ý€*íæ°JÜ@‡™ ‰�ƒLœ.B‘4}LÜ)¢¯âPÜp' Üš´R‘Ùé Ž”V{üÊø!×VœÊ  Óúš1[¬óç o—�]\ähS³C¯`œoG°°âj`œ…š­ÖG˽d\üÔ9Iõ9d\aŒ»�ThÜaæ™EÚ-Çih,» å×Í k\lóâ ¡Jlœ­¬€ʬ¶n\—1÷¼5sœnÜLà¨ò`~”qÜó§_ûX[uœnº¼ ½'ô.vG€!ð„•uÜC² <é¿zÜ©ÙØ •Ro{\ø[bO£¤¹}\.ñƒýõ&}\®ÇËQžqÖ€œÖË †*‹‚”ô¹64¾¯…ÜuMÆ«·ÜK‹+ý¹þ–<Œœ6¥T†Ìt’w71?“œX2R•àw“œ“VÔ™úH¾•œÔ§]4C—Ügùx²Û!˜”{õZ혭]Ë T¶öw™œ—¤FÊ!k›œÉܽ¨‡t›\7{ )ïAiŸœrÄ�‹ÀYÇ¡\�¢š ‡x·`¢ÜhW$€÷T£œ'Û ‡îË£:R•oÑO¥3@ñ/öÝ¥¡Üî«!¯‰ ¨Ü\*@Q6ש­½ðj䳚­Úжùh®Üh%á ðv²PP‚7,LC³üÂê [-y´´ý“ͪéË„µã}í2Ä?ö\eÄöQJι¦Óš Jˆö©¹ÜH¶è!ZŠž§»ÙŸé bͽ\·ãæ`.‡?¾œÌÖ DSÅ;¿\�- >DR7¿\L¥ã—³pÅÜC¾i¾žk3ÅŽà û>RUÆÜܧ"мö-ÈœckëÚ ±-ÈNù PÀÔËœ è”N°kËœ� « ?Ð&ÎT6�Ÿ<JÒœxõ…ƒð'§Ó\(ûT 8]MÙ\ÑwÚõ¬|ÙàB÷#|àœ^¹Ý9LVá,3a¢g"‚ᜯ" ½„KOåœi¨(¦îKél,þ1Òì\ –ª®OP?íœG¢¡}¹/îœØ„Ò ‡dòœò4†àb-ôÓåo k€õ\g?Ì óÅöÜš»7“9õœ†çº»Y'©öÜá8öÕÆù\Ä Ç gýÜ‚"ÉÅ@�ÿ;mã É -/ÿ\ÓÁ€©7D¿]®S£ã�¶\ê8sH©]H˜Á<ò£ݹh5 Òr 7 ¨!/ì¤IÔ �/sD5ñ� "1 ¶¿‘�1d߬eÛ�‡èq²=„fÝTxk˜1θ]`&øÊ ¹UF(À5¢3](pú>èê~mÜ][7™ÖKr}Y2¼l× � `Õ¡w)˜C!ìʦÝï^Î!“‰Ë¡$�«4öOù½ø&çþY(Ô4'Š“<0è–Ï(�âs±<ÕTÄ)]ˆ]«;}*�èe»8í—Ì']窘Í@¶.�/mp,ú/�/Áçž ©Ò0Ý3;%Û\¸=/—½Ó'Ž€02�ŠR`%¦3�ŸŸ�á/ëe©},*9ݳF(çÎ}=DXIô¯=»>�ÅŸ0ëËl?]¢�"§�$?]¢PZ¼‡B²âlÆêé B�ÎX—ÍSãD]äE6"G\ÈE]îí”OÍ{ FÝï�!ÿp…G�Cs,s5¢I�Š‹~õ LÝzãà  ÐuŽNݽ›d"‰–-R] ø ”ãeETÝQ>]SËUPž"f#T‚VT=Äí–ÔVÝŒjÈ’«X� FvVFø]Ý¥ú° ]õ_] 3 [;O`ÝhôµYOª`]S·êM,Bc�ì³+ %ņöd^[®��1£k�UkÍÞøl�{Q_]P•¡m Þ:I¼ÁnÈT° nñ%oÝLg¨õŽÑk]0òÙ ì¹#qk ¶oÝìÆq�9Û6Îs€b æùà3t�ãfÎþ‰<ìuLsâ)�EJw�ÑícNïxݪ¼°ðMÀyÝØB*‚Gfü{�™.§b=|�?¸ÁXl{�cz>ÉDE]�÷:~ŽOý€] ±I?�E9‚�l …Bw}¼…]�Dè “øs‡Ýå?D°â"¤ˆÝþ@x$s�Ý×˧p;�Ý£:ÇXIÈ“¼q† Ïndz”�ð "s¡’*œ]ÝhM­«á)�Ý?ðó†FƒœÆ5âm³¨œ]�Ö!ôýyœ ��Bsæ Iž¶ P"'³˜×£]«áŠ(N—¤�Z§çã>™c¤¼°ã‰]»æ¤�”ø<í¤`zªÝ¦š5L]W«´·_YcƒK«]Ô¿j•>ªÝ÷Ÿ&ÝL\J¯�D籃9±�iÉ!—»ÿi³�Ø|“Ü#†´ÝùGâs*úµÝÑw îÚ3·¶Þt¤FtÏ‹¹�Y÷¤ä�º]„û@1€ml½]å`¯ ¿Là'Â] e¾ õ™AÅáŽW ",·UÇä¦ 1™¤ˆÌ]ƒ$ £�ÎÑÝ{~B eÛrÓ'$™´ëüþÖ�¬/¢ Ô}Õ‰Ø]’Ýõ „:äÝݧo~"i¯$ýÞ]�Þyb§ãßå®wIíIà.vÅ É[ÂUá]lÔâØñÞ� VRÍãÝ^Ü9åïéä�€š“4þ…1ä�äÝ>×îä�oÁÞ,÷éé];Q×i·wìï� å« ÀïÝ>k\„æfð� €½Ú�”jðDs‘ï`ô�PJ4Q/õÝ ©aN3ôøÝ¹£uÄ-?ùp�䄸²ú]ë`¼Êþù� &tSÆDþ“%RÒ¦þtðuX:+^h«Î�‚Á^)T�b¤‹¬ÞÁdžé� ÞoñG! ÖoÞf?àŠ°ÊÞ°O~mHªiž˜¤šåžÇ=+£ù3•ÞÈ,Ù³a—ÞÄÔ÷ ˆ"¡žÿ-Î Ñþn‰°df0LMÛ2äçñ / ”ãU©$^ÐsvR4³%,H~ µ#õ&žÚ<$ @šÞ'Þ䬵!ðÈ(™‹ï"%)ÞC¤è'÷*žŒß™ ;þg’+ž½¨å"¥n-pc8éÙÀE.^Œš�"­·.^ö� žT”‘0•›Ò÷øÓ?-ž-©ž.l€3Þâ~”ç¶:5^\3· !JŠ‘6^4Õ!Û¾8D8^ù�ýH0ç:ûeÆ –9`=^¸ðZ1F�r>^ÞvõLî6F@ä €IµôGžÚG8 \¯^8H!ùh .‡32Gœ8LâEõLpñ üíbNž›$np?ýNr;¹ÉØïzTžˆÃÏEsˆîVž­Î?×\Þ)´&!A½p]ž’%“”riv]ž�m) 0ïüN]Þú"©Ý’`^_¤±›g¤cž5Å ôE*c^-nQ h·¾ÖfXÕ(¯*rgoU>ËgxjÞ7±ý�CÇkžsæØŸÚþm¸zEë¸pÞͼN‰ªJtÞ‰ÿ“¥›ô©vÞ,HDËUywžù¬NhûwxÃBo {žŒ.¢ê%™i~žd�ÚËžíÞ1‚é òBÆ×ƒÞ¯7 ¾7®@…^³qu"­Î’†^zÓØyHƒó‡^ö I½Ï“éˆ^„!SÁd‚ˆ‰¢¸±ZbgÓ‹ex ‚:­Ž^i[T¿6<{�‹ÛéˆÏóE“Þ¢Ä ö`¬a”^U” "ðö¢” ÇL"ɽ–Þ�üœùŸ–Þß¾ a¯ÜX™N~ئ”Áfœ^�k\èjFâ�^$1ïÒð|¹ ÞOf ´7RÑ rLž b¹ö6 ³£Œž¿9¤Þ¡Ž: ¿Z�c¤rÍ4¢.jϨžŠß Ç¥Ðp«šGÿK¹«^Ë)¬;‹­Þý»¦%Ë¢�¯žã×wÏ,6ÿ¯^„ˆhˆáS°^ !‹ zh’³…b{ ÓB@Q´^   TW²µž¸þ’ :¶ jpàUx¤´ƒî¨Tk?R¹ž-—œoAh�»Þ[ë�~±»|µ* ÚXF ½Þ�-r 7:¾ÞÌíž×ni¿^«Y?ÑÐ2Þ—faSJ%Ã^eÍ™¼Ðû<É! §I(`ÊÞîuC}l;rÉM�PRìm¦Êš?$UÏÍžŽÔ¨¸‘î¹ÏžA-ÏËû–О�zÏ×¹†ÏÞCW€^¸‚ÓÞ}áÒ« Óžµk3ˆºá×Õg_Šɲâ¢ÕžF`à !³zÚÞ9å·›_ÊÞÞ<»^ð.Ýbá®··™ß×kãŒÒ®åÓV枘m�sóº"é…Ó¬is\äé^¦Õ åÍåùé^øïc`›é }«Dgí^‡R5Ì»0cíh‚áÚyiwïãn/´Š¢ðù߯ \,v2òÞÓä¾Û´P±ôž»Ôº Qž1õÞ¬’Ñ^ ô5úž–S+ë�bŸå–ç“$._áCù!ÿ_vñê ö?GÚŸõŽÙÙ¨Ÿ)ï€v ‘¤_b$- ?C®_#k®Õlc­ß<¹�ÍãéëߘMv©I�° Ÿ#C€–s _·� ®w„? ß•·*+ëØ Ø'(ŒãMÿ Ÿè¬©íÁ\ ŠÃeê ±‰HV>;§_ß®æ]à9³ßá¤máôæŸ_E]^Wž^_Û“Ó =o&ß ôíµ‘Í"ß%nÌO,°á#ß]±¹ � «Q#ŸPrõBÓ‡Ê(Ÿ“•.-:ôì›àH:ŸZ(eíX(<Ÿõ#ÚññŒx7_HÏÞÜPü£7Lñ2 ÿc?d¥$¡`@aŽ+¿OØAŸQ—ÏÝ’—<WHKbÌ—|;ŸÀ…¥ vÛKß6B<bY¿4TßQaŒïà:WŸmwU¬sü°\ß}tÒP:;Œ_ßèå ¯´Ep`÷Ñ t)U"`ß 7øÍ9¨§`÷ ÆFÈ“ècŸµq¼Æmc_ä“—EÓ]™h_ÔÊ!(gnŸ¾‰A,fß oHä4 ›þ}ÊsŸo�ý +"bJt»8ƒ´{oy_k�‚t«î{_¹\‘ɦ|¹“q40_\õØÁà»i€_p«ñˆ—3ƒ�æw�&G…_ÅB‹~]Óï†ßº ƒ8ŒUÕ…_Vr{!Ẉßô¤<jÒ¢ŠßIÿ˸¿㋟ò3 âE–Ÿê‚ÖÏJÞ—ß\ñ³‘È0:˜š›òoh%—ŸÞ)u!¢àÙ›Ÿ††+ ²œ_1 è ‹Ök�ŸûÿÇœ#Wvžßh‡Á jùDŸ„·ô>òI ß†ku âd`¡ßº­wb0Îü Ÿ¯Ÿg�µ”£Ÿƒ¢ÅLúÌœŸèoøQ£_ZßÒ dz½J¦ßJñ¥ $ræ§Õ¾ žˆQtœ_ÿÕ!öI0z©H±|Ö º¬Ú´@á®ß7o1—Åï¯ÓV3£qˆ¡°Ÿ~ÙZd¦-°ß“µ  u§Á´ßš2›úÕDzµßò&¨BÖ€¶`õHÑûX·Ÿ×sÉ/:¾ß͸Ár“ü7¿_±¨‘ íÆàiŸ"ŽÔ “£räÃ'"¨|™tMÅw~Æà·ÅŸ˜7zÚêǬ"Óªæ‚ÈòhN»%"Êßo{©×4WJÊß’ÿ‚Œe÷Ð×ÙYÇÐÏ4Ù<ëÓÞÓ_ä7! 93¨íÕÞú]%vÖßaP@ wYIãØß®Û ëMêÚŸJi ¹„øaÛ_z=Á ô¿2:Üvf�SâLÝ߇÷jÃÀ5¥ÞŸèýÆÀdÛ…ß5œ_ÂÞ_^sÆ!/+p៯f\Ÿ çŠäßJö tãÙÀäy¶Ð!ØH tæßOhÔººøîç߃œ$º=\ç_ŒVsÛžé_72Ó #;¥÷çŸB�ÛjVlìŸ�íèx¢Èûï_Œâ/LºìôŸî½é¸ÑÇ1õ_Û&'HjmöŸ|„/ ÖYŸöŸk,pÖìø,`ñ~õ_…oP©“'øŸ_d#š™•9öq½TÉŸGsü_„9ñ5Â4ø_“âÞ·~ß<ýŸ�ù+5ÝÁGýè=C¦l{Ñ`µµ¹‰Jœ{`G•›_“* #K„Øœ²yà™ð<¿xÏ Åëùk|¼D `îHQ…¦ ` ý@UO2`cÓóìPÇÁ`¹T8Ÿ¹"²`èP�&¤=�`›Ô)k¥$óà°-QN�uàJ®h”Ôà(à% å7 Ÿ"à45é ¦™²«# †óQˆ‰‡(`ÂTÎ`ªûÿ)`‰äÜ«“ÑÓ)`ë ª÷L$+ „CÀ ð´È:,à¦Ç§¼+‘³- «wÊ�lI, �WXo?,àdè¶š¨ë,ൠâ:N1 V*úF‰å1`gª†½Ç5àsaèTë*7`’?È öÖ7àM£ØëTí^: ôÍ"ol(=à(~ 0›{<> à¹Ö _ØÂ> åÐ\V’ÙÈ@ \P@ ¡JBHC`¹Œ¯Õ,×%C Ò‚Ñ;m%¼G ï-Þ ãLL5HદýH5I ½ ¨sµªJ`'FÚïœK  s®³§J ù¨Q6³ÌMàåù¢ÄèÏL -7-€ŠH ý„Ü!Û”]R ÖæY `>B=W` à§âU=\à��/[¢(\à g#²‚z7_ ïY^"Vëž`àÈ~|› ’&a ¬ï‰ßåôDb`è` ÙSCcàiè‰ÚÄgàUTE Äïîj Š7]_Ï´l`PSe hè/;o G˜= Ûñ?ao`©ÿÆá>ý”q ØÚ�è­ísà‚®ËÊt`P ­¦¼I�u`fŽ i<1ov`öþUßÉzs <"hçÞ½u ¢î ¿éM¨y oùã!uæ~7z`Ñ—KnI~{ �×P¤Ëäÿ| ÿìÄ ,ùP} pÒB"ïþ?x~àÈ Of:I÷àÔú»�à¦iD p[ö2‚ >¤xƒã!‘ƒà|.ÊJìš`„à)"M HÉ=…à�{à~BAÖ‰`ïʹ¡Ç}Š ¼Vض�`œ"^'žl˜àrOLûΫm™ O₵\2ø™ ÚtšùbEµ›`{P*ç; œ` ÎsZ€'é™à§âÁsĸêž`ä£:EÛ9Ÿ æ•¢êútŸ Ï+›Ébö=žàÔŒëEÇQ¢ ½$èží�¡`¤¼ŸþV­£`ß'ÙSr稠‰›gÒG–«`x?¿ 4pD̬ BM× “Šª°`·V6›æÄ° "ø¼ ä[ ÷´`Ý~ó *ÞYS¶àëè²}ÊéQ¸ I@ERòN¹ G‚NÊÔ=`º L~kïb–»àQÄ B..¸àò�Y!ç£ì†½ Þʃ6Dòø¾ )ø‚ãHÍ¿ NO¤ ^£ÉÁ îÒ99àþÖ§ÄíëÆ ÅA—"ÒÇ çæòÒcÈ fЋ¹`>ßÊ dF²ÑDgË`Kå eÓà'Î`�`A %Â“Ó þ©N ñ Õ �Ê  亰Ö`‹ó÷¢M�Öà&oï`¥ÖàyÜõžßÂþÖ 7¥—h�ØÛ`~’8hˆ€vÛ`Û÷@Q;ZÝàzu¹J±óÛ Ìâ”/²Žßàbð]!^ϳéÞ`Û?`"VòLÛá u¼_ˆË/ã ÖØ6¶u‘lã`œX+j¶åà‡äŽUâíæàÿÅÑZ]êSè`h‚IW²Dè üb0”§Õëà}õ^ÄÊ÷Ýí .@jízî`F�Ø£ÄÔïà’£§Ñ ™®ï`®Ó iô×1ò ±€äÛÕó �…A B‘œò`Ø«Å!Miõà3¿œ 8!Ûnõ 6Eúš Óø`N: /ÚIúàÛc=^{œ]ûàv�Ô Œ q•þ :Ÿi�ídþàqÍ%  dÞÿ è;L •ÿ&­!Cˆß<ó¿¡èV!Äÿ„!\Pj5©_õÿàGé�øÇs!«nÌ ¥Du¥¡¶ PrATxa¿0ÃÀ�ø±¡¿àQ À<=áEN=[øL÷ ¡õ/¾ËBŽþ Öo$iç^" !y{£%$N› !Ðòð¶A5!?ãvåP ¬!ÖæH £ ajc ‘—~›!ìªAR"f2 ᡿ߌÍyÁ¡’±‘&« áz²U äÙâFah(Ù½ vòaêÒ z»vÆa ÚXËä^° a;ZÄ6åîd!a(]�8W"a"ƒ¨i.E#a ÅŒ Fv»I%!:=A{U™m%!5Ä/JØæœ+á'–Z!½E"¼,¡jJ˜X0,õ/¡v¥à;d0á’¯Ÿ�…4¡e£6æ5¡ÊŒʉ‹7¡ùr;ôÛÔ¾9!Û4>Ê1wó;¡-Ä@QfŒ_42¢… ‚q]µ4¢Gd.�~w 5"ÉÿŸYÆØ=âæC>®äÖ?¢í®j�.@"‚R!£QúÓA"µ%Ñ n”É"B¢&>J…0C¢bUØ9±œC":IzÐsE"^GÔû¥F-Fâxi»ÑökCâÇ‚ªcGn=B¢Y=�hóøI¢:c%€ÈãJâQ�£ m5žnJ¢ýöSƒñÅ¥L"‰vâú>ø.ObV…7"1VPbÂx$B¢uQ"}ÈOÙÿ2¿P¢ ;I|ÊkQ"JK _.‹Tâð  =tV¢h¨ÎÑfFóW"hmÍ×™ÜdVâNê5 dá�½X"ô‰=+‘DZ"@u«@»® bbw¼¤#Ç“fbjqzÂÐUõjb#åg�lalâüŽM$qÜoâéé1mÁÓ5p"Hl»Ž<Ÿq"'Â3vãs"$P�gnuâ�¿ü«Ð–ávâûel �êu�y¢é B”àÏézb“ïš!%ùœ}"T�Äñ}öw~bÀD&ÿ·RÎ}¢Æ²ôÁÆæƒ¢Ÿpß2:2‰¢å:éUYbt‹âË´ úx£u�b‚˜n¥.€’"£÷0špœ⋠ÌjVŒ”â­ ªLjڧ•âÔKì�Ü{Ø–b¾0‹·R€˜âÓœ\N¤¼Ú›bÔ¾EI?М¢œ‹ÁÙG›žb?Ã)c§ —ž"€‘ߨg$¢âœÊŽÂIµ¥"©èÇ;¹“¦âÁ³EMº§"Ïj¼è”i<¦¢Øy ‹f$Å©¢†ä„ G1øªâ]„¢˜½$«âG”æ{ŠD¬¢ÀÇl A.­bH¶U[H «â1h .CmD«"²m‹Ì$¹U°¢Þ–N †pÙñ±b CgŽ»Ýø²¢z<£pZªbw/>)n¼­¥"Ã¥ gB>µâÅ+�} ¥ß¶bˆ™ý[p·bîtâñ+¢=¸¢˜tCï6§¢!œa!´ƒkº"Ìa€¯ž@ðº"̓h/µ ½"ÙIºÌÈdÀâ;¢íWy¶�Ä"1¶ ’³4ƒÆâAæÅ¦”½âÈ"Ý: Oa,ýÈ" ZAt+ÂÊâ5¸¦ (á„�ËâèïµRv Ì"؃å 2¨eÌ"3#÷ø÷äEÐböqè øçâµÑâñí9ÿ§hqØâ©t¨nŸP Ù"¡e�v ò_ÚâPü #ó­9Ú"6�w7–Ü"´g™€$PãbôÏóŠ÷±ˆã"@Xñ�Tµ å↠fÃVäbø°9ÁWçâ ¹%öG[ßëbJÊæ.æì¢�µ üc‹îâ%S»há'ï"n`™°2*Tò¢j¦ÛîªÀóâ1Î!ëÍ¡ôbûS€?ö"äˆòÓcÝ…÷b«zƒ º€àÅ÷â¡§[@9à÷"YªÙþÊ ú¢ò!Bh .Iû¢mTË ,d…÷ÿ"¶z‚HQŠE#‰r™ $÷­ŽãÆÀK\´2sÿâNýVí’9#Ú&‘î¢'�cÌ#øÂ€aãï?·Ôûuãúy˜¨[¡è £¬Ó ÚÏ #_±p@‚Á #À+ÐÏ ãü‚(©¶Ê ã»!c^)�£K]ÆzÝæ#ÆDäêó¤#¹;K†°ì–csíúFÜ+#™/%£H#³¦ v=×È ã°üD ÙS.Ó#wG„C†\c»A%bncšcÖ÷έÙDPcô¢@uš¢TcÿÛw<+"#6ù%7¡'$#Ek÷eC$%#”[KA'ú*£-2d No1c7t[ ùå2c¸àžu;r^9c þa 0##Wâ"|1¢A£Nvʰe±Aã[ÄŸ‡Á–Fc>9cýU2ÚKc —$E)JK£W¯ábn K£ßö!öÛq NcŽDO }lµ€Oc-¸G¦ê_T#´) °„D V£Q°e iŒ�Y#@UÜ/{�Yã ¶äœ%™ô[cƇÎë¢[£cÄR„Ícý\ãÜ¡¶Ý[r[#¾j= 5Þ]£]#!“v3Å`£Éùe žªÆða#}9—¥Äb£º^ 2 X!dcñX± ãfƒgãñ¨ ’N›i#Þ_ñävjic õ eóÌk#=X ºÑmc”ÃÊmBlsãÚM"ízÂÀxãrÓR �?%œ|#Ïm— G®“ãÔ©>{ɾeã‰_ å:"�ãX=gù m‚£ë!I ü·¥ò‚#T—t"1V®…c×…› /ßœ�†£„Óaìœ'›‡##òÑÖET8ˆ£xö(ú«ˆcl·�áZmŠãRËÓK²ÕÕ‹£ÌJÂé 쇣x"¤…�c¿S ÐÖ t�£vmÇ /Ö�‘�#´Ú¤!¶Uí’c”4„wß,V”cpîɦûJ—ã¥#� ^8Ηã#Ì  €„ú—£Ç/á–™cy³Ɔ t £}3 Ôˆù£#ゲR¦ؤ£œ.¡ ðEŽ[£cû›° 1ßK�­£Ü8Øß®£¡Î‰Ñ„„±ããÛü"þ³ã$5Ì T¦¸ãSKûv ¢o¹£jq� í¬× »ã&±â'J~¼c‰ýÃ�ÉÑ¿ãäLt !õÇ<Ác'²¤_T9Á#T¯ôìFÄ#Lôâ\óñ ÆãJ—ÓöûnÊc ^� ±ôÄûÊ#-IORŸçUÏ£íÈ)ˆûDtÏãí˜AíÖ(­Ð#Þݱ¬ËóÕ£w��SïgÅ×ãdçNº?²`×ãß_r"Zê™ÙcSŒ (e Ü#ÆœD—Ýãd�ºì ™ÆÞ#0K!!2¸ß£æþÄf†KDࣚeË3ŽàcI�˨D™å#R p]ÈÝåclXrþU2ç#'¶  (¯æ£$¯Yà³åc`ÝP!—‘ùêc-ß_ÄÍøëãDøŠ"—*Ëìãfá>/5Îí£~æO F¨–Xî#è÷i }Ý£ ïc (<—1mî#¬ö˜!úýŽ>ñ£ƒòô2zÚ´òcó� ÔãTóc�|x Óº@äôãKßä¼;d.††tŽøäV —þö�dø¢‹¿1ì8d3¡ ŠäzGÀ›p$$G[.óµƒ ä¥½Ý Y€9 dlT¶d”L† ¤Ø•´5ÒÂÙ ä´“c"«­Ë3¤|r4Vg$u勹¬nd¤ÿ•Æ ® Ô¤]r‡Ôôï$ÆTçRJG¶!dÞ\rðt($ßý y ßä(ä«ÜŽ/ëÁ)dR ½&e+¤)_�i¡ ,äËÆR îi)äT‹Ä–V[+¤ºƒ"bBœW1d^Þ|‘õ…=5¤ûpîG7ä‰nûbÈ„*;ä瀼 Ž9 =äì¬È[sA>¤HÏ ¼y…h?dÖ¨9 IõM@¤ŸÌ�Fn‰“?äî§·ë�VDdú*�†˜µIdHø¢x¼ØKäv„nµn¢L$„¨%ªº¬1M$˜ºG (ÞN$ÿû(k„{N$éÂþ•âÛQäYŠüaê•Sd•CÑ©ÊÒS¤î!\[÷wS$k Æ×ûXäY/¡d! wZd€Ž�{¾)[d¬[–aZ¤_¤â «Jù©`¤—ˆ… uÒ�¦admíß*!íbd»¸Ta$µû¯¼Q†tddìïH &E’fä¦BéC°Ig¤ï:ôbÀØidÇxu ä}¢…käyŸ”jm~lä¾7 ™©‰œod=Éd Øøýu¤¹Íœ÷Ïuä_÷Ð +¨Ð¨udÏX­éOVx$sØ,šyd‰=eÂhñä{$cøÛêŸFH~$àb~ R)0±¤­ ë Ãìƒäa°•E¯„¤Ät0�*–…ä (Ë6%ÇŽ¤µ8 yÑ'Žd§B…?¿û‘ä$aIkÎW’¤•AÓtòƒ£’¤Rµ›ü@”¤¨+ ˆæÉ‘d¾à |¢»–$óò è÷–—$öi þ[jÒš¤KÐ0©³œ¤DE€x5ú�ä…—OÇnއžä?ÊÄž’ÅŸ$ó*`vðû d´’aCø“£ˆªdË¿Ëþ²¶«$ö•ÇÈ|©«¤¹3Œ EÆD»¤g©e!`ôœ¼$;­òèÔ‡ËÀ$�Ê,£`7ÇÂ$ût)¤~§Ä$¬n`Jùy÷Ťõ*q"*?7È$üR… \'g¿É$ánÒ�ËŽÈ$ yŸÚá̤g÷#,ÿ nÏäbÝ‘ŒJÐ$ïtg� „kÕdÓKP„ëÿÖä‡ä«2oµ\Ö$"ÇÜ^M™ÐÖdU°1 ;è¶ ÙäñÁüòq6çØ$;ßAR¨�Û¤åÖ)b‰ÝÜ$¯/&Lë÷RÕ$ŸâD"+ ãWÞä¿=©(êû&äd>7ƒæ Õ˜ì¤ #éŸýï$yMÅ ®Œð¤ùˆ±§5µÿñäϱªÓ“áõô$5™=•)‡õäÆü¡Œ¢�Y÷äy½8�¯GGø$¹?›`¢Ú_ý¤’³–—Äã[ý$B×=!ñ­»Råª\³T]q¥¤kÿ¨ÍpUå|‰4·ÁWæå�6þÅýq“¥úv»ÜÛYë %©’êÑzt ¥|L�‡á» %o3·yëx¢å…×… EIgÞe4¿Àvé9 e:À%éi¸� ¥¡%Kü3=ã¥�ƒQtŒåG%d]V•$å,£[þÞX%Ò¸„ËRƒåJÀ¨óò#�¥,ñ}´zÄ­eÞìÿL[å«X‚¦0–åfóï÷,Å­¥¶�` Œ eì´ü´$ô7e\µ¶gŒíÍ"e)UH£µÛ$%2@Z±B¦%¥h æÎÎv+¥¹=¬¥ >£,%¶S`Ž2/Œ.%V>ÊeÏáë3åþ—Eÿ&5%£#\´È±8%eÎP ¬Ç;W:¥©‘ ßÑf<%«v”Æáö<å^Ãd¡vŠ@% äéq5CåüÁ• …ÉpD¥së G�_PE¥*ÿéþ²3C%œ?"Pe~QI%ujªj€vM%ÔdP Œ�jOeSj&”7RQ¥%$�éñó}QåÍè�­.ÕTe•Iv k :Uegm ké͉Ve˜4VKÅWå$³Le[ºôWåL – 4w}7`%ܺÙs¼öaeO!ï8ªÁAb¥å�CR¿qóae‹Q*Wh`¥•‚×2Ý$:bå”UÞ Ã”¦f¥X„'…²feïÒ ÒÐÏjåí«Bm½Q k¥Ô'ýrçŠ|kå‰D1¿´ÇImåcÜO ¼2meëìå²J?þo%­™„â�o¥s4î ²†øãoåË7ruXׯråWI[u½ñ”x¥Öuv!Äý{åܸÝH„$#{¥¨O'èøí�eœ'à v:¨¥ŠåÌ_éÎq‹åZµ¡¤¦)À‹%˜ˆ„ãæ.�e„øç²¾ž�%¥?ÞK}�¥æ¼z “P”婯È‹ôìs—e†5Gú wüžå�ã¾ súÙÈ¡åú˜A ½:K£eò žâH ¤%Ò‡SÖ4¡£eÅ´—õðK>¤%öt:sþ§e*lž䓲>­¥*pÇ ¯·”h­¥bKø¤&g³eºN5A?Üùµe¯±~ ’Hþ¶¥‡ øYb¦·ePì|Qû ¶ål©a ÏlºeË~»ÚÜN´»e+ß½ 8‡×e¼¥‰B% fRw¼%¥œý!tG=ïÁeæB¶9ÚÂåÉêÈßÄåm:5 ŽsbÇe[&|i”#È¥)ôè5Ê‹-È%O7G xH�‡Ê¥ûF«å£ÝÈåɧqpSxÉe‹¼âwlZbÊåi"€!ÉL;Ýϥݒª›vÑåK=¯DF¡Ò¥|Ó�Ž_@Òe‹.yË/Ö5ÔeÂMŒ¥f�ÖeY8äÐIõÙåD¹ëü®¡ÝÚe•êÉ��EüÛ%ïðž1æT Ú¥/` "ŸVIŸÞe ‘¯™ÞåÃ{³‚¦jÑÞ化(!:enÞâåaÅÝ]† –ë¥6f‚ Dg 쥭ÇV eËÒäóe�#ýñ¤© ô娡ü¦R:õåÍ–Z™ÕÝ÷¥öqm|aù¥LÙ¼U!×ùå2®y²Ýû¥åGOA’Nüee¤H4­@«ýå\�i›o…Ò&�  Õ°ùøf’úx€Ý&Mù ¨j0±¦Þ=ëó‡fA�5gßæ3ÍZ äÏœ¦k®ïàÊï¦/œ’q+f5¹'×('4 ¦å5(ñÕÙS ¦À‚ó‰vk&÷ñ–Þ̉f�=Ü£»£Öæ³lÛJ>¦wÕèr§b®æü«ŽÙÕÔÔ &ÒY"Ì Ä"æ™—¿k³`V"fÔTÓÉ–ž$&N,èP!tÏ$f§ÝÞÆó9¸'f"a³ým*&ú…§û-†+fé!Ñ ñZ§Ù.fô+W ´ c/æàÞæ9(ð1¦Œh‘ ©éo4æÿ‡Ì}4&wÅyM�7&Eï&o7ë#7¦°’�Fx�¸;æz•4[#�¼=&}1`êÝ>¦¸hLTwº@&§ºº“‚úC&~IžûF¦t.nºÒvI¦-Üļ‹àK&�e,e>‘ÖOæÆ|èC%Pf�·ì,ÍzR&Qì{)Ô­S¦ã– âØÃpSæÏøSá"�UæÀ9Štn£ÄW¦1wš£@ù¶XfùÔ11zóHWf-ãH!wï÷ò\f•²)X°�‘a¦i³­ _�O;b¦>ûYïÅå>f&:Î9Ô©‘g¦mÌz ¬`¥±j¦e%A=^Ï7j&l;¢57lfítäš!ƒén¦Ku¶õåͺs&eB�=:Ótæì1¼w�µ§v¦Å%›:>ÔSueRÕ±&4×ů(Q�µæ¢J 8tC¼¦4ဠ‚�6ý&r‚· ”™dB¼&/¢ª[…í ¿æêab EïÀ¦€ ;:ºÂ¸Á&nFº‰R¨Á&µ‘‹"àTÕ¦;üåj™mÄ&;ŒJzÒ`kÅf ¬ ùFOqĦ‚w§ã‚•Ç&ÇãÀ°ò…ÈæäIZvÔÉæÁØa‘LË&r¦q¾psË&ÿ4`lÎfÃíìt¢�Ð&~1îÇföѦ Û%#·‚Ѧ�_ß ~å…Ð&ÛÔÑ_­Ô¦4ŠÄ ¥œ3�Ô&VÒϘý¶ÅЦ—ËîçئïG”ÈÊòܦÜ�³óÊ¿õßf%ø¸!,Ù“èfCv¼!ú¡iéæô®ìFªéf?‹! îÑô²ëæ¿ýŒšE6ìæ©îJ¢ÏÚ«îæýïŠn e ðæßàq á¡ñ&ŒyÑ´Ópð&zxO4ƒñæÔÇö [=öô¦óà&å,ùÏõæKæ2>ÐÉöfX–¦— A÷¦.öy=0Lóf g­#0ô&#¤ 3;'û¦@ƒàMMgj˜ä/1„ç\b¶û×ÌG§-­½ — +§ãô 7ì«gönÕFj ‰gÿj•¶µN�' ¤ÆO?Χ¹måú¹g Áw@�éƒg× N"‡.j çöÃa">Îò°ç‹“¨úYÎ ç&‚/ÊŰ"§&8ú äkÊ$'�ð»[$÷À&§£¹=Ùó 'ç$FæAu0'V‰_2„ß2'ÌDô“^5gMc•]Ÿ£<çø*xކŽú=çî�ù&z`DçÜuÞeâ‚tEgɆßÛîE'a& '1…I'Ï ÑT!ŸIçéÇó»üî$I'çFšàWKL'Áš\ÓÊøšM'$¦×)yé'LgÚŽoË&44O甸$$ -Mçàl!™¡µORgp`'ÇñUgd‘ˆUŸmïYçüïl�Z';Œ ¢sÈ[§MBjvŠ\gÞˆxM®9[çñø¥oÐÛ†YgS¨…é‡pZ'ïøÝñ¦a§xË™Ùe?÷e§ž.==£ðügç_5!«ÿ‘g'³ƒ°±š�.mç²0œ~ë(�rçM’œbr§Áõn‚s§ƒåi�²ottçB¶Ç ¡Øy¼v§RH ÿ$‹vçT5ôz�äDvgú¸“œƒÿˆ{§+k$ �¢Ü’|g HÏ á”7‡|'K:�Ô:#K'Ü02¡cÔ�€g:F^•þv›ç×/Ë Í�g]­ç6ûè„çßmŠxŇçFTâî_ˆgÜ w ™‡,ˆgÛÎ?*“)‘Š'ÂðÞ0½Š§ƒ’Wº)Œ§¾a??®ö¤Ž'&þÃRÐŽçZˆ ¯¸ñŽgDÈhÞûp‘'Ž4ÔoOy�§Ë«ê2Šé”çÑî£óYiq”ç˯Z×ÄšLšç<õññrÿc�§zø w¸,¡'í¯yÞó¡'"ÇêÿÝϤçÆE­iãb¥çô–:»’qé¦'–¼=ÄУ·§§£Šò #šÁ¥'6 ßÕ)Òð¥gkÄÝ…|>¦§33¢‹VËã¨'ö»e¤�’'ªçƒ²Ï ѱΒ°g,ñŠÂP²§Qï 4á\ô³çeq¹ó^º´çZ>¥wE†qµ§Ž‹öîÐâݶ§-{7gãÏ 쨸§¢¼é—º§ ,™|ªmºg1ÖåÒ(í¹ç ¿dKÀ§òVð�~×Ãçè²²êÌÆç%ÅjÀs ÇgHŠwaIa&Ég؃ ¬S‚†Ë§RÑ_Õü¬Ì' 3©êË-¢Ë'…ØYÂ\ÃÑ'^ó ÂŒºÆÖg]?!³`•¶×§N5géé<1×g”^OÄb¶£Ùç®»®ç¼D�Ù§ÖÈËÞçÏ‘ ]³Šµáçæ³ZF´˜â§†¸�ž´çdæ§�3š�KLçgtß4e{ Eègážb/@àáé'Ëe®pÙtê'Ë—KÒ~è'Ú‰¿„$í§Kø„¥µi}î§]i ò‹µuïg„�wõWßö' ñ7ô˜S÷gTsô›á…÷çÝ< }½9ðùg HkàI[Kú'í7Þ}16ú'ï¯-(èügV!»*€ýçf´* ¬áÞ×ýgtl!1Ä—7úg)½,"†7è(N®zcõ;è&Õ óª&è;ï"$B› ¨‹äqð;”b (XUá§Ñ hÁ§ À¯¸ èd=% fŽøÕ(ëmhdõ~(8}Fȱ¨m�~ßûh<Ýâú-”™¨£‘Ä-®Æ0(üu¸dª¨ªÿÅá˜Nù(–ÊdÔ#$ ¨ï`<ñ»©Þ¨H½Y ß‘h^å6D§Fs#è:£\C$¨&�VÖ:—&è[} I†Ý´-(.žTtñT.èÚ5ï€ñ .(V·B´FJ1èë,È ïÀÖ(4h{*ôe§7è�×)æoÌ8he.(–§Ù>(5ï¯Þ™ì?(Ꮃâ˰B(ú¯+M¨ìðC¨Ìþç|D!Bè îWÙEÒFh€#¹F–ÜFè>²R^ÜíÛH¨ÿÓ M8|§Jè?Œ!|¢Lè#ýR �[KN¨Œ×Ž Ó‰TN(ê¬0ÛO¨y¢QÝ»©ÌQ(©}; £ S(ý¬7[ì-T¨77*†¾½Vh”mÇØPHŽX¨BJÎî½SX(ú´jJzY(àîˉԔÀ^( ˜^àÙÃU`¨\¿‚±dO¡a(´¡2Ɉ¼Øhè¦ûèíÉvmhü¥˜ {ž´%o(�ÀÎRÉöo(ÿ>¬ ¯.”ßqèž{ðÈ_Çqè¤{èE Nsè ‡²þ³çx¨(ã6*¹Ó}è² 9àå¾ÌèòÆmÅ*t(B â·µˆ(['�ë ‹›‰èš¼® c"Љ(Lu…ªck‹è”%JLŒhDÈP�s�(8¸vïãU¥S1i!n¦Wó~2© mñV‚.n4ém'| [¸zÎ5)d³p„åôR7©cÕ¼=�8)u‡Uz‹¨æ<ï/«~Bw[©ú-§W�=î]éÍRW"(ÌEÆciÙGö϶^dé'ÌÅœwÙÊg©‚ÝÝÛàˆhiÞ€ ÛšMk©Œ‰y–V6miæUÿÁ7øm©EÐw¥©Umië¯!5ôŒ€p)qÄ|«šòt©ï¡TbºO�v)8ÇK £À®Œw)½Ä¼©x¹0v)««º�I‹†y©mM3ĵá|©MŒT¶%í|©ÑèfÅ ©ÚÀ~ït¾$iE‹¢NL&�i¾£R`«ér‚©öɰ �µ3…i€e N’›Ð†)PïŽϼW9‡éŠœáΉ1ˆiÛá²*ä‹©DÈKàºíåŒéËÍþ/?�ékMœèD£bŽiê«Ú0�'Ë�)ß h ®´§Ô�©�áÚ÷Íæ�iŒþý7´˜�©s—ÁÐz¦Ž©ÉŒxŠà¹”é�01:¿ùˆ”é]$ÐA�ó–)4õ¬ ÝsQ‹•©¤×ÒŒÎ&“)©Q|z~åŽéÝCˆˆ8lš©‡õ ݃›i ´õãc‹òœéu½ÏGÕœ)0M NӤʒéþ’€"˜à⪤éõ$ Ü™ªéšiáêHœ*«)Ô`Ê¢yè«i(* “ "¦ªiÌUO¤–¬’®é"ÚwLñú­°©à1€ KÆ~±)LLÉ ·{6\°i7ëM�öù°iÇšÕ°(!´é�ÄÝÂøSc³iØewÁä¹)sóñY)% ºé¤‹´K–Z7»i"'"¿^]N¹)àçWÓ½)aƒ_§©‚z¾iTµò¨˜ÿ¼é•!=›Ái[eóåÖ[Âé»R�»Ã©Àé:9v�´Ã)Z¸­Œ›ôÉiX¸ÐÕ¹¤É)1@ z¶Ìié+/¸î2Ï©j{b¥-9dÒé´T —ûÃÔ)~{tÀóƒyשC¾0¿õÀש²zTÑô§Ü©äÔf@Ï(ŒÝiyUö 5Þ)<Ì”=?ßé…wOÅk Üi‹#ÙH6ÅâiŽpƒÅlä© òŸgŸdåi%ÀIæìæixé¤ï<‰ëi¸WÓÔó§ë©T¹ÂbšÍíiÎýXx¦\ï)3"†øXƒpðiï¾¹%‘÷ñ©n]çryQñ鲈N™ü¤Kô)™g{öp5Êõé tî '7øôé—�¡!9»§÷)�ù² oŒ€ô÷©ˆŒÆBÇ uú)n^Ê'ÕJçý©¤„†ÖÓ”zþé°ìÒ ]-w ÿ©_ÀG zÝ nªèœg¾_ãj�…Ê óNj VŸ³µŠÿªÇu<FT‹Kêff¸AØ6* ¦¬R×D ê£À2„Ø£ª¿& 69’ªyd±Wx-j¹"`’ò’êà@’Ù`úê„GIx ˪>ÇXöæ©*�/U!{_.À*˜Qße˜ª‘*^óîÂfÙ]j¨¤ Tô²M!ê`°Øs�¯"êf¤oÅ…"ªA¢ùîƒ[%ªÚ�¾“&êT2ù¶: (ªågÞó/Qð*ª±"È”�÷Î+jâd'Ñ;â,ª‘ TÎÑe-jr¦4 ¦&Û+*Hƒ`½Fª",*œº à«Tš0*û>˜=,È6j¦<Ð�nr7ê[·ð ¹8*�Uã:#ê»=ª‘yœŸnc?*}d‘®`úñ@*(a&÷dD* Í ½Áw~Dj~ÖH¢>/ŠEêü{¦¦äËH*j¤™ Á¯Jjg!  ”«ŽLê+ã9L*§ã´Y«Oª~ –ªPj¬ÀÔßKÙ¤PêYŸ¸ G`4Rêl^Õ$È0´Sj¬ƒƒô¡ÃT*JIãUªððà Èê…ªVjñÀe_ÙòÞSêõ-èЦ0AY*òÉSYêœRµRÒ[j<ÇÕÌ4?’djD}ÝDZT&djÃC‘"%¶fjö¢÷Ë4³ i*²VµÀŠÃkêúæ >ù2jmêþPr^oªóç�1’p*`ñ !ãxœsª³×(x•�uê’û’?‰nzª�ì¹4“ûù{j“á�Ÿ²~ªFr×e% €*ͽ tÄ©¯€*¹q”>3?͇jõëKA ¬|ˆjÖAïà÷ˆ*Ì·qXLCŠêˆ1ß—N‹ª³^<»ÿQ‹êë ýòfú�êèÝ$"¬ûqŽê™¨Ìðíª¨Žê)Yn5Œ¥�ªQ —îoo‘ª x KÔI¼’*ÔTö:wî\Ž*wÊwãy©”ª±ï ÷Èrš”*�Ÿ PïN{›*d H&á¢*;r�dÙ&ͧê#æÞH7Ý"¨*åÐ/ 3ãŽ8©êÖw›¶œm6ªj%&ñVù=ªª¯swa“¬ª�Œ;¼>ª¯ªå´'_×Äv°êé ,8U°±jFÓÒ |µ÷á±êáÔ /mTµ*g6 ;D<­·jòIv´]y¯¹*­IË’_{º*ŸÖü™ N¿êwÁÝ ÃxRÀjroßU{qúÁ*2­ØÇÒ¿ê6ˆ¢¥LÛÃ*ÊW“J,�Äê÷5"&u¹ÆjXÓŽV·zȪ0b ™^0)ʪµ™ð!{øBpËj^Ôevá©ÌêC¢Bt2)Ëê·Ñ´42ÑjÈœl© ÑjïðE Œ-õÒ*bì•Èc•ÑÑ*ÁŒyûMó^ÒjÕà8,h9Öê” |¬€ØjP)5l¦EÈØj Ê(�œ{ôØê.qW�9Ùª†äìºÁ•ÈÜ*“È*Q¸¡eÛ*5sýOéèÑÞª…ï,ßè”㪿AÔÏå°å*j9è…H<æ*,1³‡ª’éjÒƒí uùü{몋–�LúÃì*PèÝ5=DjíjÖäY PìêíUm‰s›—ñªýn ÃÇó*O 'N¢ôj>—m  6ýõj€Ã oJ»ö*uéx2À}öê‚Ô�wNëöªgmG"~K]´ùªøvxKµìéú*Hß ÝǹûêMAK‘ÿP;ûêÀ«<d€ ýªÞpc de›ú*°Î'Ŭ[ÿ*vC5\ÀI+[Ä yòÆ+b¡+)6ÿk‘~¬`Ç÷¦kºuâ ZÒ Ýk w?’TëÃ’°t +íìFœD«Â k�NüŸ±qsë¸öK Žî'+Nxœf5Ò�«~±¹Ÿ®Ek9K cY×bk¹*™þ…{h«ü÷:þ¨Þ\k¸i¹²íò«¥ÐÛÌR÷khŒMAb&~ kj!â!9.^"ëYhh.Çz#k­@N¤+o!#ë{k™ÒcÖ&ë /�\ô(«PgPLô×o)«w«V™ *k�Q{:3+ðÚÇIQVÒ5kXê­E´[q8kZ[l §ÉÈ:kȢ஌fÍ:+áqËÚy £:«5ߤNv<;«ªƒ<œ»e=«9ûkWkFO?«ÑXCàþˆ?+Ž2D¢�ËC+V&sZÔ %Dëg /Z¸+CëåAyãa|“Fk=øžÆ FkÆ¿Œ×âI«WU¸ç)²´Jk3~÷~uK+*6³¡`N«ä‡D9ëeO+ÕM€ʼnÒÕO«˶ äT!.Q묠ž™æàûTk¢£A.O­y_«f»�Hòìc+·•­c|çfkkÃÒ«/ø›k+û1QH'lk<Ÿ™@òºnkŸÆ èîçn«²HV@ÍokO>"Ê]òíukf { Ptv«A Ì wë·:¾¶O³w+ ð”ú¸x+HB^àXµ wk6gßX¹ó yëÑ;|Ë4‚|+ZaÒ?ÅUy«êÈ!äñ í~+a'½{ÁMók £|Å€ë®Ájs£ƒëúðè ‰’Â…+ˆÅ©�uÄ?†kˆÉ[  Äk‡«Žå'Ÿ�D‰«ç�f-ë}n‹«£~ª*s˜‹kP„ýé©lÒ�+Qo#ŽëV‡…Î(ßVŒë!ø¤ˆ€.>�«ßiqA„X‘« Z ¸1G’«¹šl¼¢šÿ’kâ‘ôͱ‡”«¸@ˆüÎJ”+“^"pµ5,–k\3<:«è’”«G’â1 ˜km,{;�Ï™«aÂ7g·†‡”«]2�š_G:›kX0«#‚Ø4ŸëŸ6^ ’B³ú¦+¸† ‘›w"¬kx` ÎÀÍ ­ë€E \‘‘¬ëx1Kð¯ëñ–E –÷Æô¬ë]‰ D³kDDœcý�´+^(ˆ™Œæ´ë“A4 ì;Ÿõ³+ü™sT-ýg»k]¡ ]ÂkÿÀk^7–uˆo�Á«H*‹ò™|Á똃ÿLuIÆ+­�n>fÕÊëI5 óŠ96Êë6Œ-xm8Êk‹ëÍÈZ®Ë«â » Ϋ´šæ¤v;Ö«›9¯Ö+Ú+Џ¿‹Ó”Þ«”Ö�&µÕvßk'�· ¯Pïà+‡bZ ìšéßëÌFEf�HÞ+aYÅ?Ãâë㫱»Oµ=bä«Ç†à°ñý(ßkd)víÌ0ìëæKnl±´ßï«”é:{ݸð«ca£Á×9$ó«<Õ&~Ù²°õë5Õ.b�áùkD+¢è5Àü«jl6  ‰¬6È™añlÿ÷ KÆ�<ìfU@ s˜ñ2ìÿš «Ó¼ ¬"˜h63’Üì�!ÆÑ 8,fý0ìç¦løh©A¯r¬Aµ¨ pf¶lg|õÒ|� lÿWðÎN´",£NÖ[^%,¥ª j(„%¬­R@ÁøX(ìˆn®øüx!*¬*XÖ <5…,lÌÍÜâþ1,Žów!9Å" 5ì¸4 M~:,ó‚2-"É#<,í":ÛÂ8ü=,ù•© Ou=,â¢6«=£=,YÉF(QW)@lR5$¬W>¬GŸb"MX,GClüB�óêzC,'d. g˜�C¬¦Z6!3ùF,&³¸ =Jì¦}\åC­K,‘ÀØên†LlÈKEàiE­L,£a¯z—‚üSl fJ¾ìW,]ªK%Ï‚ZìP…&¡}â\,q†`U¥_,ÑË”ü sã_¬|ž!Ͻíal 3X üÁ—Åbl/%ïÄÈxblŠ& 4o]žd, ìN�ì6cìi´ ¸Áf¬"�ÿ!ufììË E‹ºíh¬©?% .™xi,Šh2 "k¬Ø¤£­“ªsl`c“Xâtl#;¥ 'üIulMÕûX¨ÒŸt,ÐF"e‚Ôv¬[[£ìECx,š”[ ÐÁd¯x,ä°'uøz,ª�(´hw~lJ' þ›z´,h~ËÜüò~l:â� QÍ�¬°Ñ²-ŒQH�ì‘^ š¢˜ƒ,k• ?Âóƒ, Ûf´á#Ú~,„ðm y†ì«O—Ñ–¤‡¬\›•]°°²‡,soŽ ÷q†lû¾wAº�rЬ„\ó ä—Ћ¬ÉçÐ÷ ä8ˆ,E²X"®ÉQ�ìÈDÅ�,F ¶Ø�Á&’lù{à’Rã�”¬9Œ8¼ƒl�”ìòŬÔÄ3–¬õÇ‹.Í«—ì×–]›ÉZõ˜ìb¸v…¨²Áš,URÇh¨ª;š¬kBÁÖžÿœ,u¡VÝ žì‡û,Ô蟬ÇômNÿÁå¢,Åä6Ó~£¬ŠÅ*è&7©¬+8_‹ùe6¯,üšô¤�°lƒ&¼ &¦3Í´láÁMð‹qµìjˆá�p¶,rŒv"kƒ·l0ö÷À¢X�¸¬ýß°,8ã¹ìƒ~te¸Æ1¸,K†ÞBŒHºìZãgŒXè¼ì¸ùfý¹¬²¹a_oM¼,æñÑ�¨¡ð¹,¹'Ī…6ÁlÛÍ’ÿpÂìì6'¸Ä©ŒÆ¬“ÎE†ÿ|ÈìÚÒ{Eo^æËì×ÌäøÍl:¬'íß0Ϭf$銡Ðì;b,=ÈJÑ,%ͬž ½‰Ñ,\ÿ�áŽzÓ,èbŠÆ2:(Õ¬Só!< È[Ö,WgÕ ‰VÊ׬lÿv‡µMxØì ·^ŽŽ7v×ìþn­nf×,]~©Ëw¼šÛ,(EÙÒ¤ç4Ý,þÌã ÞTÖÝ,75ê&ªßl?aÒ™Rål'«u?£Ý|ê,÷=%%4h<ë¬zí .g[ ëìü­ %1tï쬚õ ¤B1Úúl2ðüµ°'þ¬h=O 3Øþ¬UT{ À<$­ÔÈž6\Ùº-Ú~n–Ý`-f6N¾¹3¾ -k›¸Àë ­pK +ÖKÁ ­+›Ø l‡ ísÞLê×™-R¬ªu¸O”­aî”ò†ôµí̱£CÔ|í­;ß^ ù�m�™e]àyí)õ\ I,Áõ­a× € ‚­;‡n`Wò1íeÎÉ�s­÷©`{÷Fê­I90BVô­`á~ ÑÁHg -åoÑ £aµ’!m¸BNƒP'ä#­Ï¤ K¤8l$mPV©+È1Ñ)íºðbùƒU+-Iâx"¯ZO+-†Fà Ò«1í9Sœ <¦6m:É)|7Ö¾6- ÅÛOs6­» .ÇŒÙ?<-?×k PGÃy=­¬Ôh„ Î-'¿\5lÉÔEí^ÆS×F¡^Emdyå‚çDGí)Ê _€ �I-R ™ R¹gIíåÿ®$-²ÝImâ¢~ ïµæ=Mm˜²D �GndM-¯õ°—â„NOm샊…€ÔÙP­„×* HmPílÿ{¥JÉÃSíoµóŸy8PTmBŸL¬½†¾T-Ž¢f<èáVm¹Î• rU­.WD%7ÊV-Ãh(ÔoY­FY@uGUm Åy ðäoZ-çè*"°Š²\m \;=7=²]- ¼9åLr_­²„ÜžIÀÊ_-÷;²s!ßPaíµêãigb6bíÄŠ> Êì`m¾ˆË4ºëç_mŸ k KF‹“e-ö �½˜¼f­ÙŬèä�`­/ú !—ldm!Oƒ!ëXFiíàxZñÆ=j-$M8 /«ÕCk-ʼn®8Wj훕 N×u­nílzÇ)òoSoí¨%³OpÜœrí}nÇ K¤ÝÕsmcžÚ Ô3Œvmœ #ØôÃxmƒ¿©€Ya{í¸Œ �úrh|íƒt¶o÷ |í2éÌyÈM¦~m"žÂwS`÷�-)›  Y$w�m=®O{(…­äØÀ”ßâê†-óälIÅ+É…-D§—žp:‹-‚™ Òÿg±Œ­I5f'Î6v�íÀ“LMúô‡�mŸg»UÀ�­ò$| ذ6_“­ÙöÒŽÖ„A”mŸö¯À¯õk–-€µddþLg—mçF³+k·—íµ5";)ˆ–mlשq-ÂÔšmWVÝ1†C1›í8—Òñè™- É "L¾ ží Ì$ cW  ¢m_±tr[[¤m`ÑE¿ŸD©­qÝÎ .ÏÌíªm�85‘Rúi¯í8æz"Þ«[)°­‘1–Ke²-C¹j"œ$6³­yú©XÁµ-y2t H!Pkµ­ÕË! dÆu·íÛB2Þ WNµ-õt±|¸'.¹­q0&˜®¹í¹™¨º¨·mùµ¡�Îö¼­žè ‡Óa~¾­_¿7—¤Ù®Á-"‡×Ça§Þ­ zÂ… 9Äm`ÌRÍfÅmL¿ûeï3bÆí�h—lÙ}ËíššQŸ“-ÆË-7f–uIãÍÏ-î9Õ3¹÷¸Òm"®¿Á˜™ÔméŒì5ÀÖíúÿÐ:3=|×mƆ¸Ö6_×-¸^=†mRUÚmû3îoÓÝ­`�&)b˜xÞ-@4ºh+fßíæ�¯ûÖ”ÞíSLÝ'aT7á-\Ê|±¾öâ­h�Œ¢ ºà- »å…ú©ëáíc½/"ôJXæ-y~–îíØé­‘¦{T�e÷­Œ4oí¦àø­EÓ ¤Ñ‰,îÊôDv4Ì/.¦2¡€èuê0î1¬‚Ér´Ï5n&F½ù‰¦P7nF0XÍ@"É:.É~‰Ž¾·:îSr.êòh@îËrÏú’—´A.ÿ(ÐÁ¯°B®zCÐ íøAîú.øÒ 4CAnÁ£‚ ý#WD®’!f÷>Fîéâ@ ã­·lF=vQ[¨fÍ�î$s pº`QŽ®ìÓ›n1h½�nÄ-åm9YŽnQo œ4‘nNøÒHËè“*JÖ.ªj› \>*“–n¥Ô @‰ñœšn|P¥�Bãš® ÞêNÒl�n£Öç·“Njžî¡\�̉-ž.A±d^Ë ÿžnJuf©˜z�._¹Qô¸'¢î¶¬ÎÜíßJžnÕB½`R\¥.¨9lPަî;&S(ˆªîv-W�…飫nZ;×ÙÞ-£¯®``N<º°.Ÿgü L™žÐ¯nTâeê¸]~¯.d .c¸^n¹®Ç)&t×»îTî4ƒH:é¼.5/÷ìšk¾îjŸL<ªä¿®]EsÊÿÀnK˜`D?¯þÂn \7ÞLœ«Â®`J�–�IHÄ®¶r9�”Åîù]i°wBøËýc _Ì®•×Å #£ÍÍ.xÅ·%Înm3«¯YIgÏ®„¯|¢M,ÎCÄŠ Óî>8ÄJäÆÓ.Š#b �ñ[Ù®‡Õ4‚±Ú®ÖáÍ^‚DÝ®!^í,OI ÞîíàP˜ÕgánmÚë 1„ô÷ãnÛv ã-´÷ån‚®8× Næ®hMϦ¶µæ®ƒW×ï;Dèî/Ò‹#JVÕånãq¥!Dñ@rìî�rɪAôTínnäHß4Ã~înWq çйñ.ÊFú Rý¦^ñn<%çÈóûn¹‡Í!AWûîÔ¶;9JUý®bC ðºö¨þ.\ÛQ< Š‡þn¡‹Àðyµo€?ô Ø÷§o¡ý0oK<÷/ pâ(J/Ð,×AÓ~ ¯qbé$ö¸_ /v:dèÛó¡ ïû…ÓãÛÝ o›¦“ Siþ¯*¶Þ .–#ïÿo_ 1 Í�/-E&NÓ—ïðcÒys/Øe6;CѸoï#~"cï„[& ­³!¿o ÏöºøW/t j B]M/Ńùû²’ï†Chz†Ïëïä–!É"É  ïh0¡¥ˆm"/”… \†ø2%oB¥T¾ÐT‹'ïkµ âìKØ'o†TZÅ>”)oªÿ¨:ÐÝ*¯´{#§/¯ž¬Mš)B;0/švª ´�›¸2/È5J~ 3oºé ›O*¾4/Þ"žà|3ïÍÈn°¯¦6¯k_€iuŠ7oÿzoê8/1ê fƒg7¯ÌÌ`oû À:oGAÕ’ê44¯ß �‚»8·>¯Ÿ!ìÆÒ6Aï¤õ'�°ðUC/O·f Z˜„CïÍv^wR6Eï �…àò…JïtªDÈìW>Ko†"t+*;ÙK/’f æ�zK¯9Gé 4s O¯·/2 ‚N6…Q¯YË%]2QoÁ¹ƒx~kR¯¤|ËpÍZoR¯=„"× ZeV/ñ$ÞÓfZV/ßrU¨{ËXï\kš c™O1XïÈ; €ˆøvZoЈ, Ý› ÐZ¯©1Õn!‚_/>† NRHaï¬>5¯Ef¯{´+�~äf¯º[ìبxùh¯ÅVˆÒ¶º`h¯_=ÅN0*§j¯µW|Äj{flï†Y2µµ¦o/A¨€“=°]qoèà ZEtsoqZ# ±ÇDÀt/x3ˆ 9•ÜDuo$nr²¨Ou¯‘çš b¸ûÇt/Nµ)x¼‹t¯iJ&Á"–Á|/™}Ãßã䬀oÖ÷â`žÂ׃ï7¸¬ ,Ší‰/©KZ ¼õ ü‰ozBÐ ƒ8íÌ‹/!LCŸçê�oH~w©÷µ�/âë ¼VúÔï8Ƥ …"‘ •o6ì#ž�}•/|, —øÖß—/ǧ+Ð%Θo[ÔÔ7võœ¯ßƒ„ªÛp*Ÿ/0s‡xö ‘¤ï ø ìú:Œ¥ï-Õ3Ý·¦/2·“tI§o«ÜM R&X¼¨ïº–ö†ÙP3©¯•Ž £ÀÒ˜¨/<)¯‡Ö£{§ïv°aÄ´�(¬oœ`Ö =2s®/Y¶ (e×'¸/X�ó }CvÓ¹ïÂU ýÏ+[¹/㣀²­?¾/àJ—€­À¯�­q )ˆÀïE®¡ >Ëp“¯±^ÎÜðįic°kSbÅo%sÆ ÚŽ%øÆ¯ˆ+gdVÑÇÉ/±wHœ…+ЯM…]@«[ÅÑï{"‘�6ÀÐïòõ:…ÇcýÐ/yrk< šq×ïžþæ “W4ׯ‹ 9¿ œÜ/þ¶ 8‰+ÎÝoã·n O€Ü/Áá��bpÜo�çsnQ�ào1jE>«Ò�áo·Ô!r›â¯ï© w5ÏÁã/š8zIåoÏ$î ÞÆÉýæï ˆÛb4è¯>aÏJ•¥×éï#žïRqúëíïD7Z-©ß6ïo_-s ˜É9ô/šçE(ìÇûô/ÿ¸hŠ�ˆP÷o¥c—ˆ›oøoJ¢[è¾]ùï-Å 'Á °üoð£R:¥Î¯þo.ô$ƒ�zÿ¯»¾ÆñU0Œ’‰ ãéÅa0’o­÷¸_p€¨ù ^<ð'BGÚZe0€EríÉè ðDM: ¥¥ 0éI_’ð£ p¿ól`^Œv p(/W é©� p�t /�oÞ°¹£ Â[û0™·n"]�ʰ|Cy `Âq¾0Ó oA„kî0áh™kð³& |Ò01k¼lð¶…p#¥Ûì‹ n0&„Mh¬° 0�=¥ý}á pN@§²ˆ­o%pX ûºÝÀ‰&0ª9ï TƬH'0…î- À€ÿñ*08Rþ,`„É+0Qü§Ïc`B+0VâpÕÙT/0‘ªòRVÂ,2°áEòt Ø4°4ãÜ?•Ͼ70`ˆœvï)8°ŠòRúl;°¸5ž„=dƒ;pN^°¤o6>°ÎÝj GH°®@ðŒ]믭«@°Ä"Ú�¤ehBpó— ÿ`º‹C°H} CðOÔê–ßâEpè³è ²¼ûFðûÔŽVÒ”©Gð¤®p'�—HpCŸ *jSIp©  @öµAðÑ:Ã!;¾çKð:ª‰ö´²KpkŒ4ô‘Î!M° B„’‰ öM0«ÒâXž-+Q°¾ wRp ùA3NµR0d k#� U°É»6rnÅcV°ž„½ÌYžmWð¯.Á0R]p¤AgôÁR^ð`K3ÄÑ=^0Uô<tÔ¿Z`°TTg#óÉ`ðü cœ¡`p…JZkªfp….zrk}g°tܱ <£èiðIUÍÞ7t)k0¸Ùž ÄgŒk0øhÄ"…íoð:Ø Õ�K–r°H S\5r°žhºŸëwuð{úñʰ¢wðÚ‘Š!ÐØ–—xðã«Pªš"6ypþÆ£ÌG÷Nyp¦Ñý·­Nñx°|¶>“V}ðć¸×¹¿Z~°Åãá|ofVðè" «Åó° %Â!Uºöƒ°g°Á_c§t‡ðÚúÃgKj¾Š0;¼Ð)�<ˆ‹0ö©#$&Œp¤÷ y/[˜Šð—ëý™‡fÁ‘°2õu6ïHq’0ôãFþ“0— ö{Ïj•ðT F¿[–p¨œín<Å0˜ðG%ã Z:ó¹™pVháÀþ”™ðº×œ¸¨žð›°¼¯lÈ™Šœp€6¼3‡‹œðlã› Ü›0Þs}»6ì$qžXï‚p8Ý&1;ìi_Öq—'q‰yêWl¶'1P.ÀþÑ'ñ8)ƒ¼–Œ-±0šî s7ãW11׊*¯KÅ23ñJíJæ î4ñ¼­€[+X×3±#WqòËç6±rç¥Mb9q yÀ„ =ž?qJPt Ú"·É@qŸùÏÔ+@±åA öÊ CB±{¢ö½\Cñ”€ê9¿|ºH1Ô¤¡IÄ;Jñjå,a$�XPñŒv èѨßT1±Qy º™ŠhV1R»ø"0å [±JÇÀÎ^ñê"ƒœÛ…'a1UÔb yZ¶bq.ì Þ)4Ec±�kk •Cp.dq@„ m¦ùZe±ò86cOÌÉeñYQ ·†ñgñ… A—ŠÅ£cñxÛ4 eO�þq±špx;q—x1Aõº H�|ñ¢}|!rø<}±/,·eá·†1OkÓAŠ%Š1JÑ�b–BŽqc�³›*�±�DÌnÆm �q«Œ@=\ä’�1;kÎ àW;W”ñMrÎ'&ƒ”1‚>›6ÐC–ñœÄ/ªRiö™±¾ÒEŽÀ}â™qç¬G+‘p�ñ…>†…(xÛžñŠ×YÓsw6Ÿq-@= þ ¢ñpVÒá<¹z£±ÜÜ9H茥1˜ý6vi)¦qBy¾G·`ô¦±~*†©�ħ1׳s0¯æxªñ|˜ÍE’ƒ”¬1á£+ Ì.S®±óaÐéB®ñ;ÉN:B •�üQ°1‡Œ™ Ý0¡®1¾zD “Ÿ±1Îi#sÙ+¥°q*ü»C6N·1¤¿â†½Wò·1V¯€4¹qÕ›ö‹gɺñ¤‚Ò èœ&»±fª´ºi�\º±ù¨a ÉØºs½ñšÙ›/Æ-”¿±£ò|‚QýlÀ±˜Ò&ä5(–Áñ‹%lìÁq$ÀïÙš±èÁñíœ�\†LÀ±�¯)wÕÅqþмCú“È1ÈŠÌQ•£ÏÉ1b*ºÂqË1u¹ü `æÎqM©› h*dÎ1?‚~ÖŒÑq&˜1>åÓñíRŠûÂQkÔñgTj6äU�Óñ[-ܨ=Ö1­�T*nÖq5UFs!­ÔñÎ3”d"HÖqãÌýu0pÚqÅ3E!‘°8eÛ1Ìù0<ç¥ÝqèpÖn¤L ßñ�ËŽ ݉{µàq.µò<©ó á1_r ^Ý â±”{· }ã±™ZÂ�ŒâqB¡}ÆÇ¦åq|å´˜Ð@æñ°�è¼húç1Tªœ +0ª¹ãq�×%|‚¸Hëq.t·64¼Îîñ{9 ¬Ë+Qîñˆl·àð±ôF¡÷¹ðqI2. ‚Ü¡“òq:{Q"Àjô1)?B 82³ô1¡úŠ ˜¸ã¡öqXìƒïŦ÷ñ|K¢ ?% iø±°l” ˜¯d{ö1݇j¯õñÑô‰•/ ûñ³µ;IÏîëø±R ©î’Ãýñ³ž žW˜2ø1üšac*ÿ±�:³N~a²þh#/Dðs ²óéÐB�ó� 2·&÷7 rƉ÷@‡/ ò“Ñ Ä›þ2¥ñ� Ç£f$òÐ!̸,HrÍ x¢9c<r¥Ï5?Pg²¼K3 øa–ÓòKpœo†2DJÏ$ƒ{¢²Å6jJ{²l,ÍÌF}²"p)ðHîý~òEöPÞI„�òalhèy~†òø^q,‹Å�ŠrÞP ³­©ÉŒ²qÞÓH‹¨þŒ2!`•íb³ŒòÃÞ `{Óý�òúˆªmŽrgõ&:בrå ù& ‘òÝ@' à%7“òF¤ C“²]¸c;î7•²Òb•½mo°–²Å½_\4–ò˜ÁOzˆUv“òM)ƒ6ÑzW“òÃ¶DšòŸx±‡qSš2µ­6Êǘœ2,^ Xj’²ú-÷«�@Ü�òSU ‘z ¡ò8Ö¡ þóì;¬rÕJ†kŽýˆ¯2Á/½“ÞÂr�'5è¯eÃòˆÝéîgÌÅò{í^ mÁaßÅ2 º�ŸâÇò:¸Ì32 ’Æòë^¸w€ðçɲz,úÃÊÊ2c`y"=ÉÿIͲ¿ ² ÏÞî®ÏòÃO©]yóвhªZRE¨×rs6¸€ÏâÙ²_S#8´ÅoÚ²µ Ÿà§ñªÛ²þ1ˆ°e–Ürpó¤ xq: ÞrÝhƒ¿ ¶ßr Kd%�õ×âòn˜W ­‹õâ25R;N?Éä2à6ˆ ð1ä²Èé� OÈL¾ær€uU´oƒüêrð‡ê˜õiìòIÉ ËÊ "ír¨§ Jj ð²_Digp¨õ²(EÞ!<öH)örý¯o «,÷w÷2¼"ƒB�IE÷òM"Òîáýrš�ÃaüÄì³âŒŽäð]3p®¹C¤GS³øñk ÛJ÷þs ú²œ:EóŽ|oN3Öks-çs 0:üóâ± ÚÔ*33oÚD!ó€— 3;”YXJÍ ³s"ä«©ð3™U"½Ý’Ú ójQg Ú6̃óî^ÝZñHGóƒðê þÕÒÃsÐÑ@H^'3'iTðâ  s}ZšõLÅ!3¼·i”wCå"sLRÛÊž�#3#ÔÆ%ŸŠ–)ó½BzlaÒ-³ ´v)Rå^/³.” +Ïá®/3¯•�ÐHš7³úD†:sDSásÁi@3|eò0˜C3ù´ìÆM·ME³Ìûý Å-ƒŒFsj™ ¾5·G³<ª@ SÓ5G3 dþ»=©�H3 Õ] ÝIƒJó³WV²€§K³‰ß1G6K3_êVHßÓ³K³H×à )kw¶O³šÍR}ÔÈVó'½ ^”ù5WsžY…Ø«‘½Y³ÆÍÿO 4½Zs‘à~j>{v[3ÐŒŸט\óÖ“Kbì¢]3W~Õ®B>^³¬}‡8å0]_ó{_ã Çó_^3âj çtZ3HÑò�ÆPesC¾@ýG`vh³Ö º1U l3Š/R  tl³!Š Ö7×l³˜c- tps”3ýÔqs¥‡ý‡¢�ßs³Ú+µ �èF¤tsY9»ÎÂTéx³›ñFR²7¨y3m·›²y³B°$µ’u{s€aáRoT{sôÀSz­{í}sá�Üaç“à}óöê#ôÝ”~³›NOÊÚ‚}ó�´û_^“�³{ä$;�ÿxsŸ·!K14σóN­ß ó« ò‡³A®!9¹ê‹sÕL†l3틳͉ù©­6ÒŽ³y+K’¸t½�s”I—ÚL~(�³õ"Œ, z�ó®Ü5o8@Q‘³l·Z×ղÓ³þ±M€.N˜3 2à�”k™³à®”—.Ö6š³$Ü!gë™s�C‚�æ¶ú�³  Í ¬pá–žó²9ﺆõ‘Ÿ³1ßËÛJ  ³TÈY ß>1žó‚ŠÙç í¢sx$©x¶£óv'Ea'‘J¦ó0•ÌP’¨¦³6«'}É©ó ÒÒçÀ‹?ª³®� W묳Œ"”×E7\¯3ýu:#Q<°³ ê�Ú:{C¯s]ãûŒ¬Áñ±ó}ìß!˜ä5"³3; ûR6çš³³ÇÛ#"3ãñ:¸óýÂÙ ‰›J̺s?Ç_¬Y­q½óD~+ä¿s樜‹Ð˜ÚÀ³ÿÕÏ¡†š‘Àsgf 58êtÁóuÐÒZaÌ8Çs”²!SKæ?Èó¤òé®Ëóæé_ ÅÍc4Íó/�ÔY¾&Íóyl£ Œ¢j“ϳg§¹ ÔÀ^Ôó ° ÚåÏÇÙóâ»Ù r4ALÝsF�Ú[;ÏrásåÀ“øÎWƒâs7�>¬ÀÆzå3”´‡æ²öæ³)·#H¸›1泫š‘ìtaè3oÇ™wTÏë³!Ž-±Íö—í³Oo³?í(îóÞ¡7ùêÊtñ³X€ÇóÁª¿ò3C›‘"žŸ×òó"ë ¶Œ)ÚòóÑí’s cZö³™Ý�‚÷³½M!¢å2ÜýsÑrA’yKïþóZî‹!'cóðÿ3è´1Þÿtfÿ³Ê®Á ã Î�4¾ � Ô©ƒˆ´»5âs,µ4s* œ×©J tN#SFÆ y´=LO㉬Π4“-¹ÂP 4Í- énCô 1Ìê3Ù ô(•oȲd+ tN Ðnaô'†!-͹¯´ÙqO‚ÓÙç´rx ãM­ut©¹À½6ô3ÓôÚúáU4Vã×R9ˆÅt×þ o‘�14R×’BÅç�´ä¾gÛ*!ôHøuEáf4Õ+é!öOº$4�V à:á )t|¦äI­Í,´=¨o3F�ú-´-¿—É~f×.t‚pÂJH1t„æÜíŒT4ôÂ7ÒÅÅv—5´,¯Ù 6‚\I;4õ |‚�#=4kúÆjƒ¥ñ=ôÐ J– »?ôÇO/Žå@4ýª*³.D4ó­ CÒ F´\`Žt߇!I4Ó#© ¦k5JtØí€ à=Ì Kô,åq8|L4£‡y !¨ÕMô4ý½:õ‹ N´;³‹ØØ{S´<#Tj·¤|Styùa䤶Yt‘þÙRdN[ô²y†?ž_tOSZ²w¹-_tìyëxÏdèaô‡#s PXD`4÷F'4Kŵat!ÑÂGç8dôûsý t ”Ôb4ÐÁ}P‹nwf4ö%¨¹žþht¨gP ^/iôVâÈmûàGltÔ?¢cèhEn´:!¤¦q‹o4 špË$îoôž2 ŽuìÝu€c˜�tŠîãKrb–4×Ý? ö°—4¨ˆ€f¡™t†˜S �ù£œô…Í %©æ.œtµ1 ß5ü%¡´•ýî /¥#¢4a’Cƒ•b¢´¦€Wh“Ü¥´³ñ¹åË¥´—¯³JVO=¨4‘NCrSΛªtJdfîªôJ“ë ¨…E}¬ôþõn!›ÒÉ®ô(Úµiͽ°ô¥¢ßŸeWT²ôKðŒ 6祵tw/j DC]v¸´T¶¡gOó¸t"Qqƒ€8»t–ép«,Ln»´S8U ‘°½4áîˮ¾tº£v�ª¤ó¼tæ›` ÕXGÀ4%üè£{rGÁ48$eJQ®Äô&Ø#¨ë�Ät‡,BÓ=ÈÆtV%à€)ÄÆô>¢J½ý´Ç´¾õRÈ]q®É´x®Xƒ÷Ë·Êô%SHˆ!b8×t[˜n·ýØôn…[Â,Ù4š8š À*yLÜ´X¨o>)EÜtyyÝ¿z¸Þ4ÅŽê T¤/Uß´×dioÍ@ß´ ýp ïãS›áô³>%Éw²Sá4¬Œ!�ˆxåô$þ pyéoæt¶f8ôKŠå´cD[Và¹æt®Ìè”̈Ÿë4`‚Ïç´˜Mïtº‰¡òuî:ñ4b±Ë{õzô´�¸Óc B÷tc/6b~Ð/ú´µz ‘½«Äûô€F�ÍÖXý4Êç£ÝÏ’þôN·d�/éõOmúu@?3u�Í|É0½ õðëç<5ªŠ ö·®3µÉ¤s«<èIõ‹¶mÐÃ8ýuw”É·ôÑõÒÁÙe S5yÚ›¨‚ªõú‹Ø¿UõŸÓ_š;ä…5„¨!Zõ Æ5æsþ'«Ôµ#îŽ œ0LÃ!u6n×÷تJ!5µúˆ6©a"uÃë×ÿ'd%µ«Ý‘5Õp(õæb&(_ãÈ)õç¿=Bü·�-5—¥Ì÷<õ�/u aó 1ã—g0µ„Ýž Ì!V0upôVu„Ó¬/µì ¹µÁ.b5u¸ÒsÁˆ6µOl¬-¶ü…75Ç·C…÷˜o8ug3E6Μ6umBw>Z@9uUwï{~{@7µ-aK"­-ë=5±<^ Â\=ufŒð0ÏÏ’BõÏ`nä¾B–CõÍWm8¦ZqCõ”ën V‘ˆeHõë3+AIu·ü>/¼·Mõ�ú"űí™OõBèÇQ2Tµ¢Ú å9¸LTµ�Ð>»)«Wµìœìˆ 3ZXµÑ‡d ”\Ù]Yu�µùÈ‹%8aµ±aºí[fÈcõ ÚâcAduÁâäk¯Žeõ=ºÍògeµéàC;s eõÕŽR ¿ v.fu„7mðÉíìgu»à@»µ^Xju(Ó2ÿF²k5)~«~Þ`,dµýU¸�ÀmutrÈÂê¯m5Þ1ÍŠ…Do5¥u Úw¬eõ²?Òí¤põ5‘ êb&d5‰|»!jæssužüÀ`‹4¡uFÌ–añvß—õ1¬ëN?`žµ"d‰!Ñx帧õ%,@㛨u+†í€ê…©uü¹ lÿ‘´«µxÉï[ñ7¬5bù.ЇA­5’kku2­5Ÿ7ÔÅ ¯µo3GT´+°õÀúJç…ÿ¯upºKdßê²õy� yw °uC>›€ð÷«5¤9ÝaX¶õÁ²ÿj@‹¸µUfÄvW¸¹ºõróÍ[K¸ƒ»õÔEA W8°ÔºuqìÈOVž¾uñÂo± áÂu"—Q"w¯rÆ5Xˆ&i·¹JÆu ýÉ )æ�Æu ƒ˜除‡Éu)ªF½ÃеÄÄ×!ejÑ5YQ½o.>Óµ²Ùzë×TÖõ øÝ#äo×uw´ˆ@Põ÷Û5¹ˆÞ’,ÃÝ5r{k ýaßuËÓsÄèhßõÓN½‚ ᵘŒRÄÄÙjçõÑÌm-ÏkêuÖYðBµ?±ì5FE0PÐ3ï5†'ïñN?âñua,Oæì'õu&ÝÎØÚi÷õöwµñÊ®ø5O¦jî Jü5lÆå€Ö¨Mýµ �{¹ƒÞÿu7{V¦S6=61›±{6&3«Cß•öQŸÚ _U‰D¶¥*% @ÕvÆÒŠ¥`_96GuP ¤or ¶¡‹ü»Sl6@È�ô–’Iöê' À>ö5bƒJu¾¶N�m +lÀ¿vh3Q†9¦œö*ð�1a¬¶Ø°awîVm¶~äGà­ ™¶4Â6>/–P÷ß>öAÁÛ_&Fö¦oˆ�^MHöÆÝÇ!ý²�ôLöV(³øÑMvóœÈ •�®L6§kæÂ@2fM¶›ÇíülhRöBî´iàŽSöÌÏ ŠˆÐRöåñ 㼫 W¶v+:‚"MZ¶+Š!�«ý]ö1¹PÂßO­^¶Kš®e§³ñ]6Ã=2"ƱWÊcö,Ê/ö·dv¢ã†t\fvKë¯Äpͺj6{^¦€ç nöWo© O–oö‡‘V](¬Nr¶\ºŽ!t"Î ì€À¶–äIþÕ¹Å6·` Öh$ýÆö ÄvlíÅv}üM·?1À¶2ËÉç xÎÆ¶Èíúã!ކĶAò 4`0£Ë¶yfMpÇ›ÌöL䑳#TÔÇöØÊóÿ ÊѶjrÝŸ_Õö ?ðÓ•iêÙvY3.ß”þhÚ6S0 ÌîþŽÛ6^è:K~Y5Üv:Cú 9…�¸ÜöΩÕ‡oÞ Üv[ Êj7ÊÛ6úI"œ[“Äåö)Akµ P|è6d²åÇf^1êögì§ d³¦Mó6Èw?µ’ð2ö6Öx w°÷öƒ».J ;w<ÞÅò+ûIwBzÈsè{?w(`¯¿ì0,wƒ{§C— w#/ÐÓw­�[ å§E€ 7ROm’Æj w4�3=Î) w¶/(‘òÍó7ãÄØÊä:·¹ …R®ÛN7ò²M©òãÙ7ñúk}s©ë7>-É#Šá·hÝ7 óë§#÷™’Æodkws€ ÅÚÆ*7ûž#Çßf+·êö ðÞm/w›²Éaó«/÷©¸ 8žÀ/·6]q äºïØ27î_%™b37%»½t®ü67å…mÂm77ô3'ͬ98w �É{&’:÷®TTk:ßÔ;·÷¥[Ó06;7=!$!ò}À=w¦]í+&‰>÷àCîç&Ýk?÷�N Ãâ}@wç°¹ï@÷Ýøiƒ5#A·¯òý_Ÿ?7EPòU›7‘EwuÅSï}°F·Ô·c«�–±G·‘+ MJ`ßH÷úÃu_C ‡J÷ADûÖ¡bŒL·N1" NãgM÷'Úá e,LO·ÄÛi ÷4 ½Q7¬µãÒ¶ÄÓU7ÁØã/q"'X7O( úa ‚Ywdû»&•( ¿�´gw¸›‰Iõow  åX‚ßp÷É´Ð}d0sw%‘ž+|Ö¸vwªÜ-Á?.6v÷˜+¬Z'âxwq�ô\»Ïz÷¯ ØÍ”{÷ÕØÙ ²cY‚·g$?aˆ2…÷œˆw›tµˆwçu¾ù‘797Å·sÿ —7…½æþ˜«—·pW4Ê/ Å7;½�w|ŠcTö€œ÷#å1›Pš÷%ae 7)à§·‘®›9™~¨7­Ä3 H¡ÔЍ÷�Ù Yý¦ ©7¾kp ‘3*l«wÜlcŽ^ê¬7‘ÊW xí/Y¯÷§L¬h!f¦²w>¸�Ï%íµ·oWÎâr¶÷-Ò+EŠˆ¸÷§mB¯[öž¸7¨Úä hÜE¼7Æ • j÷£k¾72óZÜsÀÂ7Ä�µýmÜķ?ž÷ÚõsÅwâØˈˆ'Æ·“fK™ë8Ë÷Ÿ0 uDiØËw.à‚ ÒαÁÑ72«´ÌݦÓ÷9­º§hÜ_Ö÷”Gý"d,VÖw£·çµJ”ÙwP “çÉcß÷ ˲?¯à7GÏÑ q(¤à·ZCÅêêšØáwÅ“8 š÷µøè7ç9Íûxë÷^€r�ò·3îw4è’Ö!Ùsð÷6½ ªÚÝò÷̶Ÿ!�éÈõ7_¤ä1·X6ø·äàÑv¦¸ø·èœê¡ ô¿À�!xKŒW›*$øÅÙ6qtó"$8R²`˜uï¤&¸è€ä >lÇ3%¸OyµQ­ï&¸¨P›ÚMú,8ˆ ƒ)O£,x°’ $^.¸)¦™úYBÏ/8i|þY×*0¸°ì ¼æÏ1xÂ]‡%‚–µ2øÂo¦R‰š3xHó>§Ný1¸È�òPÄß6¸»¶ùƒiü¦78™fBg�—Ÿ88y%JXƒ;8ß%�"3åP@xw³i ÆâCxç`1º ÷D¸vÿ ªê_AC¸ÉBÚD¹ÄäGx¤” §+;öH8ÚÈÂá I8SXxöLòÄG¸ß[û_uZK¸û Z’ëjLøå_=¦eteHx@O="þ't{O¸ š\ üe"O8q ¼‚òYxÃ7�ìOp\¸`næØiö]øzïêßïA^8¡ç öJQ¨]xÄ(F0€ÄÇ`ø ãË?*$a8‰ ßÑ;Ëdx"ÛïÍêhø(ÒÂ5Ú‚thø™ÅíÅæÍ8j8-º·9@Þ-løÔ$öÑZÊÇm¸ëª“!ˆ@Txq8*éø÷´z°8Aú #Ý ò²ø³«ã ½•׳¸n•ˆ&Ó’·8$TÕj)Çb¹ø”’Ø éÔ»úº¸æÑ·†ó»8Yx ­ù¢ð»8 LX ––¨Î½8 £Þnpµ<º8›¢™¡-�T¼øÂPN¾Bü»ø­y;èćÁøÒ»ö �“ìWÂx›…šgåÙÂx¨)2†÷ĸ"‘)tËƸØ£ ;lXoÇxé]’" Ãɸ¼a\ T5ÞÊx'b¬ Eh,´Ê8wò A¹?Éx0Ÿ óÑ>¾Í8íC8"sc•Ë8°±� E(±ŠÒøtcK®™k'Óxôx­ õ(UOÓø7ˆö œÃ‡Ô¸á¢r ×±ÝGÕ8›~$ ó*c×øG MÜyÌØøñŠ Ä?káÚ8â[‰Áv@ßx.Kf�q(oàøG#žâxS§§ ~ãuçã8ôR¯áÒ˜Šè8ñÞÝ3ÛÊè¸Ü[„ ÚiÞõ8\¶ Z�ßµø8¨ƒ£¬¦0øø$XÈt†ýøBʹ 6ádðþø®ïËŠ«‰ßÿ¸¿z9 $mHè¹/ ‘Àb‰y¸¦ù̯jÿyæCŽ/UCÌ9íñàÉÑy½Úß ù üNy éPu“¶9zät·ûDù{Ž\Ç8UÖ 9‹oU Z¥Q± 9“â"ñFm yÜó+B¦ y»¼Ü Ÿ+EØ 9uþäP4Z^y q û`Mîyu¤Q�½þy\Ú«Ú~-ƹ�!Jš@¹>G÷ó°>Ù9’%- úŸ… y�Z•!�ÍŒ¹Ù“¤1~Z¹Ú°R¯k!¹Ã…6žŸ(Ò"9êO± K|wI#¹û+ ä%¹Mþw Ø‚i-(¹sµ ˜—w~)ùi�Ø ¼§Qš)¹]†ä"Õ?*yzú× b®—m0y­g� ç¶¢29¡Ì. ÷q‰4y°l <÷þ6ù�ï©ïªïì7ù�Ïî O[8ù‚ nˆ\±8yúÁ2Øé=¹ØPG!ÎÿþA9"w˜x5Ê/B9¹°­„¢°–DùE=´ —ÓGùÀ2Z¶]bIùbÐÅc)ñFIyöR¾ Z!\¥K9Ù�Uñ àLy õ{ò¬ØM9pNž!$IxÅN¹¿@ßgI»O¹ ªeÉGnPùn¦¿¶bˆ1Qù”볩P¹œö:gòŸuSùâ?i 9r$Sy‡Ö™+…ÎOy¶ÈÆ7 ~QSùÕøþJ°gVWyHo Þ—@ÕWyãô' :ª ñW9 -«eg¥&N9v?Ä)Âea¹B›x>3¦Md¹KBçTÈgy¸þ+àf ˆh9çCΟ´§iyÍ� ŠþžÌj9R#¡IV�¨gy§m!µ>lùŸß ߯.,myàc=•^nùÝcïÞ–WoùÙ­È7d¢�pyÔêÂ�PÁÑp9æ‡tÉ,ry#½&½tù7¾ IûIt9c”³�eã¥v¹�?!¡{x¹}ÒpE§yùmm2¸s¿žzù¤UâXC�|y9ß IÞlÝx9i¨-Î;Ýx9µ!#¸¯Ö~9QÕ ý#Kêy¹ØšÖ!ÁŒl9€9¬ÌÐ�yÅoÿ\#Pu�¹ˆ9cêÓ�"†yÍKÚ OâT‹9FH±™Ó¨Œ¹õ9PÖ‹9Ó\p’Þü›‹yq|B‚¶T�9×=áe�9›£[ ¾Œ‘y†½¸®'9(”9átäÓF]•9Êt0 ó¾ð&•yš ²6'•9$ösQfö#”¹’•yêS¢™¹€(ô Ná¼n›ùÖ™Õ `U �9¯�ébì('¤¹�—ð o8<µ®y\yb×íò°9‰áÊû¡#ºF1lô Ľ#:ŠÒÌ36*zIX ጓ�*úPç¶FT?—,ú=}8ù Ä-zi¸i¹ >0:Íݸ‰8‚T2:’V#T#�2ú6SMë%z9:š°:µ©�?zW¿ ê#g?úßÕ77ø·Aú`|Xkœ]BúKt !Ææµ¾CzÂmž¾\h@CºåñêæB;ÚF:5MòþPºvë¤ÑYÛSº©MËxºQTºö°ÿ Ü©ÿRSz×3/DOLGVzÕL!ƒÐê*Vºœë–VHTzͳ¹þàòèYú0KP~BaâZúçšî™Q˜Þ\:Õø}uJ6_ú@¿ ß‘hÙcúR ª ü>¹gº>²+¾³ú‹kz¿Ê)ó½j£k:ÂРMÚwmzð½ 4› kúò  ó½qpºK.¼¬ÙuzÕìãq™—öv:˜©åü� ówºÕì4Û ×{:ü¿S!«gù!|:4F*‡ç|:§Ï½Êr(öz¢; –*Í{€ºè±¾®$õ…ºýQs �±Oɺ•ÑÒèzŽz•çNÁ„$ˆ�º¶Á@uÿg�ºÓ:áé\ƒÏ‘ºƒ®Ú½¬&N�z°&2ˆïБz,,¿áVC˜ºÞc—!¾Ž™º8ÖR½¸žºàM{­7 :÷"BLµ¢úT(> 3Ž @£zr« hçU»¥:ÜÊC q f¦ºìWázŸE§:¢ºt A® ̦ºfßÝ«m¨z—Ÿ²—½U«z`ßñ -»Ã1¯zÅ×j Áä»°:'‰ùÞWü·º¾É RRî¶¹z”çÜЂ½:,Ã:ø³½º|Odlð³O¿zבȱvßÀº®=­ “[ÓùÆ:1¢É ûÇüÇzÆ\þ÷½Ê:רiv$Ì:úƒ<=ͺߵ½­ÿajÍzSù®šø`Ï:…ßsbé\ÎzMéÚÆ. Ñzw�_‡B¿ŒÕ:†\K)W0ÕØúZ'Ù³ó¯Ùú­È5¬%ÒÚúy`¢gÜd‹Þ:Ç.›ˆþß:UŠ\"j)wà:¹\•z#]à:¦¤E ½¨5,ìºhF0g$<’íz†AGàÞ±îzU�læ �íz¤-!['{=ô:7½ÐUË úõ:¨y ¯-”÷º ¢ÏÐfÙÂúºø>I!Q¨±;þzž:vøl1Fÿzâ �ß/Н{'Ö€ùñp;×ÿ÷cÒ£0» Òƒ›H�Æ; pj�²)÷»Õãn¬‡1 ûdŸKÐÀ( ûëê]é0ý¯ »öœ( 8éÅ“+û®E»‚¶* 1»‡ a û˜Ì"1;i±!+£~5{jà‰¼38{!WKâ´ÔP<;Pø™Bÿ(„A»æŠ"›úŒ¯D»ÿaâ ÛTé E;IÉ‘מdGûm)àËÀ´ÉH{Ë=Ôö$K{¶ª™„Ò†Lû�·Mi©¶ŸM;Ã_Ǻ¥N; ì*çËÅÆP»Šº ÷«ŒR»KµZ ÇÂæSûñX&mÜUûÿ“fJ´µfV;‡üÇdÈ`ýW{%‘¼ж^TXû×n‹üOèU;dg¶«^ _ûbå‹ÃO×”a;2Šœ0’W“b;Hnú›ùcû¿‡a íQc{›€×‹ìå¹c;#cãW¬€pf;£¿§˜ÜÂa;ó5¹!¾  h;ª= ¤æ^iûSÄ\n¿�pûÜ"ìý«‹ÿu{×9¿áæDv;B[eD6tx;Ö¹þ¡6/²{;ûÀäÏpœ};ÄÌTür~»”rî!l'^û\…ˆF¬@€;˜‡e¥ß[³ƒû0šnUlZ—„;ßÒàÖ†»äUŒŸ�Å}‡»ÍÌÔ›Áˆ;m|á‡0B‰û öJMt‡;â»Äo�»êŠž ˆŽÞÐ�û’_›TxðÇ‘{àW°/�·“»nZ]Ïã*”{|Nç %ïqØ•û±aÜ r¤‹–»¹ƒWJe&–»ÔYì lÖ“»~’TS™{˜˜p &—y”»˜�w Vœ»€Ë ƒÍ¹Ó�»Â¤Ç rìœ;ú©na1¬ùŸ;Iì• Þíax¢»?8 ­ IÏ¢{œ COWü£û‡†åOb‹é¦» ½ÙêÑ€A§û ]ò=@¦šªû#—`¶+m&¬;z?J“»Râ­û 9s =2î²;Þ²x@¥|ˆ´;އ¦ÜA¿£´»ý.!C6·È·»i´7ãLº#¸{0MÚëèѹûž¿fk,Áº;¹�4‘ATb¿{úÔ çèY`À{õ“À<Ù‘Á»/á ÿÉê,Â;âéüp 9ÁÃ{ØIX’ÀbóÃûæAk š½Ì{Ä;N–Ì FÈ]sÆ»óä™ÂCØÆû eLÐs È{QYõ“QÈ»S>Í ˆüžÃÈ»hô— “×)Ë»§?‰DúÒãÌ»ciÃÎf:É»`ú�‡¾Ð»*"Á 8îÂHÑ;§]üHYÒû S9´‚êÓ»‚P3šY»Ô{!@( [ýhÕûAÇ úÙ\Ø;TÌÁqî0Ø;+‹ìz£G2Ù»ÒÙ� Ä[×ÏÛ» tÂãZÚ»\‡l¤¿Ý»gG(íXÞ{jïCÁ�®FÞ{Î^,¦F�.à»dys§ª4ÁÝ;tÙ� ù—›â{F¤+ ‚V…ã{ð€}YB•mã;¿-Ö}¬�Aä»ñ‹õ�Qfñàûã¥À!F…óîûÌc5Z@IŒñ{�û„ {G˜Óñ{L8íµùóû�"ýÂù­ô»„Ó�,Ãàõ{æÀŸ}¾m÷»Ðç‚ &Ò]÷»ÀbÔirKùû_Å£‰ÂAú;òJ ^‹´Éú{˜³o  8Ýû;Ë6cÔ�+ýûÁk£aô<àí 5`›üõ)Ç�Ë€Èü”ê=:ÛÙs<Ÿh([ |~,3æDØ9 )”|0–? Ô<:¦öhÓaY|C¬ð,E¸r¼·¸µÝ{Iü ²BÔ„¸üø: IíŸD¼tå=Šã‚Ä|M›¢ä|<±ü“ùN‚ûË×üT~Í¢§€i¼^�«… Îá ¼tü¯ ¹Gh© |Àî››–L›"¼hL "Y}ñƒ$¼g¿fnÝ5%|}ˆ~ÁÃõö(|ç‹ßæpü,<Û:âÙ—Ž-¼´Ã¾ u¹.â]=Óå5¼‘s­_E]–7¼»¥ø /ýû<<1ŒN䦘¤=|–i4y=üÓ£õê@1„=<=œ "�½½ÏA¼<KÕ"‰IG¼°d#âú†K<û,'Z­L<(—1øH¾MÔœÏyy!–üFpÏ�ŠØšç¨�eÏã¼Í4Å<x9ä¼g6­“’è|©Ÿ ç‰øÏðç$„Ò¥Ž½r€ÌãAý™à”(ú•DýÈàÕ 3ØH¸G½Už€ mUBòI½áÍAnž�J}¶9É#ó©ºS=p˜ÝÒ(:S½Nuÿàu3{\ýŠ5<Õ^Ý|f}; mm¨6gýÏ«¹Í´°"g=³j^cºÍpi½v‡™ˆ3ã-j}3[¢žTm=ÍÙSquÃnýšÈ4„×Tq}�6ꨥ¼hr=@Å Á…L‘t}žÐ~=ª À >OgÈ€½×Ÿmßq`ûƒ}Ð+Cs.¸Rƒ½v!¦�\çˆ=L¾Þ £mfÓ‰}’Ú1]ˆR‹}.7"™ÎU6޽ˆM†"¿À0]‘= Ž– #mwñ”=kôEqiJ—ý¯é2y ×+—ý©E¾³ði~›=v+ýž#þœ=Äw) ¡èΜ�=3m¹ –}ç(ž=}yc Jòà¦�½=Ò ”éì }½‹'­· ý$œæ|I¿ ýr” jJ¥=¸žJkÛfÞ¦ý/#cAÓ,§ýʨ Êrp¨=T¨}ö—Ú†¥ý\ �ÁÊ6¥=PgÌjáN¬ý%£uÆ#Ö­=4YºÚÅ­=GÈRGò³}¬‰Ò»¹+ö³ýØwkC �W³½¯ö‹a¸Ráµ}ÈûÂQÊQ³¸½'+æ?q3º}T#ô².Üãº=ç’l“ÆayºýwVGÌ·½½­Ù§„VôÌ¿ýôÙP€Î„nÀ=_‰ˆK‡2ÏÀ=@ Ô-0á„Á=ê¡ aÈjÀ}€÷blÊ–�Â=èrT@y-ŽÈ=C%v0ž ÈÏýÓÌÂç6c¼Ð½FÐk¿è]ÑývKm³ÓgϽÙD’4®�Óý—¡[í¿Ô½¡ö[èU2nÕ½Xâ yVÕývÈD9]¶Óý³½ºŽ_pØ={\ù üa÷ÏÙ= –'ËÁÇß=ê4Dí ¾ á½r �ÉÕQÀã=*K¤zòWôå=ô –ËfÌ?潓„>Hç½YoÝíg}”ë}BÀqI€½ìýÇV˜Á²ì}õžâ¤kÑ4ï=>ÝÕB® Zï½ýd™“cçòýèêf\Ÿ“‰ó=îóO"Eh+jö=I§¶ÚÍà÷ýURû>pn~úý9'!º4¢Hþ½Ö`5?öÖ7ÿ}'¹j{¥þº«ŽüzA¾;‘î’Ç~žäku >v•V~Ò½ "ò~$–` ©êc>ÕeP–ø~³E–a~¨yÔE¾íµîò»Ûçÿ}Ñ�H ¤o| þ¶ æÔ=®¾`ä Èz2yþ¢Ï fp þzaIƒÊu>ÿI϶§‘(>øO40¨²¾¡tÍÂö.~© q º¤¡çþ2Nòâ0U~Û 3*Ó$¾N×ßÝAè?&~àø³ hOj'>. )ž§(þ¡xIÀâ=«)¾¡ñE",å8_,¾�š+  ,þFï �ðN.¾Oa‡å09×/>š0¥›0~\šn †b1>EÄä–1þ òè(Ž6¾~µ&"¬r8>iÒNÈ…x:¾‰Ér3k–;þÄ^ î¶C;~�XÈ àâéô?>J´·§ðçt@~¸ÙY…·‹@>ÎNÆ6õ¿A~Óüçÿ@>5¶’UŠDþcçäMqðâE¾Rrj›F¯F~2ÇØ dNFþ¨#íZY3ÐA>x¢(ßK�ñK~aøôâ£n3Lþ¿ô½q�{M~Íkð¤êŸ¸Lþjn>°gF‹Qþ†j…d1e Q¾È„ Œ†„S¾ìóö_nñ�Xþ�Õˆ( ˜aY¾—‡Ú}°GO[þd'¿ò@† [~õj}ö®ª\>úö# ñ8-�^>ÝVE Psb`>C°O¾ýfb~îdé§3Þ‚cþŽãÁ>Ôc>OSó�†®f~§åC ›Ôµf~Ý·iŒkîk¾ACs%È�=o¾6ú,d™sp~5ÞÙ �s>ªÅox–s~¬Ü:–dés¾Éxü%W‘zþX- ܇ j}~t¿c$ùÃï}¾ò®аó¾„rË�w~>‘ä¿W§‚…¾Ü˼PÇ|†~Uèh|m¿Ê‡~]Üy$YQ9"dĉ~}Hq‡_/=Š>©4¶­Ü ©Œ~|1!øO"�þ W0šeÚR�þãÂÙbE�Žþø�g Š�°Ž�>2{xéýdÇ”¾ª-ÛbÜ©m•þCÓh /•…Œ•~ÈY ¬Ub—¾ù��½Vo˜þ@6;qRqþ˜¾ÃZ� OéN©•¾—ò)Râxœ~M’ò|MÿŸ¾ß~¾VpnÁ¡>g‹îವY¤¾ BÅmÀ¥~‚X/¬:bH§¾áB° �ôQ£¨~óù)êîêªþ¨ÑuWÒ{ ®þvÆ4T3/°þé‚ô}�q±¾ã«ž1G�‹±~é=Ò§ª»‡±¾ Ë2U´>^¹“~Z×±¾«7ðL*µ~µÃÃ~,6·>Zæ. áŽ�a¸>Þ¹À.+g¹~\>%Ç-õ¹~p0HØ’›f»¾ñEŸê]í�·¾ôQç t‹Ÿy½¾ÿå® ]]ævÁþ÷•µgTÁ¾’!S eí¢Â>ïsl¸¿æÅ>ñuçËèkÆ~]W-S$w“Ⱦ×üTunF9Ⱦو¨¢YàÊ>cXÿ�iqÈ~¤[�!©­ÿξÔÙ�G—ZÏþJ–Ê \�ÄÐþ+„žTOžðѾ&¼‡X·­Ò¾;»�ËkRLÎ>ÑmÀ’ˆ¢ Õþ*k?8Uñ×¾ u4²Ø!™Ú>-) ƒ�UÕÜ~ùEjxÔ®Ý~�� ᥲ9Ý~k� µ/Cß¾™ao ‚¾Ôß¾lj›e]ñãþÅnk#•?×ä~Zë1 ¯ã‡å¾T›=N²èÑæ¾Ð�ÿ ‰Çëbæ¾¼4÷Ë÷?ë>¡Ü?Ù×€÷ìþ…+–ôðþŽP(ù%¢òþÝâ± ›Àåöô>µ³yN�ö~D†Ñ “îù~ÖÈDªÁú¾³?ãŽÕû>¤R:h>ù>_¾­h;žºÿ~r° 3¹ÿþ úWç±E°?A8‚å‘®XŒ/@¤‹¿¥Ý3!,Q ?WU~«ý ¿ÃR; KÆXT ÿÀ0…ñ2ƒ Î ·ÿÀ‹²!� ÓZ¿JQkµ%hÌ ›‹2…¿@W%òr‘ƒ?>öÆsñŠãÿ � õD BE:­· ?ÀŒ¨ØÛêÒ#<ózNnÝK#ÿ‚}´ F½�$?�Ú‡ˆrvŸ&¦íÏ-³ý�,?<ÙB9|äÄ1¿”€»·ÝJ42?öOëØJ2ÿ±‹ž@hZé5ÿõ³÷a€Ò£7ÿpš[½êŒ9?ìA çÁ/:-BòóÁE]A¿o¨ñÜxBñ�¥I'GÆA_0ÊšI[Bÿò.ò�»ŠAêZulÇ F?ÙÅÚþ©IF¿_q#ù|NH?Þ®.)±e…C?.•Ö –„\¢J¿‚€Lp �;K¿æ¼ ,¤|òL¿_^z(| M?’Ń-\t×Oÿ`»e³˜ÍOÿVF®ê¾Qÿ÷G¾Y_ ßR¿7ü YUTÿH¾—)ýU‰ø5·-ÎU¿0Ìs À›ÈU?Y˜ .PuYÊvÊ®¦¤^ª8æºNáûb?kóé¿Ê­c¿oK‘ aöú@d?«o@¦yR†e?H´èB°d¿(b2)'�g¿Âw0Ájÿ®“寯Fkãn‡öÃø¡l¿ù÷{}oÿ“2+©¯t?Bßš TW_“v¿T¸*Øj§wĵbú?˜xÿàõ¦"úv}ØO¾-}]}¿VöÎé´‡K~¿¬ú4n½‚0è+U(BA„qny tù0…¿¹Õ&¸Ã§†ÿžÒ}úþ¼c†ÿödØí¦,mˆ?×XT GÂŒ¿7P"¥ïO@‘ÿýê�¹Ó·’¿(ᓚõ|–ÿG yvŠˆ˜¿rt;ð4”™?ž< ØÜo˜ÿgìú]/¼š?A/*!}Bˆ�ÿüÙºP®*ž¿¨#À؋Ȁž?¦±ô11w�ÿ0È"È?šhÙá”PÈÿ5S¢yrûÍð$»h®ÍÿÕ1þ~ÉÏ/e6 פ®Ï? þ/uãl[Ѥ[Üä~ëÒ¿ÊùÍo;Óÿ"!– <©/FÐ?•›âÇiGÕ?QipLgî±×­¿ ’óh…׿Ь8SÙøÊËz²²–Ù?s–­›v÷Û?Á°f2ß¡Æ×ÿ‹öI#È}%Ý¿x¥ h¤ Þ¿yé ¹5¼bÛ0y¾æê¿&à?€šÓÜí]Õáÿ.ø¸  FÚ¿uºÀC~“�êÿéb;SÅ…(í?HíY_¸Lñîÿmá¹ t1 íî¡S ñ\r?ïÐÌŠ…Új÷ó?Þ¦ØyYÌõ?Šñ'J\^ö3{AJ÷?!qŒž¾[ù¿fçö%“Û-û}>æHßÁgü?7o@T�þ?’.ð {[Ïðþ¿ÊX ÿVÿÿÿFÿÿJc[Kÿÿÿÿ;UA6hX %ÿDÿ?[Qÿkÿÿÿÿÿÿÿÿ 0&ÿÿÿÿ/?ÿÿÿÿÿÿÿfÿfXzÿxÿÿakÿQÿÿ~w{ÿÿÿpÿÿÿÿd* 5ÿÿÿÿLÿÿÿÿzÿ2ÿÿvÿÿÿÿÿÿÿÿoB9ÿÿÿÿhJJZLÿÿÿÿ Pÿÿÿÿÿÿ,mÿ ÿÿC1~cRÿ'ÿÿ*+ÿGNÿÿ0ÿÿÿ|>Bgtsÿ ÿÿÿÿÿÿ2ÿÿ~E4ÿÿÿÿ: ÿÿ $ÿÿ':F%1!ÿÿYw=T]^nÿÿÿÿ|ÿfÿbxFZ^ ~0ÿÿÿÿÿÿ$ÿÿÿÿÿÿmÿÿÿÿ|vÿÿÿÿÿÿÿÿÿÿÿNÿÿChy~/Iÿt= $>*ÿÿÿ6Noÿ0ÿdÿÿÿÿG>ÿÿÿÿÿR:8h&ÿiÿÿIÿÿÿÿ;ÿ4ÿÿVÿyEjd[Zÿÿÿ@ÿ ÿ&ÿÿÿÿCvÿÿÿÿÿÿ%%*`YS,7ÿÿÿÿÿ[ÿÿÿÿÿEn@=6ÿHÿÿÿÿÿi@tÿÿÿ=ÿE3P1[BwteSCÿÿ ÿ:ÿÿÿÿÿÿ4ÿÿÿ+ ÿ ÿU<ÿ#ÿrSÿÿÿ ÿÿÿ?^ÿÿÿSW<ÿÿ8o ÿ &ÿÿ_~Baÿ|ÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿ?cÿÿ*Xu|S euÿL#mÿÿPÿÿÿÿÿHÿÿ/VZ2'%ÿÿXxLp`ÿÿhÿÿ<ÿÿneÿÿÿÿÿÿÿÿfÿÿSÿÿÿÿÿÿ0vcV6Wÿ(ÿÿ8ÿÿÿÿYÿÿÿ ÿpR3ÿÿÿÿÿÿEUIA Iÿÿÿjÿÿÿÿtjÿÿÿ25ÿÿÿ@BocVÿ4ÿÿÿITÿÿÿÿ(ÿÿ<ÿÿÿOÿÿÿÿÿ*ÿÿÿ[Hÿÿÿÿ`Dÿÿÿÿ(ÿÿÿÿÿ\ÿÿÿ[BÿÿVÿ=ÿÿ{ÿÿÿXUqÿÿÿÿÿÿÿÿÿ*ÿÿ?W7'ÿÿYÿÿ3mÿ|fK*7 (ZM 'pÿvÿ$ÿÿ}`oÿÿAÿ$J^OÿÿÿÿÿÿvÿÿPÿXÿÿÿÿÿA8>ÿÿÿÿÿÿqÿÿÿÿÿEÿÿÿÿÿ|A+j ÿÿ*ÿÿÿÿÿÿ|Jÿhnÿÿÿauÿ'ÿÿÿÿPÿÿtu#s ÿÿ_ÿÿ~ÿÿXURbQÿ_ÿ-ÿÿ^V uF7WGÿVA)Bÿ xdÿGÿÿÿÿ3Zÿÿ1Wÿ-{ !gÿÿxff$- ÿÿIXeÿÿÿÿL}kHÿ RÿL:__nhÿÿÿÿÿ[Qÿÿÿÿÿÿÿb\2p< dÿÿfÿÿÿÿÿÿÿÿF(ÿÿÿ}tÿÿÿAÿÿX6ÿÿÿÿ:;0mÿÿÿ;)%uBz1s<ÿ 4ÿÿÿÿI4D`$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿÿ"ÿÿJÿÿCÿÿf~"ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿZÿ.j,GÿOÿÿÿÿÿ,ÿÿ-ÿ=:ÿ4ÿ:ÿÿÿÿ%-ÿÿÿÿÿÿÿÿ8ÿÿÿzWÿÿÿNUjFe jBÿ>t_ÿ3ÿÿÿÿWÿÿ,hwU/8 '},bÿÿÿÿ wÿÿÿMMÿ^ÿiÿÿÿÿÿÿÿ0ÿ61Upyÿÿ ppr%ÿÿÿX_Iÿ$Z2Mÿ>aÿÿ\ )2ugMEÿÿÿÿÿÿ' ÿÿJg2ÿ&ÿ_ÿ ÿÿperHÿÿÿÿÿÿÿ]ÿÿ{]ÿÿÿÿÿÿÿNÿ%vÿÿÿM'E *^{ V{ÿÿGÿ'x(}8ÿÿosÿÿÿ{bÿSÿÿÿÿÿÿÿ"BSÿ oÿÿÿÿ0ÿÿ<ÿÿÿÿ.ÿ;CBÿÿÿNÿÿÿeGFÿÿÿ'9ÿÿÿÿÿÿÿÿÿÿÿ%et[DÿÿHÿ [ ÿGÿÿÿÿt5Nÿÿÿÿÿÿ9ÿ^dxÿÿÿÿs3ÿÿQegÿÿ@sÿ ÿÿAÿÿÿÿÿ VÿSÿÿÿ8ÿÿ7ÿÿ|8Wmx ÿÿHÿÿÿÿoÿcÿÿ-ÿÿx|n0nÿÿsjÿÿ'ÿÿÿ"bÿÿ!Gÿ69ÿ: ÿÿÿÿÿÿg]ÿ}y6?dZÿ5MOÿÿqÿvpÿÿÿÿKÿ ÿÿTÿÿÿÿÿ,.l/ÿÿ/]ÿÿÿÿÿ6ÿowÿÿÿÿÿV|ÿÿ~ÿÿ!;ÿ ÿo~G.ÿÿpMM0]ÿÿÿyÿÿCQÿw0OD6ÿK#ÿÿ%%?MrDt]. OQ#lÿ 6ÿc@U2kÿÿ,zdÿÿ98ÿ7ÿÿÿÿÿoÿÿÿÿÿÿÿMÿ@Pÿÿÿÿ!ÿhÿ}%7eKVÿÿLI~HÿyKMÿ2ÿÿXGEÿkÿÿÿÿÿÿÿLx0ÿÿ[ÿÿ{ÿEQÿxÿÿÿÿwX tgÿ821ÿ 7ÿ;>_ÿ!sby\&ÿÿÿÿÿÿ ÿÿ#aÿÿÿÿÿÿÿÿÿÿcÿÿÿgnÿZsÿÿÿÿÿÿÿÿÿT?ÿÿÿÿÿÿÿ*ÿCÿHÿm#qÿÿÿÿÿ0ÿÿÿÿÿÿÿÿrBZÿIÿÿRo5ÿÿÿkÿn$ ÿÿÿ<ÿeYÿÿÿÿ7ÿÿHeÿÿÿOnÿÿÿÿHRÿÿ\uY-!f4!ÿÿÿÿÿÿÿÿ(ÿQr)q&"Xÿn9ÿ\ÿÿ*ÿÿd;Jÿÿÿÿÿÿÿÿÿÿÿÿÿtz1ÿ!ÿ (>]ÿ31{ÿÿÿÿb^%dÿ ÿ9ÿÿÿÿÿÿ"8ÿL),_4;H>ÿÿÿTÿÿ 'ÿÿÿ+6ÿÿÿiÿÿÿ`6ÿ"MzuÿÿÿÿÿNK2ej/.Bqÿÿ@ÿ*)a;._ÿÿÿb>ÿ=Iÿÿbÿÿÿÿÿÿn;qÿÿ#ÿÿ)ÿÿTi8=ÿ QYÿÿÿÿ0R%)8Bk(Gf(ÿÿÿÿ8ÿÿÿÿÿÿÿÿÿÿwÿ4sÿÿBÿm;D @Oÿÿÿ(ÿÿ j>.ÿÿYÿÿcw'msyÿÿNk\77>PÿÿHPÿÿSÿÿi ~(.ÿÿÿÿc"ÿÿÿ9ÿÿBbÿÿÿÿÿ)NDÿÿÿÿÿO5tTKhAqvÿzyÿÿÿÿ}ÿÿoa?yÿÿ?UÿÿÿDÿ1ÿÿÿÿÿÿÿW@4_ÿ1ÿÿÿÿ&ÿ?Zÿÿ(=rÿÿIUÿmÿÿÿÿÿw{ÿÿÿ{ÿÿÿÿÿÿ+y$ÿÿp#{UNÿjÿÿ8' ÿÿ3ÿÿÿÿzYÿ~n(ÿZ"4ÿÿÿÿ:ÿEtEÿ/ÿÿÿÿÿ/ÿ=3ÿÿÿtB$'-6)(xX!Ujgq=%_uÿÿÿ!v<ÿ~ÿggÿÿ9ÿhÿÿupG ÿÿÿ|~ÿÿÿrC[Laÿÿ w@ ÿvÿÿÿÿÿqy+^{ÿ_ÿ@ÿLÿBK_ÿV`]"P9=oÿ9ÿ^ÿÿÿIzÿ}ÿÿ=Eaÿ\G57ÿyH1 ÿÿSw3ÿÿÿk^ ÿ-fÿNK'ÿÿÿPÿCyOtÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿmnÿO6ÿÿw>ÿÿ=ÿÿu>{ÿÿhR#ÿÿ 1NdÿÿÿÿÿZÿÿÿtvoÿX `ÿÿÿJ?K7Pÿhÿ6[L9>ÿllhÿÿ tÿiÿ1ÿÿ]ÿWl7ÿ\=HÿÿÿÿÿÿS%Ro \ÿ6$ÿ%|ÿÿÿÿÿÿ^ÿÿÿ*Q5+ÿyÿqÿÿÿ:Bfb9ÿÿ2oÿÿÿ0ÿ\ÿAÿÿÿÿ+ÿÿÿp04ar~qjC)QO 5ÿpÿdÿÿ" hÿÿiÿÿ,ÿeÿÿFÿÿÿÿÿÿÿ@JOÿÿ3<ÿÿZÿ6ÿÿÿÿXÿ ÿ?;(4ÿÿÿW;ÿÿÿÿÿvrÿÿÿÿÿÿ|Zon~Cÿgÿÿÿ(ÿeÿÿJAÿÿÿÿÿÿ1ÿG'ÿIQÿ5!oÿ3ÿÿÿÿE`HDÿÿÿÿÿÿÿÿr?ÿÿÿÿÿAÿÿÿÿÿBÿHWkcÿÿÿCÿMJSMÿÿÿÿ{y_ÿ>AÿTÿÿBfÿÿ@bÿÿÿ_ÿÿÿ3Hvj7ÿqAÿÿÿ\ÿÿNB|v'ÿÿÿ(ÿÿ}SdTÿ@ÿ)Bÿÿÿÿÿÿÿÿÿÿmÿ{eÿÿÿÿ2Tÿÿÿÿÿÿÿÿ_ÿÿP,ÿÿBÿÿÿ {hÿ>ÿ+ÿ]xS|ÿbÿÿÿÿtÿ}'qAWgÿÿÿÿ3ÿÿÿFxDÿÿh Puÿÿÿi2ÿÿuÿÿÿ >ÿÿÿÿÿÿ@mÿÿÿÿH)ÿÿÿÿÿ2l}0ÿuÿÿÿ+ k@zRÿ#wÿÿÿÿÿ0>ÿÿÿ0ÿÿÿ5ÿÿÿÿ4NÿÿyÿÿÿÿÿB7] nÿÿG ÿÿy67ÿOÿ3}ÿÿLÿÿÿxbÿÿÿÿÿ8hÿÿÿ}ÿ^TÿZÿÿÿIÿ5Qÿÿ6ÿÿÿÿÿ7:)ÿ eÿÿ2ÿÿÿvÿ.ÿÿÿÿÿ8ÿÿYÿÿOcÿÿÿÿÿÿÿ}#PBÿ`ÿIOqlKb}G<ÿÿtQ]&XmOKgOÿÿÿÿÿÿÿÿ}9| NÿÿÿÿÿvÿdS2aÿÿÿÿÿÿÿÿ6^ÿÿ L*wÿOÿÿÿÿÿc[3ÿ~Kÿ|:sDÿÿÿ,jÿÿÿÿ ÿPrlI=ÿÿÿdÿ6ÿÿÿÿÿOÿÿÿ"ÿ WÿTT09ÿÿÿRÿÿÿÿÿÿ ÿÿÿÿÿÿÿR`Lÿÿeÿÿ_cÿ;S0Wÿÿ~~Ha0_uÿÿÿÿÿÿ%ÿ~ÿÿF cbÿfÿÿÿerRÿ#|~ÿz\ÿÿÿÿÿÿÿÿÿÿÿÿZ,Y~SFpb ÿl}ÿÿÿYÿu%0X nÿÿÿÿVXÿtw5ÿ@]Jÿÿ&ÿ?dP&ÿ+ÿmÿÿÿÿÿÿÿ9sIÿÿ{("+"y:ÿqÿÿ ÿÿÿÿ\7ÿÿ=ÿÿB.ÿÿÿÿÿÿyÿÿmE1ÿJÿÿcg\~!ATÿÿx]$$'ÿLÿÿXÿÿÿÿ ÿÿÿ\1ÿ] aÿÿÿÿÿau{#ÿ9ÿÿÿÿHÿ vÿ&ÿÿY) RH%ÿÿÿDÿÿÿÿuv$ÿcÿÿÿlÿÿ3ÿÿÿÿÿH:ÿÿ6tÿjAi Pm^ ÿrÿÿVÿÿTS8X>tFÿÿÿÿÿ&mÿ&ÿ8X Yÿq5ÿÿÿ\#AoX;ÿ">^ÿQÿÿÿÿÿMÿu-|ÿÿÿ0ÿÿBLÿÿ&ÿÿwÿÿÿÿF"DÿzJ0P+>ÿaÿÿÿÿÿJÿJl=8jY$NÿÿÿÿÿWeÿ8ÿ"9ÿÿÿÿÿÿÿrEEQu|rÿÿÿ\ÿÿÿ>ÿÿÿlÿ&eÿÿKÿ+(gQÿÿZ,ÿÿÿÿ0ÿÿ'ÿÿÿ ÿÿÿÿÿÿÿH_ ÿÿÿÿÿÿÿu?D=`,rO.kRfÿb =-ÿÿÿÿKÿsÿÿÿÿÿÿÿÿÿÿÿ-ÿ[LÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿÿbf\ÿÿÿÿN|ÿ20#ÿÿ/KÿÿÿÿÿÿÿÿÿÿMÿ-ÿÿÿÿÿ/ÿÿ| kÿ9ÿÿÿÿÿÿ#ÿÿLÿÿtBuÿÿÿ@ÿ ÿdpa}ÿÿÿ+mZP& 9ÿÿ[#ÿsÿlÿ ÿÿJNÿÿyMAÿ_ÿlNÿ ÿrÿÿÿ9zy _JÿZ`faÿÿÿ$ÿ%ÿ^v_eA5Io= ÿÿ'yÿ)ÿÿÿ6e{(hWÿÿÿÿtn;;ÿÿÿxÿÿÿY[ÿÿ#v?ÿ ÿÿwÿ@0UÿÿdÿÿÿAÿÿ9ÿoÿÿ7&ÿÿÿÿÿÿÿ1hÿÿÿÿÿÿÿ QÿÿuÿÿÿwÿÿÿQf*ÿqÿÿUvXÿMÿÿÿÿÿÿÿVÿz_ .K @jÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿLfER$ÿ|>3(ZCXxDÿxÿ7ÿKÿÿÿÿÿ]ÿÿI v&# OCVM [1?=l2~IP#~ÿqPÿÿÿÿTÿÿÿÿÿÿA{ÿAsÿÿ8#Fÿÿ`6ÿÿ}\7ÿÿÿÿÿ99,ZOÿFvÿMegÿÿÿÿ<ÿkeÿÿÿ2ÿPÿ,ohr3$ ÿÿaÿÿÿÿ-Aÿ0&ÿÿYÿÿzÿÿÿy8ÿ _~EÿÿÿXLcM,|[RÿÿÿÿÿGÿÿÿ@ÿBoLÿ!ÿam>mÿ0jÿÿÿÿ`ÿxgÿÿÿÿÿÿÿ;ÿÿÿ<ÿÿÿÿ[ÿÿÿ`ÿ7ÿÿ(ÿÿÿR~L|Jÿÿÿÿ{ÿÿÿÿBTUl& ;7MÿÿÿÿÿVYcPÿÿÿÿÿÿÿÿÿÿI'ÿWÿxtcÿvH6KPjÿÿBpÿPÿlFÿÿÿÿ ÿÿ]aÿWw=1ÿÿÿÿÿÿÿ0ÿÿÿÿ4cÿÿÿÿkÿ&ÿÿ7ÿN5ÿ+ )ÿGÿÿ*ÿs;ÿÿÿÿCÿÿÿ)Uÿlvÿÿqÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-*lÿÿÿ D3.;ÿ92ÿÿ]ÿÿNÿÿÿÿÿ#+ÿÿÿ)GN<7fSc!:KcÿÿJ O5lÿ0ÿÿ*R%ÿÿÿ7 ÿÿÿ_ÿÿÿ|cÿÿ ÿÿM%5ÿÿÿÿÿC*ÿHÿÿ]3-AÿÿLÿgÿÿÿpÿÿÿÿBÿÿÿÿÿÿÿ9ÿBÿÿÿÿÿÿÿÿÿÿÿÿÿ]Gÿ^YPÿ}ÿÿhtÿ`/ÿÿÿÿÿ\8TZ+=$$ÿÿ:nÿBF'AKÿ`]K[gÿÿÿÿuÿÿÿ"ÿÿÿÿÿÿwÿÿÿÿ]/zÿÿGÿL;ÿ@ÿÿÿÿ8bÿyR, oÿÿÿÿÿxLÿÿ_D9]_ÿÿÿÿÿ%MliÿSvÿsÿ5ÿ ÿÿÿÿbÿÿÿ*ÿPÿÿÿoHÿÿÿÿÿÿÿÿÿÿÿVuZÿÿÿÿ4 %}L/ ÿ|ÿÿÿÿq6hÿ ÿÿ6ÿÿ_nÿÿ1S7ÿBFÿÿÿÿÿÿkÿÿÿÿTÿÿ%ÿS^Kn3Sÿÿ/ÿA ÿÿÿoÿÿwÿÿÿK=ÿ ÿ+ÿÿÿÿ{\ÿÿÿÿÿ<6ÿÿÿÿAÿÿ16ÿFÿÿ~ÿ3xÿÿÿÿd=qÿÿÿÿ5dÿÿÿrfÿÿÿÿÿ=ÿÿÿÿÿÿÿÿaÿSKÿÿcÿÿÿU=l+ÿ`bÿÿÿÿÿÿVÿÿFÿÿÿÿOxÿfÿÿJh]ÿYÿÿÿÿÿÿxÿÿÿÿÿÿ+ÿÿDÿÿ(O)/ÿRÿÿÿÿÿÿÿxÿÿÿÿKÿÿn D4ÿÿÿÿÿÿÿRÿÿÿOÿÿÿ!Bÿÿÿ- ÿ+,ÿaÿÿÿ@\ÿÿ:ÿ,:nÿÿÿ2hÿÿ&-ÿÿÿÿÿÿÿÿÿ=#ÿÿ6b"5L#b ÿÿÿÿÿÿÿ2ÿPWÿ.F ÿÿÿZÿÿÿÿ*ÿÿÿÿÿÿ_ÿ/tÿÿÿ,ÿÿÿ.ÿÿ\%ÿÿÿÿÿÿÿÿÿ"ÿÿÿCÿÿ%ÿl"ÿÿÿ ÿÿÿÿÿÿ@ÿa^=^ÿvLÿÿÿÿxÿDÿÿÿaeÿ_zÿÿÿÿsP#K~v6!\%IXm~eÿÿ4ÿ*ÿÿ6Bÿ9>9ÿg| fÿÿÿÿ^S{aÿÿÿ4ÿÿÿÿÿÿÿÿÿXÿÿÿ!{.ÿ.ÿÿ;ÿB;+ÿ6fÿÿÿÿÿ* {]=t]ÿÿÿÿS^+ÿ.ÿÿTÿÿ}ÿ2NSC/ ÿÿdÿÿÿÿoÿÿ6[o/ÿKÿÿÿÿÿÿÿÿÿhÿÿlÿmÿ3ÿAÿÿÿ/ÿE)ÿÿÿ!J")ÿÿzÿÿÿÿQ.ÿÿÿÿÿ6ÿÿÿÿV@FT$ÿIÿGÿÿÿ~ÿ*ÿ(ÿÿGÿ ÿ"zÿÿÿÿÿÿÿeÿÿÿM!Y%eWEhR3 #w6ÿÿÿÿÿNÿÿÿÿÿSQQS8*ÿÿÿÿÿYpAÿ ÿ#ÿÿQ2qqv@ÿ]}ÿÿw(`ÿÿÿ8ÿÿÿÿÿÿ_"~ÿÿÿÿjÿ!uBDp?ÿÿ6Lÿ}B]v{ÿÿÿÿpGFÿqÿ9ÿÿÿÿÿ8Tjm_pkÿÿDa-Lÿÿÿÿÿÿ%ÿÿÿÿi0v+ÿ]REÿFÿÿÿÿÿÿvZÿN(ÿÿ;ÿ=Yÿÿÿÿ4cÿK|ÿÿbÿÿÿ-ÿÿÿALDU|-hÿÿÿÿmÿÿÿ!ÿW]ÿÿG]Eÿÿÿlÿtÿÿÿÿ9Hÿÿÿ(`*=ÿÿÿdRÿÿkÿoÿÿÿÿÿÿÿ+bYÿÿÿÿÿÿÿÿÿÿÿruÿÿÿRJ.OUbÿÿOÿÿÿÿbzV(IÿÿÿUÿv<ÿJÿ/R6rÿÿvwpÿÿÿAÿÿÿÿI[ÿÿTÿÿÿÿÿÿÿÿ$ÿÿfxÿÿÿ`y4ÿÿÿÿÿ6ÿÿ]ÿÿ;{Yÿcÿÿÿ*ÿÿÿÿÿÿÿÿÿÿGÿÿÿYÿÿÿ6ÿÿÿNÿÿnT>FUQÿO"ÿÿÿ~Kÿÿÿÿÿ:r6ÿ'ÿÿÿÿÿÿVÿ ÿÿÿÿcaÿtÿÿÿÿÿÿÿ%ÿÿfJQÿÿÿ>ÿW!~Oÿÿp'/ÿÿKÿH ÿÿÿlaÿ%[^ÿ4ÿÿÿÿÿÿÿ>ÿÿÿ ÿÿÿÿÿÿHÿÿÿÿÿ(PX0QO $cÿÿ ÿÿ MÿÿÿÿÿÿÿGOÿÿÿÿÿ.ÿÿaÿÿÿÿÿU[ÿ ÿsÿ" eÿÿÿÿÿÿÿÿÿDÿdÿÿÿÿÿodj?oÿÿÿÿÿ}ÿ-^ ÿhÿÿ%(Lÿ:ÿ5_ f2 ÿÿÿÿÿ#ÿÿÿÿ>ÿG<5ÿÿÿÿÿ@ÿÿÿQ>Z.qÿÿaÿÿÿ:ÿÿÿÿÿÿ;ÿ Rÿÿÿ ÿÿÿÿÿ>*ÿj|3ÿÿÿ)ÿVrÿZ%S3KN?T{tÿ[ÿzjp$88jAnÿMÿAÿ5suÿ RQ&I~CÿHÿwC |b\{p?ÿ ÿLÿÿ~ÿjÿÿÿhÿbÿ,ÿÿJOÿsÿ@sÿN{ÿÿiÿÿÿÿÿ2 7ÿÿ[ÿb5DfDP{ÿÿ\Kÿÿ\ÿ.C*6ÿÿiÿ ÿÿÿ<ÿwÿWIÿ9ÿÿbgDOcaYS nAY parÿÿÿÿ(ÿ Eÿÿ<ÿ$ÿÿvÿÿÿÿ!ÿ^*ÿÿÿÿÿÿÿÿ,Oÿÿÿÿ_/ÿ <ÿ/ÿ}ÿÿÿ$ÿÿÿÿHm3TÿE9Il0OOgÿÿ&ÿsÿuÿÿÿ&=  oÿÿÿÿÿ!ÿÿÿ^:`ÿ|ÿÿnÿCÿ!Qÿÿ ÿlÿÿÿ~ÿÿÿyÿrÿÿ#Mÿÿ~FÿÿsÿyVÿpÿSÿÿÿ]@!ÿÿl-ÿcÿeÿzÿÿ&ÿÿÿÿÿ~Rÿÿÿÿÿ;,+Sÿ=.Rn=ÿÿbÿQ+) wÿ^ÿÿÿmÿÿÿ(aI>2ÿÿi[OÿqRÿÿÿÿ_GS5ÿtÿÿÿÿz}ÿÿÿÿÿ;!ÿÿÿÿÿ\WÿÿTÿÿÿ ÿÿKQ ÿÿÿÿrs bÿÿÿAÿ6`).Lÿ4ÿÿÿÿÿÿÿÿÿÿ2tÿ<0# T,0L/ÿÿÿÿÿI9.2sÿÿ6`^O ÿÿÿÿYÿÿÿ,F(ÿqg"vw9ÿÿÿqÿMÿÿÿ|ÿO#ÿÿÿÿ}ÿz[ÿY-ÿÿÿÿÿÿ (o*3y139ÿv^!ÿG=ÿXÿÿÿ"ÿ ÿÿÿÿeÿÿÿÿ8ÿÿÿÿÿÿÿ4xkÿpSX|ÿÿÿ[ OÿFÿdÿ>|;:ÿÿ{}ÿÿ0ÿÿÿÿ2ÿÿGÿSÿÿÿÿAÿÿÿÿ?ÿÿÿÿnÿÿÿÿ7FW;6 Mn`ÿÿ(ÿÿGÿÿ@9ÿÿTÿÿQF0ÿÿxÿÿÿU*ÿÿ`ÿxÿÿÿÿ3'R ÿÿÿÿjÿÿÿÿ&ÿÿÿÿ9$VEoTÿ1MHMÿqÿÿNÿ2ÿÿx;ÿÿÿÿÿÿÿr#|ÿÿxÿÿÿÿÿaÿVÿÿÿÿÿZ6 ÿÿb7ÿj*ÿÿXsÿ=ÿÿfÿÿÿÿ$Vÿÿÿÿ Aÿÿÿÿ8i\ÿ<ÿÿ-mÿÿÿ*c _ÿ?ÿÿ5ÿÿ'&QÿGfÿÿoÿÿ]ÿkÿ1P\5wÿKÿZv,ÿÿÿfÿÿÿÿ:Njÿ= ÿ 5/0ÿÿÿrÿÿÿ]ÿÿ[ÿÿÿ6ÿÿiw )A7oÿrÿjIÿÿÿÿ)ÿÿÿÿÿKpxzw5\&!VDÿÿÿWR.Iÿÿÿÿÿÿÿzÿÿÿ7X9ÿÿÿÿÿEÿ ÿc=gqE_vgx2GK$`ÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿ0ÿÿ;ÿÿÿÿ:ÿÿra8IÿÿÿjÿÿÿÿÿDrÿÿÿ@ ÿÿÿÿHÿ ÿÿzUsÿÿÿ!P9RÿyÿÿÿÿÿÿÿÿÿÿuxMÿ C[5VOQ7ox_jXÿÿZÿ7+?Iÿÿ kÿÿÿÿÿÿ\TÿÿGÿ?4ÿ=ÿÿÿÿlÿÿ}(ÿÿ%3{~N93ÿÿ{[4NFGÿvÿÿqÿÿÿÿ^B0B2^q|ÿZÿÿÿÿJ%xÿuÿ ~ÿÿi*(j%ÿÿÿÿÿÿÿÿÿpÿÿyÿÿÿÿ*r!c;Ft3ÿÿ9ÿIQÿfÿÿ?\h(ÿÿFAÿÿS 9?rBÿÿsÿÿÿÿpÿÿÿÿN3ÿ,?w0ÿÿÿ*ÿÿÿ)ÿÿLmÿA3{w|Kkvi ÿ4R=ÿÿÿe^ÿÿÿÿÿÿÿÿÿÿÿÿ'q:(gqrs^ÿÿÿMÿÿ&ÿÿÿ+|ÿÿ?ÿtÿ A??Ge|'ÿÿkÿÿbshÿ#ÿÿ0ÿÿÿÿTÿeEnRÿI{=qx:ÿl,Cbÿ1ÿzÿ QiÿBU_"ÿ'ÿ1NÿÿfD+(t7p'7=yqs1U_XYÿÿÿÿÿÿimÿÿ-bÿbÿÿÿÿK%ÿÿ ÿÿÿeÿ9ÿÿb DÿÿBr,ÿcÿÿÿrnÿÿÿÿ|)ÿÿÿÿ0ÿÿ}ÿ$ÿ<ÿrÿ0ÿÿAl/pT&GNÿÿ,NIÿÿyH[$Iÿwÿÿÿ$ÿDÿÿÿÿÿÿÿÿÿÿÿÿÿ *ÿÿCv4ÿv,ÿÿÿ_ÿSÿÿÿe?k$`|tfÿÿÿÿÿÿÿCÿÿÿxÿ}ÿqÿÿ\@ÿÿ ÿÿÿÿÿ0ÿÿÿÿÿÿÿxÿÿÿÿÿÿT4ÿ ^ÿÿÿ|)&ÿy-\I],ÿ752Zÿÿ(ÿÿÿV+ÿXN4#ÿIoÿÿÿÿÿÿ#{<ÿÿÿÿÿÿÿÿÿM|&vÿxÿCÿÿÿÿ2ÿÿÿÿÿÿÿ!ÿ?)*#4A1H{;ÿÿB]ÿ,ÿÿTÿ/ ÿaÿÿÿÿÿmÿÿÿÿiÿÿÿ6ÿÿT KÿBiy [efÿÿ)6mÿwÿÿf ÿÿÿÿÿÿÿAMÿÿÿÿÿÿÿnPÿÿ ÿÿÿÿÿ%8ÿXDÿÿ&ÿYÿzÿ%ÿÿÿ/$ÿÿÿdLnÿÿÿ@ÿs/FÿÿcF2Gÿÿÿ6[Wno| s{{yy>zÿ|; -RÿdÿÿÿenCQÿP#^ÿ*JI ÿÿrÿÿJÿÿÿ9ÿÿ*ÿÿÿÿÿÿÿÿÿÿ~n/cEAÿÿoÿÿÿ8ÿ7ÿÿÿ@ÿVTfSÿÿ}ÿÿÿÿ|ÿBT]}tÿEÿ!ÿÿÿG-ÿÿÿqD ]}wÿ!ÿ<ÿO_ÿÿdÿÿÿÿÿ {,9ÿ|ÿÿ1ÿÿÿX:ÿÿÿÿÿÿÿÿZ!ÿ0 )_y4ÿÿ?ÿ"Keyÿÿ\ÿÿÿÿÿÿ_JÿÿÿÿÿÿÿÿÿÿÿÿÿÿTVÿÿÿeÿ}ÿ7ÿÿ)<ÿ{ÿÿn:ÿÿÿÿ%rcX` qÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&DXÿÿL~ÿ^ÿÿÿÿYkÿ.5ÿÿDÿ;ÿÿI&ÿk `AQ\`xv,ÿyZZÿÿÿÿ4ÿÿÿÿÿ)ÿÿÿÿÿKÿQÿÿgÿTÿ;aÿÿrÿÿ`uÿÿÿÿÿ2ÿ)ÿfÿ$ LYÿÿÿÿÿÿÿ]HEA*BwÿÿU"nvL$ÿÿÿÿÿ:ÿÿ\'ÿÿÿÿÿÿÿÿÿÿÿÿfZD|ÿÿ^ÿÿWÿÿÿÿÿÿÿÿqÿÿLÿCZ{6ÿÿÿÿÿ8ÿÿÿÿ'ÿXvTÿ?o!Nÿÿÿ! ÿÿÿz#S^ÿnÿ%i&ÿÿÿ\ux0ÿ=Kÿbÿÿÿÿÿÿÿÿ3cÿÿÿÿÿÿPÿ{ÿaW#R@ÿÿPÿÿ}| f\`ÿÿÿxÿÿÿÿÿÿ ÿÿjÿÿÿUiÿKjnÿÿÿÿÿoÿ4ÿÿ;ÿwIÿÿJÿ4ÿ]ÿÿ ÿÿÿÿnÿ2ÿÿÿcÿv|ÿ;jqÿÿYÿÿÿÿY}ÿÿÿgfÿÿ :ÿ:ÿÿÿÿ!ÿÿÿÿÿÿÿ8ÿÿOÿÿpXÿÿÿÿÿdYÿUÿyÿÿzHFÿ*ÿÿÿ??ÿÿk/Stÿ#@ÿÿkÿÿÿ%ÿÿÿÿÿÿpAQ07H F;q$ ÿ9 ÿvÿm/mEieÿ#ÿÿÿ@ÿÿ|ÿÿÿÿÿÿÿÿ;zE~wÿwÿp<ÿVÿ6ÿ%wÿÿÿLÿ_Pÿÿÿÿÿÿ}ÿÿÿÿRÿ`==Cÿÿÿÿqÿÿÿÿÿc ÿÿÿÿÿÿÿ^:Jd\ÿ(0ÿ_2F8ÿ.4RÿSÿÿ"ÿÿÿÿDÿaÿ-ÿÿÿ^Dbÿÿÿÿÿrÿÿÿ]$ÿÿÿÿÿÿÿÿOÿÿTÿÿÿÿÿInMÿ/?oÿo?j-ÿÿ,ÿÿÿÿ7ÿ:R'ÿÿ bÿ$ÿa/ÿÿÿpÿmÿÿÿJlyo9ÿÿÿ(ÿÿ;ÿÿk@ÿaÿaÿpÿÿ/Mÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿFegFiÿ76ÿYÿ CÿÿÿuKÿÿ2ÿhÿ cWdIÿÿÿ=Qmÿ/>ÿÿÿ<2ÿ)ÿÿÿÿÿ#fÿÿA@ÿÿÿ*hbÿÿÿPÿcbU&ÿÿFhÿ`EQdÿÿwNpÿÿd &UpKz (!CZ:&Iÿÿÿÿÿzÿÿÿÿÿ40*mÿ&uMb2ÿÿÿyE AJÿ2 t\ÿÿÿÿ\ ÿÿÿ=ÿÿ*ÿ=ÿÿ_=ÿÿÿj f;ÿ ÿ ÿÿÿÿ+\aÿ.Dÿ3:H|Fÿ/ÿÿBv`ÿNÿÿÿB+:3S`ÿÿÿÿÿÿ2 #ÿcÿÿÿÿÿ(yRXQÿHÿ3ÿ HSANÿÿÿÿÿ[*ÿÿÿÿ<ÿ20ÿÿÿfk=ÿRÿ3ÿa ÿ?`O/Vx`ÿ)cÿÿÿÿÿÿÿÿ>!Qÿÿ+ÿÿÿsxÿÿÿ?ÿÿÿÿv ÿÿ9ÿ^8ÿÿÿÿÿuk[/UnT,P*ew ÿÿÿÿÿ2ÿÿÿÿÿÿ9ÿÿÿÿsh;9FÿÿZijÿÿÿ$ÿ$Oÿÿÿÿ`7VD ÿiÿ1ÿLj!ÿÿÿxvFpÿe8rd9wÿÿÿÿ_ÿÿÿAÿKtr*ÿÿÿKatj6;$ U8g;ÿÿbÿP?:;Ivÿÿÿ'{<ÿÿÿXÿ{ÿÿÿRÿÿFÿ4 =ÿÿ3U(ÿÿÿÿÿÿÿÿmÿuÿÿ-ÿQ8oA},ÿÿ3 cÿ*ÿÿC&ePÿÿQÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿaÿÿÿÿ Oÿcÿÿÿÿ x!30u`ÿÿxÿbdGÿ@ÿ?B7C|4-MH /#aÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿ<"ÿÿ+ÿ'ÿÿU)ÿ7ÿ,ÿfÿÿÿÿyÿÿÿ\ÿÿÿÿAÿJ dOÿ~2-ÿÿÿ>`%0ÿÿÿÿÿ3ÿÿÿUÿÿBÿCÿÿeOv4HeEÿRÿÿÿÿÿÿÿ j#-JXGÿÿÿ?qh/JmxUM7_.sYÿÿÿ=ÿFbcK\ÿ)!ÿ zÿÿrÿÿÿÿÿÿÿÿÿÿ?ÿÿÿ`5F{o?Cq\x?ÿfÿÿÿgÿiÿÿ ÿVÿ f1ÿ)3[7?"ÿfÿÿÿÿÿUÿÿÿÿ~ÿÿMÿÿÿÿÿÿÿÿÿÿxÿÿÿ*ÿÿÿd?ÿÿÿÿÿMVwX ÿÿÿ zÿÿ CgTp7!ÿR+ÿÿÿÿ ÿq#ÿÿÿÿ)ÿÿÿÿdÿÿÿkjRH8_ÿÿc ÿx95Dÿÿÿ ÿÿÿÿÿZ-++ÿ,ÿÿTÿÿ-7sZ%ÿÿÿ>ÿÿÿ{ÿÿ\ÿÿÿÿÿ%!ÿÿÿ?uÿÿÿcvSjÿÿÿAÿÿ9ÿÿÿÿ|[nKGX0ÿ,ÿÿÿÿÿÿÿÿÿFaQÿÿÿ%ÿVW/ÿ49ÿÿXÿÿÿÿÿÿBz9ÿÿÿÿÿÿ[5jT ÿÿ0Oÿÿÿÿÿÿÿÿs\ÿ1QbÿÿQÿz_Iÿÿÿÿ!"ÿ&$y@\[!ÿÿÿÿÿYÿÿ5Rÿ ÿÿÿwÿÿ)~qÿÿUÿÿ ÿqÿÿ0ÿÿ/ÿnÿ.ywjYjW!UF!iÿÿ|2ÿ]BWÿÿÿÿÿ %z*Bÿÿÿnÿ*ÿl4ÿÿÿÿ 4ÿ}ÿHUch>ÿCqtÿÿXÿÿÿ}ÿÿ^{ uÿÿÿzqÿNÿ4k 99Xÿ UÿFÿtÿÿ2ÿXÿÿÿ J4ÿ&\%ÿ ÿÿÿÿ@P ÿÿÿI:MÿÿthgE @`NÿÿÿÿÿÿÿÿÿÿÿPtU5vXÿÿÿÿÿÿÿTÿ3ÿÿ.rÿFSÿÿ}ÿ."ÿÿÿÿe6A Wÿ%Rbsÿÿuÿÿ^H!~P2ÿÿÿ,ÿvÿÿÿMÿÿÿEÿ%V9ÿÿ<ÿÿÿÿÿ( @ÿÿÿÿ ÿrÿÿÿÿÿ;ÿÿÿ(ÿ]ÿÿÿÿÿÿÿÿjv5 (mÿÿÿÿÿÿÿÿMÿÿÿÿÿÿÿÿÿ>ÿÿÿÿÿÿÿÿ5ÿÿÿhÿÿÿ "F5ÿÿbÿÿiVÿÿk ÿÿ+nÿ~smJ ÿ(ÿÿÿÿÿÿÿÿ/xÿÿÿÿÿh4ÿ-[)juOÿD !ÿÿZÿ ÿÿÿÿÿÿÿÿ)ÿÿÿÿÿ>ÿÿZÿ}LU2jYoukÿfÿÿÿÿÿÿ^,ÿfpFI>/5hÿÿÿ_ÿÿÿÿÿ1ÿCÿÿÿÿxX0`H{'Z=[VÿÿÿWÿÿÿ&Dÿ$n[XÿÿÿÿWn!ÿod<ÿÿJÿiWÿÿÿ:uqvmÿÿÿaÿcÿÿ"ÿTj3hÿÿÿÿYyÿÿtÿN6SÿÿÿÿXÿÿÿÿ]ÿÿÿFÿÿÿ`HÿÿZ[cÿÿGÿ7Pÿÿ@Mvÿ&ÿÿÿÿÿ9wZWÿÿÿÿÿ&JPÿÿ8ÿÿÿÿ9ÿÿ\iqKkr|ÿGÿÿÿÿ>ÿÿT_8ÿÿsÿÿWÿÿÿÿÿÿ}'UÿÿÿVÿ0ÿÿvrC~Yÿÿÿÿ|ÿÿÿÿÿ<ÿÿÿ)<#h9`ÿ qÿÿÿMÿHÿDÿÿÿÿÿÿ)Hzÿÿÿÿÿÿ;"-|ÿPnwÿÿÿÿÿnDÿLÿÿfÿÿÿ~@ÿYWÿ'ÿ2IzÿmÿQÿxÿÿÿÿ[(ÿtpQM~ÿÿlQzW)ÿÿÿÿÿÿÿÿÿÿÿÿBÿÿT~ÿÿÿ(`e[ÿÿÿÿ ÿÿÿÿÿÿÿ/27aÿuzm}6B_3>bc@"B$fV2ÿÿ \ÿd15`]FÿYÿ3ÿy"8ÿxÿÿÿKÿÿÿD~Aÿÿÿÿÿÿb(ÿlÿÿ Zÿÿÿ\ÿ=ÿi'Fÿÿÿÿÿfÿÿ,ÿ"ÿÿÿ0ÿÿÿnÿ;SÿÿÿcGÿ=ÿÿÿOi:ÿÿÿÿEdÿÿÿÿ1ÿÿNxÿXraÿÿÿÿÿte@`ÿÿ;9QKW @ÿFTWQÿÿ9&`ÿÿÿÿÿÿ7ÿnÿÿÿ+N5cÿÿwgrÿÿÿÿEÿÿ\Mÿÿÿeqÿuÿÿÿ ÿÿÿ Hÿÿ]ÿÿneB7 ÿ//KÿÿJY[L4Wsÿÿÿÿÿÿl@ÿdÿyRÿfW=6'UÿÿÿÿÿxfJÿÿV5ÿt4ÿÿFmm^rÿÿMGRW~qxr[P~evy3rÿÿÿÿÿÿÿÿÿt!Tÿÿÿÿÿ ÿÿYÿvÿÿÿÿÿÿÿÿ;ÿÿ<ÿÿÿÿÿÿÿÿÿoÿÿ=0 ?Nÿ'GÿÿÿqÿÿÿÿYÿ}nÿIWPÿÿÿÿGdyÿO{ÿÿÿY ./]ÿÿBNÿ*R.!' |y(ÿb[aÿ"ÿmÿmÿZÿÿÿlÿÿ'}&E/^ÿÿÿÿÿÿÿIpMÿÿÿÿÿÿÿ ZÿÿHÿÿn ÿPlÿÿÿÿÿÿÿÿDÿÿsÿÿÿÿÿÿÿÿÿÿÿÿÿ^+DbF 40ÿÿÿÿWbl5 eÿÿ&ÿÿ\ÿÿ+iÿ6mÿÿÿyÿÿÿHÿOq3ÿÿÿÿpÿÿÿÿUÿVÿÿ#[ÿÿÿÿÿÿg!Iÿÿÿÿÿsÿÿ@ÿÿtÿ^ÿ[ÿÿRÿÿpNUÿÿ)X~`q!ÿÿÿÿ0A1ÿÿÿ$E ÿ&"ÿ1oÿdÿd>ÿuÿÿ%ÿlY@<(ÿÿÿ S>v.7 dÿ[3<ÿÿÿÿÿÿYÿÿ0!ÿJ ,/'ÿMÿÿÿÿÿÿÿÿ ÿÿ7=sPÿÿmÿÿÿib]ÿUÿÿÿ( Nÿÿ9|ÿÿÿÿmÿ ÿ'ÿÿÿÿÿ*ÿÿ66rÿÿÿÿ`Dÿÿÿÿÿÿÿ1ÿÿ ~ÿÿÿ1Xu <ÿ}ÿUÿÿÿ*ÿI <&QQ(<]BTÿl.ÿ01;O!Xÿÿÿ16*oT(M 7ÿÿÿ%ÿÿÿÿ$z.>Q^ÿÿ::{JÿLÿNÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿ<ÿÿÿÿeÿ.ÿÿ;. !bÿ >9"]ÿÿÿÿxWuÿOÿÿÿgyÿf ÿÿÿÿÿk}ÿEÿÿÿÿÿVQkÿor}9] ÿÿÿÿÿ:ÿÿÿzDÿÿjÿ ÿzÿÿÿÿÿÿÿÿÿÿÿ>}ÿÿÿÿDx{ÿÿ2iÿÿÿÿÿ$s>\ÿÿnÿÿÿÿÿÿXÿÿÿÿÿ_j:6xÿÿÿÿÿÿÿÿÿÿuÿÿX& Y%Mÿ|ÿÿÿÿÿÿÿÿYÿÿÿeh^ÿÿÿÿÿvTÿÿÿ_#gÿtÿÿÿÿ(ÿÿÿhÿÿÿÿs`Wÿÿÿÿ1ÿÿÿÿpÿÿUÿe+]oKÿoÿÿÿkÿÿÿÿÿÿdÿsÿÿÿ'HÿÿÿÿÿQÿÿaÿAZ|tNÿÿÿ.ÿÿ-V0ÿÿÿcE.Rÿÿÿÿÿÿÿÿÿÿ# NRÿÿÿÿ^<ÿQÿÿÿÿÿÿÿi8qÿÿOuNarr` ÿÿÿTVÿÿiÿ1Mÿds}Iÿÿÿÿÿ^M"ÿÿÿÿÿXÿÿpÿÿ+ÿÿÿ|ÿÿÿÿEÿÿ0dÿÿÿ[[vÿ ÿZ,ÿI~H73ÿÿÿÿÿrÿE$C@1_Uÿÿÿÿÿÿÿÿÿÿ !ÿ\ÿÿ}ÿf9.CÿÿMÿ*f>ÿÿEÿ/ÿ+ÿ-'0A,?LGÿeRTvÿÿ Cÿ^.ÿÿKÿÿÿÿÿYÿCÿZ&_@ÿÿÿÿzpt$ Kr,z4 ÿÿ.)( cÿÿEl.#w/+aF=ÿÿÿi,N-yÿIÿÿ?ÿEÿÿ!,ÿ! ÿhÿÿÿcÿAU/Uas\"(rÿÿÿ9ÿ:+ÿ~D-ÿÿlKB^]6ÿ5ÿ:ÿÿÿ" 05ÿÿ7uMH^ÿÿÿnÿÿÿ^ÿqÿYÿCÿÿdR_ÿÿ }ÿÿFÿÿnÿ+)ÿÿ`Eÿÿ(ÿÿ+ÿÿÿ{ÿÿÿÿ"Fÿy>mvÿÿÿÿÿlÿÿÿÿ@{EÿYÿ8ÿ !ÿÿÿÿÿÿ7@-b8WJ@^/bÿ]+#ÿ$DfLÿ;ÿÿÿÿÿÿÿy%7Z;ÿÿI7ÿÿÿÿÿÿoÿ*bplÿÿÿ{ÿÿÿtÿ7ji2,ÿÿÿ(ÿÿÿÿuÿÿÿ ÿ vÿ~Sd(ÿEÿÿÿÿÿÿÿZÿ.9 ÿÿÿÿ wCÿÿÿH-ÿÿÿÿÿ/ÿÿO4)ÿÿÿ2-|J4ÿVeaX{R<?CC?PP"6%9+*MIJHONKNNOLLLOOK ;:>EE?FF"6%9+IB/(NLKHMNL@DGOILOM0LE PHNHIJJOKOMN8M+MPLLJN-OPLPO-P7JNNNFMLM,NO-bHFLHGI K29?MONNOILK"MLKNPO%@OON"KNHG:IMLLN/, <  8r “Ô³*uêÛ c/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/dfa/onepass.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/dfa/onepass.rsÁ m¥8÷K•{H5uô4B’¬¿—¿—ˆ;2J DM>.HHIIM"O(LOOO)MNNNN3 % $97G?P;I5!#+ '9)NKM8GM0POMLPN>NN=& JLMM#MPNMO5%JM B  D1O!BF7BJK7,3 D2 LN)NMPFOGPKIMNMLLGKKMN29' CDHL!IJK# B8B$M B O'7C3 II37'K1279#561$>/"J''1 5OD$6N(&#J!(L LJ"3#6O9B3 HMNP= HKIG KJNMPM%@LB5 <9OL-& BAK-JK) IJMOPLMJINLOPPOL& N$NOMK&KMKKK(!JNNNN&%>INO)**4'H+8B6MOKP/&' NKJOPNM3K)$DMLP;(&)JL (;6 LKON;4H5JINOD@ O 63 F1B 3NNL>@7-&: OMNNMDA5IIM"IMNMJ*9@,BK=AO;4P>CKC>=E::E4GJKML(%!L+EP:/"?LK4*AO -LNLON+7$5<9JOMOMLKLOP8 )(L@MKIMPB#563'F9/BH 'CPN0HKKM&"I6' >FLONK=-A-5. ML#MJLPL 'L*9GK @&NNLJLNJOP$'LMON/:%( M7.-.MN40C6HNOMNLL5B'E6B PJNO0EA6I NP-PP"KPOH  '1> -K HOILN?+ONOOL<MMNKPMNMOM-JPOI$IKKNPOLNJ5LLIHMPNNJ7PFOPOMMGPKJN LOONNFPMO">:HKC?JJ/HLO69O>%GAO4$</2(NPOO8IICMLKOJ2L>P6CNN.OLOMEO OOMIPPOMKJOOKK-  O/M$ 8,O>C3 ;&N= 88O6B6B3 P,LM JF   J@....@K*O3103 ?+< 8(,.-16463 71+@ /',.1,4,3 60+2N9NPOOJ0 C A!+-6KB3  DE*I B  7;+O53603 "L/NFIN#05)EFD*N&MK B8$$//,(O MN> O%(P 3 31*3$EJ)%ANO'+KHM1BMMNJLNLILIL HJKM.*OOP1JKMPO!NLLPKMNO%OLNL4NO$9JIA* 37 N>HKKNJNKLIM(HFF-L L  /,+953 0NL 8"+I3 JN# L 1+H3 -5:/ IOBPILIM(HFF-L LILLP+PMKHK% 8)+-ELOM%+-@3 )&:/ /*L1/? 13/N>@3JKO)LIM(HFF-L LF >N&I OAC?M3 -&:/ 7JKO)4KPKNMM(HFF-L+MKJNONNN/>L? B  D1O!BF7BJK7,3 5L@ BI@P-O$JKNJ3I70PMKHN703 "JJKJOL KL5PKP;HEPPKM(HFF-LFO. M" +?IL!#H3PN6'A?3 +1PC :MMP2D%  +1M KMJLMJKILNO MNN NJMLNPKOPMLP: 8 KLMNNOOH KLIKOK81F, 0- ' KNL6)("8 8+@LF:A& N/ D)-*M,B(1D** @ + IK9KKM9+-11*(<""  1KJGN9$4 LOO(4HDDDEF;6C/P "  O!L"M6M8K NOKLNENNP!A77#LK77)KMPNPL-M6/; <P,B7C9P7HN)>M P OO&)KOL$ J AOPG33$- H(G'..>@ (2  G$*!,8-&"(*)-*()()2= '+,5"6""2$-4 :B2$ >BN "B'1&97NF4%>03E =*2 O POJLIOBMLLKN;.LKK 2CIPK$PG)M'O  B8$$//,(O MN> O%(P 3 (O=4@K:*PA;;46POPM:&#@@H0OOL>2N DOLAGG#:C$LKNC ? 4/J9%1'G# 6 )2 OONMOMPN%%IL,6D64N9$-6 N- BF/?6; OOL6M<1?1NA@= ;$:LC8L ,G% /. )-!1 MNNNKO MMP4PL40 0LK .:*392 O CE8+D %G&. &!.  M&G"(9:NOKGMPILMOOOJOIMO$ 0,,-0,,.@ B!"BDNCMO"; '"5. "G"% 8M&*O=" .FK2HKPM O O+$"$$(&B6;73E5G4F9I7@(E%'( )K%7H/>(1>*0H3Q*;/ & ! 'L@+ !&G @+ &H I+OMOP" J)G(J2MLNOOJ! ))--..5.. //0 !+,. 207" ,32 ".ÿ÷�øƒø…ø‡ø‰øŒøŽø�ø’ø”øîåøéƒ§Ô«Žä˜èî@Ü„¹ò9ýiŒ»®6‡tPd/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/dfa/remapper.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ád/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/dfa/remapper.rsÁ /A|iwÑóãG-q„æMæMò&KNNNOK9DNOPMPO!M0+"MP KLKO.ENPMJN;PN0;KO(NKO7JGL7LMIOON-:LM<9;O!MJ(! !MI;=GONNM LMLO LPPE'$5("?"* >CNLPLNLIP HN3-/&-5HOK6 B#'& %$ @2 @'  ?'! %GP @- @" ŽOóKŸÒÿbÖ¼‘–Ž4¿gb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/dfa.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/dfa.rsÁ 8~›v¸j¥?!µ¼ÍÍôÏ ôÏ Ò"*6DI  5- 0H8K ,LONJKH/FPKJ0"ELNNPOOMNOP FIJJK.*J5LNM:P'OMJO,JP/>&(0-// M+M$ B-,/I 3 ;&N1M$ B9,.I 3 P,8 B(,.7+ 7. 3 71+< 7',LO3 60+4P>O! BN B!+OJ+.LM.5J3 HE*H" BP 7++B4:#3 ".EGH*N+M#OK)J!K BB%%-)A NN5 P&)B 3 3-JJL .'*3 F .(*3 H .C*3 )PJLKMMPKL*1/*3.EMNK&!HM% >NK.MPOKJ&*MLJKL  OJLJKOM&PJO;LHJ1H:L6 B*,.73 LOM&,.7. 3 +P 3 !D@,!HPL4J#O'4)>;#3 5L@ BKJE3,$NGNL4&* #PMKH&/ #3 1P?%; PMJLINMO PPNA=0 OIM&PJO;LHJ1H:L8RKJI   !=",.F KON!=,.7. 3 FIM?O8 ) !=,7+"<&>:4GKH?8 )## '3 G! ) !I,7+"<&>:4GKH?8 )#### '3 1P?%; A=0 OPLNMOHNNIICLPCM&PJO;LHJ1H:LIKKLONPNLOPP B2) !A/,34(; 1NKLN-4(; 13 '&"PB"-;!L KOHNNIICLPCM&PJO;LHJ1H:LFIM?O8 2) !A=*,7'3"M&. )### '3 G! 2) !AI*,7'3"M&. ?:,##### '3 '&"PB"-;!L KJO8L>NLMKINM&PJO;LHJ1H:LLN B* K !A$,*=M,M#3 *!"3H 4K:  MCKO&$IHBPLPKNIN3JBKMK3 7),)L*// /7 P>4!3 +::' .?M9ONKNPKPKKLNMLNONM NF$CC@NKLL0NM(L3JBKMKK 7),)L*// /$!F(MML(,$37)NJMF&*@ P>4!3  -:;MPONKNPKPKKLNMLNONM :K$CC@NKLL0NM(L3JBOOPN1-:;+MCKO&LPKPPOPPNN$IHBPLPKN N3JBKMPE 7),)L*// /7 LOO+4!3 +18' '?I M7HOK=OL8GIFDNJ"MKIN9 +..5!M8) C$! BLLPPFMNON9 +?CL+#$E/:7 LLPPFMNON9 +?CJ+*/:7 GF<MNL'ILL.PMOOLNHLOO BB!A6,*L*// /7 4!7MIII3 G CMHLKH&I:JJKJLOKN5%$ ""(1KNLLPO;MHLJL.NPMOM*MPMKKLKONOOOMN2MLNMDLN$MMN@.ONKJMLNMNMK;N3N(1L,P@IL& 3OK(% "##+D"=-# J6KO&M#OK)J!K BB%%-)A NN5 P)B 3 )+AO#FHCH0J0, @ILON1NDN1L(M HFNML.LO*KJ)@K:*968G#&)K;&*0L"7JGO0=L+#!! NJ8OA?BJLAP1+MKL'9&'# H4BP "+*6) 4%#H MLJNLMM: PN;& @- NK52J1M69N; +,CB(JL>@& 2*3PP;9=9N;"+K0 " )& )#* 6%!& N/ P0OMD9N;"4+"< IM-" @)GII 9N;4+8% MMO3 N+!N GMMIMML3/I ?/3!9N;EC)GIB :KFMJ!INLN=O'>'E5O=$OMOE" BJC2+) I>HB?G74'+!5B I>KBAG74'+!5E:H:0#E IONO' 5IPF$$/INLN=O' "##)+%'>* ;# ?NP@ONMONOL4-)+8OJ(&PM?I@ MPJPMCPAA PO+"NMNPL' HHJMNIPP866PP244GHDKKHFOKPOP97I+NM0@CI"KK2@9L;1 99 NHK'J'I2-,%)9(IB@*H 'GO(J3;3& CP7@$3 KL@FK9+,%)9(JL>/#6" %CD=C"MJPONO25P?*A2<'LLNE<'MLNE;M/2)CH;/JC$ *PM/LK$ *PO9( 96N.@>MMNA ON8.IKM&%M6A;=C MLJMPLP!6;&O 4KJL!KLNK!MNHOK#$+ )+#-64=)NKM8GK>JMPNHFM!&L$ B2) !A/,34(; 1NKLN-4(; 13 <ILI79OD  3 0"*%3A4422PNNNOMP'&P++3 =& FKLKMNHMLMFJNLM-( () M 5)+3*4 3 K () M 5)+3C4 3 C4+6 JLMN'MKLNOMOPMKLLLP0%NO 3 !DB,%I/*MOL&/5MLI:/)>M3 D2 L N'JIMLNMKKNJIPOOLLKKMN29' 6OOO0KOOKLKNJL!LNLABNNP%%ON * !B$,H*'4J#LHLO$&2I(PP,42:(942:(3 BJOO"0 +OMKOK8NMLLONN=NO2ABN!1MOPLKOF BC!8(,#MLB3&##3 ;JA6 $3 69 :NPL6HONLMIM2PNONN+GNNMLKOFKNOGMD C!D ,5OME"!3 HJ: C(,5OE#"3 D2 MPLJILLPLPMMMKF%LNO" BB&OM@05!N,N7K#3 >+ PPO)MLMMJMNN"%LNNK BB&OM@0L>!F,N7K#3 F4 LLNOPP8JJFIFDL'KMKM OJ+K: BSEIMPPOOO'%!KP5'9,<5M)+ OL*6M)+ O<6M)+ P25M)+ 3 O4 K!NOKMNJPOPN2MKLMLLPKNKLMIHKJLNEM2 ?0<H84P&86LO-*NN64ONO/9IMJK86>05D:8OMKC7OPNAA5PL<NLMONO-'%4A9:JJB&KOKP/&8NNNGM"$ FFMC'A82'!KPOP:6 M MLL/:5')3@%'11')3F)+5)+5')3 JMJ+NAON;KIOL/NJHKNMOMGO.JIJKKK87B!(31F/"F''1 1OD$2N(&#M(D"(!(OMPN  $J,= 7,4J#3 #LJM+*"KFFGP+,2 1'#  PGPMO-)>/PMOOJNJKMNMNONLLOPMK+# 52))5/-!@POOOM)ONLL2ILIM?OO8MD:PP8L/0  & O9GJHLONNL(PNOJ %!B=",42:(42:(B�H�H‘HÈ]¿a¤×«ä쯀±ê¹þºçóÔ÷Ý´ÿ¸œ¼¨¾ˆ’ Š’ Œ’ Ž’ �’ ’’ ”’ –’ ˜’ š’ œ’ ž’  ’ ¢’ ¤’ ¦’ ¨’ ª’ ¬’ ®’ ¡¦ £¦ ¥¦ §¦ ©¦ «¦ ­¦ ¯¦ ±¦ ³¦ µ¦ ·¦ ¹¦ »¦ ½¦ ¿¦ Á¦ æ Ŧ Ǧ ȼ …½ ²¾ ÁÆ ìÉ þÅ ³Æ ûÌ ÇÎ 3о\DÚT­ï$°£8ÿd/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/limited.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ád/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/limited.rsÁ R¬Ð0—B  *ÕûøOøOûMMLIOMOMPMNMMFJLNMLKOLKPNP;O; 4"'8-3&6" 9')9DGA=/ /O ! N?K +2LNPN=:;ALLQGNKNO;=JN G *#+-:&@" :4 @DGA=& &O ! N?K " )&65 F61 5#+*!3+:=<"> ):=5 F6' N¼ZÉ«2»F×  àÀ™^b/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/regex.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/regex.rsÁ dV r Þ:L»Üa‰Öb$­ü­üÅ (3  $* )!.HO*+9=NDGIKPP JKAJI7?3 =(EP>P OON% 2$) OD",+1+/++-++5++0++,+.+ 3 @JLKOD<H! 6N= *JLL @0'3 $%.6P=,OP B)&KN"3 HE*.O- @"3 "L KNMMOM ).-)3 0LJ 2$K/=A3 JN# 9":<(3 3 OE 9*>?()=3 G11 )BIN 2+E3 L#MKP 1E-."??@3 -2IL 2+,D""#$ 3 2%4,N<NJOOO* 18,$%PD" 3 6#%+46KPOL ))'P;3  )$,IE$I#$)I?%*I;3 L2 )$ IB$I13 M )$I,3 KO )#I;C#I.3 OE1 )":$JN:N 3 OI )$ IB3 P. )% IJ523 .9LLKLP2 B).' @<3  )$,M?$M#$)M<%*M9$M*$M)$M!3 /48 L)M% 9. > E3 ?-2  )?MLJLM+ L MPMNNMP/OPMNOMOMOO =. > J3 H-2  )DIMKPM%+M) / I-!HPL3>0O'3)>/03 5L@ B9/-$JKNJ31/0PMKH6/03 L >MKPPLIL5PKP;HOKPKFO. B=$ *IL!#73PN6'A?3 +-2  )LIKJILP6NLMKINLNNJ BIK "C$*<;,M#3 &!0 )CIO0 C%)OLNMJM 9.+ > *0 3 -2  ,H%)OLNMJM =.+ > *5 3 -2  1L%)OLNMJM+M) / IO!HPL3O0O'3)>@03 5L@ B9/O$JKNJ31@0PMKH6@03 ! JI%)OLNMJMFO. B=$ +*IL!#H3PN6'A?3 +-2  9L/OLNMJM) BIK "C$+*4BLLJMMEF80F8>=OM3B6#<*-?<;3 01F NO,: 93+C*0 3 *&<LJON3 ).)0)5)3 )$6HDI )< "$(.&&%%3 %K7 )B *.6;,,/03 *%0JNO5JOPGJ3 B)C (*.4))(+3 %LN8 B)I 044BLLJMMEF80F8>=OM3B6#<*-?<;3 -$EC7*MOKINOLMONHPO*LKNNMNJMN )>&&E%'3 +(RNMLLNNDNNK*&)0N!< .!"O0DIK3 !2 :G-7;01E0LL!K9HNJP79<%CHPI9:%A@PNJLCA*JKNIKLIOMOG99MM B .0-  M*>"$ - KJML( KLB&(1 2P,OCG!#>'COA20*C=LKO)6I!#; BO L ,OCK%'>'COA24-GN%9!  >I!#; FC9,OCC!COA2*)#C%;G=% <FO&,OCDCOA2+) ' B$6I4 4=LAF?NLNON LMMKNKGE?NLN!5/'?&,/%.=0.8 7JN6&O)N-O B9&&,(< MN7 O(= 3 *'@K:*-0.-095AK;(OH>%"GJ/!MNHOK#$++/*+, !"9/; =@C<-D?@>"C$D:?.I3 92N,ONO&% 2"=G"" ":=0"""" 1 31@KJJ=% B2">#.?1 7.BJKML*KJLMJJ9 B( C$"=#.?3 GINO) B( C$"=#.:(3 ?*K!NK8NHOPOIPMPHOILOOO$ 81-%??1 KOONPB * "P(-%?-1 2LJ * "L(#(<1 O4 O,L-KLPM B)&KN"KLNMNO&'4OLNO4N!3 B7=HLPLIMKJM; B)&N!3 F;<MMNLKMPL MLP<K=PPM B)&L!3 A>HL%LLKL4ONNP'LLGNPN6 B)&6'5C:(!3 B7M-MPPOP8 B)&'GIJ#($!3 C8LKL:LMJOPN< 2"< >3 53IFNO1K3ZG# @"3 77K'MON5<9P7GN;LKB/-ONL/OKB,*NIJJJHNNB0.O*PN;PNB20@ H0<N'H+(D$H/%<H845$H8:FH8<3(H3 F$4P><H! 6#6= *JLL @"''3 &%7MA$MI$6 #&G, 5=#< @ ,< (<MNN@LN+M0N@ 2, $(,& "$!>1 K)?IMHNLN+M<JJLP-EI 2, %(,& %(,& "4$;"# #1 0%*LLM22,NI B-OPMOMJ 2"=G"" ":=0"""" 1 B5 IVJ@ @"B@1 -))  J +(79Å›†œ  �¡©äšåˆéœÓ‚×ìüÛÿÝŸßëÎîòö²÷~°mÕs™:4ö)pº?ľ¼k/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/reverse_suffix.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ák/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/reverse_suffix.rsÁ Q{³¨�Š«7y+X˜µ¿¿ç«A«AŽ6EPDM.NCK.P>F@%NE>> JOOC"= NNOPIJ'# $'07HC% 'I #,,/(J%!& !0 &H $$  @ %48! , 90#L 2 K3AP# 444 < ?44/1 :A -1. #4 '3M3/J I3E>  A:B 6C@D >?;¸o»®@}m'ä“àEÇšc/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/stopat.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/stopat.rsÁ 㾓ÅBÕN-ƒaðMn6½ß¹E¹EÔNNKPNPPMNOP @NLNLOPOOO%JKLKPMMOL&L%H'88(3 9')99*.-6F102B-/*/OOPNO8 2*#+8: :4 @9*.&*&OE%2MNNN / <580!),*:>09 -*:NJ:5  5#+*!),< A>&9 -L ANJ:+  |‹V Fmbr�¹›gWore/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/strategy.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/strategy.rsÁ x{zÔѶp8à[¤�@G_¤¼¤¼Ô (-' N#1/ )2.LK?OOPML6KOOB?)(%.&%MF+"!-NM3OLKMOOOO NN KOOEG >P 33EOOAH>5 NPF >PLPK ILH8H5 1=* N @LNNKJMIM.4% 24% 14% . *JKP8D*ON#PJIMP*LKO.!%3KM" HIMLM% NKN: LMHIOOG4 FK+. NN, NMMOP-@590 D$N 6=>>=<>B KFPMP"%1LEEKNLPMGLN9JNNDN>J NMNNG**=9)&B3B53= 1'& 9O 0<< 679P9G,9+,/1 // 9"!1, -   $,HB,0'(PLPMN7GJOOP);MPPPO$IHLKOLMLPPNH7OOMOK (A,/08*J>-*L-M, 99/K&9K9 * PMOMH@AJH@?!JI'G OKNG33+7*9)9&B0620= 9/*0,*'=&!D&G*&9NJB6P(>59P;>5- 9NL/P1C:9PDC:2 9G/>!1&C79>!D&C7/ 9+OPPPA9G0+& ONNKB OOLMJM+0C >$+!>FF A?B585 &7;0 9"!/A!N"!>9A!>#!> ; #F:1B> OMLMMON52B: LJF;B9 %9%5GIN3;5F!*?F!== ?KPNLO0$**9)9&!9/&'KN& &!9N03 @G6I 908 @G;NGKLN1@ 9G05 @G8! 9+0@ @GCFPP3.)".@D 9"!MOM@BG6@4 N+M@L5 MMIMMNO> JLONM&2@= LJF;@9 >@D 8E;DB"-DE" 7DE-" @?( ?@E+ (91)I$N!)4O%(A& 955L!*?L!=; 9$15EI"=?EI"P; "*(9)9&!9/&'&;9N03 92F/-M6$%E;C# P>"&G59,< 908 92K4-M;$OHOKMNMJ8%E;C# PC"&G56 9G05 92K8-M8! 9+0@ >G0+& H2OD-KK%, 85 '&><9"!B%F6?4 IMPOM?L5 NIKNOPO3 JLONM&2?= LJF;?9 >?D'AD. I*G'& 1! HK H#"2/(0$"G7" H5); ;,"D-,> P9-)%#N$0QS<OL!)6ONKLNF!%E;K%0M$30@(A, 9#<5K!1?K!D: 9$10DI"=:DI"+&: !*'9)9&269/&-' &!+)&9N03 32E/-D6& 908 32J4-I;G 9G05 32J8-I8! 9+0@ >G0+& ;2ND-MK% 85 &7<9"!BL ON&OPM5F1#4-2+M8;N (- 34,CO:52#@=845)#8  358:<(#4  5* 3( 7.2 .+09C: 1, 86  C2@ C2. :C. =H. D26  C33: :. 91  ;4  1? CN < &  ;4 ;4  A9C E2 ;?BJA>ECN :5597; 39 6@ G: :1  56  10 99 94  :2 4/ J: J74 1/. 9A >E E= 89:  5F :DGF(!5  BGBIK A@? 91  46  01 84  93 3< 5, 00 BH >= =C»’n‡y§ôÝ·æ1ëBQe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/wrappers.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/wrappers.rsÁ -Ž�àN¦ ·D z1XEaÊ×Ê׸ O(NKNHLOM8HLKNOP9MN/ 9";? "%( &67900 ,28,&)( !9!;9 !+>9-!!L6*7<18C8H 2NC(9-'JNINOOK KO&B K?@ ,E/  @* .N!L3--,H*7 /  9-* LO#L / L9 9 -+* LO#O / L9 9** & / L9 +@/6* * / ( C*)( 1* < /  & ,!82@/8 9L'/<  18!2-N( .LLKOJMLM&?JJ83 ( L9 1!!&# (KL' ( L9 =(*#  (  9# H (  7#)2 1# < (  * " 49I'+185+ & *OM6HC,%!LJLO,P7<(NPMN4)9*% H!OK07$ +  91& ; + L9 9'5& 'I + L9 9.<& (E + L9 9'5& 'J + L9 9/1& (;' + L9 1!&& '>' + L9 1& N + L9 >,I>>&9(''1('# -MK+8,!0@-0K2445'1% H!.+ (  9/(1# 7>3 ( L9 &;(1# % ( # G# O ( # >#)2 1# < (  8)F89P'+18$=+$& *OM9PC/%!ONP PMKNJL7,!#60@-04-4'*% H!>#( +  9/1& ;' + L9 1& " + L9 È9Ó:YYû#Žzº_àn/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/backtrack.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Án/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/backtrack.rsÁ €†Þ<7-ÿ©ny† 0†¨Ç¨ÇôNNKMMM# 3 CGANKMPNPI)O)EC?H0!$%2FKLKMNHMLM( :(% M/D)+3)- 3 K :() M/D)+3?;3 C =PMNKO%JGNJOLPLIM BJLNA31P/M223 C0 H841K2:1MLL:5L )NMNONBKN MLKMM>+37''53=79#5G8B/"P''1 =O2$>&27!<PP%2CDKB5 <9OK!-& BAL'K!K) O IMONPNLN#$HMKKNKKI<MPKN9FCE.'L%>O3'J<=!/'EONPL!OC'H;;;===!/ O7M$ : ;+-F 3 J5N= : G+L???AAA%3 $2;JL A J@....@K9O3<03 N:D : 6+7GJ3 F1.H J5+CF3 E0.CNJII+L0 B /;+ =??????%3 ?E*H BB /7;+O93;03 "+EJF.*L@N5FIJ80;NHM/F B: 33,,8 MND O,9 3 3@NN J5)3 M J6)3 O JQ)3 )9*3$KP0NON5 B: =8+4&0=NMI>JNLNA31P/M223 .OP*E>HNMDKJPN0LM:K J;+>:3 0LJ : 1+N3 JN# A /1+M3 1$1OPBD.LM:K : 8+-J3 --"/*P)"))$')$C 13/L% 6% 8% 7MKPLM:K : *3 O?"??@3 1"4MOM : 8+(8-""#$ 3 :&K45N<ONMOOO* : E+( ? PD  3 >*+49MKPL7LM:K+I1 :/ 1 O!HPL3F0O'3)>703 5L@ B: %&/+%A-+%@0MN$@*% 54-+(($&#A7 E77A"1< ,1A HI,>FCP ( ;+>GM!0! P#M,>FC*6, ?.AGQ#4%# LOLI"OPPK EMAJKKN 3CJ$BK&3;O M/F B: 33,,8 MND O,9 3 7 @K:*9*N/NMKNLL#!"/CLL: I&NKKKPMFLNHMN3LKKNNNJLNNNN)A<L*1AMJ<==5'< 4 K2!HJO@!"L--#&M)NP'D/O$5 PP-*K":($6" H O $NLP,NI)')/0,/!=@D#MLMJIGNN!JM"O?O*KNH:LH>7ON#7MIO& $ 9KMBNN)GPPM4NKJ9L/LP!##PEB! -!'9JNGM0"JN 8OINLKM2B+LO6/0K7;8=3.IL@0KKLL#&B:M?$%ILLLP,#&B9(#M?$%5/@6<46G11)DP(2"3 H# B$2 L*KPD1? 00K.0&"I:46 79 C?+,/-(&)&"I:46 79 C?+,/-(&)J%%NF>:IJ-+"A#ANANANANAN3  '-DK, N3B, PJJLLK9@P5N/+ M'JKFMLKNAOMLPI)JNNMMIF'-DK, K!NKNP:@"HKOM?P:HCA4:JO2E1K4!"4JONJMN<MPN("4"/4!&?25%A<%A:8& 5& N@NBNOJMKLMPNI?NLO)LMJGOPO#,@O%KKP27M"/BP (PGCM9?N5,LJ7"! 4L4NMKJ5*I;/-D  NM>LMKNNM ,7,7ÊLRÜçzyPbUøA„}m/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/compiler.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ám/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/compiler.rsÁ Îl�+…ˆDŠMÉ%7JW–æ©æ©À+'& #=  #*8!++'%B;KNG$5MNN<?AMNPPOLMNMNIJNKMKNKPPIPLPPFK*$N& 3 #O-+2BIL2BM#;2B2B2B2,3 1 IKMONNKP*@NP!%O% $1 -$5"4@ 3 4" ONO.E7MIJMMO-+L B0D&"D *3 F+ NNOOPLNN-HKPJ7LOD BAL#1)5%4P'H3 3! 8@LP!$MJK? - #I +163 H1% BMPHM6NKLLJMJ - #I +163 5 -+ /I +6;3 O4 HNJP4P 3% ,,#C&+>(1 ?- 3 >% ?P;:, C%"P(&M8,1'%PL)+J8:54DN4. 3   MLL:(1F.FPO .PN;9OC IM:HKNP>OO!<=CJMPOP@A"NJM80PP.$K$L2)A*'388A BOMOMMC K@H-+-3703 D$IN( K@B -+-3703 &#'30 (N PLPO3 KJ@....@K-+-3703 J*M'N( KJ:42:2222 @P-+-3703 0#C 0@H*3 C5 <9OMO @BGO*3 -( GKN7P,D %9 < +DJ?@OMMF21+AC M.E >+8425F<>N-A4%G@E1;NK9 LN1K+H HP;%+ L(). '8PLLPKN<"L?E .## #/I% 5HO@LLPO!J =&*% '&% '%)%*&$0, .GM5LOK1+1<8N7I :#0)%'K$+#FGMP P&LI+1 KKO !!&!&!&! KO* !!&!&!&! G''$!)**0'% &<MLGLI+JHK8N(%-.42EKKLNLDB*#!)-/'!)+3*&<*$!).0B7&$!)1*,@ MLI+O&',#*5<+/9PNNOO5L+%@$" @3MPP1NQPL!+NP0)D"M9(IHDD&+LOK>NHMLJOOPNI$=(P'5=C I"&MMN9?E$H0 OMKOOPNNO KNOPN= NOB L PONOM H B" ILI-MJDEJ,!+LKL17')!F'-.#+'1>""H4*/) 7JN#-)1-515A9E?;C?GCKG '/CKIN=IM#O./LIM#;$/M:#/DKPLNL2?2);9.M9! !'5H$ @94A<'(5 'P8-9.#"JK@ LHKKKNKLLMOPC+VE& P! ""0+A>$)4H )+7A,(0H$7.( $'4A 915%(=E$ 2O LAC.04:D3(?7/)#  3&%9/%$#"0A#;5#<&4!92#8@*$+% P&:2 %-J %"J#$!  :"JC  9"J#$!&  C"#:#$!?&  @"#:?(!  8 J"= #M /"9/D!F &3 )I  !0C C((!!? )!!?  #? $?  $O %< &O  $2 &!!? #> #> NOPB $"9##/,%"!!"!!"!!  &"9/%!!# 8:O@@PP) 9E#1'M;8 ;I#1'M; ".9#!#!#!# &. %".>#!!!# &. !".:M &.ùž$Üè³ôS Ú±þ cè[ÞÑØq/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/literal_trie.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áq/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/literal_trie.rsÁ êãÎ9pž{”©‰í¨º½ýÕ©«©«� G3:NLJ PCLMOMOLP ONKKMNMNOO$IPJOMNP?MJ?MNLN*5OIO6MPPLHDLON7 NPJM!O-%7A-%6,JL$K&,P4 'KMM'7?)3IC4N6D3< <O+G KMKLPKOONL5( =439'%#9'%PNN"-#:ML1&8@F0(N3LK>#..IIMB5 ;&ML/D  <NK912OO?M$B("($1073 (G&BA GMOKNOPJ78!NLA4JMLMDLO('JPA,),,(EHKMPNKHLF$KLGLN)CPPLL"! O'MENOOOD 504K0 $LMP.-(/ <./#L,6"G6.5%%"&% OOL#3&,"5:8 2 4'G7!    /&!#))"#*' # /$%%))##"+P( #yÝn£×L¢Hæ%QzŠ�ðh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/nfa.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/nfa.rsÁ —>Ç�É€8+·Èw˜÷çÿÛ”Û”²K" % 5/,M GPJ@H,INKO'NJJ!.O P2,C):CHKN'KMHONPL(KKJNMIPONNMKMONPLKOFLONJPMLKPPNPNLP@)')/5,/*F2>'"F'P=HH F"L-03 3 13OMOP B0,/3M3 '7JKM;L-L =?LPO%G#GP3 ->?JMPO A)$$KP"$PPMNO( H2"J%3 (IMMOMJLMKKM/ @5!9K,#=1#8O4&AKOLO$"7.'2N+71I623 59BNJP4EBG'P 3% ,,#C&+>(1 ?- 3 1MLNGLM&PNNLPO D""0MJ;;J*5>;3 ,IPM:OLMKJM<O D""7MJOP*9OOP;9;**5*'< %,74P NM5<0G+9K3*"ED') (( ;3! 9MIL!##.25)3+6=@/NNOO*J ,&*C NP=OOOOK=(% ?C2# ?(B95K 4(3J 4 NNHOMJOJIJNMO1 O88POOLKL1EDHNOOM! KGKL. NK/$JO"LLJ:K&NO,8NJO>IJKOK99PKK!KILOJMPLKO O7 % LML$ 0@ 3%!)+$ %%'O &3 '$#","(- B&$!($" FAD1= MKM1-4/J2,H4(F53(C&&I& ?.!+3,%$HH+,%%.-@ @MLMJ'<(DHK=K=MHKP) >DN@>+ -%  M) H NP N L$".+1// ?NMM IP.'M%DJJ =K=MJMI >DJD>8# J!P2-'0 CEI%7.%#*M5,/-6F%>@BKP?CK3/!?,5$I%" ! 03M'MMLN0(.* 7KM<MM ,7,7 E+-0@6. -../// D+-0@6. *++,,,†‡jç+³h�} ܃ñ×iºæ–k/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/pikevm.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ák/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/pikevm.rsÁ üò�?ˆ™’»×ë,Ã÷Ã÷·JFE/ 3 CL JLPN LL7 @N /GJGHNN!J6O6I8!#$3)NKM8GMKJMPNHMK*=& FKLKMNHMLM( +(% M#8)+3M3 K +() M#8)+3?63 C ?0<H84MLL::5 JHKONBHOM+KMM/37''5/979#5;8A/"D''1 1OG$2&&7!0PP%KC8HB5 <9OM-& BAL'MK) JOM6-ON!MMK$ NOLLNI'KJMLJL"OLJHLLJO8L>@''F89!/O+M$ D/+)B 3 >)N= D;+H;;;===%3 $&/MKJ@ KJ@....@K-O3703 B.8 D*+-IL3 :1"< ;)+?B3 90"7N>II+L0 L#;+ 9;;;;;;%3 IE*H 3 #7;+O93603 "L4OFIO'0;.ELM"*N0M#P BD'',(4 MN8 O%(5 3 3JOH ;))3 K ;*)3 M ;E)3 )-*3$NHKKNJNK  ;/+953 0LJ D%+I3 JN# K#1+H3 -1<PPLILLP+PMKHK% D,+-ELOM(+-@3 )"/*E)'? 13/A683MKP CFO:"??@3 -0MO D,+(L""#$ 3 6#K42N<OJOOO* C9+($-PD" 3 :'+46MKPN%+N +/ JO!HPL3A0O'3)>203 5L@ BK0O$JKNJ3H0PMKH6203  EMKPPLJL5PKP;HFPPKFO. BO% +*IL!#C3PN6'A?3 +PB' GHNL7 KNJPC B' /+HKC;/ *DP67#ELMJ+P>!7 A1. /KJJLGHNLMKINLN B+* K #D$+* -NGFD!$ MIMKMKFHOMNK$"MC%NB1JOD4NMKNKO)<=';NON=LLLKMIONK KLIKKJKLMPINMOLONPONNCIOKN#,6MJOIOHK&LPNP:OO4NNOE6) . OJIKJJ!ONLPM KPMMK  7> -FD$ I02%04,%OJMON':) .KEK&NPP9(!!+8B M"(>K KJ9(!!!8PB O""ONMLML :,K PPDN$NKL9 ()!-%!"(-09@J11*C+O@J11*A)N@J11*A= NNKLKMAKG9(0!#& 1.I,12A LGGILIJMOPPM<NNLM9 (0!LMNKL7NG')&*'+P0MN$@*  54(+&76"($&#:7 ?>7FKNNOPPNJLMO!NHK-K%LK#5+F(; JP,2:CH%8*GJK1+! P%L ,2:CL)<-GNK1+!  I NLPFIO>MKML# 'CLLG')) GM#P BD'',(4 MN8 O(5 3 +@K:* 8''N/NMKNLL;33N PLOPIMNNKOLL&PMJM*KM>*($* P''6#K<&AIM;9LGOJOJ<LKOLNMNPPN%%NLM!JOM ' JJMJB I3%= MMLDMIJO%LM2: D'I(1D?C(L%A5D&'* !6H< 2N 7KPD-A9 N?MPJJNLNL0OO7 KJOK&?" 7!C.$!$ KK UI<"2(?L-PM:K7J7 LKMD ;,NMNP %,: -$/';PLJNCP>K OD?JJK;L"MMMJLM+MKMLMILKPOL!!KLL=,767600==77F0""""""KK#'!H- 3O:8 113M=%-$=$=$=$=#M#M$M$M#M#M N)AD709AD52I38*% ?;H7 ?'&!?0$")+" ) <6. 3?!!#!!; 55 8 113<<HHHHHHHHHHHH!7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 !7 LD¡zY=RÂÐð?ø–×e/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/alphabet.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/alphabet.rsÁ Ìù4¬?ç§Ð~²!p¥‚�¾�¾óI LK(MNKONPMJOLMJKPO:LIKFNNIPLPP+4KLHNKNNNCKG/FOK F!77I% KMO  6NOLLMM."!3MPKCI8+K( LI8'(& OI)%7 PJ;%/4 PM-2K" GN(D!G@2 ;OPMMOK(7O,#&96 6/#O$L#)0 ONPO :>0=: HP@%:6I JPL*)* L "! A1 61+6("M590 O' L?KO *NL.)EMMPPB%N(MKN@)#F..N;MLLOPON'M- H'*EJ $3 P9 H'*NJ $3 ;(33K# 1%=9& 8 # INOMHNOOHF H'*KI(3 C<KP1JO""(K!5(8&;A&19! -K9K*)7%97" GDK*5)==0 0/- DNMILJNMN'(- ;=K#.) 9<- %- I#$%!3172*&;(@,?39 6NL?MOM JLKIOKNPLO) #N$'HC=%# K60( MPG70#$7+ P6HH/&') M-!6%D0!9B6!:LF083(M?-69,IOP<6 JLN;NPP:) * F 7!7!NB A1)#G&7  $('3&  )--8&+!E$' %  -#*'''.***.))-*'''''''') -! < -###*/J(42JB JEJ  J(12J4J)46K4 11M4K4 ,/J)46K4 -###*D #E!F!J!NH%1-+#H #M-#M=#M=#M-#M #HN#M@#ߣGØ&†‘Ø9ªaíè'?e/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/captures.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/captures.rsÁ rá cV¾SŽ4rG å÷©Z‰™‰™÷2NKPL(MPMLF #MOJNJGGPP7KGIIPMLKDONMI+NGAP%K(O'XMO OLNPOP#?BK6;;</&J>?QK6EEF/NOPK#1JM>MLJO&MHMNIILN"OMOMK!OPC%MMP&MNJK +& L +I6"BI;MN3 4+EL6MNML+ +& L +M6"BP;;<3 8JOFEOMNN> +& =+K5">D,;">D,3 6:MFHL> +& *+K5"3 %EMMIFHP9 +& =+K3>IO,3 1KD8GOD D=O3B3 />OP*PLDILGINIJJMJJJPM BJFOAC?@H-:.?3 <#OO;OK1 ;7:OO*O,DILGINL BJFOACMMH<3 BHOJ.PM&@ BCGK OB"?!%$%& 3 MON BCGK O<"?!%$% 3 4HA2NKCO0MOB B;GK O<)3 ') )HMNOHL%NIH H%& )+2+++++23+2 ?95#3 -FN)M*K- H%FF +-@+?1@;0?1@;3 %G FN1M*K- H%FF +-@+?1%B80?1%B83 $9$(/F FN.M*K- H%FF +-A+@1?A0@1?A3 F FN6M*K- H%FF +-A+@1A>0@1A>3 #9$(8F DNPO#FO.KM ;D+-?1"<("!>0("3 (#1G-G %DNPI#FO.KM ;D+-@1"B)#" >6)#3 .%1G-G %OMK%NL&OMMKKPO!KAL B;FOA"(GL  P#(G  3 , 2KN II?P@ B;FOA"+(GL  J #,(GL  3 <NOLLOKFOAOMM)O +8 % O3>KN<!! ,3 4PJ@B@%G6)&K M5G00O*-- %D=4566 AJLI%=013/4:BGMM N MOKN J +LNHH4NEJHLOPLOOINNOKCNFLLKOIKPI =NFL$F'LO NKKLKE!K GL$!3' -':777729%IB;)CC/4KM-L$!3' BAAAADACCCCCCMLO99/!+ILNN'MKHIIJ%KKMFLL@BNAKMJ(FK 7(%7+ 1+)3 %K 7'+(3 $M  7N %)9LJMP2CL%2?%%%3 HNP #+.!## POB4>B'I(K&-IL;GO9GFH )022,+K*M 7'+-(3 "A8NI+FLMJOMM B=E#, ';KO,;J::3 JA9NL@OP8LMJL! B=E#*$ '3:3333:D33 PG3N"L.KEL =?LPO%G#GP3 O %/' OOCL9 =# +2+++ 94#3 L; A"JD=3 77 HM.P/LK, =/;; EP 3 "MO DMKLK, =/:: 3 N0 OMKE%OK26= BHMK 0C7&7'73 ):=L7 N+LED%5D"J>MPON+098-GMIPOI(*&CFHBG0AC )8>C"F6B!FEKJ9E0K DF;=EMJL$D7BN!A8; KE*@(:@KJ M%NL3H" MMND6H-MOJJJJ9EOLBEHK*-I<NNOE@NHGMMHJ0M BMOJ >OEF E2* ,E777<< -K)-L4B,'1J*'1&302!4-4)#$ ' ù[’ÐÓ®U±+z\ÓnK!h/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/interpolate.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/interpolate.rsÁ úbS´Ï3½Ø¡®žÆSÈn¶õ†õ†À>OLMNHA OLGMO>OMNHNINKOPO7"NOL'!PMJ7MMON!F+!%  $0:$511 #I- 0C&#1 3."7$ O JIEMMON!F+/  *1:$*:1 #>- 08& 1 3."7$ (M>B-1"-%%$(K0AONO@"* 0IMOP5-*%' PJ>M653PLL;*%' L(@ 0+'B 5K /B 02**,700/"## .101/113335597!,%0%&:1 7!,$09&:1 (S;2:1          &  &  &  &  &  & JML$ & ¢a¬aÓaÞa‡b’b¹bÄbíbùb¡c­cÖcÙcäcçc6Uì]k}d¼�ê@äìÉa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/lazy.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/lazy.rsÁ ¡'fÃÑs‚.„† Þó“ó“Í=NF@KJP,PKJLNLMJL"#NKL&WLLFP095NK!0&#<HMK;LN0*8>;  -*LKKLNHM#NOQN G$KOP1MN&L1GEP;=$ 'IJM').(9IKL35'"#'P<5OJ% NO*'9PN# B?H %, MP5   ,,8E!KL ###4NMEONN%#!$KOP1GIK!EJ@;718 +HLO<)MMO5JNIP5[JN,:%%&'OOKNB(LNLLFNO!*?@88>NO!LJ).MJ)L-! NN'GO B E?#E/- %:LD< NKPMM#"MMMB  !!6< $$&)NGKPOGLGC (8)!D(JI% ‚;°Ø|F!—ÈB¥{|œ§ga/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/look.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/look.rsÁ •ÑïÓ1~)‰'œ&üÊIm®”ø”øò<+ELG:OOIKJOLL5,IPN03MM4L5INOOJOKHJLNP-PHNO0OI$NOO$OIPLGL9NGL; POPLKPLOP JIPKP4"IJ5 OH4$ML+" O;KL*&&**..0<4@88<<@@DD MJNK(NJM8;9=;?=?EAGDBFDHFJH EN!NP) " $"$*)/)'-+/-1/ AHP/NFAMJPD7 5?MN$.&H J297$O 0(ML,GHM5?NLN1%*.,NP5/CNH71GKN)CP51)65397N3/'43175P'"PP415I!/#PP416H!/#O72O5&G41N2#N81N6'J*0GM*0+?PKP#5H46G>BE*0 $G% ". B3 )! O0J/**O P+/!((?"':$-;)/B"3EPMH?IKJ JFPJD.NMPMLIJMKI>L00MPMLIJMKI>9"84=9A=ANN)CLH(B&@*<(:,G*E P(MPMLIJMKI>3B9&NKM'. %, )1 '/ +3 )1 +3 1: -> 3E 09 .7 2D 0B 4> 2< 6I 4G O7"7*-A1--$ &#!%#'%),MMLK@JMO<2/O5>%!"!J!L(OHIO OD>BPD>?H D>DKOD>BEJ D>F$)*DH D>D"%&;J D>FJE"P D>M*L D>@C82<;&L&D>@C8#2LPKOIONPPO/ MNHPLP NLOLPLPH MK+!:9A-59A&O D>LJE#M D>JJE#K&D>@C8"2<;'I&D>@C8 2<;'M&D>%JK&D>OEO&D>@C8'2MMK.!:9AM&D>@C8%2MKK--59A"KNIMOJ) 36%F=77KED, GG5L?N;GMPJMHIEPMMJLCK"PLPOMPGONILL-LO&N.SSW NNOLLLLO== '#=K99I*=$1"9$%B!$%*& D9907 *=$1"9%B!$%*& DG '11K99E%J8N 4$%-+-%3& 899E%JCNLFE8N 4%-+-%3& 8N 'K991*3 996*3 9-8D4. OKO '<K991*3 996*3 9,E? 0),$&&#IJB/K4994994 4M  #")++*,+. ! )+,,-+-.. # )+*,-+. !)+,-.+-.. >%&+/)**+,,?--.//A11**,,--;//00...:2222222 #$+/)**+,,M8../00N@22**,,--;./00...:2222222 >,,+/)++,--?../00A22*)++,,;..//P5...KO*222222RO+1 **+/)++,--M8--.//N@11*)++,,;/.//---:1111111 ))+/)*+,,-M8../00N@22**,,--;.//00...:2222222 ''+/)+*+-,M8../00N@22**,,--;/./00...:2222222 >+++/)*+,,-?-.//0A12**,,--;///00...:2222222 >))+/)+*+-,?.-.0/A21**,,--;///00...:2222222 .-+/)*+,,-M8--.//N@11*),+,,;././/---:1111111 ,++/)+*+-,M8--.//N@11*),+,,;/..//---:1111111 >0/+/)*+,,-?-.//0A12*),+,,;//.//...:2222221 >.-+/)+*+-,?.-.0/A21*),+,,;//.//...:2222221 (+)-+17/5#*#+!(!)%,%-#*#+'.'/%,%-)0)1/6/7'.'/-4-5,3,4*1*2.5.6,3,40708.5.6292:0708 $+#,N+:+B+E+ < ;Aœ¥VÔVÒWýW¬XÙXŠY¹Yñ¤Õ‹€ŒóŽ �Í�ü�«�›‘Ÿ‘Ì‘БÁ”ð” •Еÿ•­–Û–Ä—È—ö—ú—¨˜¬˜Ú˜Þ˜Œ™�™¾™™ð™ô™ùš¤›ÞžŒŸºŸêŸš Ø¡Ü¡Š¢Ž¢þ¤­¥Ý¥�¦¼¦ê¦˜§�¨…¨³¨·¨å¨é¨—©›©É©Í©û©ÿ©­ª±ª…¬°¬©¯ׯ…°µ°å°Ö±Ú±ˆ²Œ²÷´¥µÔµƒ¶··å·“¸†ºŠº¸º¼ºêºîºœ» »λÒ»€¼„¼´¼¬½ý½�¾“¿¾¿ü©ÃÖÃ…Ä´ÄñÅõŢƦƒÉÀÉïÉžÊÌÊùʦˎ̒̿ÌÃÌðÌô̡ͥÍÒÍÖ̓·δθÎÈÏóϰÓÞӌԼÔìÔªÖ®ÖÜÖàÖÐÙ€Ú®ÚÞÚŽÛ½ÛëÛ™Ü‚Ý†Ý´Ý¸ÝæÝêݘޜÞÊÞÎÞüހ߲߮߾àéà¥äÓä�å±åáåŸç£çÑçÕçÆêõê£ëÓëƒì²ìàìŽí÷íûí©î­îÛîßî�ï‘ï¿ïÃïñïõï£ð§ðùñ¤òšõÈõöõ¥öÕöÅ÷É÷÷÷û÷ìúœûÊûúûªüÙü‡ýµýžþ¢þÐþÔþ‚ÿ†ÿ´ÿ¸ÿæÿêÿ˜€œ€Ê€΀œ‚Ç‚½…ê…—†džö†ç‡ë‡˜ˆœˆ�‹½‹ë‹›ŒËŒúŒ¨�Ö�¿ŽÃŽñŽõŽ£�§�Õ�Ù�‡�‹�¹�½�ë�ï�ˆ’³’–É–ø–§—ä˜è˜•™™™…œµœâœ‘�À�î�›žÈž°Ÿ´ŸáŸåŸ’ – àÇ ô ø ¥¡©¡Ö¡Ú¡ï¢š£Õ¦‚§¯§Þ§�¨Ê©Ωû©ÿ©ì¬›­È­÷­¦®Ô®�¯®¯–°š°ǰ˰ø°ü°©±­±Ú±Þ±‹²�²¼²À²›´Æ´¼·ê·˜¸Ǹ÷¸ç¹ë¹™º�ºнº½ç½–¾žô¾¢¿п¹À½ÀëÀïÀ�Á¡ÁÏÁÓÁ�…³·ÂäÂè¿ÄêÄàÇ�ȺÈêșɊʎʻʿʬÍÜ͉θÎçΖÏÄÏòÏÛÐßÐ�ёѿÑÃÑñÑõÑ£Ò§ÒÕÒÙÒ†ÓŠÓ„÷ç÷ë÷ñ÷ô÷÷÷ú÷ý÷€ø˜�ù5½©3±òJͦ y‚a/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/pool.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/pool.rsÁ "7ÀI£>œ!XUD‘#öÓ¾Ó¾õ ILPOMMMKN;?>>?N?O0MOKM$KGLPNPOLLNLKMOPOIPKA<=ALEKPPHINJMLNKONIKNNNM>LKM OOOHLLOCO0NL,PNMN4#LKL&WIFM5'(;&70KII!*?I!PNMOMOJHIE@ I!MOJ@J )@OD*+ %  )DKL2LHM+JLJN/ ?G6KK(M6<OO/,'KN(DG; ,/,*7M#7KM )NLL!'POMNJKHN )P>KPLPNNOKNLOPNLNNP%LNEHNNOOMLOLJKM1GJKGOKNLN,K -GL-MLILIEHJIKE3#+)32<./;7C@MH?FIA H@ C DKELH"F//G+3)@'A;(I:DF<@NG2EP#-<-I+G ?5?ONOP/ %. GKONOP/ )2 A5CJKKLG %0 CJJ0"$0-"BP=HMP@<B NHNN=@,(HPMIPLKJNP,+HKG)+NJ!ID C"+ 4DOMNN"'NP+J&&271 2.P :F OPBO-K%)?:)"POML6LPB'IOL>%'<2B <NJA1%/JA6NKN>NM?'3)M INP7A(%&H G-KNA>4'6.HKM0N26LNN+ %JJ4>!2%>IO>>2%4,FIM0J04JNL) %JHMLN>%03@JHMLN>%03@MMKH>.5,MMKH>.5,NNKH>/6.N;N"5.HN;N"5.HO<0JNM+"$$> O!>'BJ!>'BJ!>'"D"BOK=*=N EP*EP*FL,!+4+4-5+4+4-5%  !>:8 ")< %@ 3@ ''(((((((s�é=Ÿq!¨DAéùÛH�n/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/determinize/state.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Án/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/determinize/state.rsÁ 6ôà 7̵žøáÐðÑ®qù�ù�‹M MMMMNJL<KPPPLKIBIONOKJHLMOL9JHNLO8LHNJOMBNNIMMPIE7KMJMOONNMHNPOKO<LN-"&K PG7$IPPN5, "G<O $F,0#0#0 0 . D)G(!M.G*1!4KLJ9.O/)B@$->J)00GJO:3K0+0+0)!-+D2!,EKPM3$ ,GFO-&580 !-+!-+> @-!, ENN1PNPNONOMLN LNNK"OMJJOKI6EPKPILKKGFPO;OLML!!LNKG=(!PPMP=LMKP%!NLN/%!PPN0LO%)N9JKL+%)EH#,' HNB9%7KA M6< &;DF KOL:%  ?!,-KKH F@=!1 $IPH6 N-,2 OFAIMM8-% J+A)G):19933C.IONI8%)L6!FNMJH(JHJ:%APP%P% N9% G,K<N@K<L+8K39NONPO NHF,(%J.H(KFKJM(%H% )GPIK,O, '/G0M1G:MH/G2%@! :I.#JI.%) MLML-I2-KI.NP-9 4 2*C)  M<.L )""7 M<0A --"; < !<.0A -& )"'@'<1 4"'2+ 4"'2+ =;"$ C;"$ „gSe»6GÖrHŒnt­c/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/memchr.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/memchr.rsÁ /Ð�Ò¼3í6T¶Š9X¥´´]NLD+9E%9N*9.9F&9O+9/09E/9N:9E9F09O;9FþN! î‘¿ÝÐ9ŸqÏåc/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/search.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/search.rsÁ ëÕw²ûëíª Ô‹ÒKߜŜÅÍGNO %CHOLJPN?9N7F/;6LNIHKJK9H<G-H5I?OG)I=PPOL*AJ>DJANLLJO-N 'H9CO$KMNML(BHRMR@*:$ &OMNCAI11IM5KPL- B+ 2*+-C!9*2,IIK 12BKI.52,3 NLOOLMOLOL,A ;PMN2HJGJ&P8 #*-7- K *BMOO,;ONLKIMMNIMLMNMOLMO+LJNN(JAIJ +$ &OL2M%,%OM2PLB%OM2HM,%OL2MO2303 =! 8PNNNJO%MLMMMMK0%K K-+-B,2BDC;2B3 8 4ICA"M5 #.-- 9 ,;;! DJPMNJGJ&O8 #.- - CLIJP0&M># ,>&7 ,LL/OK #.-- 0:JJ/MK #.-- ,8)G  :.8&4B 5IG  #.("' 0H #*1 )2GIK7 #*&5& #0EM) #*$5$ !7OLA +*A %BOMA #*- . @K :.8&4B -F #*( )JO$ #.##" $4O;NJ #',--,- <3*G0 @'//>,;FKILKLOOO6,1/ &*L%)P!,JK4GP2D!G2',*8!&+#+4#*3(1;((9=PMM:HOPP3!M!EA&ELM>A4INK)#KL$<L:JIO8L:3# 9GA"&J. 04/"! F&? EGA"HMGJ. #'/"! C34IKP),A#*?!+C5)!;L%*P!MI9%1##'!!B%':MONIKOMKJLLHJ&IM-PNOML,0*8 D =/ P5<O=POE$7BO=PO$/// +   NJJN;;L5?7 ! N%NN$OONMM4$&E!KMP8&FM/=DOE#44G?0' BPA <+.9NLPN> 463>NLPN> ,PPO9IN  LJMMJH/;H0IKPMKP=HHLM>'+! '(2G?8GH592KHJDIJL. 92M 9I/-N0EJ&E ONPN* 3..C (>NN 323&A 11 <KE;LOPOP(LHMK;LLKJ&'! 'H//MOK NNKNMOHPMMEJOPN6P6'@*'C81/PJN.%LLON.=*'/) H* /6% PMJILLMLHLJNLP= IMKKPNILOOPP NJJMIIO PNKMPOLOh+*PL0'A36J"5" 5 '  :,MP;='9?L>=)2;O9=29AOK=6@F-O!'H N<LJ"JN LBLJNMF@JBKLM%n lNMPP9))G=F!3B9BMLLN2.I0$  OPOLN;NM& 9*. G?( !?K( !?K !+#(+ 3&8�âÕmŽm•œÂ ŽmlF)–m/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/unicode_data/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ám/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/unicode_data/mod.rsÁ �ü­+ØQ0û HÄ9òèèJ F' L(IGLK"èVó‚›qNþím<47�…d/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/error.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ád/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/error.rsÁ !"'Ó[’o¦ä!›v%ÂúAúAñHHNMO'K2HDPH$O $@;F6/P 2G JJEK,>(E7 )KGNF4I6G I?>:;OIA&HOKK) 6N# *L$99"1"G1(E8 )K0L1L/6I;EH;G..;E4$ BIOJM7=<;fcO :3))KD\–wãù'šˆÞê„ôkua/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/id.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/id.rsÁ ³.Á€Â'í˜fö±r±râ<PJKIM HI=>O PO LPK HCFEI]BMMPOL GLM&LMALNLN ?CB9#&1LKHK/# #KGJE5+7!$6:*+*GHD./8LNN?J. LB(@.2  MIH/$(1I-"EGM-&(1I-"IL*7(1I-!O-!P-!/ GJ(=>>???$PL#88 +L&I!7J:NN'65O<=L;$C 8$@ 8$@ J9$A O9$A AM8,5KNO-BNKM*?NJNLN6*?KKL,+@K+@EJ J'%F,//GJ ÝÊ9²fâ bÎ.‰€ ö2©d/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/regex.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ád/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/regex.rsÁ ÄlþpíC÷B�òGÜ_©ã�ã�ÿLLMN1KL"5  AMNKIHKL KNLMPNPPPGKI>J3$'(IH>/>/EGMNONMOO; O(M$ ;.+)6 3 =(N= ;:+H;;;===%3 $%.HE*H BF "7;++931#3 "-EJL!*N.M"OP#O B;&&,(( MN7 O%() 3 388P KNPPNM&PJO;LHJ1H:L P 2.+953 -MNL)M&PJO;LHJ1H:L P ;++)3 LNP'+L3 )7MOM&PJO;LHJ1H:L NN:P6 ;++(L""#$ 3 6#4,K< L)?FNKI$M&PJO;LHJ1H:L-IH% PPPC+', IMPI%'- LLLMJKLND LLMILJ/%1IB 7JL57%D: K IJ0$IJ0$D B2D)3 )P%KPJ,8C7G%8*C8EKNLLPO?NLN! 2JN6&55#O)M"OP#O B;&&,(( MN7 O() 3 ***1/1/9O*79O*7K;'EK/M!K:*B5NPKMKHKN MLKHMMONMM>B37''5/-79#A/C(.OF$/&%6%41=$3NHNO H6&EOLI:N1 . +!A=#=+=3 I#<9O-! B5K-K# JPNA$ …AáD”ÇæÊœTÓùPhK`¸7¬mò¾‹b/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/error.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/error.rsÁ ¤ùªéªaÕøñg•£ÇœCœCñ7?GHMGEILO+M NDNGL9$O OL& 6N= 1= NOJ/0> O!AA G2AG2AF6(EA7 )K4FG :HKL8NMOPK"J $))K:5 '.5MPN%+1 22KF06#ONLIGHLP=#A"--KE+1+24HFKIN4EN 5ªÖl¬ûpw—Sà1Ü¿Vj/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/reverse_inner.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áj/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/reverse_inner.rsÁ áÀìÐ×ð— Få¥^3ŠgŠg¯JHMMONNOMKALPMMKP3NP7LJNH BPFM9T$$ :J>9 IHJJ8B$ @# ! DEHM= EO!EHFFAK#1?NPG'AE5 5$O5 NL#"C""MKLN5 B-B5MMNND-@)-,*!()'* GF ;ONN@KM32/ IMOONCO-2 H%?MI7IOKLLC3 !" %6C+NLON.L25OPMLNNPN9& K(J86PL2H*F %A ÀÑöÙyõÃF²k•÷­D0j/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/error.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áj/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/error.rsÁ +¶dÀ¿�£èRH%·ž ž6ž6¶&JK2HJPMJKJ OMH5!PKL@(OL&*HC1OM/L,MM).HK)LOJ/0H (C9J;L7B&N@$LDIDK9A(E':< )K'K-7)@H:6F<6COE:.';F! UŒT•fCVùO¼È:šÁ‡h/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/map.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/map.rsÁ Ü�R¢Ô�‹<; 1NLMP%+ O JMM LKMNF8O/P=0!KL7G?M$MIHE3<J8!H9#L /7+V*09<:1NLO%+  JMM PK°±÷3ó~9ÈÎ�ã`gßc/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/escape.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/escape.rsÁ Ë´ aÞ7·‚i©·d(PF²²T6GMNM=MN&GIN% N#L'2 F>NJ%,2GL 7$1)-+B "<,9 ½´°9掅Ìz±©Õ„�a/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/iter.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/iter.rsÁ âYlÅ*3WôãŒüg÷tNß³¦³¦þLKNM/K9%@LMK*;LKPLK9IIO3KOPOJM%C7NK)NPPLHMJNOONKNPOKK#AOMOMOKIK:JKJLNPLCM KNGM:'KMLHK>'5()'<31 LB/@FNP,#@LPL%31;IN52O&JPNO> " ;+D+5Q#5Q#5Q#Q#3 P " #+(+4Q#4Q#4Q#Q#3 F G. OD+4'5! M%#5'5! #5'5! #'5! #3 = C) 7H L&P / G1% 5M) *0OK+ C1% BH) '-O5LHJF$ " ;+DK1 9)9)9))3 &# G0O0LHFF "" =+DF- 8)9)9))3 J C,O:LHGHONKKKJ?OM +" @ K;**643D-4E,3C*&3 " G3KLKO // GNKIG OKKJKOMPP1MJIOPILLNI *+ CJMN(E:7KOF'(7ON38;HL=23C/B?=K-#+PM (E:7KOI5>%;HL=20C. :9K)#+KP(E:7KOD16!;HL=2,?* 7H IM(E:7KOB$%7ON350C.AK#(%-( :K*#'+LL (E:7KOJ-8-C- ;H J„s „ês[1ß%�xs/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/aho_corasick.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ás/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/aho_corasick.rsÁ ¡'M=€£–Ûööªþ…§0§0™ 94#'=  8 LIMMKMMNL(-?;NPMN543=>%+;LOKJHL5MOKJO!"!$N!% "%B=  8 OB D=  8 ;7-B &=  8 #  =  8 JOLON@LOLMLO( üóÁgã] ¼™R3õe-¡n/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/byteset.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Án/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/byteset.rsÁ cφÍò!W7�vï�µ€ä ä >('=  8 (+.'!4 %BN(! D,$B &  Ç+Ú‘�gK–¡‚ù’x¦m/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/memchr.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ám/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/memchr.rsÁ S ;8åAÅT#ª· b¦Ë%Ë%Æ'8  3 $01 %B8  3 >,%$ D,B &  #'8  3 $@--" %B8  3 G,%$ D,(B &  ''8  3 $@---& %B8  3 O,%$ D,7B &  â¶#û€u{S–S�8m/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/memmem.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ám/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/memmem.rsÁ ·ð:Bµç¼Vw9ÎÐ̲²\JE-'N  I $.K$ %BN  I 8,>$ DN  I /4F &N  I '  N  I  ¬B &=  8 4K  =  8 MNOOJLNOJPO3LNLMMO" Jlzäoêã¯=# Öwj/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áj/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/prefilter/mod.rsÁ ­ÆïS—pűPTÅ’ÎÛu‰Ð‰ÐÖ5>MMPN@MNMKNLKOPML!KILI  (',)(1DDEMMPILLHJKIMO@OH:L'$D :'%9/K'$ D :':9/#NIHHLLOP4GMKN 2 #H5P$%@ NP$$@ 3 7!M; O,'  " :2332137)= NKMM 2 8M$*%@ 3 N2OKKPLO:KL( 2 )"! O$*%@ 3 -9PNMMP 2 0M$.%@ 3 F'  " * LOPMP= 2 0M$.65B 62 %B 3 H'  " , M*'  " $ 0,'  " MLMLLMJLM.MMO2$'  "  GKJPB?+$PNMALOPCM%M@5%9B&9D(9& 9 KPJMMON'KMMOK1KMPK7GJJMNMIO$GBDO'H! N GI#;N JMPLO8/. 90/ 90/ 8/. 7.- 90/ =53 I NOO NJM-P"MNG"32.> O &:  N MG"32.> O &:  N ô¦�`­öεÀË&Š4ˆg/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/primitives.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ág/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/primitives.rsÁ QÌ8iãÙôªÊgÈÑ3-s«Ø«ØˆK N!LM%KJL KKLMPNLP@KMJMF..P4NJMLO 7>%=&9P6BN# %ON(G&,NKNAOMLKNMOKPKNMJGH%LNLNEJ1KONE PJMPP( G!J L@!( 9M=?F@"JF$J%FNNO=J!N.=J,LH(MM(O7(N;P<&M+M4/,+F 5M+OMCHP+// 2;$2/ 5;$'6#"E9I 8#"E.I 8#"E.> 8%"G0G - ,<?+C COJ'H%..GJ #"#/, *CDH, A#;D8 =H6KP">@O%HGM5L)@8H12 'N(4"L 0 L&0 K)0 =MN,."O3MDJJO3OOFBL3%I,I6  O0*OP 22( 5>, "52( "8>, "*/ &=E &=E &=E (?E /?2 E L K/*H-#  ++OI'&   1*)D,'"6 "2) PLKM ) =,1& J*=,M53! HLKLIO4M(*I;F"AOOKMEM&F PHONO;.9 )%5 )#ÈÝPŠR©ÏksSºþ^c/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/syntax.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/syntax.rsÁ åm•%Åÿ5U+ƒÄA‹ n«Š«Šâ?:;MMLJH  K9&4J/4,LL &'% H?/N2JK&"<A/J, #LK& &'C& =LDLMJPKMML4 M1@MKEIMKL1 FPN:LNIN5MNLLMNONOJ.8! 0MENPOFMKN-2 3(<16+@5"0%B.6+=2/%**1&8>#5)=3)7) #DJHJJLJHJIFLIILHIKGKHPN&LHFLL?,< IK #2EIJD=)" %2#. ¦ƒ©Ëþ/Õ2?²ñ+éwéƒXÛvÓÌ>ïF!3*-MEIO&IOO>OMK  PK7,, B,K;(( %$9N1<;ML.FNP86I405MLK>9JNK6K @+K;,6 89*HO-4(7,M1L#DLO9; !A M!/ ! G9%A4%57J1M&G<=3ME*9,×+Í|ôùqî¬vB Ci›a/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/utf8.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/utf8.rsÁ h}¼¹`”i}O3À¥¯«”ÌÖ8Ö8¿"FO MNK5,*L$#' ' ' +HM99MN@5A$,F:06'HL395F%/G$&;L(K 5$.+...O,H5<KN5"KLIPI!:ON5/MMOM%IMN6HFJNLOLONM(5 2P/# Z2 »ß¤«8åÝr[CKÙf[/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/lib.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Á[/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/lib.rsÁ Ô†5J­ xñ[‹‡{ö‡ð‡ð‹IKJFOONL*M M)KJ PIL MLKMNJN ONGIOMI:KPJKAMJM1-MJ/H M/KNOOMN.844; 5$;;<<*A'+*ONM,63D"A''&*/#$+PN/,$D"H'"3*/0+!ONP-/ @8+9((!!0+NLFLNOMNP7KMLMLJM-LNMMPOKOLMPNK@JPDLMOLNOJON  N-CPMNK?N,IK ILNKMJMM&PPGMILM<I.%^QSDiNINNNKHMP iLNO<LIMNMKMOJMPNMMLMNHPML)KMN /BDOOKGNOLHHMO<*NJOKOKLMLJ&OLIHPKJHOPNPK*MNLONJMDFLJ8PPNOOFLKOLD J>0OI@HLOK MK]K-JL67pkD-LIGKJRHMQJLPNJN)GGMKOOOML)4NEM4J-=CK$ MN+ *JPPM O +IIPOLOPL@LN ,17.(PI-FKJFPKN!! I#',  = ! >°ìg¨MéòûÂ2¤^/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/macros.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Á^/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/macros.rsÁ †·Ï*¥d-¬ù ëñ¿+§§N,$  33ÈBþÕ�2Ê*yÞb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/mod.rsÁ áAò Dzìf� .ÂF˜/˜/�LMIOP6I IGO'A!J235#(H++OL+:3.#H+MIJKL%MLLJLK'>PIMMOKKLPKIJLKLEIOHJ PHNMIJJMMOKMMN8H1 . �l6jVzÔ/2àªãe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/search.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áe/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/hybrid/search.rsÁ ©{*£®¨PjºÓIáþ4˜‚˜‚¨ - 6-6 )OMOHKLPC"78 "89 5 -5J0 JP%"$=A !01$ !&F %>,ILKIPONONOO?PHIL GII=K>77BIH?::::LNL"OKLPINKMOKHINKNMPNMBMKKJMJKONNNLJMLJLPPP/MHLPOQJ%$%@C>@%@*>@%LKM")G0  LHN0-'@A&?00LIKM4#MNL55:AD,&."'@IKNNNK'9-$&) &)H1< 5& -. /5-0ONONLG&9""$=A  %>,IMKJHFN:JNPMNNJM$(@(=>@%@*>@%LKM")G0  '@JJC=-$&) &)H1< ! (5 $"6 )@ A5 "5J#&) @;-DNI#O8( NNO>"#@." -B=/,776=F("*'2@E/&/&/-01< 'GJKK'*& $"#4".&, @;-DNI#LMLO2LO6&I "@." '2@I/&/&/-01< ' 'GJKK'*( 5 '6M$ 5 '6M$ 5 !)N A>&9 -@ ANJ:+  5 !3+.=<"> M=5 F6' J4ILO)KLMMM6HPPLMLB5'#!D5* x§´/Øá0ñéÑiúÓŸ`/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Á`/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/mod.rsÁ oQÜ£O?›Ýï„Wuêaºº@DJ<$INJJL MLK6JLV:IKLO>BC?LNKLNP/ L 7 7 [ÿEb¦”tÀ_Fd/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/literal.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ád/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/literal.rsÁ ÿ¯jaA�xé Ç©ó(i˹¹Q>GKMPG$/F8KMH275F#086-,!&B:JJ LMOMNCMIONPL{„W~nE� ×*5Óg§€c/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/prefix.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/meta/prefix.rsÁ ‰O¸ÅL�¸ÍÁbÕ¤eÕAÕAìMIFMH@J JFJIGN:F8" CO5MNOJH8NKMG3 LPOG< MIJL, 0:O L:G$ H?4O /.1*5/2 F3#> E&< '@ @N &7?7,A**+- ;,A**+- P HED 9#G748M1BA?>', JO@C PC+ N¦ÍŠð­ƒº—(†àË3Q_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Á_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/mod.rsÁ ¢w�¿Œ«² ŸnÕ¤Žâ‰‰7LRNPDNPNKK=MLIJN0NLPNMM FN,PN0HKFLLPNHNS8!©%EVgí¢`Òä!w€Ãh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Áh/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/nfa/thompson/mod.rsÁ c.â3ï½cjñm„À„„QGENOOEPT'HPO#?5FPLO L%GPLNO JFMPJOKN@LNMMNMN="    M G¯¾�Ztµ�V^ÏžÒ`/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Á`/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/mod.rsÁ ÝÇBÐ^9¾ c¨f¤—0µ…««9L KI LJ"LM$J;F LKPJ.L=7×F«ôÕ³÷шԽô/Îl/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/determinize/mod.rsÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18Ál/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/regex-automata-0.4.18/src/util/determinize/mod.rsÁ È*G×·Ù3‹þðÚL­ÎõÎõªJ@KFLN&JLEDM GNH7OKINJHILM-D  - LONNMAMM2MMOGKPO)LOO)NPOK(&IP IKM$B)KGKHJ(%OJPNO*'L/3A2A&'), 77 .3 ; 9"/2M ""03 :",/A".1 IOON@ ENN;)* 0!'" O4FN15LI!BLJLMO1KDLOD'24 (#*2$+47IDIIKHHDA&LKNJMOP&KLNOKN":=:.%$-+5@%-+3?%-+ HK.OLOPPMNMNMOL2"G( 5O ( .:MIMMN DI8LOOO/"+OLK4NE!#210(::3?3')NP0@A&; MONNPPOOLMP'JL##3202/242A*7MLOEOJOLHFEPLMOLKMMOJOMMMJMLBNMKLLNNM3//'33)KNNMOPMOPMPMLL1OJI;MJPO'2NH2OPP'2/JJJIJD2 FD.(5L!)' =& )/:< ), 4H0/G)/:< 404N4PEJ)/:< 0P0EJ)/:< )0JNON6)203>@ ¨™bµÜ1áF]l÷ÖÂòèüaF1I1EW1”Y1Dm1œo1ü1u‚1¤„1Y�1ò•1Ÿ1¾¥1}°1´1£½1„È1Î1èÓ1@ß1ã1=æ1ñ÷1?þ1y2…2ƒ 2: 2h2ç252î2Ú!2$$2¼&2Û(2h+2-2m22�42/62d82.:2?<2€@2íD2,H2 J2ëL2=O2SQ2+U2�V2xX2]2•^2B`2‰b2d2Çe2Tg2x86_64-unknown-linux-gnuÁA�NÕ#ÎÕ"aºLÀ�Wóregex_automataÁ-0c2e86d94e48d2cbÁÕ"‰IG¼°dõ×É3¡ ÞÜ(´îÇ©änÕ žžè-ŽEè-µð¨µ‰H™‰HÂýiÂʄʄó-¿åÊò‰ÿ-ÿ-ÿ-ü-ÿ-Ãü-ÿ-ÃÙ-ûåý-½äŽEñåÿ-ŽEŽEý‰ŽEªÏªÏ› ÿ-Ñ$ÿ-ý‰ÿ-ý‰ÿ-ý‰ÿ-ûåÿ-ý‰ý-ý‰÷‰ˆ-ÿ-˜‡ú-ý‰„,î‰ÿ-Œ„ý‰ÿ-ý‰ú-,„,Œ„Œ„ÿ-ûå™Ë?Á(ÂÃyý-ÆO÷‰ù-ù-뉎E뉪Ïù-ÿ-뉞ý‰ÚEÐÐðO�…µ„,Ÿ+Œ„ý-é÷‰íµ&ÒýÇÆöOÆÒLÒL=¿Ê·rust-end-file