Files
garmin-img-format-parsing/__pycache__/garmin_img_to_osmand_v4.cpython-314.pyc
T

464 lines
112 KiB
Plaintext
Raw Normal View History

2026-04-14 15:57:42 -07:00
+
å¼ÞiÄãópa€0t$Rt^RIHt^RIt^RIt^RIt^RIt^RIt^RI t ^RI
t
^RI H t H
t
^RIHtHt^RIHt^RIHtHtHtHtHtHt^RIHtERtRtRt^ðt ^t!^t"^t#^t$^t%^t&^t'^t(^ t)^@t*^€t+R t,Rt-R
t.R R lt/R
Rlt0RRlt1RRlt2RRlt3RRlt4RRlt5RRlt6RRlt7]!RR44t8!RR 4t9]!R!R"44t:]!R#R$44t;]!R%R&44t<!R'R(4t=!R)R*4t>!R+R,4t?!R-R.4t@R/R0ltAR1R2ltBR3R4ltCR5R6ltDR7R8ltER9R:ltFR;R<ltG/R=R>R?/bR@R>RA/bRBR>RC/bRDR>RE/bRFR>RG/bRHR>RI/bRJR>RK/bRLR>RM/bRNR>RO/bRPR>RQRRRS/bRTR>RORURV/bRWR>RX/bRYR>RQRZR[/bR\R>RQRZR]/bR^R>RQRZR_/bR`R>RQRZRa/bRbR>RQRZRc/b/RdR>Re/bRfRgRh/bRiRjRk/bRlR>Rm/bRnR>Ro/bRpRqRr/bRsRtRu/bRvRqRw/bRxRyRz/bR{R|R}/bR~RR€/bR�RjR‚/bRƒR„R…/bR†R„R‡/bRˆR„R‰/bRŠR‹RŒ/bR�RgRŽ/bCtHR�]IR�&/RBR‘RI/bRFR’R“/bRNR”R•/bR–R’R—/bRTR‘R˜/bRfRjR™/bRiRjRš/bRlR”R›/bRnR”Rœ/bRpR”R�/bRžR”RŸ/bRsR‘R /bR¡R‘R¢/bR£R‘R¤/bR¥R‘R¦/bR§R‘R¨/bR©RªR«/b/RƒRjR¬R¬R­/bR®R‘R¯/bR°RjR¬/bR±RjR²/bR³RjR¬/bR´R‘Rµ/bR¶RjR¬/bR·RjR¬/bR¸RqR¹/bRºRjR¬R»R¼/bR½RjR¾/bR¿R‘RÀ/bRÁRjRÂ/bRÃRjRš/bRÄRjRÅ/bRÆRjR™/bRÇRjRÈ/bCtJR�]IRÉ&/ERRÊRË/bERRÊRÌ/bERRÊRÍ/bER RÊRÎ/bER!RÊRÎ/bER"RÊRÏ/bER#RÊRÐ/bER$R’RÑ/bER%R>RÒ/bER&R|RÓ/bER'R’RÔ/bER(R’RÕ/bER)R’RÖ/bER*RjR¾/bER+RÊR×/bER,RjRØ/bER-RjR²/bER.RjR‚/ER/RjRÙ/ER0RjRÚ/ER1RjRÛ//CtKRÜ]IRÝ&RÞRßltLRàRáltMER2RãRälltNRåRæltORçRèltPRéRêltQRëRìltRER3RíRîlltSRïRðltTRñRòltURóRôltVRõRöltWR÷RøltXER3RùRúlltYER3RûRülltZER4RýRþllt[ER5RÿERllt\ERERlt]ERERlt^ERERlt_ERRâERRER RER
RER RER RER
RERRâ/ERERllt`ERERltaERERltbERERltcER2ERERlltdERERlte]fER8Xd]g!]e!44hR#(6ax
Prototype Garmin IMG vector extractor -> GeoJSON / OSM XML.
What it does well:
- Reads classic Garmin IMG container FAT and extracts subfiles.
- Supports classic top-level TRE/RGN/LBL maps and many GMP/NT-style maps where
TRE/RGN/LBL offsets are stored inside the .GMP container.
- Parses TRE levels/subdivisions.
- Parses LBL labels (coding 6, 9, 10) with common codepage handling.
- Parses standard points, extended points, standard polylines/polygons, and
extended polylines/polygons from RGN.
- Exports GeoJSON and/or OSM XML.
What it does NOT promise:
- Full Garmin NT routing/address semantics.
- Locked/compressed/vendor-obfuscated maps.
- Perfect type-to-OSM semantic translation. The exporter preserves Garmin type
codes as tags instead of inventing OSM semantics.
This is a practical reverse-engineering tool, not a complete implementation of
all Garmin IMG variants.
)Ú annotationsN)ÚCounterÚ defaultdict)Ú dataclassÚfield)ÚPath)ÚDictÚIterableÚIteratorÚListÚOptionalÚTuple)Úescapeiéécó €V^8„dQhRRRR/#©éÚmsgÚstrÚreturnÚNone©)Úformats"ÚUc:\Users\nethq\vs-code-home-py\garmin-converter-2026-04-14\garmin_img_to_osmand_v4.pyÚ __annotate__rAó€÷,ñ,ˆcð,�dñ,ócóB€\RV 2\PR7R#)z[warn] ©ÚfileN©ÚprintÚsysÚstderr©rs&rÚwarnr&Aó€Ü ˆG�C�5ˆ/¤§
¡
×+rcó €V^8„dQhRRRR/#rr)rs"rrrErrcóB€\RV 2\PR7R#)z[info] rNr!r%s&rÚinfor*Er'rcó$€V^8„dQhRRRRRR/#©rÚbufÚbytesÚoffÚintrr)rs"rrrIó&€÷DñD�EðD ðD¨ñDrcóD€\PWV^,RRR7#)rÚlittleF©Úsigned©r0Ú
from_bytes©r-r/s&&rÚ
read_u16ler9Ió €Ü �>‰>˜# #¨¥'Ð*¨H¸Uˆ>Ó CÐCrcó$€V^8„dQhRRRRRR/#r,r)rs"rrrMs&€÷CñC�EðC ðC¨ñCrcóD€\PWV^,RRR7#)rr3Tr4r6r8s&&rÚ
read_s16ler=Ms €Ü �>‰>˜# #¨¥'Ð*¨H¸Tˆ>Ó BÐBrcó$€V^8„dQhRRRRRR/#r,r)rs"rrrQr1rcóD€\PWV^,RRR7#)ér3Fr4r6r8s&&rÚ
read_u24lerAQr:rcó$€V^8„dQhRRRRRR/#r,r)rs"rrrUs!€÷ñ�Eð ð¨ñrcóL€\W4pVR,'d
VR,pV#)é€é)rA)r-r/Úraws&& rÚ
read_s24lerGUs#ۆ
�SÓ
€CØ
ˆX‡~„~Ø ˆw�ˆØ €Jrcó$€V^8„dQhRRRRRR/#r,r)rs"rrr\r1rcóD€\PWV^,RRR7#)ér3Fr4r6r8s&&rÚ
read_u32lerK\r:rcó €V^8„dQhRRRR/#)rÚcoordr0rÚfloatr)rs"rrr`s€÷ ñ �#ð ˜%ñ rcó€V\,#©N)Ú COORD_FACTOR)rMs&rÚto_degrR`s
€Ø ”<Õ Ðrcó €V^8„dQhRRRR/#)rÚdatar.rrr)rs"rrrds€÷OñO˜ðO 3ñOrcór€VPR^4^,PRRR7P4#)óÚasciiÚreplace©Úerrors)ÚsplitÚdecodeÚstrip)rTs&rÚdecode_ascii_zr^ds1€Ø �:‰:�g˜qÓ ! !Õ $× +Ñ +¨G¸IÐ +Ó F× LÑ LÓ NÐNrcóJ€]tRt^lt$R]R&R]R&R]R&R]R&R]R&R tR
#) Ú FatRecordrÚfilenameÚextr0Úsizez List[int]ÚblocksÚ
offset_in_fatrN©Ú__name__Ú
__module__Ú __qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__rrrr`r`ls‡àƒMØ ƒHØ
ƒIØ ÓØ×rr`có^€]tRt^utRRltRRltRRltRRltR R
ltR R lt R
t
R#)Ú ImgContainercó€V^8„dQhRR/#)rrFr.r)rs"rrÚImgContainer.__annotate__vs€÷
.ñ
.˜Eñ
.rc ó†a€WnV^,oSR 9dk\V3RlV44pVR,pVR,pVPR4'gVPR4'd\RSR
24W nVP 4VnVP
4VnVP4Vn R#)
éc3ó4<"€TF
qS, x€K R#5irPr)Ú.0ÚbÚxor_bytes& €rÚ <genexpr>Ú(ImgContainer.__init__.<locals>.<genexpr>{søé€Ð4±¨1˜hŸ,š,³ùsƒ:ééN:éAéHNsDSKIMGsGARMINzapplied XOR decode with byte 0xÚ02xN©rr)
rFr.Ú
startswithr*Ú_read_block_sizeÚ
block_sizeÚ_read_fat_startÚ fat_startÚ_extract_subfilesÚfiles)ÚselfrFÚmaybeÚsigÚidentrvs&& @rÚ__init__ÚImgContainer.__init__vs£ø€ØŒà�q•6ˆØ ˜7Ô "ÜÔ4±Ó4Ó4ˆEؘ Õ"ˆCؘ)Õ$ˆEØ�~‰~˜i×(Ò(¨E×,<Ñ,<¸Y×,GÒ,GÜÐ6°xÀ°nÐEÔFØ ”Ø×/Ñ/Ó1ˆŒØ×-Ñ-Ó/ˆŒØ×+Ñ+Ó-ˆŽ
rcó€V^8„dQhRR/#©rrr0r)rs"rrrp…s€÷ñ #ñrc ól€VP^a,pVP^b,p^W,,#)éa)rF)r†Úe1Úe2s& rr€ÚImgContainer._read_block_size…s(€Ø
�X‰X�d�^ˆØ
�X‰X�d�^ˆØ�R•W�~Ðrcó€V^8„dQhRR/#r�r)rs"rrrpŠs€÷@ñ@ ñ@rc óX€VP^@,pV\,\,#)é@)rFÚFAT_BLOCK_SIZE)r†Úfat_phys_blocks& rr‚ÚImgContainer._read_fat_startŠs€ØŸ™ $�ˆØ¤Õ.´Õ?Ð?rcó€V^8„dQhRR/#)rrzList[FatRecord]r)rs"rrrpŽs€÷ñ /ñrc  óz€.pVPp\4pV\,\VP48:Ed}W#9dV#VP V4VPV,pV^8wdV#VPV^,V^ ,P
RRR7PR4pVPV^ ,V^ ,P
RRR7PR4p\VPV^ ,4p\VPV^,4p.p V^ ,p
\\4F@p \VPW«^,,4p V R8XdMV PV 4KB V^8XdVP\WVWyV44V\,
pEK¢V#)érWrXrYz éÿÿ)rƒÚsetÚFAT_ENTRY_SIZEÚlenrFÚaddr\ÚrstriprKr9ÚrangeÚMAX_FAT_BLOCKLISTÚappendr`)
r†Úrecordsr/Ú seen_offsetsÚfirstÚnamerbrcÚnext_fatrdÚboffÚiÚblks
& rÚ_parse_fat_chainÚImgContainer._parse_fat_chainŽss€Ø#%ˆØ�n‰nˆÜ“uˆ Ø”NÕ"¤c¨$¯(©(£mÕ3ØÔ"Øð&ˆð%
× Ñ ˜SÔ !Ø—H‘H˜S•MˆEؘŒ}Øðˆð—8‘8˜C !�G C¨!¥GÐ,×3Ñ3°GÀIÐ3ÓN×UÑUÐV]Ó^ˆDØ—(‘(˜3 �7 3¨¥8Ð,×3Ñ3°GÀIÐ3ÓN×UÑUÐV]Ó^ˆCܘdŸh™h¨¨b­Ó1ˆDÜ! $§(¡(¨C°"­HÓ5ˆH؈Fؘ•:ˆDÜÔ,Ö-�Ü  §¡¨4°aµ%­<Ó8�ؘ&”=ÙØ—
‘
˜cÖ"ñ .ð
˜1Œ}Ø—‘œy¨°DÀ#ÓFÔGØ ”>Õ !‹C؈rcó €V^8„dQhRRRR/#)rÚ start_recordr`rr.r)rs"rrrp©s€÷/ñ/¨Ið/¸%ñ/rc óÄ€\4p\VP4pVPp\ VP
V^,4pV^8XdM’V\ ,
pV\ ,\VP
48”dM_V^ ,p\\4FAp\ VP
Wg^,,4pVR8XdK¡VPV4KC K¸VF`pW€P,p W�P,p
V
\VP
48”dM!VPVP
Wš4Kb \VRVP4#)TrœN)Ú bytearrayÚlistrdrer9rFržrŸr¢r£r¤r�Úextendr.rc) r†r°rTrdÚcurrent_offsetr©rªr«r¬ÚstartÚends && rÚ_collect_blocksÚImgContainer._collect_blocks©s€Ü‹{ˆÜ�l×)Ñ)Ó*ˆØ%×3Ñ3ˆàÜ! $§(¡(¨N¸RÕ,?Ó@ˆHؘ1Œ}ØØ œnÕ ,ˆNؤÕ.´°T·X±X³Ô>ØØ! DÕ(ˆDÜÔ,Ö-�Ü  §¡¨4°aµ%­<Ó8�ؘ&”=ÚØ—
‘
˜cÖ"ó .ó
ˆCØŸ/™/Õ)ˆEØŸ/™/Õ)ˆCØ”S˜Ÿ™“]Ô"ÙØ �K‰K˜Ÿ™ Ð+Ö ,ñ ô �TÐ,˜<×,Ñ,Ð-Ó.Ð.rcó€V^8„dQhRR/#)rrúDict[str, bytes]r)rs"rrrpÃs€÷ñÐ#3ñrc ó°€/pVP4F?pVP RVP 2P4pVP V4W&KA V#)Ú.)r­rarbÚupperr¸)r†ÚoutÚrecÚkeys& rr„ÚImgContainer._extract_subfilesÃsT€Ø "ˆØ×(Ñ(Ö*ˆCØ—\‘\�N ! C§G¡G 9Ð-×3Ñ3Ó5ˆCØ×+Ñ+¨CÓ0ˆC‹Hñ+ðˆ
r)r�rƒr…rFN) rgrhrirjrŠr€r‚r­r¸r„rlrrrrnrnus&†õ
.õõ
@õõ6/÷4ñrrncóD€]tRt^Ït$R]R&R]R&R]R&RtR]R&RtR #)
Ú LevelInfor0ÚlevelÚbits_per_coordÚboolÚ inheritedTÚpresentrN)rgrhrirjrkrÉrlrrrrÄrÄÏs‡à ƒJØÓ؃OØ€GˆT×rrÄcó€]tRt^×t$R]R&R]R&R]R&R]R&R]R&R]R&R]R&R]R &^tR]R
&R tR ]R
&^tR]R&^tR]R&^t R]R&^t
R]R&^t R]R&^t R]R&^t
R]R&]!]R7tR]R&RRltRtR#)Ú Subdivisionr0ÚindexrÅÚ data_offsetÚ object_typesÚ
lon_centerÚ
lat_centerÚwidthÚheightÚindex_next_levelFrÇÚlastÚdata_endÚdata_ext_polygon_offsetÚdata_ext_polygon_endÚdata_ext_polyline_offsetÚdata_ext_polyline_endÚdata_ext_poi_offsetÚdata_ext_poi_end)Údefault_factoryzList['Subdivision']Úchildrencó€V^8„dQhRR/#r�r)rs"rrÚSubdivision.__annotate__ìs€÷ñ ñrc óˆ€^p^p\^4F.pVPV,'d
V^,
pV^,pK0 V#r~)r¢rÎ)r†ÚcountÚcurÚ_s& rÚnb_object_typesÚSubdivision.nb_object_typesìsD€ØˆØˆÜ�q–ˆAØ× Ñ  3×&Ô&ؘ•
�Ø �A�IŠCñðˆ rrN)rgrhrirjrkrÓrÔrÕrÖr×rØrÙrÚrÛrr³rÝrärlrrrrËrË×s§‡à ƒJØ ƒJØÓØÓ؃O؃OØ ƒJØ ƒKØÐ�cÓØ€Dˆ$ÓØ€HˆcÓØ#$ИSÓ$Ø !И#Ó!Ø$%ИcÓ%Ø!"И3Ó"Ø Ð˜Ó ØÐ�cÓÙ$)¸$Ô$?€HÐ!Ó?÷ñrrËcó6€]tRt^öt$R]R&R]R&R]R&RtR#) ÚFeaturerÚ geom_typeÚobjectÚcoordsúDict[str, object]ÚpropsrNrfrrrrçrçös‡àƒNØ ƒNØ ×rrçcóž€]tRtRt.RNRNRNRNRNRNRNR NR
NR NR NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NRNRNRNRNRNRNt.R(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NRNRNRNRNRNRNRNRNRNRNR8NR9NR:NR;NR<NR=NRNRNRNRNRNRNRNRNRNRNRNR>NR?NR@NRANRBNt.RCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NRNRNRNRNRNRNtR^R_ltR`RaltRbRclt RdRelt
RfRglt Rht Ri#)jÚLBLiÚ ÚAÚBÚCÚDÚEÚFÚGÚHÚIÚJÚKÚLÚMÚNÚOÚPÚQÚRÚSÚTÚUÚVÚWÚXÚYÚZÚ~Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú@Ú!Ú"Ú#Ú$Ú%Ú&Ú'Ú(Ú)Ú*Ú+Ú,Ú-r½Ú/Ú:Ú;Ú<Ú=Ú>Ú?Ú[Ú\Ú]Ú^rãÚ`ÚaruÚcÚdÚeÚfÚgÚhr«ÚjÚkÚlÚmÚnÚoÚpÚqÚrÚsÚtÚuÚvÚwÚxÚyÚzcó€V^8„dQhRR/#)rrTzOptional[bytes]r)rs"rrÚLBL.__annotate__ s€÷ !ñ !˜_ñ !rc óÖ€T;'gRVn\V4Vn^Vn^Vn^Vn^VnRVnVP'dVP4R#R#)riäN) rTrÇÚokrÍÚ data_lengthÚdata_offset_multiplierÚ label_codingÚcodepageÚ
_parse_header©r†rTs&&rrŠÚ LBL.__init__ s[€Ø—K�K˜CˆŒ Ü�t“*ˆŒØˆÔØˆÔØ&'ˆÔ#ØˆÔØˆŒ
Ø �7�7ˆ7Ø × Ñ Ö ñ rcó€V^8„dQhRR/#©rrrr)rs"rrrHs€÷8ñ8˜tñ8rc óz€\VP^4p\VP^4Vn\VP^4Vn^VP^,,VnVP^,Vn\VP4^¬8¼d\VP^ª4VnR#R#©rrN) r9rTrKrÍrKrLrMrŸrN)r†Ú
header_lengths& rrOÚLBL._parse_headers„€Ü" 4§9¡9¨aÓ0ˆ
Ü% d§i¡i°Ó6ˆÔÜ% d§i¡i°Ó6ˆÔØ&'¨4¯9©9°T­?Õ&:ˆÔ#Ø ŸI™I d�OˆÔÜ ˆt�y‰y‹>˜TÔ !Ü& t§y¡y°$Ó7ˆDŽMñ "rcó €V^8„dQhRRRR/#)rÚoffsetr0rrr)rs"rrrH s€÷+ñ+ ð+¨ñ+rc ó*€VP'dV^8XdR#VPWP,,pV^8gV\VP48¼dR#VP
^8XdVP
V4#VPV4#)rrÚ)rJrÍrLrŸrTrMÚ _get_label6Ú_get_label8_10)r†rYÚactuals&& rÚ get_labelÚ
LBL.get_label sv€Ø�w�wˆw˜& Aœ+ÙØ×!Ñ! F×-HÑ-HÕ$HÕHˆØ �AŒ:˜¤3 t§y¡y£>Ô1ÙØ × Ñ  Ô !Ø×#Ñ# FÓ+Ð +Ø×"Ñ" 6Ó*Ð*rcó €V^8„dQhRRRR/#©rr/r0rrr)rs"rrrH*s€÷:ñ: #ð:¨#ñ:rc ó‚€TpV\VP48d$VPV,^8wd V^,
pK=VPWpRpVPpVR
9dRpM#VR8XdRpMVR8XdRpMVR8XdRpMR V 2pVPVR
R 7# \dTPR R
R 7u#i;i)rrNÚcp1252iéýúutf-8i¤Úcp932i¶Úbig5ÚcprXrYÚlatin1)rriR)rŸrTrNr\Ú Exception)r†r/r·rFÚencrhs&& rr]ÚLBL._get_label8_10*sÀ€ØˆØ”C˜Ÿ ™ “NÔ" t§y¡y°¥~¸Ô':Ø �1�HŠCØ�i‰i˜Ð ˆØˆØ
�]‰]ˆØ
�Œ>؉CØ
�5Œ[؉CØ
�3ŒY؉CØ
�3ŒY؉Cà�r�d�)ˆCð :Ø—:‘:˜c¨)�:Ó4Ð 4øÜô :Ø—:‘:˜h¨y�:Ó9Ò 9ð :úsÂ
BÂB>Â=B>có €V^8„dQhRRRR/#rbr)rs"rrrH@s€÷!$ñ!$˜sð!$ sñ!$rc óº€.pRpTpV^,\VP48:Ed–VPV,VPV^,,VPV^,,rvpV^,
pV^, V^,^,V^, ,V^,^,V^, ,V^?,.pVFñp V ^/8”d"RPV4P4u#VR8XdoV ^8XdRpK=V ^8XdRpKHV ^8XdVP R4KbV R9dVP R4K|VP VP
V ,4K VR8Xd'VP VP V ,4RpKÍVP VPV ,4RpKó EK·RPV4P4#)ÚNORMALr[ÚSYMBOLÚSPECIALÚ|rï)éé)rŸrTÚjoinr]r¤Ú NORMAL_CHARSÚ SYMBOL_CHARSÚ
SPECIAL_CHARS)
r†r/r¿ÚcharsetÚposÚb1Úb2Úb3Úcodesr0s
&& rr\ÚLBL._get_label6@sw€ØˆØˆØˆØ�A�gœ˜TŸY™Y›Õ'ØŸ™ 3�¨¯©°3¸µ7Õ);¸T¿Y¹YÀsÈQÅwÕ=O�BˆBØ �1�HˆCà�a•Ø�s•(˜q• R¨1¥WÕ-Ø�s•(˜q• R¨1¥WÕ-Ø�T• ð ˆEó �Ø�t”8ØŸ7™7 3›<×-Ñ-Ó/Ò/ؘhÔ&ؘD”yØ"*šØ˜dœØ"+šØ˜dœØŸ
™
 3žØ˜lÔ*ØŸ
™
 3žàŸ
™
 4×#4Ñ#4°QÕ#7Ö8Ø Ô(Ø—J‘J˜t×0Ñ0°Õ3Ô4Ø&’Gà—J‘J˜t×1Ñ1°!Õ4Ô5Ø&’Gô'ð(�w‰w�s‹|×!Ñ!Ó#Ð#r)rNrTrKrÍrLrMrJN)
rgrhrirjrvrwrxrŠrOr_r]r\rlrrrrîrîs$†ðF�CðF˜ðF˜cðF 3ðF¨ðF¨SðF°#ðF°sðF¸CðFÀðFÀcðFÈ3ðFÐPSðFÐUXðFÐZ]ðFÐ_bðFÐdgðFÐilðFÐnqðFØðFØðFØ!ðFØ#&ðFØ(+ðFØ-0ðFØ25ðFØ7:ðFØ<?ðFØADðFØFIðFØKNðFØPSðFØUXðFØZ]ðFØ_bðFØdgðFØilðFØnqðFàðFàðFà!ðFà#&ðFà(+ðFà-0ðFà25ðFà7:ðFà<?ðFàADðF€LðG�CðG˜ðG˜cðG 3ðG¨ðG¨SðG°#ðG°sðG¸CðGÀðGÀcðGÈ3ðGÐPSðGÐUXðGÐZ]ðGÐ_bðGÐdgðGÐilðGÐnqðGØðGØðGØ!ðGØ#&ðGØ(+ðGØ-0ðGØ25ðGØ7:ðGØ<?ðGØADðGØFIðGØKNðGØPSðGØUXðGØZ]ðGØ_bðGØdgðGØilðGØnqðGàðGàðGà!ðGà#&ðGà(+ðGà-0ðGà26ðGà8;ðGà=@ðGàBEðG€LðG�SðG˜#ðG˜sðG CðG¨ðG¨cðG°3ðG¸ðG¸SðGÀ#ðGÀsðGÈCðGÐQTðGÐVYðGÐ[^ðGÐ`cðGÐehðGÐjmðGÐorðGØðGØðGØ"ðGØ$'ðGØ),ðGØ.1ðGØ36ðGØ8;ðGØ=@ðGØBEðGØGJðGØLOðGØQTðGØVYðGØ[^ðGØ`cðGØehðGØjmðGØorðGàðGàðGà"ðGà$'ðGà),ðGà.1ðGà36ðGà8;ðGà=@ðGàBEðG€Mõ !õ8õ+õ:÷,!$ñ!$rrîcóŽ€]tRtRtRRltRRltRRltRR ltR
R ltR R
lt RRlt
RRlt RRlt RRlt
RtR#)ÚTREihcó€V^8„dQhRR/#)rrTr.r)rs"rrÚTRE.__annotate__is€÷ñ˜Uñrc ó„€Wn\V^4Vn\V^4Vn\V^4Vn\V^4Vn\V^4Vn/Vn^Vn ^Vn
RVn ^Vn ^Vn
^Vn^Vn^Vn^Vn.Vn/VnVP)4R#)rrFN)rTr9rVrGÚnorthÚeastÚsouthÚwestÚlevelsÚ max_levelÚ min_levelÚextended_typesÚextended_types_offsetÚextended_types_lengthÚextended_types_sizeÚextended_types_numberÚdecalaje_extended_typesÚsubdivisions_countÚroot_subdivisionsÚsubdivisions_by_indexÚ_parserPs&&rrŠÚ TRE.__init__is´€ØŒ Ü'¨¨aÓ0ˆÔÜ  dÓ+ˆŒ
ܘt TÓ*ˆŒ Ü  dÓ+ˆŒ
ܘt TÓ*ˆŒ Ø,.ˆŒ ؈ŒØˆŒØ#ˆÔØ%&ˆÔ"Ø%&ˆÔ"Ø#$ˆÔ Ø%&ˆÔ"Ø'(ˆÔ$Ø"#ˆÔØ46ˆÔØ=?ˆÔ"Ø � ‰ Ž
rcó€V^8„dQhRR/#rSr)rs"rrrƒ~s€÷#ñ#˜ñ#rc óf€VP4VP4VP4R#rP)Ú
_parse_levelsÚ _parse_tre7Ú_parse_subdivisions©r†s&rr•Ú
TRE._parse~s&€Ø ×ÑÔØ ×ÑÔØ × Ñ Ö"rcó€V^8„dQhRR/#rSr)rs"rrrƒƒs€÷`ñ`˜Tñ`rc ó €VP^†8¼d½\VP^|4Vn\VP^€4Vn\ VP^„4VnVP ^8”d#VPVP ,VnVP^8„VnVPVP,
Vn
R#R#)é|N) rVrKrTr�rŽr9r�r�rŒr’r‘rœs&rršÚTRE._parse_tre7ƒs¡€Ø × Ñ  Ô *Ü)3°D·I±I¸tÓ)DˆDÔ &Ü)3°D·I±I¸tÓ)DˆDÔ &Ü'1°$·)±)¸TÓ'BˆDÔ $Ø×'Ñ'¨!Ô+Ø-1×-GÑ-GÈ4×KcÑKcÕ-c�Ô*Ø"&×"<Ñ"<¸qÑ"@ˆDÔ Ø+/×+BÑ+BÀT×E_ÑE_Õ+_ˆDÖ (ñ +rcó€V^8„dQhRR/#rSr)rs"rrrƒ�s€÷ñ˜tñrc óŽ€\VP^!4p\VP^%4pTpW,pV^,V8:EdV^,\VP48:dÝVPV,pVPV^,,p\VPV^,4pTpV^,p \ V^€,4p
\ W–V
R7VP V &\VPV 4Vn\VPV 4Vn
V;PV,
un V^,
pEK R#R#)é!)rÅrÆrÈN) rKrTrŸr9rÇrÄr‰ÚmaxrŠÚminr‹r’) r†Ú
levels_offsetÚ
levels_lengthrzr·ÚzoomÚbitsrárãrÅrÈs & rr™ÚTRE._parse_levels�s÷€Ü" 4§9¡9¨dÓ3ˆ
Ü" 4§9¡9¨dÓ3ˆ
؈ØÕ+ˆØ�A�g˜�n  q¥¬C°· ± «NÔ!:Ø—9‘9˜S•>ˆDØ—9‘9˜S 1�WÕ%ˆDܘtŸy™y¨#°­'Ó2ˆE؈Aؘ3•JˆEܘT D�[Ó)ˆIÜ!*°ÐW`Ô!aˆD�K‰K˜Ñ Ü  §¡°Ó7ˆDŒNÜ  §¡°Ó7ˆDŒNØ × #Ò # uÕ ,Õ #Ø �1�H‹Cñ";‰nrcó €V^8„dQhRRRR/#©rrÅr0rr)rs"rrrƒŸs€÷1ñ1 Cð1¨Cñ1rc ó<€VPV,P#rP)r‰rÆ©r†rÅs&&rÚget_resolutionÚTRE.get_resolutionŸs€Ø�{‰{˜5Õ!×0Ñ0Ð0rcó(€V^8„dQhRRRRRRRR/#)rrÅr0ÚvalueÚadditional_accuracyrr)rs"rrrƒ¢s)€÷!ñ! sð!°3ð!ÈSð!ÐUXñ!rc óp€^VPV4,
V,
pV^8¼d W$,#W$), #)é)r°)r†rÅr³r´Úshifts&&&& rÚconvert_map_unitsÚTRE.convert_map_units¢s7€Ø�T×(Ñ(¨Ó/Õ/Ð2EÕEˆØ �AŒ:Ø•>Ð !Ø˜Õ Ð rc
ó,€V^8„dQhRRRRRRRRRR/#)rrzr0rÅÚ record_sizerÌrzTuple[Subdivision, int]r)rs"rrrƒ¨s1€÷&ñ&¨ð&°Cð&Àcð&ÐRUð&ÐZqñ&rc
 ór€\VPV4pVPV^,,pV^,'dWV^,R,,
p\VPV^,4p\VPV^,4p\VPV^
,4p Rp
V R,'d V R,p Rp
\VPV^ ,4p V^8¼d\VPV^,4M^p \ WBWVWxW›WÊR7
p
VP
'EdW@P ,
pV^8”dèVP^8¼d×VPV^,
VP,,pWðP,\VP48:d‚\VPV4V
n VP^8¼d#\VPV^,4V
n VP^ 8¼d#\VPV^,4V
n
WÑV,3#)r@Fi€iÿT)
rÌrÅrÍrÎrÏrÐrÑrÒrÓrÔrE)rArTrGr9rËrŒr‘r�r�rŸrKrÖrØrÚ)r†rzrÅr»rÌrÍrÎrÏrÐrÑrÔrÒÚ
index_nextÚsubÚindicer<s&&&&& rÚ_parse_subdiv_recordÚTRE._parse_subdiv_record¨sµ€Ü  §¡¨CÓ0ˆ Ø—y‘y  q¥Õ)ˆ Ø ˜$× Ô Ø ¨4Õ/°GÕ<Õ <ˆKÜ § ¡ ¨3°­7Ó3ˆ
Ü § ¡ ¨3°­7Ó3ˆ
ܘ4Ÿ9™9 c¨B¥hÓ/ˆØˆØ �6�>Œ>Ø �V�OˆE؈DܘDŸI™I s¨R¥xÓ0ˆØ8CÀrÔ8I”Z § ¡ ¨3°­8Ô4Èqˆ
Ü À Ø%/ÈeØ+5ôBˆð × × Ñ Ø×9Ñ9Õ9ˆFؘŒz˜d×6Ñ6¸!Ô;Ø×.Ñ.°&¸1µ*À×@XÑ@XÕ1XÕX�Ø×/Ñ/Õ/´3°t·y±y³>ÔAÜ2<¸T¿Y¹YÈÓ2J�CÔ/Ø×/Ñ/°1Ô4Ü7AÀ$Ç)Á)ÈQÐQRÍUÓ7S˜Ô4Ø×/Ñ/°2Ô5Ü2<¸T¿Y¹YÈÈAÍÓ2N˜Ô/ؘ+Õ%Ð%Ð%rcó€V^8„dQhRR/#rSr)rs"rrrƒÆs€÷,.ñ,. Tñ,.rc  ó†a€\VP^)4p\VP^-4pW,pV\VP48”d\VP4p\VPP 4RR7pV'gR#V^,p^pTp.pV^,V8:dSVP
Wu^V4wr—VPV 4W�PV&V^,
pV P'gK_W€n
VPVPV^,
WV4\VPP4RR7p
\V
4FCwr¹V ^,\V
48d!W«^,,PV nK<^V nKE RF•wop \V3RlVPP44V3RlR7p
\V
4FMwr¹V ^,\V
48d&\!Wœ\#WÛ^,,S44KA\!Wœ^4KO K— R#) é)T©ÚreverseNcó2€VPVP3#rP©rÍrÌ©r?s&rÚ<lambda>Ú)TRE._parse_subdivisions.<locals>.<lambda>às€ÈQÏ]É]Ð\]×\cÑ\cÑLdr©rÁc3óR<"€TFp\VS^4'gKVx€K R#5irU©Úgetattr©rtr?Ú
attr_starts& €rrwÚ*TRE._parse_subdivisions.<locals>.<genexpr>ìs#øé€ÐhÑ'J !ÌgÐVWÐYcÐef×NgŸAšAÓ'Jùóƒ'�
'có<€\VS4#rPrΩr?rÑs&€rrÊrËíó ø€¬°°JÔ)?r))rÖr×)rØrÙ)rÚrÛ)rKrTrŸÚsortedr‰ÚkeysrÀr¤r”rÔr“Ú_parse_childrenÚvaluesÚ enumeraterÍrÕÚsetattrrÏ)r†Ú
sub_offsetÚ
sub_lengthr·Úpresent_levelsÚcurrent_root_levelrÌrzÚrootsr¾Úorderedr«Úattr_endÚitemsrÑs& @rr›ÚTRE._parse_subdivisionsÆsÉø€Ü § ¡ ¨4Ó0ˆ
Ü § ¡ ¨4Ó0ˆ
ØÕ%ˆØ ”�T—Y‘Y“Ô Ü�d—i‘i“.ˆCä § ¡ × 0Ñ 0Ó 2¸DÔAˆßÙ Ø+¨AÕ.ÐØˆØˆØ#%ˆà�B�h˜#ŒoØ×0Ñ0°È"ÈeÓT‰HˆCØ �L‰L˜Ô Ø03× &Ñ & uÑ -Ø �Q�JˆEØ�x�xŠxØØ!&Ôà ×јT×3Ñ3Ð5GÈ!Õ5KÈZÐ^cÔdä˜×3Ñ3×:Ñ:Ó<ÑBdÔeˆÜ Ö(‰FˆAØ�1�u”s˜7“|Ô#Ø&¨1¥u�~×9Ñ9�– à �– ñ )ó %
Ñ ˆJ˜ô
Ôh t×'AÑ'A×'HÑ'HÔ'JÓhÜ?ôAˆEä# EÖ*‘�Ø�q•5œ3˜u›:Ô%ܘC¬7°5¸Q½µ<ÀÓ+LÖMä˜C¨1Ö-ó +ó%
rcó €V^8„dQhRRRR/#r­r)rs"rrrƒôs€÷ñ¨ð°ñrc óJ€V^8”dWP9d V^,pK"V#r~)r‰r¯s&&rÚ_next_present_levelÚTRE._next_present_levelôs €Ø�aŒi˜E¯©Ô4Ø �Q�JŠE؈ rc ó0€V^8„dQhRRRRRRRRRRRR /#)
rÚparentszList[Subdivision]rÅr0rÝr·Únext_index_hintrrr)rs"rrrƒùsC€÷RñRÐ'8ðRÀðRÐRUðRÐ\_ðRÐruðRÐz~ñRrc ó"€VPV4pV^8:dR#VEF[pVP^8:dKVPpV^8:dK,W P8Xd^M^pV^8XdW7^,
^,,MW7^,
^,,p V^8Xd;V ^,V8”d-\WC\ VP
4^,,4p .p
W˜,V8:dSVP
W’W‡4wr¹T
PT 4Y°PT&T^,
pT P'gK^W¦n VPV^,
4p V ^8”gEK=V
'gEKHVPW¬W4V4EK^ R# \dK[i;irU)
rèrÓr‹r¦rŸr“rÀrjr¤r”rÔrÝrÙ)
r†rërÅrÝr·rìÚparentÚidxr»rzrÝr¾Ú child_levels
&&&&&& rrÙÚTRE._parse_childrenùsY€Ø×(Ñ(¨Ó/ˆØ �AŒ:٠܈FØ×&Ñ&¨!Ô+ÙØ×)Ñ)ˆCØ�aŒxÙà %¯©Ô 7™"¸RˆKØ1<ÀÔ1B�* a¥¨2�~Ö-È
Ð\]ÕV]ÐacÕUcÕHcˆCà˜bÔ  S¨2¥X°¤^ܘ#¬C°×0FÑ0FÓ,GÈ"Õ,LÕLÓM�Ø*,ˆHØÕ# sÔ*ðØ#×8Ñ8¸À[ÓV‘H�Cð—‘ Ô$Ø25×*Ñ*¨3Ñ/Ø�q•�Ø—8—8’8ØØ&ŒOØ×2Ñ2°5¸1µ9Ó=ˆKؘQ�§8¢8Ø×$Ñ$ X¸JÈS×Qó5øô !ôÚðúsÃ!E?Å? FÆ
F)rTr‘r†rŒrŽr�r�r�rVr‰rŠr‹r…r“r‡r”r’rˆN)rgrhrirjrŠr•ršr™r°r¸rÀr›rèrÙrlrrrr�r�hs=†õõ*#õ
`õõ$1õ!õ &õ<,.õ\÷
RñRrr�có^€]tRtRtRRltRRltRRltRR ltR
R ltR R
lt Rt
R#)ÚBitStreamReadericó$€V^8„dQhRRRRRR/#)rrTr.r¶r0Ú length_bytesr)rs"rrÚBitStreamReader.__annotate__s!€÷ñ˜Uð¨3ð¸cñrc óF€WnW nW0n^Vn^VnR#rU)rTrzÚremaining_bytesÚremaining_bitsÚcur_byte)r†rTr¶rõs&&&&rrŠÚBitStreamReader.__init__s!€ØŒ ØŒØ+ÔØˆÔ؈Ž
rcó €V^8„dQhRRRR/#)rÚnbitsr0rrÇr)rs"rrrö&s€÷GñG˜cðG dñGrc óP€VP^,VP,V8¬#)é)rørù)r†rýs&&rÚhas_nextÚBitStreamReader.has_next&s#€Ø×#Ñ# aÕ'¨$×*=Ñ*=Õ=ÀÑFÐFrcó€V^8„dQhRR/#r�r)rs"rrrö)s€÷ñ˜ñrc ó|€V;PVP,
un^Vn^VnVP#r~)rzrørùrœs&rÚfinishÚBitStreamReader.finish)s/€Ø �Š�D×(Ñ(Õ(�Ø ˆÔØˆÔØ�x‰xˆrcó€V^8„dQhRR/#rSr)rs"rrrö/s€÷$ñ$ ñ$rc ó€VP^8XduVP^8:d\hVPVP,VnV;P^,
unV;P^,un^VnR#R#rU)rùrøÚEOFErrorrTrzrúrœs&rÚ_get_if_neededÚBitStreamReader._get_if_needed/sb€Ø × Ñ  !Ô #Ø×#Ñ# qÔ(Ü�Ø ŸI™I d§h¡hÕ/ˆDŒMØ �HŠH˜�M�HØ × Ò  AÕ %Õ Ø"#ˆDÖ ñ
$rcó €V^8„dQhRRRR/#)rÚto_getr0rr)rs"rrrö8s€÷ñ Sð¨Sñrc óš€^p^pW!8dÁVP4W,
pW@P8¼d5W0PV,,pW P,
p^VnKb^V,^,
pW0PV,V,,pV;PV,unV;PV,unV#V#r~)r rùrú)r†r Úcur_posÚresultÚremaining_to_getÚmasks&& rÚread_next_bitsÚBitStreamReader.read_next_bits8s«€ØˆØˆØÔØ × Ñ Ô !Ø%Õ/Ð Ø×#6Ñ#6Ô6ØŸ-™-¨7Õ2Õ2�Ø×.Ñ.Õ.�Ø&'�Ö#àÐ-Õ-°Õ2�ØŸ=™=¨4Õ/°GÕ;Õ;�Ø—
’
Ð"2Õ2•
Ø×#Ò#Ð'7Õ7Õ#Ø�
؈
rcó(€V^8„dQhRRRRRRRR/#)rrýr0ÚsignÚ extra_bitrr)rs"rrröJs(€÷ ñ  sð °#ð À#ð È#ñ rc ó¨€V^8XEdVPV4p^V^,
,pWE,'dÔWE, pV^8XdIV^8wd We,
#VPWV4pV^8d^V,
V,#V^,
V,#VR,'dVR,V,
#VPV^,
V^4pV^8d^V,
^,V^,,#V^,
^,
V^,,#V^8”d
VR,#V#VPV4pV^8”dV^, V,^,#WB,#)rriþÿÿ)rÚread_coord_offset)r†rýrrr³Ú sign_maskÚcompÚothers&&&& rrÚ!BitStreamReader.read_coord_offsetJs7€Ø �1�9Ø×'Ñ'¨Ó.ˆEؘe a�iÕ(ˆIØ× Ô ØÕ(�Ø ”>ؘq”yØ#Õ/Ð/Ø ×2Ñ2°5À ÓJ�Eؘq”yØ  5�y¨5Õ0Ð0Ø  1�9 uÕ,Ð,à˜h—”Ø $ x¥°9Õ<Ð<Ø ×2Ñ2°5¸1µ9¸dÀAÓF�Eؘq”yØ  9�}¨qÕ0°E¸QµJÕ?Ð?Ø$ q�=¨1Õ,°¸µ
Õ;Ð;à˜q”=Ø  8Õ+Ð+Ø� à×'Ñ'¨Ó.ˆEؘ1Œ}Ø 1�*¨Õ,°Õ2Ð3Ø•<Ð r)rúrTrzrùrøN) rgrhrirjrŠrrr rrrlrrrrórós&†õõGõõ $õ÷$ ñ rrócó¼€]tRtRtRRltRRltRRltRR ltR
R lt] R R
l4t
RRlt RRlt RRlt
RRltRRltRRltRRltRtR#)ÚRGNiicó$€V^8„dQhRRRRRR/#)rrTr.Útrer�Úlblz
Optional[LBL]r)rs"rrÚRGN.__annotate__js&€÷ Qñ Q˜Uð Q¨ð Q°=ñ Qrc ó²€WnW nT;'g \R4Vn\ V^4Vn\
V4^8¼d
\V^4M^Vn\
V4^8¼d
\V^4M^Vn \
V4^%8¼d
\V^4M^Vn
\
V4^%8¼d
\V^!4M^Vn \
V4^A8¼d
\V^94M^Vn \
V4^A8¼d
\V^=4M^Vn
\
V4^]8¼d
\V^U4M^Vn\
V4^]8¼d\V^Y4VnR#^VnR#rP)rTr rîr!r9rVrŸrKrÍrKÚext_poly_offsetÚext_poly_lengthÚext_line_offsetÚext_line_lengthÚext_poi_offsetÚext_poi_length)r†rTr r!s&&&&rrŠÚ RGN.__init__js€ØŒ ØŒØ×#Ð#œ#˜d›)ˆŒÜ'¨¨aÓ0ˆÔÜ58¸³YÀ$Ô5Fœ: d¨DÔ1ÈAˆÔÜ58¸³YÀ$Ô5Fœ: d¨DÔ1ÈAˆÔÜ9<¸T»ÀdÔ9Jœz¨$°Ô5ÐPQˆÔÜ9<¸T»ÀdÔ9Jœz¨$°Ô5ÐPQˆÔÜ9<¸T»ÀdÔ9Jœz¨$°Ô5ÐPQˆÔÜ9<¸T»ÀdÔ9Jœz¨$°Ô5ÐPQˆÔÜ8;¸D» ÀTÔ8Iœj¨¨tÔ4ÈqˆÔÜ8;¸D» ÀTÔ8Iœj¨¨tÓ4ˆÖÈqˆÖrcó€V^8„dQhRR/#r�r)rs"rrr"xs€÷ ñ ˜#ñ rc ó€VP#rP)rKrœs&rrÕÚ RGN.data_endxs€Ø×ÑÐrcó€V^8„dQhRR/#r�r)rs"rrr"{s€÷$ñ$ ñ$rc ó€VP#rP)r%rœs&rÚext_polygon_endÚRGN.ext_polygon_end{ó€Ø×#Ñ#Ð#rcó€V^8„dQhRR/#r�r)rs"rrr"~s€÷$ñ$ #ñ$rc ó€VP#rP)r'rœs&rÚext_polyline_endÚRGN.ext_polyline_end~r2rcó€V^8„dQhRR/#r�r)rs"rrr"�s€÷#ñ#˜Sñ#rc ó€VP#rP)r)rœs&rÚ ext_poi_endÚRGN.ext_poi_end�s€Ø×"Ñ"Ð"rcó(€V^8„dQhRRRRRRRR/#)rr«r0rrrr)rs"rrr"…s(€÷#ñ# ð#¨Cð#¸Cð#ÀCñ#rc ó €^pV^8Xd
V^,
pW2,
pV^ 8:dV^,V,#^V,^ ,
^,V,#r~r)r«rrr s&&& rÚ_convert_coord_lengthÚRGN._convert_coord_length„sK€àˆØ �1Œ9Ø �1�HˆCØ ÕˆØ �Œ6Ø�q•5˜3•;Ð Ø�1�u�q�y˜1�}˜sÕ"Ð"rcó(€V^8„dQhRRRRRRRR/#©rr¾rËÚdeltar0Úadd_accrr)rs"rrr"Žó.€÷VñV˜{ðV°3ðVÀðVÈñVrc óp€VPVPPVPW#4,#rP)rÏr r¸rÅ©r†r¾rArBs&&&&rÚ _subdiv_lonÚRGN._subdiv_lonŽó&€Ø�~‰~ §¡× :Ñ :¸3¿9¹9ÀeÓ UÕUÐUrcó(€V^8„dQhRRRRRRRR/#r@r)rs"rrr"‘rCrc óp€VPVPPVPW#4,#rP)rÐr r¸rÅrEs&&&&rÚ _subdiv_latÚRGN._subdiv_lat‘rHrcó €V^8„dQhRRRR/#)rr¾rËrzList[Optional[Tuple[int, int]]]r)rs"rrr"”s€÷7ñ7˜[ð7Ð-Lñ7rc ó0€R.^,pVPVP,pVP'd
VPM VPVP,pVP^8XdV#VP'd0V\ VP
48”d\ VP
4pVP'EdýWC8”EdöVP
4^8”EdàVP\,'d
RV\&VP\,'d
RV\&VP\,'d
RV\&VP\,'d
RV\&\\\\.pVP
4^,
pW6^,,\ VP
48:dôW6^,,p^pTp \V4F„p
V^8dW%V,,f V^,
pK#V^8¼dMY\!VP
V 4V,p V ^,
p W´8”gW·8:d
RW%V,&M W{3W%V,&T pV^,
pK† V^8dW%V,,f V^,
pK#V^8d$W%V,,eWt8d
Wt3W%V,&VP"'d_VP$VP",p VP$VP&;'g
VP(,p
WÜ8”d WÍ3V\*&VP,'d_VP.VP,,p VP.VP0;'g
VP2,p
WÜ8”d WÍ3V\4&VP6'd_VP8VP6,p VP8VP:;'g
VP<,p
WÜ8”d WÍ3V\>&V#)N)rrrr) rÍrÕrKrÎrŸrTräÚ OBJ_POINTÚ SEG_POINTÚOBJ_INDEXED_POINTÚ
SEG_IPOINTÚ OBJ_POLYLINEÚ SEG_POLYLINEÚ OBJ_POLYGONÚ SEG_POLYGONr¢r9rÖr$r×r%ÚSEG_EXTPOLYGONrØr&rÙr'ÚSEG_EXTPOLYLINErÚr(rÛr)Ú SEG_EXTPOINT)r†r¾rrYr·ÚorderÚ nb_pointersÚ
segment_startÚcur_idxr<rãÚ segment_endr?r2s&& rÚ _segmentsÚ
RGN._segments”s+€Ø37°&¸1µ*ˆØ—‘ 4×#3Ñ#3Õ3ˆØ"Ÿ|Ÿ|˜|ˆs�|Š|°×1AÑ1AÀT×EUÑEUÕUˆØ × Ñ ˜qÔ ØˆMØ �<�<ˆ<˜C¤# d§i¡i£.Ô0Ü�d—i‘i“.ˆCØ �<�<‰<˜C�L¨S×-@Ñ-@Ó-BÀQÕ-FØ×Ѥ)×+Ô+Ø$*�”yÑ!Ø×ÑÔ"3×3Ô3Ø%+�”zÑ"Ø×Ѥ,×.Ô.Ø'-�”|Ñ$Ø×Ѥ+×-Ô-Ø&,�”{Ñ#ܤ
¬L¼+ÐFˆEØ×-Ñ-Ó/°!Õ3ˆKØ a�Õ'¬3¨t¯y©y«>Ô9Ø &°q­Õ 8�
Ø�Ø�ܘ{Ö+�AØ! Aœ+¨&°wµÕ*@Ò*HØ 1� šØ !”|ÙÜ",¨T¯Y©Y¸Ó":¸VÕ"C�Kؘ•F�AØ"Ô(¨KÔ,HØ15˜ W�~Ò.à2?Ð1M˜ W�~Ñ.Ø$/�Mؘq•L’Gñ,ð ”k f°7­^Õ&<Ò&Dؘq•L’GؘQ”; 6°­.Õ#9Ò#EÈ-ÔJ]Ø.;Ð-A�F �>Ñ*Ø × &× &Ð &Ø×$Ñ$ s×'BÑ'BÕBˆAØ×$Ñ$¨×(@Ñ(@×(XÐ(XÀD×DXÑDXÕYˆAØŒuØ*+¨�”~Ñ&Ø × '× 'Ð 'Ø×$Ñ$ s×'CÑ'CÕCˆAØ×$Ñ$¨×(AÑ(A×(YÐ(YÀT×EYÑEYÕZˆAØŒuØ+,¨&�”Ñ'Ø × "× "Ð "Ø×#Ñ# c×&=Ñ&=Õ=ˆAØ×#Ñ# s×';Ñ';×'RÐ'R¸t×?RÑ?RÕSˆAØŒuØ() v�”|Ñ$؈
rcó€V^8„dQhRR/#)rrú
List[Feature]r)rs"rrr"Ís€÷&ñ& 
ñ&rc  óøa€\VPPP4RR7p\ V4FYwr#VP
^8XgKV^,\
V48Xd
VPMW^,,PVnK[ RVP3RVP3RVP33EF!wop\V3RlVPPP44V3RlR7p\ V4FÎwr#SR8Xd@\TRV^,\
V48XdTM\WR^,,S44KKSR8Xd@\TRV^,\
V48XdTM\WR^,,S44K‘\TR V^,\
V48XdTM\WR^,,S44KÐ EK$ .p\VPPP4R
R7EFÚpVPV4pV\,'d.VP!VP#W7\,R R 74V\$,'d.VP!VP#W7\$,R
R 74V\&,'d,VP!VP)W7\&,44V\*,'d/VP!VP-W7\*,R
R R74V\.,'d/VP!VP-W7\.,R R R74V\0,'d/VP!VP-W7\0,R
R
R74V\2,'gEK¬VP!VP-W7\2,R R
R74EKÝ V#)có2€VPVP3#rPrÈrÉs&rrÊÚ$RGN.parse_features.<locals>.<lambda>Ïs€ÐQR×Q^ÑQ^Ð`a×`gÑ`gÑPhrrÌrÖrØrÚc3óR<"€TFp\VS^4'gKVx€K R#5irUrÎrÐs& €rrwÚ%RGN.parse_features.<locals>.<genexpr>Øs$øé€ÐlÑ'N !ÔRYÐZ[Ð]gÐij×RkŸAšAÓ'NùrÓcó<€\VS4#rPrÎrÕs&€rrÊreÙrÖrr×rÙrÛcó€VP#rP)rÌrÉs&rrÊreãs €ÐQR×QXÒQXrF)ÚindexedT)ÚlineÚextended)r×r r”rÚrÛrÕrŸrKrÍr%r'r)rÜrÏr_rPr´Ú
_parse_pointsrRrYÚ_parse_ext_pointsrTÚ _parse_polyrVrXrW) r†râr«r¾Ú final_endräÚfeatsÚsegsrÑs & @rÚparse_featuresÚRGN.parse_featuresÍsø€ä˜Ÿ™×7Ñ7×>Ñ>Ó@ÑFhÔiˆÜ Ö(‰FˆAØ�|‰|˜qÖ Ø34°qµ5¼CÀ»LÔ3H˜t×/Ò/ÈgÐZ[ÕV[Ín×NhÑNh�– ñ)ð'¨×(<Ñ(<Ð =Ø
'¨×)=Ñ)=Ð >Ø
" D×$7Ñ$7Ð 8ô&
Ñ !ˆJ˜ ô
Ôl t§x¡x×'EÑ'E×'LÑ'LÔ'NÓlÜ?ôAˆEä# EÖ*‘�ØÐ!:Ô:ܘCÐ!7ÀaÈ!ÅeÌsÐSXËzÔFY¹Ô_fÐglÐqrÕmrÕgsÐuó`AöBØÐ#=Ô=ܘCÐ!8ÀqÈ1ÅuÔPSÐTYÓPZÔGZ¹)Ô`gÐhmÐrsÕnsÕhtðwAóaBöCä˜CÐ!3À!ÀaÅ%Ì3ÈuË:ÔBU±YÔ[bÐchÐmnÕinÕcoÐq{Ó[|Ö}ô
+ñ&
ð "ˆÜ˜$Ÿ(™(×8Ñ8×?Ñ?ÓAÑGX×YÐYˆCØ—>‘> #Ó&ˆDØ”I�ŒØ— ‘ ˜T×/Ñ/°¼)µ_ÈeÐ/ÓTÔUØ”J×ÔØ— ‘ ˜T×/Ñ/°¼*Õ5EÈtÐ/ÓTÔUØ”L×!Ô!Ø— ‘ ˜T×3Ñ3°C¼lÕ9KÓLÔMØ”L×!Ô!Ø— ‘ ˜T×-Ñ-¨c¼ Õ3EÈDÐ[`Ð-ÓaÔbØ”K× Ô Ø— ‘ ˜T×-Ñ-¨c¼ Õ3DÈ5Ð[`Ð-ÓaÔbØ”O×$Ô$Ø— ‘ ˜T×-Ñ-¨c¼Õ3HÈtÐ^bÐ-ÓcÔdØ”N×#×#Ø— ‘ ˜T×-Ñ-¨c¼Õ3GÈeÐ^bÐ-Óc×dñZð ˆ rcó(€V^8„dQhRRRRRRRR/#) rr¾rËÚsegúTuple[int, int]rjrÇrrbr)rs"rrr"õs)€÷ñ ð°?ðÈTðÐVcñrc ó.€.pVwrVWV8EdˆV^,\VP48:EdfVPV,p\VPV^,4p\VR,4p \VR,4p
VR,p \ VPV^,4p \ VPV^,4p
V^,
p^pV 'd#WV8dVPV,pV^,
pV 'dVP
P
V 4MRp\VPW^44p\VPW^44pTP\RVV.RV'dRMRR R
VR
2R R
VR
2R
V
RV/R74EKŽV#)rÿrDé@éÿÿ?r[ÚPointÚ garmin_kindÚ
indexed_pointÚpointÚ garmin_typeÚ0xr}Úgarmin_subtypeÚ
garmin_is_poir¨©rèrêrì) rŸrTrArÇr=r!r_rRrFrKr¤rç)r†r¾rvrjrqrzr·ÚtypÚinfo24Ú has_subtypeÚis_poiÚlbl_offÚ lon_deltaÚ lat_deltaÚsubtyper¨ÚlonÚlats&&&& rrmÚRGN._parse_pointsõs_€Ø!ˆØ‰ˆØ�i˜C !�G¤s¨4¯9©9£~Õ5Ø—)‘)˜C•.ˆCÜ § ¡ ¨3°­7Ó3ˆFܘv¨Õ0Ó1ˆKܘ& 8Õ+Ó,ˆFؘxÕ'ˆGÜ" 4§9¡9¨c°A­gÓ6ˆIÜ" 4§9¡9¨c°A­gÓ6ˆIØ �1�HˆC؈GߘsœyØŸ)™) C�.�Ø�q•�ß29�4—8‘8×%Ñ% gÔ.¸rˆDܘ×)Ñ)¨#¸!Ó<Ó=ˆCܘ×)Ñ)¨#¸!Ó<Ó=ˆCØ �L‰LœØ!ؘS�zà!·g¡?À7Ø! R¨¨C y >Ø$¨¨7°3¨-Ð&8Ø# VؘDð ô
÷
ðˆ rcó$€V^8„dQhRRRRRR/#)rr¾rËrvrwrrbr)rs"rrr"s!€÷ñ [ð°ðÈ=ñrc  ó4€.pVwrEWE8Ed‹V^,\VP48:EdiVPV,pVPV^,,p\V^ ,4pV^ ,p VR,^,V ,p
\VPV^,4p \VPV^,4p V^,
pV'd%V^,V8:d\ VPV4M^p
V'd
V^,
pV
'dVP
P
V
4MRp\VPW^44p\VPW^44pVP\RVV.RRRRV
R
2R V/R
74EK‘V#) érr[r{r|Úextended_pointrr€Ú04xr¨rƒ) rŸrTrÇr=rAr!r_rRrFrKr¤rç)r†r¾rvrqrzr·r„Ú subtype_rawÚhas_lblr‹Ú full_typer‰rŠrˆr¨rŒr�s&&& rrnÚRGN._parse_ext_pointssU€Ø!ˆØ‰ˆØ�i˜C !�G¤s¨4¯9©9£~Õ5Ø—)‘)˜C•.ˆCØŸ)™) C¨!¥GÕ,ˆKܘ;¨Õ-Ó.ˆGØ! BÕ&ˆGØ �+¨!Õ+¨wÕ6ˆIÜ" 4§9¡9¨c°A­gÓ6ˆIÜ" 4§9¡9¨c°A­gÓ6ˆIØ �1�HˆCß4;ÀÀaÅÈ3Ä”j §¡¨CÔ0ÐTUˆGߨ�q•�ß29�4—8‘8×%Ñ% gÔ.¸rˆDܘ×)Ñ)¨#¸!Ó<Ó=ˆCܘ×)Ñ)¨#¸!Ó<Ó=ˆCØ �L‰LœØ!ؘS�zà!Ð#3Ø! R¨ °# Ð#7ؘDðô÷
ðˆ rc
ó,€V^8„dQhRRRRRRRRRR /#)
rr¾rËrvrwrkrÇrlrrbr)rs"rrr"2s8€÷yñy˜{ðy°ðyÈðyÐX\ðyÐanñyrc óÒ €.pVwrgWg8EdÈV'EgcV^
,V8”dV#VPV,pV^,
pV'dV^?,p \V^@,4p
M V^,p Rp
\V^€,4p \VPV4p V^,
pV R,p
V R,'d^M^p\V R,4p\VPV4p\VPV^,4pV^,
pV 'd\ VPV4MVPV,pYk'd^M^,
pVPV,pV^,
p^p^pTp^pT pEMWV^,V8”dV#VPV,p VPV^,,p\V^ ,4pV^ ,pV R,^,V,p\VPV^,4p\VPV^,4pV^,
pVPV,pV^,
pV^,^8XdCWg8¼dV#VVPV,R,,^,^,
pV^,
pMV^,^,
pVPV,pV^,
pRp
Rp^p^p^p^p\ VPVV4pVP
^4^8wdVP
^4^8Xd^MRpVP
^4^8wdVP
^4^8Xd^MRpV'dVP
^4pVPV^,VV4pVPV^, VV4pTp Tp!\VPVV ^44\VPVV!^44..p"V V,p V!V,p!VPVV,4'd‚VPVVV4p#VPVVV4p$V V#,
p V!V$,
p!V"P\VPVV V44\VPVV!V44.4KŸVP4pV'd^MX
p
V'd@X'd%V^,V8:d\VPV4M^p
V'd
V^,
pV
'dVPP!V
4MRp%V'g}V"'d.V"^,V"R,8wdV"PV"^,4TP\#RV".RV'dR MR
R V'dR VR
2MR V R
2RV
RVRV%/R74EKˆTP\#RT"RV'dRMRR V'dR VR
2MR V R
2RV
RVRV%/R74EKÎV# \$dT#i;i)é
FrzryrDrr[ÚPolygonr|Úextended_polygonÚpolygonrr€r“r}Úgarmin_directionÚgarmin_data_in_netr¨rƒÚ
LineStringÚextended_polylineÚpolylineéÿÿÿÿ)rTrÇrAr=r9rórr=rRrFrKrrr¤rr!r_rçrj)&r†r¾rvrkrlrqrzr·Úinfo1r„Ú directionÚ two_byte_lenr…rˆrÚ data_in_netr‰rŠÚ
bitstream_lenÚbitstream_infoÚ long_signÚlat_signÚlong_extra_bitÚ
lat_extra_bitr–r”r•r‹Úbitstream_len_byteÚreaderÚ long_bitsÚlat_bitsÚcur_lonÚcur_latÚptsÚdlonÚdlatr¨s&&&&&& rroÚRGN._parse_poly2ss€Ø!ˆØ‰ˆØ�iðt
ß�xؘR•x #”~Øðdˆ ðc!ŸI™I c�N�Eؘ1•H�Cߨ# d�l˜Ü$(¨°­Ó$6™ à# d�l˜Ø$)˜ Ü#'¨°­ Ó#5�LÜ'¨¯ © °3Ó7�Fؘ1•H�CØ$ xÕ/�GØ&,¨x×&7Ô&7¡¸a�IÜ"& v°Õ'8Ó"9�KÜ *¨4¯9©9°cÓ :�IÜ *¨4¯9©9°c¸AµgÓ >�Iؘ1•H�CßBN¤J¨t¯y©y¸#Ô$>ÐTX×T]ÑT]Ð^aÕTb�Mئ ™1°!Õ3�CØ%)§Y¡Y¨s¥^�Nؘ1•H�CØ !�IØ �HØ%.�NØ$%�MØ #’Ià˜Q•w ”}Øðjˆ ðiŸ)™) C�.�CØ"&§)¡)¨C°!­GÕ"4�KÜ" ;°Õ#5Ó6�GØ)¨BÕ.�GØ"%¨¥+°!Õ!3°wÕ >�IÜ *¨4¯9©9°c¸AµgÓ >�IÜ *¨4¯9©9°c¸AµgÓ >�Iؘ1•H�CØ)-¯©°3­Ð&ؘ1•H�CØ)¨AÕ-°Ô2Øœ:Ø!ðPˆ ðO*<¸d¿i¹iȽnÈsÕ>RÕ)RÐWXÕ(XÐ[\Õ(\˜
ؘq�™à(:¸aÕ(?À!Õ(C˜
Ø%)§Y¡Y¨s¥^�Nؘ1•H�CØ %�IØ"'�KØ !�IØ �HØ%&�NØ$%�MÜ(¨¯©°C¸ÓG�Ø×(Ñ(¨Ó+¨qÔ0Ø&,×&;Ñ&;¸AÓ&>À!Ô&C¡È�IØ×(Ñ(¨Ó+¨qÔ0Ø%+×%:Ñ%:¸1Ó%=ÀÔ%B™rÈ�Hߨ%+×%:Ñ%:¸1Ó%=�NØ ×6Ñ6°~ÈÕ7KÈYÐXfÓg� Ø×5Ñ5°nÈÕ6IÈ8ÐUbÓc�Ø#�Ø#�ܘt×/Ñ/°°W¸aÓ@ÓAÄ6È$×JZÑJZÐ[^Ð`gÐijÓJkÓClÐmÐn�ؘNÕ*�ؘMÕ)�Ø—o‘o i°(Õ&:×;Ò;Ø!×3Ñ3°I¸yÈ.ÓY�DØ!×3Ñ3°H¸hÈ
ÓV�Dؘt•O�Gؘt•O�GØ—J‘Jܘt×/Ñ/°°W¸nÓMÓNܘt×/Ñ/°°W¸mÓLÓMð öð—m‘m“o�ß'™!¨W�ßß<CÈÈaÍÐSVÌœj¨¯©°CÔ8Ð\]�Gߨ˜q�˜ß6=�t—x‘x×)Ñ)¨'Ô2À2�ßߘs 1�v¨¨R­Ô0ØŸ
™
 3 q¥6Ô*Ø—L‘L¤Ø"+Ø #˜uà)ÇÑ+=ÈyØ)Ç8¨R° ¸#¨Ñ+?ÐSUÐVYÐZ]ÐU^ÐQ_Ø.° Ø0°+Ø" Dð ô
"÷
ð—L‘L¤Ø".Ø"à)Ç(Ñ+>ÐPZØ)Ç8¨R° ¸#¨Ñ+?ÐSUÐVYÐZ]ÐU^ÐQ_Ø.° Ø0°+Ø" Dð ô
"÷
ðˆ øôô
àØˆ ð
ús{�W˜W©#WÁ
D;WÆ CWÉ C/WÍB1WÐBWÒ WÒ'WÒ/-WÓWÓ.$WÔWÔAWÕ0WÖ&WÖ6W× W&×%W&) rTrKrÍr'r&r)r(r%r$rVr!r N)rgrhrirjrŠrÕr0r5r9Ú staticmethodr=rFrKr_rsrmrnrorlrrrrris_†õ Qõ õ$õ$õ#ðô#óð#õVõVõ7õr&õPõ@÷:yñyrrcó €V^8„dQhRRRR/#©rr3rçrrër)rs"rrr²s€÷ñ˜'ðÐ&7ñrc ó€VPP4UUu/uFwrVRR./39gKWbK pppRRRRVPRVP/RV/#uuppi)Nr[ÚtyperçÚgeometryÚ coordinatesÚ
properties)rìrärèrê)r3r7rBrìs& rÚfeature_to_geojsonrÀ²sf€ØŸg™gŸm™mœoÔ M™o‘d�a°¸4ÀÀRÈÐ:LÑ1LŒTˆQŠT™o€EÑ Mà� Ø�V˜QŸ[™[¨-¸¿¹ÐBØ�eð ðùó
Ns
žA²Acó €V^8„dQhRRRR/#)rrBrérrr)rs"rrr»s€÷/ñ/�6ð/˜cñ/rcó0€\\V4RR/4#)rz&quot;)Ú
xml_escaper)rBs&rÚ _osm_escaperÄ»s€Ü ”c˜!“f˜s H˜oÓ .Ð.rcó€V^8„dQhRR/#)rÚpathrr)rs"rrr¿s€÷;ñ;˜4ñ;rcó°€\V4P4PR4'd\P!VRRRR7#\ VRRRR7#)ú.gzÚwtreÚ
©ÚencodingÚnewlinerC)rÚlowerÚendswithÚgzipÚopen)rÆs&rÚ_maybe_open_textrÒ¿sD€Ü
ˆ4ƒy‡�Ó×!Ñ! %×(Ò(Ü�yŠy˜˜t¨g¸tÔDÐDÜ ��c G°TÔ :Ð:rcó €V^8„dQhRRRR/#)rÚtextú
Optional[str]rú+Optional[Tuple[float, float, float, float]]r)rs"rrrÅs€÷ $ñ $�mð $Ð(Sñ $rcó €V'gR#VPR4Uu.uFqP4NK pp\V4^8wd \R4h\ \
V4wr4rVW58”gWF8”d \R4hW4WV3#uupi)Nr!z"bbox must be west,south,east,northzinvalid bbox ordering)r[r]rŸÚ
ValueErrorÚmaprN)rÔr<Úpartsrˆr‡r†r…s& rÚ _parse_bboxrÛÅsu€ß ÙØ $§
¡
¨3¤Ó 0¡˜1�W‰WŽY¡€EÐ 0Ü
ˆ5ƒz�Q„ÜÐ=Ó>Ð>Ü"¤5¨%Ó0Ñ€D�Ø „{�e”mÜÐ0Ó1Ð1Ø ˜Ð #Ð#ùò
1sžBcó €V^8„dQhRRRR/#)rr3rçrz!Tuple[float, float, float, float]r)rs"rrrÑs€÷
.ñ
.�wð
.Ð#Dñ
.rcón€VPR8XdVPwrWW3#VPR8XdVPpMVP^,pVUu.uF qD^,NK
ppVUu.uF qD^,NK
pp\V4\V4\V4\V43#uupiuupi)r{r )rèrêr¦r¥)r3rŒr�r´r<ÚxsÚyss& rÚ_feature_boundsràÑs�€Ø‡{�{�gÔØ—8‘8‰ˆØ˜Ð!Ð!؇{�{�lÔ"Ø�h‰h‰à�h‰h�q�kˆÙÓ ™�1ˆA�$ˆ$™€BÐ ÙÓ ™�1ˆA�$ˆ$™€BÐ Ü ˆr‹7”C˜“GœS ›W¤c¨"£gÐ -Ð-ùò
ùÚ s ÁB-Á0B2có$€V^8„dQhRRRRRR/#)rr3rçÚbboxrÖrrÇr)rs"rrrÞs(€÷HñH˜ðHÐ'RðHÐW[ñHrcóŽ€VfR#Vwr#rE\V4wrgr‰Wd8„;'gW‚8;'gWu8„;'gW“8'*#)NT)rà)
r3rârˆr‡r†r…Úa_wÚa_sÚa_eÚa_ns
&& rÚ_intersects_bboxrèÞsL€Ø ‚|ÙØ#Ñ€D�Ü(¨Ó+Ñ€CˆcØ‘
×FÐF˜c™j×FÐF¨C©K×FÐF¸3¹;Ô GÐGrcó €V^8„dQhRRRR/#)rr…r»rzDict[str, Dict[str, bytes]]r)rs"rrræs€÷ %ñ %Ð(ð %Ð-Hñ %rcó€€\\4pVP4FIwr#RV9dKVPR^4wrEW1VP 4,VP 4&KK /pVP4FwrGRV9gKRV9gKWvV&K \\ VP444#)r½r�r)rÚdicträÚrsplitr¾r×)r…ÚgroupsrÁrTÚbaserbr¿Úsubss& rÚ _all_mapsetsrðæs˜€Ü*5´dÓ*;€FØ—[‘[–]‰ ˆØ �cŒ>Ù Ø—J‘J˜s AÓ&‰ ˆØ,0ˆt�z‰z‹|Õ˜SŸY™Y›[Ó)ñ #ð
(*€CØ—l‘l–n‰
ˆØ �DŽ=˜U dž]Ø�‹Iñ%ô ”�s—y‘y“{Ó#Ó $Ð$rÚ0x01ÚhighwayÚmotorwayÚ0x02ÚprimaryÚ0x03Ú secondaryÚ0x04ÚtertiaryÚ0x05Ú unclassifiedÚ0x06Ú residentialÚ0x07ÚserviceÚ0x08Ú constructionÚ0x09ÚroadÚ0x0aÚtrackÚsurfaceÚunpavedÚ0x0cÚjunctionÚ
roundaboutÚ0x0drÆÚ0x0eÚ tracktypeÚgrade1Ú0x0fÚgrade2Ú0x10Úgrade3Ú0x11Úgrade4Ú0x12Úgrade5Ú0x13ÚstepsÚ0x14ÚrailwayÚrailÚ0x15ÚnaturalÚ coastlineÚ0x16ÚcyclewayÚ0x17Ú bridlewayÚ0x18ÚwaterwayÚstreamÚ0x1aÚrouteÚferryÚ0x1fÚriverÚ0x27ÚaerowayÚrunwayÚ0x28Úman_madeÚpipelineÚ0x29ÚpowerrkÚ0x31ÚcliffÚ0x32ÚbarrierÚwallÚ0x33ÚfenceÚ0x34ÚhedgeÚ0x38Ú aerialwayÚ cable_carÚ0x39ÚtramzDict[str, Dict[str, str]]Ú LINE_TAGSÚlanduseÚamenityÚparkingÚleisureÚmarinaÚ0x0bÚhospitalÚ
industrialÚheathÚwoodÚnature_reserveÚparkÚ golf_courseÚ0x19Ú
sports_centreÚcemeteryÚ0x2aÚfarmlandÚ0x2bÚfarmyardÚ0x2cÚvineyardÚ0x2dÚquarryÚ0x2eÚtourismÚ camp_siteÚwaterÚseaÚ0x35ÚmeadowÚ0x3cÚ0x3dÚbeachÚ0x3eÚ0x3fÚ reservoirÚ0x40Ú0x41Ú0x46Ú riverbankÚ0x4cÚ intermittentÚyesÚ0x4dÚglacierÚ0x4eÚorchardÚ0x4fÚscrubÚ0x50Ú0x51ÚwetlandÚ0x52Ú0x53Ú bare_rockÚ POLYGON_TAGSÚplaceÚcityÚtownÚsuburbÚvillageÚhamletÚlocalityÚ
grave_yardÚcrossingÚtowerÚdrinking_waterÚ
hunting_standÚgrit_binÚislandÚspringÚvolcanoÚpeakÚ
cave_entrancez/Dict[Tuple[str, Optional[str]], Dict[str, str]]Ú
POINT_TAGScó €V^8„dQhRRRR/#)rr³rÕrz
Optional[int]r)rs"rrrYs€÷ ñ ˜Mð ¨mñ rcóô€VfR#\V4P4P4pV'gR#VPR4'd
\ V^4#\ V^4# \
dR#i;i)Nr€)rr]rÎrr0rØ)r³r?s& rÚ_garmin_type_intr�Ysg€Ø ‚}ÙÜ ˆE‹
×ÑÓ× Ñ Ó"€Aß ÙðØŸ\™\¨$×/Ò/Œs�1�b‹zÐ>´S¸¸A³YÐ>øÜ ôÚðús¹A(Á A(Á A(Á( A7Á6A7có €V^8„dQhRRRR/#)rr3rçrz List[str]r)rs"rrres€÷BñB 'ðB¨iñBrcóæ€\VPPR44pVf.#\VPPR4;'gR4p\VPPR44;'g^pVR8d"VR;9dV^,V,pM V^,p.pRTu;8:dR8:g%MRTu;8:dR 8gMVP R
4R Tu;8:dR 8:gMVR
,R8XdVP R4RTu;8:dR8:gMVR
,R8XdVP R4VR<9dVP R4VR=9dVP R4VR>9dVP R4VR?9dVP R4VR8XdVP R4VR8:dVP R4RTu;8:dR8:dMMVP R4VR8XdVP R 4VR!8XdVP R"4VR#8XdVP R$4R%Tu;8:dR&8:dMMVP R'4R(Tu;8:dR)8:dMMVP R*4R+Tu;8:dR,8dMMVP R-4R.Tu;8:dR+8dMMVP R/4VR08XdVP R14VR,8XdVP R24R.Tu;8:dR38dMMVP R44R(Tu;8:dR58dMMVP R64VR78XdVP R84VR98XdVP R:4V#)@zßClassify a Garmin object using GPXSee-style type predicates from style_img.h.
GPXSee stores classic Garmin object ids as type<<8 (and standard points as
type<<8|subtype). Extended objects already carry their expanded ids.
rr|r[r�iréiiÚpoii i%iÿÿi Ú contour_linei<iDi Ú
water_areaÚ
water_linerÚ
military_arearLÚspotifÚsummitÚ
major_roadii?ÚcountryiÚstateirFiÚrasteriiÚ depth_pointiiÚobstruction_pointiiÚbuoyiÚlightiÚ label_pointÚdh_pointi
Ú marine_pointiÚ styled_lineiÚcartographic_lineiÚrecommended_route)r~r})i&ir“)ri )ii
)ibic)r�rìÚgetrr¤)r3ÚgtÚkindÚstÚclassess& rÚgpxsee_classes_for_featurer®esµ€ô
˜!Ÿ'™'Ÿ+™+ mÓ4Ó 5€BØ ‚z؈ Ü ˆq�w‰w�{‰{˜=Ó)×/Ð/¨RÓ 0€DÜ ˜!Ÿ'™'Ÿ+™+Ð&6Ó7Ó 8× =Ð =¸A€BØ ˆG„|Ø Ð-Ô -ؘ•'˜R•‰Bà�q•ˆBØ€Gð�rÖ
#˜VÖ
#¨°BÖ)@¸Ö)@Ø�‰�uÔØ�"Ö˜Ö R¨(¥]°wÔ$>Ø�‰�~Ô&Ø�"Ö˜Ö R¨(¥]°wÔ$>Ø�‰�|Ô$Ø Ð
%Ô%Ø�‰�|Ô$Ø Ð
ÔØ�‰�Ô'Ø Ð
ÔØ�‰Ð'Ô(Ø Ð
ÔØ�‰�vÔØ ˆV„|Ø�‰�xÔ Ø ˆV„|Ø�‰�|Ô$Ø
�Ö�vר�‰�yÔ!Ø ˆV„|Ø�‰�wÔØ ˆW„}Ø�‰�xÔ Ø ˆW„}Ø�‰�xÔ Ø�"Ö˜×Ø�‰�}Ô%Ø�"Ö˜×Ø�‰Ð*Ô+Ø�"Ö�wר�‰�vÔØ�"Ö�wר�‰�wÔØ ˆW„}Ø�‰�}Ô%Ø ˆW„}Ø�‰�zÔ"Ø�"Ö�wר�‰�~Ô&Ø�"Ö�wר�‰�}Ô%Ø ˆW„}Ø�‰Ð*Ô+Ø ˆW„}Ø�‰Ð*Ô+à €NrFcó$€V^8„dQhRRRRRR/#)rÚfeaturesrbÚ
point_onlyrÇrúList[Dict[str, object]]r)rs"rrrªs"€÷&ñ& ð&¸Dð&ÐMdñ&rcóx€/pVEFÍpV'd\V4'gK\V4p\V4pVP\ VP
P
R4;'gR4\ VP