Results 1 to 2 of 2

Thread: Instructions for BCM20702A0 [0b05:17cf]

  1. #1
    Join Date
    Nov 2008
    Beans
    119

    Instructions for BCM20702A0 [0b05:17cf]

    MOTHERBOARD INFO
    Asus Maximus VI Formula + mPCIe wireless / bluetooth combo card (included with motherboard)

    WIRELESS INFO (probably not relevant, but posted for others who have the same combo card and want to know if it can work)
    />$ sudo lspci -vvnn
    Code:
    03:00.0 Network controller [0280]: Broadcom Corporation BCM4352 802.11ac Wireless Network Adapter [14e4:43b1] (rev 03)
            Subsystem: ASUSTeK Computer Inc. Device [1043:855c]
            Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
            Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort+ <TAbort- <MAbort- >SERR- <PERR- INTx-
            Latency: 0, Cache Line Size: 64 bytes
            Interrupt: pin A routed to IRQ 17
            Region 0: Memory at df400000 (64-bit, non-prefetchable) [size=32K]
            Region 2: Memory at df200000 (64-bit, non-prefetchable) [size=2M]
            Capabilities: [48] Power Management version 3
                    Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                    Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
            Capabilities: [58] MSI: Enable- Count=1/1 Maskable- 64bit+
                    Address: 0000000000000000  Data: 0000
            Capabilities: [68] Vendor Specific Information: Len=44 <?>
            Capabilities: [ac] Express (v2) Endpoint, MSI 00
                    DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
                            ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                    DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                            RlxdOrd- ExtTag- PhantFunc- AuxPwr+ NoSnoop+
                            MaxPayload 128 bytes, MaxReadReq 1024 bytes
                    DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq- AuxPwr+ TransPend-
                    LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us
                            ClockPM+ Surprise- LLActRep- BwNot-
                    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                            ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
                    LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via WAKE#
                    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
                    LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
                             Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                             Compliance De-emphasis: -6dB
                    LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
                             EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
            Capabilities: [100 v1] Advanced Error Reporting
                    UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt+ UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                    UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                    UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                    CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                    CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                    AERCap: First Error Pointer: 0f, GenCap+ CGenEn- ChkCap+ ChkEn-
            Capabilities: [13c v1] Device Serial Number 54-27-00-ff-ff-00-00-01
            Capabilities: [150 v1] Power Budgeting <?>
            Capabilities: [160 v1] Virtual Channel
                    Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                    Arb:    Fixed- WRR32- WRR64- WRR128-
                    Ctrl:   ArbSelect=Fixed
                    Status: InProgress-
                    VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                            Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                            Status: NegoPending- InProgress-
            Capabilities: [1b0 v1] Latency Tolerance Reporting
                    Max snoop latency: 71680ns
                    Max no snoop latency: 71680ns
            Capabilities: [220 v1] #15
            Kernel driver in use: wl
    BLUETOOTH INFO
    />$ usb-devices
    Code:
    T:  Bus=03 Lev=01 Prnt=01 Port=03 Cnt=03 Dev#=  3 Spd=12  MxCh= 0
    D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0b05 ProdID=17cf Rev=01.12
    S:  Manufacturer=Broadcom Corp
    S:  Product=BCM20702A0
    S:  SerialNumber=54271E328D4F
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
    As you can see, my vendor id is 0b05 and my product id is 17cf.

    I'm on Kubuntu 14.04, so I followed the instructions posted at:

    https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

    to get kernel sources, edit btusb, recompile, and reinstall. The *CRUX* of this step is pretty distribution agnostic, so just follow the download / edit / recompile / install documentation for your own distro to edit btusb.c and things should go swimmingly; below are ubuntu-specific steps. The change I made was simple, and probably not worth it, but basically I just did

    Code:
    mkdir ~/LINUX_SOURCE
    cd ~/LINUX_SOURCE
    sudo apt-get build-dep linux-image-$(uname -r)
    apt-get source linux-image-$(uname -r)
    cd linux-3.13.0/drivers/bluetooth/
    I then navigated to ~/LINUX_SOURCE/linux-3.13.0/drivers/bluetooth/btusb.c, and found the section with the comment heading:

    /* Broadcom BCM20702A0 */
    which looked like:

    /* Broadcom BCM20702A0 */
    { USB_DEVICE(0x0b05, 0x17b5) },
    { USB_DEVICE(0x0b05, 0x17cb) },
    { USB_DEVICE(0x04ca, 0x2003) },
    { USB_DEVICE(0x0489, 0xe042) },
    { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x413c, 0x8143), .driver_info = BTUSB_BCM_PATCHRAM },
    and I changed it to:
    /* Broadcom BCM20702A0 */
    { USB_DEVICE(0x0b05, 0x17b5) },
    { USB_DEVICE(0x0b05, 0x17cb) },
    { USB_DEVICE(0x0b05, 0x17cf) },
    { USB_DEVICE(0x04ca, 0x2003) },
    { USB_DEVICE(0x0489, 0xe042) },
    { USB_DEVICE(0x13d3, 0x3388), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x13d3, 0x3389), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x413c, 0x8197), .driver_info = BTUSB_BCM_PATCHRAM },
    { USB_DEVICE(0x413c, 0x8143), .driver_info = BTUSB_BCM_PATCHRAM },
    Then:
    Code:
    cd ~/LINUX_SOURCE/linux-3.13.0
    fakeroot debian/rules clean
    fakeroot debian/rules binary-headers binary-generic
    cd ~/LINUX_SOURCE
    sudo dpkg -i linux*.deb
    sudo reboot
    This alone wasn't enough to get things working, and shortly after getting to this point, I found a topic created on the archlinux forums

    https://bbs.archlinux.org/viewtopic.php?id=133093

    After reading through it I headed over to:

    http://support.asus.com/download.asp...n0i1Jz1yusKO7u

    Downloaded the latest bluetooth drivers, opened up bcbtums-win7x64-brcm.inf, searched for '17cf', found the relevant section, which referenced the file:

    BCM20702A1_001.002.014.1443.1469.hex

    I found this file in the bluetooth drivers for Windows that I just downloaded from support.asus.com, the contents were:

    Code:
    :020000040009F1
    :280000000108006999994204204EB1FD0400FFFFFFFF4006000000A0027020020A00280009000000000000001D
    :FB002800411A0042726F6164636F6D20426C7565746F6F74682044657669636500980100035C0100017206000300000800019304002400000068040012000C006A3600030011000000B0000000A0000000420000005310080480000000900000006200000072000000C0000000D000000022000000320000007C04000100000209080068000F00030000006F210002331F05CF000000AA147F8C00AA00800A9200000000140000000000006C584E6CA1040000000080690200BD055D0C000A64E6B000008898425A33435F09003C280100040004F70C0A6F0098160800C600F3025D0066033000C900E10268005C033600C300E2026A0053033C00C200E10254
    :FB0123006C004E034100C500D60272004A034300C300CE02790042034800C500C00283003A034E00C800BF0282003B034E00C900BC028400370352000808070707070707060606060505050502C05C0194FC0E00FFFF00005E02000030FC0E00FFFF0F006304000000FD0E00FFFF0F006802000088FC0E00FFFF0000000200002CFC0E00FFFF00004904000070FC0E00FFFF00000B09000074FC0E00FFFF00002E010000D8FF0E00FFFF000062190000D0FC0E00FFFF000020C90000C8FC0E00FFFF000038850000DCFC0E00FFFF00001CC80000CCFD0E00FFFF0000048000005CFC0E00FFFF00000200000020FC0E00FFFF000019210000E0FC0E00008000EE
    :FB021E000000000000C0FC0E00FFFF000022000000948F0800FFFFFFFF00100010988F0800FFFF0000001000009C8F080000FFFFFF00040404CCFC0E00FFFF00002B45000078000F00FF0000FF0500000030010F00FF000000050000008C000F0000F0FF0F0000800034010F000F000000070000001C010F000000FF000000250074000F00000000FF000000300C010F00000000FF00000030B0010800FF0000000500000068000F00FFFF000003000000D07B0001040A08FC0E00FFFF00002E3600000CFC0E00FFFF00002CAE000010FC0E00FFFF00002AAC000014FC0E00FFFF0000A222000018FC0E00FFFF00001D2000001CFC0E00FFFF00000D15000007
    :FB03190020FC0E00FFFF0000858D000024FC0E00FFFF00008311000028FC0E00FFFF00000001000098FF0E00FFFF00003E410000C3180012691418310870047836047430607180764A3108290B7E07CF0900100F0C6EF0B009F060D10900010403036B1420206B1A2400FF0108080410000EFC0CF80AF408F006EC04E8020410000EFC0CF80AF408F006EC04E8020301000182D600040602020A233C5A6E7D80008000800080008000800080028002800280028002800214FF18880AFF610000000000000000000000000014FF18820AFF610000000000000000000000000014FF18000AFF610000000000000000000000000014FF18080AFF610000000000D2
    :FB041400000000000000000014FF180B0AFF610000000000000000000000000014FF18100AFF610000000000000000000000000040FFFF68027B0000000040FFFF68027B0000000040FFFF68027B0000000040FFFF68027B0000000040FFFF69027B0000000040FFFF69027B0000000082D600FF0602020A233C5A6E7D80008000800080008000800080028002800280028002800214FF18880AFF200000000000000000000000000014FF18820AFF430000000000000000000000000014FF18000AFF660000000000000000000000000014FF18080AFF660000000000000000000000000014FF180B0AFF430000000000000000000000000014FF18100AFFE2
    :FB050F00200000000000000000000000000041000000007B0000000041000000007B0000000041000000007B0000000041000000007B0000000041000000007B0000000041000000007B000000008612000413004008000040130001000180FF000113C15E0044041422A244041422A23B04B104B204B304B404B504B604B704B804B904BA04BB04BC04BD04BE04BF04C004C104C204C304C404C504C604C704C804C904CA04CB04CC04CD04CE04CF04D004D104D204D304D404D504D604D704D8280C000B0400143A09000B0400043B09000B04004C3D0900081D00005018010082F002FD0E005842090030B4201CFFF7C8FF30BC7DF704FB0819000108658F
    :FB060A0001007DF0ADFE0A0066420900FFF7A7FF82F767F9000008250002B0DB010077F03AFD160028560900281CFEF72BFE281C5F3000210170391C321D88F7BBFA080F000384E0000030BD00B50000000000000817000488E0000086F0AEF90800E843090000F002F800BD0000081D0005C46200008EF0BFFB0E00464A090001B4FFF769FF01BC71F743FC000008150006586600008EF0F2F90600404A0900FFF796FF30BD0B0400E64B0900081F00074848000090F07EFD100048530900A56498231D53201C00F002F86FF77BFA0B0400104C090008150008C08400008CF000FF0600C4520900FFF7A6FF30BD08350009B47702006DF089FD2600CA5209DA
    :FB0705000002B421684907002905D061684907C90F301C92F7F1FB02BC002902D0F06992F766FA92F768FA080F000A24B500000FE0C046000000000000080F000BC44F000010E0C0460000000000000867000C1CF0030056F068F95800F052090070B5061C0C1C151C002B21D104A8008840281DD105A80088202819D15A2917D8081C15D005F0CAFC002811D1032D0FD02204121408210748002305F0C7FC002806D1221C291C301CA9F72FFF012000E0002070BD18650800080F000D988000005808042B0000000000000817000E680C040054F086FB08007853090000F002F870BD00000819000F64D4000088F00AF80A007C540900281CFEF77FFE78F7C9
    :FB08000004F80813001008D6000087F03DFF04008654090078F7C2F8080F001180DA0000C046C046000000000000081500122452000090F031F906008A54090000F001F8F0BD0B0400EC55090008190013845C02006FF0DBFC0A003E5609009B005859EF1890F720FB0817001464F8000085F0F0FE08004856090000F002F8F0BD0000081700153CF5000086F0F0F808002057090000F002F830BD0000082F0016C4F6010076F06AF820009C570900054B30B4054CE57949190C06211630BC195489F78BFFC046903408008C03080008170017487C02006DF0B8FD0800BC57090000F002F870BD0000082B0018D4BA000089F0AEFE1C00345809000AB4201C02
    :FB08FB00311C00F009F80ABC012803D0042B01D176F746F976F747F9081F00192CF0000086F01DFC10006A58090001B484F723FB01BC00F024F879F7DBFB0825001AE4A203005BF0C9FA16007A580900002803D000F007F8002802D10120A4F758FDA4F72EFD0817001BC06A02006EF006FF0800D058090000F002F830BD00000823001CC47202006EF0A4FB1400105A090008B4301C0122012300F004F808BC91F755FC00000817001D2C6A01007FF0CEF80800CC5B0900FFF7DDFF00BD0000080F001E587B02006EF050F80000FC5B0900087B001F0C7702006EF098FA6C00405C0900F0B5061C0F1C93300078002803D00B795B08072B24D17CF7F8FE049C
    :FB09F6001C0C301422391D051CBEF78EFE7268002A03D0291C301CC5F71DFE3368E3770023A37709490868002804D00368236004600C6001E00C6024600121890403480022B7F7F0FDF0BDC046ECC40800FC4408000815002098AE02006AF008FF0600AC5C090000F00AF870BD081700210C13010084F0D1FC0800B25C090000F035F87BF72CFB08190022FCBE020069F0DDFE0A00BA5C0900281C00F03BF896F721F908230023B47102006EF0CAFD14004C5D090002D0E86991F732FA281C211C00F002F891F744FA081F00249C6E02006EF074FF1000885D09000FB4201C00F004F80FBC91F787F80000081300251CF0000086F0C8FE0400B05D090079F73F
    :FB0AF1003BF9081700262453000090F0F0FD0800085F0900FFF75AFF30BD0000920600A3008000141908270027A06D020071F0FAFB1800988509000198311C3A1CFFF7C1FFFF2801D18EF713FC8EF7A8FC0000080F002834C40100C046201C000000000000081700295845020073F0FCFE080054830900FDF73BFF8CF739F90817002A6847020071F057FC08001A60090000F0AFFB8EF7B2FB0817002B7854020072F058FF08002C830900FFF737FA8DF7B3F80817002C0C57020072F012FE080034830900FFF760FA8DF736FA0817002D4C58020072F076FD08003C830900FFF706FF8DF79DFB0817002E5C46020073F07EFE08005C830900FDF7E6FE8CF744
    :FB0BEC008BF90817002F34AE01007DF04AFB0800CC84090002B0FFF757FF70BD08170030086E000091F09CFA080044830900FFF7D3FB6EF79AFD08170031B8AC02006DF022FC080000850900FEF790F892F710FC08170032884B020071F04BFA08002260090000F04FFC8EF7DDFD08170033C449020071F031FB08002A60090000F06FFD8EF7CFFC08170034202E010083F007F908003260090002F0D3F87CF716FF08230035BC65010082F02CF81400188609000FB5201CFFF7D4FF0FBD37490B687DF7CBFF0000082B00363CBB02006CF0E4FC1C00088509000FB4201C311CFEF7E4F8002802D00FBC93F71AFB0FBC93F71AFB000008170037A46301007FF2
    :FB0CE700F035FE08001260090000F0EAFE80F7D2F9081D003808F0000086F0F4FF0E00F45F09000FB4201C00F0A8FD0FBC79F70CF8081F00396CE8000087F0C9FB1000026009000FB4381C00F0A1FD0FBC3C1C78F737FC0817003AB473020070F0CAFF08004C830900FFF701FD8FF7C1F80815003B2C6B01007FF085FA06003A60090002F0F8F830BD0817003CD0ED000087F036F908004060090002F011F978F708FF082B003D1871010081F024F91C00648309000FB4FFF7D2FF002803D00FBC00207EF71EFF0FBC041C436B7EF7CEFE087F013EA444000094F0CAF970013C88090000B528490B6826490B6024490B6822490B601E490B682D490B60434B79
    :FB0DE20043490B6034490B680120C00303430B6040490B78002B04D02F490B68400303430B602D4A13685B085B0013603A4B3B4A1360B0F766FDB1F78FF9B1F7DEFCB1F784FE0D21364802F02DFA364A9068002803D098F78FFEB0F72BFC2448244A11684160244A60E0C046C0B00800FFF2011AA8AF0900848FB002D08B0E00A0800E00A8B00900148B0E00ACB009006CE50500B0B009008C15080023870900538709002D880900A9870900158809005C000F0094830E00FF00FFFF608B0E0040230001E08A0E00E02C0800A4860E0088B2080005000080850000801C800E0014800E00848F080004830E00108B0E00C8FC0E00C42C0800CC2C0800D02C0825
    :FB0EDD0000C82C0800D42C0800D4FF0E00BC8B0E00AD020000CC8B0E001CCD080010325476D48B0E00009D0800ECCC080011684161054A11688160054A13680360044A1368044A136000BDC046D02C0800C82C0800D42C0800D4FF0E000861003F0044000094F014F952002C86090010B5A448002383700423437001230370A14BA2480360A24BA24C2360A24C2368A24C2360A24C2368A24C23602C22A249A248BCF791F9A148A14C2060A149C160A1494162A1490161A14B8361A14BC36110BD080F0040D0B80400A5F809E00000000000000817004120BA04004DF084FA08002C8F0900FFF7D4FF30BD0000081700423069040052F008FC08004491090054
    :FB0FD800FFF7C4FFADF710FC08190043545D040053F0FAF90A004C910900B3F788FEFFF7B2FF30BD08190044E0A504004EF0B9FD0A005691090000F003F803B0F0BD000008170045E882040050F088FF0800FC91090000F002F830BD000008170046B0B104004EF0A2F80800F892090000F002F830BD0000082B0047DCC004004DF06EF91C00BC930900FF233D3343430448C0189F300078002800D101207047C046349D0800081B004894AC04004EF0AAFB0C00EC930900201C00F003F8B1F752FC0000081B0049ACAC04004EF0EAFB0C0084940900201C00F003F8B1F712FC00000823004A3CC104004DF04CF91400D893090029187F231B02FF339D42003B
    :FB10D300D35D1EFF23B2F7AAFE0817004B981B030067F0ECFC080074950900FFF7D2FF30BD0000082B004C1C7B040051F046FD1C00AC95090004910FB4301CFFF7E3FF012802D10FBC05B0F0BD0FBC062DAEF7ACFA081F004D18AC04004EF012FD10004096090003D1FFF7C1FFB1F7EAFAB1F7E9FA0000080F004E1C730400C046C0460000000000000817004F807A040051F0ACFE0800DC9709000420AEF75AFD10BD081700509882040051F0A4FA0800E4970900FFF7CAFF30BD0000081700516CA804004FF072F8080054990900FFF74AFFF0BD00000815005294A304004FF07EFC0600949C0900FFF7E8FF10BD080F00530CA3040000F01DF80000000030
    :FB11CE000000082300544894000090F027FC14009A9C0900012B02D10020287001E06FF7DCFB62686FF718FC081D0055A4CC04004DF003F80E00AE9C09002878B1F779FF201C00F001F830BD080F0056C4A904005E4A2068000000000000080F0057A4630400FE23F533000000000000081F0058D472000092F0FCFC1000D09C0900301C049900F004F8009988426DF7FCFA081700599897040050F0C8FA08002C9D0900FFF79FFEF0BD00000817005AE49D040050F088F90800F8A0090000F002F8F0BD00000815005BD099010080F0DCFC06008CA30900FFF7B2FF00BD0815005C68E901007BF013FD060092A30900FFF7C2FF00BD0821005DA4E901007B1E
    :FB12C900F0F8FC120098A309000FB4301CFFF7C6FF0FBC0A22311C84F7FFFA0825005EE896040050F05FFE1600AAA30900281C00F008F8237E002B01D0AFF79AF9AFF7AAF900000817005F70EF00008BF07CFA08006CA40900FFF7C2FF74F784FD081D0060645F040054F086FA0E0074A40900607D01386075FFF7C7FFABF774FD0817006114FF00008AF0B5FA080082A40900FFF7E2FF75F74AFD08290062D07E000092F0DBFA1A008AA4090009D5281C112806D0082804D0002087F712FD6BF726FF30BD000008170063EC6B040053F09CFC080028A50900FFF7BCFF10BD0000087700647461030064F0DCF9680030A5090010B500248BF7C4FD012803D3B5
    :FB13C40009D0022820D102E09EF70EFA01E0A3F776FD041C18E00D490B78002B14D00C4A106803680B4A13600B4A1378002B0BD08B784978002B03D04B00FF21013101E04B00802199400160201C10BD481B0800E40A0800AC5808003A010800080F00657C640200131C036000000000000008570066B462020074F070F9480098A5090000B50D490868002804D003280FD0052811D104E009480378002B0CD007E0084B18680122002199F7E0F89BF7B2FC05490B680120186000BDB0C80800D1CA0800F40A0800E40A0800081B0067C0B903005EF00EFE0C00E0A50900211C00F00BF8061CA1F7EEF9081F0068B49D030060F01AFC1000ECA5090002B40008
    :FB14BF00F015F802BC0C68E3069FF7DEFB081900697847000096F0EAF80A0050A90900381CF9F711FA69F712FF0819006AAC47000096F0D5F80A005AA90900281CF9F72AFA69F72BFF081B006B3CDB00008CF012FF0C0064A9090081B000F003F873F74CF900000827006C405B010084F086FD180050A60900002E02D00020E05504E0E35D002B01D0013BE3557BF785FA081B006D50A704004FF00AF80C0068970900381CFFF7E7F902B0B0F7F0FF0817006E58A704004FF00CF8080074970900FFF705FAB0F7FDFF0821006FB03C010086F0D4FE12005CAA090001B4301C00F010F801BC74F72DFB79F723F9081D00705CB503005FF087FA0E006EAA0900E3
    :FB15BA0001B400F00FF820BC6B01A0F772FD08170071A8A0030060F0E8FC08007CAA090000F015F89FF72EFB082B0072CCB203005FF004FC1C00D8AA09001378002B07D103B400F008F8012803BC01D1A0F7F2FBA0F7FCFB0000081B007374B403005FF04AFB0C000CAB090000232B7500F02CF8A0F7B0FC081D00741C69020074F0FCF80E0018AB090003D100F027F8A1F763FE8BF7FEFE0827007530BB03005EF0F9FF180026AB0900012D03D1002E01D100F05BF8A068A1F77EFD0021A0F7FCFF082700760862020074F099FC18003EAB0900201C08B4019900F01BF808BC9C4201D08BF75DFB8BF767FB082500779CBC03005EF05BFF160056AB09001B9D
    :6416B5000705D400F049F8002801D1A1F79DF8A1F7C8F800000A05002DCB080001081B007830AB030060F068F80C0004AC090005B400F003F805BC9FF792FF0817007998C803005EF0CCF9080034AC090000F002F8A1F756FE5B0900FD0344042804080803FE0000F9
    :FB38E000F0B5514C514B52480360524B52480360524B5348036002F00BFBFF232D335148038000F0B5FC00F069FA00F019FC00234D48037000F074FB00F086FB05F0FEF84A4A151CE4354A4B2B604A4E336802263343484E33604848036880218B4303600023464E337046490B1C2333454E3360454B464E3360464B464E33600B1C1233454E3360454B464E33604648464B474E3360031C0E33464E33601223454E33700B1C1133444E3360444B454E3360454B454E3360454E3160454B464E3360464E3368464E3360464B464E3360464B6B67464B061C071DC8C40E36454FC8C4991C0E30061CC2C4434BD3620023424E336006F03AF9414B6B65E4209F4C
    :FB39DB00F743FC0007000F042805D13F20C0433D4A5073000A907300233B490B703B48E8623B490B683B490B6002F0F0F800233A490B70F0BC08BC184700B538483849086038480B49C86400F0A1F900BD2CAE0900BD420900BCC80800D1420900F0C40800B94209000CC508008002080081B10900A0190800114409006C010F0040150800FD0708001E45000098AE090020C900009CAE09001CC80000A0AE0900A4AE090038850000A8AE09005E04000044050000881308008C13080090130800781308000EC90000801308000AC800007C130800841308002685000074130800D8FF0E00ACAE090062160000B0AE0900C54909004205000062190000519683
    :FB3AD600090094AE090085570900B813080020B1090041A2090028FC0E00E803080021B10900E138090090000800B155090070B500200F49104B4B6114E06B099C00EB06DB0E01259D400B592B430B5143004C69C50052195268012632432725AD03AA1A1A530130054AC3009D58922DE5D370BDC0464C1B08000CB109001CAD0900002070470020704700B5002812D0AC231A581204D20E0F290ED1012A03D0042A01D0062A02D178F70BF803E0002A01D0032A01D1012000E0002008BC184700000020704710B5037814490B700620AAF739FE041E10D00E230370042343700023437101238370F723C370FC230371AAF753FE201CAAF72AFE012010BC089E
    :FB3BD100BC18478105890D030AFC201840FC2803D1F72901D1034800E000207047C04620B10900993B090004280AD106480378002B06D0054803785B065B0E0370012000E000207047C04620B1090039C3080030B582781202437813439A05920D1B0AFC252B400C2B0CD1032A03D01A2A00D080E003E006F045FD01207CE002F078FC78E00124FC2B63D1342A49D0B52A20D0B62A21D0C22A22D0C32A23D0C62A66D32CD0C82A2DD32FD0CB2A30D9D02A1FD0E62A0BD0F52A18D0FA2A1CD0FF2302339A4227D003339A4251D126E004F086FE4EE002F0BFFACFE702F0F6FACCE702F032FBC9E702F072FBC6E702F0DBFBC3E702F09AFBC0E702F000FCBDE7D4
    :FB3CCC0006F037FDBAE706F071FDB7E706F0AEFDB4E797F7A7FDB1E704F064FCAEE702F02AFCABE718490869C00122D5174A106920431061101C117D8B0706D5FD231940017500207EF74BF813E0002103207DF7A8FF0EE0202B0FD0042B0DD1132A02D0192A06D102E002F025FC03E002F03AFC00E00024201C00E0002030BC08BC1847034804490860704754200800CC2F0800213C090018C90800002070470148024988607047653D0900201A080030B5051C7BF7A2F9041C281C8BF731FA8749201C2830062206F07CFF00280BD1844C2560012363717F21C943A01D072206F078FF00232371002030BD10B5041C0120A040C1437C4803680B4003608A80
    :FB3DC700F765F978480368A34203D1FF2303600023437110BD75487649C8607047F0B583B0041C012906D164300023C372251C9435AB73EB736F4803689B079B0F032B02D072F770FAC8E00023A381E07B484000D1B6E071F70BFD002803D1674803691B0101D5012100E00021271C64373E1CFB6880208343C8010343F3600C365F4A1078431006D0C3071B0E31688020814319433160594803691B0102D4381C95F7E8F9BB69002B02D03B681B063BD4338868460380E37B012B0DD0251C94356B7B002B10D02B88042B0DD3EB7C022B0AD3AB7D002B07D1A72303201855009B78208343002106E00121E974009B78208343082003431F2080028343880236
    :FB3EC200034300931B041B0C3F4A1360012030723B4A13691B0152D400984006010F00231A1C012095F7C8FB45E0E07B002802D1A72301221A55012804D1E37C042B01D073F7BBFCF37A002B06D00023F372336801204002434033600121B172251C9435A97326480369DB0002D5201C88F7CBFD338824490B60B0884860381C71F7EBFC30684006030F2048C05C3072431EA381E37B002B0FD10121387F81401C4A1068084008D1E37C042B05D019480378AB7519480378EB75114803691B010FD5201C95F721FF0BE0271C64373B727B7271F779FC636C002B02D05A231B5BA38103B0F0BC08BC184709C10800B4AE090000040800E53D090000020800181E
    :FB3FBD008B0E0054200800DCC80800CC8A0E009EBB0500B4010800F5010800F601080030B50D1C041C76F7BFFE6B075B0F012B05D1E37B002B02D1A07B9DF7FEFD30BC08BC184700B52C2204490548C0F7BCFC034804494161044B186000BD0CBD0500C4AE0900DD3F0900E402080010B53F4C3F4B1C602C223F49201CC0F7A5FC3E48606210BDF0B5041C051C876A28353B4B42331878002866D1201C012173F719FA061E4BDD022804DB201C78F793FA002859D1618C8B1F9E4223DA304A13689C420BD0391CAB310878013800D30870731C5910201C78F720F830E0731C5810E37B002B05D07B6C002B02D06B7F002B25D02F89B84222D36A89002A06D1AE
    :FB40B800A389002B03D1201C72F727FE18E0BA4200DA3A1C904201D90C2310E04B23A27C1B5D9A420CD102280AD36B7F002B05D014480378994201D9282300E03823A374211C4D31087800280FD00238087000060BD1E37B012B02D0237D0C2B05D0321C201C0523022178F77CF9F0BC08BC1847F0AE09000003080074BD0500414009006C210800F402080000B52C2216491748C0F71CFC1548164B18601649016100BD30B50D1C041C79F764F8022D09D16B23185D002805D0201C88F74DFB201C88F785FB30BC08BC184700B5011C6831CB78002B07D04B7A002B04D18B78002B01D088F75CFB00BDC0462CBE05001CAF0900300308005941090000B57D73
    :A541B300F79AFA00BD10B5041C031C9A3313201870E3691B06DB0E0A2B03D10A21201C7CF774FA201C82F749FA201C82F774FB201C82F760FA20687AF7BCFE10BD30B5011C2831041C7AF7CBFC051C1ED0F82043595B0703D5281C02F06CFC06E0EB699B021AD40E490B681B0403D5281CFFF7CAFF12E0E369834310200343E36199230B201855201C82F751F906E05023044988881853201C93F7C6FB30BDC0468C070800D420080027
    :FB42700000B52C220B490C48C0F784FB0A4B0B48036000BD0A49CB6ADB0007D5094AD3885B00418C8B4201DC012100E000215A3001707047B0CB050048AF0900F4030800542008009420080000207047087B4008072801D10148886000207047355B090030B5041C002964D0012953D140051BD421E0344D291C3448B8F7A9FF2988281C262902D104F015FF0EE0042902D17DF7F4F909E00F2902D105F014FD04E089002A4A8958C7F7CFFA2748B8F7A8FF0028DFD0274B1C4020020AD57BF7D1FE0121C905244800230122B8F769FF224B1C4020042ED521490868037921490B7000230371B3F710FF7AF79DFE002803D11D48437D002B09D01C487BF7CF36
    :7D436B00FE82F718F81321162006F056F801E07BF786FE174B1C400EE002290CD1C00308D510490878012804D10D490B681871B3F7E1FE7CF774FF201C30BC08BC18470D480D4908607047C046F4440800284508009CBE0500FFFBFFFFFC440800FFFF7FFFC04F080021B10900E44E08001C450800FF7FFFFFD1420900F0C4080009
    :FB43F00000B5431E04490B6004490B78032B01D1C0F782FF00BDC046E08A0E0038080800F0B587B0061C0491081C00210391A34C2064211C4431009100238B70A0488568002D00D16EE2AB7D002B09D0012203920023AB756361237810208343237006E06069002803D0012E01D971F79BFE22691D27FF03002A50D0607A012803D19389002B4AD047E08F4B1B5C002B43D1BB68DB0742D4137D092B3DD204281AD1012E18D196756261237810200343237023683B6085490B687233187802282DD0002382490B608249086882490B6803600B68036022E002280AD1012E08D196756261237810200343237023683B6015E0032803D179498B78022B0FD0067A
    :FB44EB002801D0032805D1012E03D1BB689B0600D5C0E1122803D0102801D071F7C5FD6A4B985D029000287DD00123DB07334301936B4B6C490868986301236B490B606B490B689B0C9B040B600B6869490868034366490B6001230099CB7066490B6866490B6066490B6866490B60287C1A281DD164490B6864490B6064490B6864490B6064490B6864490B6064490B6864490B6064490B6864490B6064490B6850490B60634908686349086063492DE063490B6855490B6062490B6855490B6061490B6855490B6060490B6855490B605F490B6855490B6019280ED1FF2017302B562A3309DD5B490B683E490B605A49086851490860594908E059490B688A
    :FB45E60039490B60584908684C4908605749086857490860A87B2318042801D3187800E0205C6F2290431870C2E0A87B225C0F218A433107090F0A43225423180428049802D38107101C01E081071878490E6022904308431870234B464908689863009AD378002B00D1A1E022490B689B0C9B040B600B684049086803431D490B600023D3703D490B681D490B603C490B681D490B603B490B681D490B603A490B6821490B6039490B681B490B6038490B681B490B6037490B681D490B6036490B6809490B6035496BE0642C08006C210800ECBB0500DC02080060000F00AC2C080044020800882B08002CFC0E0060020800E08A0E00B88A0E005C0208006CBE
    :FB46E100130800D8FC0E0070130800E0FC0E0098AE0900CCFC0E00A0AE0900DCFC0E009CAE0900D0FC0E00A8AE0900C8FC0E00A4AE0900D4FF0E0044AE090048AE090030FC0E004CAE0900781308007C1308008013080074130800841308002CAE090030AE090034AE090038AE09003CAE090040AE0900D8FF0E00B82C080048020800BC2C0800C02C0800C42C0800C82C0800CC2C0800D02C0800D42C0800D82C0800DC2C080008689349086093490B6893490B60002101912868826A281C0021C7F787F8002810D026231A5C002A0CD08368002B09D00298002804D0802301981843019001E0012200E00022237880208343D001034323702020049908402A
    :FB47DC0001D00120C0037F4908600499090704D47D490B68802083430B600499880801214140A27880208243C8010243A2702868826A281C0321C7F74DF874490B78012B01D077F7EDFF05A9714A13687020034018099DF73AF82369002B14D0637A032B11D189F79BFB002806D16A480368032B02D00368062B06D12B7C122B03D101230098837058E005988007800F06D003280ED1069B60490888834209D30398012800D1656171F708FC012300994B7043E00820B860A87B786223683B603B1C1833221D03929207920F02D1039909680FE00399891A0391D2000968D140049120218A1A03994968914001B40598014301BC1960BA69331C103B042B0D41
    :FB48D700D2474B1340FF22013282401343BB61102E07D1444908684449086002E040481040B8610198002800D07861E5602672002300990B704B70281C8DF74FFC012007B0F0BC08BC1847394B3949087A185C39490B68002814D00120800303430B60364A136836480340364A117849020B43354A1360354A1368302083431020184308E0324803400B602C490B682E490B602E4908682F490860704710B5254C234B607A185C002802D071F7F9FE15E06069002801D071F703FC27490868637A012B01D1254A00E0254A13680360116801600023234A136071F70EFE002322490B60E3602361637244340120207010BD002803D10348036803480360002028
    :6E49D200704730FC0E00ACAE0900D8FF0E00648B0E00A4860E00D4C1080024860E001C840E00E4B60800FFF0FFFF9406080064FC0E00ECBB0500642C0800808B0E00B02C0800FFC1FFFF9013080088FC0E00B42C0800FFBFFFFFCCFD0E00AC2C0800400208004402080060000F0018800E0023
    :FB4A540070B582B0061C65480168890602D5022073F7B9FB624C2568A3682360002D26D0002E18D19FF78EF9002814D0C30703D52A68916900290BD1430703D52A68D169002905D1830706D52A68116A002902D0281CC6F706FF9FF792F9011C2A685269002A04D0002802D0281CC6F7F7FEA0680026A84218D0002D21D02A681269002A03D0281C0521C6F7E9FEAE8123699D4200D126612B7D092B11D3281C74F782FD281C74F707F90AE0002808D06369984205D166613B4800220121B8F7B7FE3A48C16E002904D0A368002B01D1C6F7C9FE71F750FBA06800284BD08681037D092B20D26369984205D166612E4800220121B8F79CFEA068A84206D101E8
    :FB4B4F00684968002902D00523037508E0017D032901D0042905D101684968002901D0C6F7A2FEA0680223037501680A69002A02D00221C6F795FEA068807B1D4A136870210B401909884216D169469CF784FE71F7FAFB002801D0174800E01748028800998907890F04D0032905D1019B934202D33F2301201855A0688DF77AF901208DF78AF9A66066603C3426716671012002B070BC08BC18470948044988617047C046C4C408006C2108000C2D0800201A080024860E006602080064020800554A0900A248A3498865704700B5A24A9007800F01D1116808E0121AC0001368C3402021081A516881401943C90F9B4801709B4A1068002817D09A4A02603B
    :FB4C4A009A4A82609A4AC2600123994A13700023994A1360994A1360994A1360012902D100F007F802E04068C6F71FFE08BC1847000000B500F003F808BC1847000010B564238F48037000238F4803608F4803608F4C236000F04FF8804A9007800F01D1116808E0121AC0001368C3402021081A51688140194301204007014015D084490B68001403430B6083490B68834803400B6004390B680120800303430B607F4B80490B6003037F490B606B4A9007800F01D1116808E0121AC0001368C3402021081A516881401943C90011D5774C2368002B02D0201CB8F79FFB7449201C00231A1CB8F77AFB72480168201CB8F780FB8FF7FCF910BD10B56F4C2395
    :FB4D450068012423436D4C236001239B036C4C2360534A9007800F01D1116808E0121AC0001368C3402021081A516881401943090105D561480368022003435F480360604800218160F421C16020210161E8218161E9214161102141624021C161016205239B04036010BDF0B585B0061C0C1C554D021C002100910190031C02AF19C70F1C01235B02514C23604E4C2068000C000468602960049C242C02D0252C1FD102E008240A230AE070321278022A02D10824474A01E00124464A1178012322011B031A432A600B071B0D18436860F37B002B00D139E10122D20302436A6034E1049B5B003C481C5A3C498C4211D180239A5D3B48135C1B013A48181858
    :FB4E40008388002B07D0364C1034837A012B06D1334C203403E0002C01D12C6017E1301C8DF72CFB002800D0402430480368002B07D0602C01D1E024B0E0702C0BD1D024ACE00498042801D0022804D12B680120000403432B60302C51D149E0194C0900A0190800C005080030C80800440608007D4C0900AD4D0900A1500900B805080034C8080038C808003CC80800D005080040C8080048C808004CC808009C800E0010800E00FFBFFFFFFF030000BC820E0010000C0068500800673D0200D405080070010F005C000F0074820E0034B109000C800E009806080090060800D8050800100100009005080024500800D4C408007023985D002802D0A74C70E3
    :FB4F3B00344EE0502C0BD1336FDB052B6804D50120400403432B6043E0A1480340FAE79F4B30339C420DD101992031C87A002801D1071C31E00128FBD00228F9D003282BD1F6E7964B60339C4213D1039880304278002A01D1171C02E0022A00D10127837E012B00D10227437E012B00D103273B06D0E78A4B40339C4212D1029B28335879012801D0002800D1071C02990B8D58107F2801DC43062B603B062868184328602A6822437D4B70339C4203D023097D48C15C0091302C0BD17023985D002807D1301C2830037D807A19180906090E0091009803031A432A60F37B002B04D06B680120C00303436B60F37C032B06D1708CC306180F03026868184355
    :FB5036006860402C28D169480378002B08D0301C8EF7B3FD03071A0A2B6813432B601BE00120C00410432860B07B9CF73BFC400860490860604A11689CF7CFFB5F4908605F490B68984204D2301C8EF776FD002802D00123564803702B68594803606B68436005B0F0BC08BC1847F0B582B00F1C051C0022009201908DF705FA514E002844D034684A48017800291AD1A87B9CF709FC4008474A1060474A11689CF79DFB464A1060464A1368984204D2281C8EF744FD00281BD001233D480370424B1C4015E06B6E1B0612D4012910D1281C8EF734FD00280BD1A87B9CF7E4FB4108354A11600023324A13700123DB041C432F480378002B03D001988DF76E56
    :FB513100FE0090324B1C40009803071B0A1C433460042F01D0022F05D13368012109040B43012107E02B480378002B06D0336829490B40002133602648017002B0F0BC08BC18472549C37B002B04D1FF220632805C012806D108680002000A0122920602430A600B681848036070471C480378002B18D01448C16BCB0714D581691022114381610521C26BD20708D503680822134303600368934303600139F3D18169102291438161704710010000FFFFFDFF24060800B805080038C8080034C808003CC80800CC05080070820E00FFFFF7FFFFFF0FFF45C80800FFFFFEFF34B1090030C8080030B5041CC37C032B27D1037D0C2B24D11830437B002B20D1F5
    :98522C0021490B699C4202D18B68002B13D0418900680B1858010509A07B9CF748FB854201D3281A03E0431B01200007C01A831F1648834205D3201C74F7C8F9201C73F756FE237D022B03D0032B01D0042B07D10F480379002B16D0201C71F79FFC12E00C480369002B02D0201C70F734FF06494123585C012804D0002804D10B689C4201D173F7C2F930BD6C210800FBFFFF07A42C0800642C0800A5
    :20535800A823195C002903D0011C64318B8ECB86011CC36F6431002B01D08B8E0B8770479B
    :FB53800070B5041C00253848436912219B0708D5364A1068364A106050304079122800D8011C43209DF750FF324BA360324B2361201C0830ABF7F1FD2168086063681D60ABF75AFE201C1030ABF7E7FD216808600420ABF769FE6061062801DAABF74CFE201C0830ABF7D9FD216808606368002018600420ABF758FEE060201C1030ABF7CCFD216808606368002018600420ABF74BFE6061E368C61A301CABF79BFE042817DD01350C2D14D0301C042E08DDABF791FE8100081A2169081802382061CFE7ABF788FE8100081AA168081A0230A060C6E7A16820690B1AE3614018C30F18184310236270BDC046181B0800D4CC08003CB10900FF03000001FCFF9C
    :01547B00FF31
    :FB549000F0B5444D2B68987B9CF71FFA46082B68996C301C9CF7B4F9041C2868011C94314A88002A10D094420ED9037D0B2B0BD00D2B09D071F783FA2B686433197F012000037BF755FF64E00B7D002B06D0CB88F31A1B041B0C9C4200D81C1CC36F6430002B06D00B89F31A1B041B0C9C4200D81C1C8A88B31A1A04120C944200D8141C0B881F1FBA4204D3CB7C022B01D30023CB74214E33889C4204D80020BA422ED303202CE073889C4201D8042228E0B3889C420BD9007F75F7A5FD002814D0037C112B11D115494B889C4203D829689431052215E08B889C420DD82968943106224A745E2383740CE0F3889C4203D829689431062204E029689431077D
    :9D558B002200E0021C4A740B7E012B04D1531F012B01D804234B74F0BDB421080034020800EC02080010B5A4F7B7FA0B494B699B070FD50A48036801200343084803600A249CF734FC013CFBD1044803685B085B00036010BC08BC1847181B0800F0FC0E0010B5094C2C220949201CBFF7C5F90849E160084B1C6010BDC27B4A4002D0838C05490B607047C04640B1090034CC05000556090010040800CC8A0E00FB
    :D0565000F0B581B0041C00210091C56D8726F600002D04D1301C9BF78AFF051E03D0301C9BF785FF0090264F3B68002B08D1301C08309BF77CFF3860311C0831BFF79CFC20480368002B0DD1301C08309BF76FFF1C4A1060311C0831BFF78EFC19480368002B07D03B68002B04D0002D02D00098002817D1E02300201851E565E4210B59DB0208D46358104803430B515022206807217EF7BAF90D480368002B0DD19BF752FF0AE0E5656060E4221359064883431351206807217EF7C9F9002001B0F0BD444408009C4408000000100060030800B7
    :7457280030B5E4221358012109058B431350051C7AF70EF90024002800D0EC65E86D002802D09BF73FFFEC656868002802D09BF739FF6C60074D2868002802D09BF732FF2C60054D2868002802D09BF72BFF2C6030BDC046444408009C44080000231360012805D10123DB040B6007239B03136070470000CF
    :7057C400B0B503685B011948C21880270F404906490E9068002827D00568281C041C002F06D0437B8B4201D0002300E0012306E0037B5B088B4201D0002300E00123002B0FD0A84205D1137C002B02D1D37F022B0AD0111C08319CF7A0FC201C9BF78EFE02E00068A842D9D1B0BDC0467C290800D9
    :1A58500010B5002907D0041C71F77CF8201C6EF7E7FF012000E0081C10BD04
    :4058900000B50D48B7F7EBFC00BD30B5051C00240A49A300C818C378AB4204D1A300C8180421BFF789FB0134082CF1D330BD00B50068FFF7EAFF00BDB85208005047080019
    :FB58D80030B5104D0D24281C0022111C91F704F9281C91F7F7F82035013CF4D130236343094818182C23195C022904D1406A002801D09BF75FFE0134022CEFD391F7ACF830BDC0467C29080080590800F0B582B0051C0E1C041CB0346946207B9BF7B7FF2C482D4A1178431AF6000198991940182A4B984201D3032005E00121284B984200D30221081C009943185808031D5808860176092188301C9BF74EFF6788391C78F7CAF9381A4308AB80831958014009A0601422291C1B4805F09CF902B0F0BD10B5041C184908680007000F01280BD80B683F2000020340190A144A906EFFF7B5FF134A9378A37410BC08BC184710B5041CB3F79BFF0F498B7800C5
    :3D59D3002B07D1A37C0B498878834202D0201CB4F76BFD10BC08BC18470E02000050AE0900A90300007102000000980E00A88B0E0038B0080074150800AC210800D9
    :FB5A2400F0B584B0061C181C01AB07C300252C1C05F052F900902F1C0199002918D0F37F022B15D1337C351C002B01D00C3500E008352A68101E00D01068002A07D01168914201D12C6001E00B6813600C6014E0357412E00A6801928A4201D1F76001E013680B6001990F60002C04D0236813602260141C01E0141C1260F1680029E9D115E01A680193111C9A4201D1B76004E0136801B40298036001BC0F60002C04D0236813602260141C01E0141C1260B368002BE6D1002D0BD02A68002A05D0136803602B681860286007E02860006004E0F37F022B01D10323F377009805F0F4F812E02068051CA04201D1002401E0036823602F600399002904D00215
    :AD5B1F009900229DF715FD01E09BF70AFD002CEAD104B0F0BD00B591F719FF08BC1847000070B5C369DB021AD5061C041C9034E278002A16D1002914D180F737FE051CB66C002E0BD0A0880C214843124941431248BFF744FB011C301CB7F75FFCE570012000E0002070BC08BC184700B50B48072105F0B4F80A48B7F764FC0A4A1368002B00D00123002B01D075F772F88B230648036000BD71020000D43000002C2D080020C50800EC2F0800EC8A0E00EC
    :6C5BD40000B50121C90505480022B7F74FFE08BC184700000248034948607047FC440800D55B09009C45080000F002F891F7C3FF10B5041C8168002917D00868002814D0037B5B08132B10D1E37F022B0DD10A688A4202D10023A36001E013680B60002313609BF783FC0323E37710BDE7
    :885CC40070B5041C0E1CEC300068002807D5E069C00104D5211C3C31201C95F793FCE06940021AD5656C07232B70FF236B70AE70211C2831E81C0622BEF742FE00236364E069012189058843E061EC210859400040080851281C94F7DFFE70BDC169012292051143C161EC2319585A07114319507047C169032252051143C161EC2319585A0711431950704764
    :285D600010B50C1C0368002B0AD190F749FF002806D00121207F8140024803688B43036010BDC0467429080010
    :185D980010B5041C04F09EFFE369012189048B43E36104F09FFF10BD11
    :FB5DB40000B5FFF7F1F908BC18470000F0B5464A464C21685368994203D000231370537051604348434DAB78022B0DD1CB7B012B0AD180235B5C5B013F4D5B19DB699B059B0F01D05B252AE065683C4E33682B4021D03B4F3B683B4F3E6833432B4003D1A5235B5C002B09D04B6E1B0606D51378082B03D201331370857810E0304F3B68304F3E6833432B4005D05378013353705378042B02D300231370537045780A1CA4325378002B03D0C35CAB4200D91D1C5379002B02D183799D4201D1042209E083789D4201D1132204E0012203799D4200D103220A741C4A13681B0700D5C57890235858013015D0887B9BF71CFD40082368903319689BF7B8FC00F8
    :595EAF002805DB236890330021C943196004E010490878854200D2051C291C206871F70FFF0C4803782B200355F0BDC0466CB10900B42108002C020800882B08007C290800B4010800B8C40800742908008C070800F4010800FC0108009B
    :E45F100000231C490B701C490B70FF2341331B490B601B481B4908601B481C4908601C481C4908601C4B1D490B601D4B1D490B601D4B1E490B601E4B1E494B601E4B1F490B601F4B1F490B601F4B20490B6000231F490B700323DB021E490B800123DB021D490B805A231D490B6000231C490B707047C04684AE090085AE09008CAE09008369090064C808008F67090068C80800AF60090054C808002B67090070C80800DD74090078C808007CAD0900B0060800D584090000020800FF6A090060C80800A8AD0900AC060800777109007CC8080077B1090064AE090066AE090074AF090022B1090066
    :FB60480030B5041C7CF7FDFC011C021CE0690004C00F1073032353730C32664B186800090225800704D5F42003599B0700D5957000234B60201C91F798F930BD30B5041C0D1C7CF7DEFC5C494B681A7BD207D20F0273052343738573584A4260011C201C91F783F930BD10B5041C0321FFF7E6FF201C00F028FD10BC08BC184770B5041C7CF7BFFC011CE2691204D20F027304234373F8231D59837B0126B34335402B438373F8263559AD07ED0F0226B3436D002B4383730C30002A0CD1414A537815785B199578EB18D578EB181579EB185279D31800E00023C3703A484860201C91F744F970BDF0B5041C374D00232B70C0690004314A51683DD534484211
    :FB614300780378D3188278D218C3789B180279D218407983181806000ECB7B834220D020686EF73EFB071C04F0B7FD061C381C6FF7C6FF012120688140264803688B430360301C04F0B1FD20686EF7FAFA2878224A1378984218D2013028708FF77DF913E08B7BD807C00F9B07DB0F590001436970201CFFF785FF07E0897B8B07DA0FC907C90F201C8EF740FCF0BD00B5406800280ED0F82319580A04520ED30708D50F4B13407F22520291435A021143F82211508EF776FB00BDC046641B0800F4440800B36A0900E85008007B6B090074B1090064000800B4C4080051AE0900FEFF000010B5041CB34A1068C00702D4112323702FE00123B04A137008792C
    :FB623E000002C9780843191C78F7C6FC002810D0F82319580A04520ED30716D4012313437F22520291435A021143F8221150490701D51223DEE7A04B19684906490FF42212589207920F914201D00C23D2E7283401212170FFF7D9FE10BD70B5051C0C1C0123964A1370031C283301201870924A10684006400F02281FD101F07DFC00281BD020790002E1780843012178F784FC061E12D0F830006840070ED5002388480370FF2388480360611D87480622BEF74AFB8FF7D4F8002802D10C232B700AE0F82290590122920210430821884303221043F822905170BD30B50123784A13708B7B002B01D1122337E00C1C734DCB782868002B05D00121084328BA
    :FB6339006000F0EFF907E00122904328607148036871490B40036070482379037063794370A3798370607A0002217A084340106B4A1060C0006880E07A0002A17A0843684A1080607B0002217B0843664A1080A37B664A1380E37B654A1370237C6548037030BD0123574A1370554A1168194081735A490B78C3734B7803748B7843745D4A1168090A8174554A11684900C174090A0175534A11884175090A8175524A1188C175090A017650490B88437650490B7883764F490B78C3760E23C370704730B5051C0C1C01233E4A1370031C28330120187001F0D3FB002818D0E01C78F77DFB002801D00B2312E0FF2337480360E11C37480622BEF7A9FA3149FB
    :FB64340008684006400F022819D18FF72DF8002802D10C232B7012E0E01C78F761FBF82319588822114303239943F8231950A17A0902627A1143324A51405E30018030BD30B5051C041C01231F4A137008790002C9780843191C78F7A4FB002802D112232B7017E05C21095AA173090AE1730834F4300068211C08318A07920F01D1086006E00870000A4870000A8870000AC8700623EB7030BD00B501230B4A1370C878002806D0174A1370022100208EF75EFA06E014490870002313490B708FF70BF900BDC046641B080022B10900BDC1080088060800B7C10800301B0800CDFEFFFFA8060800900608007EAE09007CAE090068AE090084AE090085AE0936
    :FB652F0000940608000633000078B10900BFC10800704730B5051C041C0123234A137008790002C9780843191C78F73DFB002802D112232B700BE05C21095AA173090AE173F83000684007C00F20740323EB7030BD30B5051C0C1C08790002C9780843012178F721FB002806D0F8300068400702D50C232B7003E0211C281C95F7DFFB30BD30B5041C0D1CC81C78F7ACFA002806D0F8210A58520702D50C23237003E0291C201C95F724FC30BD22B1090030B5041C0D1CFF20062194F7EEFA002807D016238370C470210A0171457194F76FFA30BD30B5041C0D1CFF20062194F7DCFA002807D018238370C470210A0171457194F75DFA30BDF0B582B0041CFC
    :FB662A000F1C00230193081C78F747FD061CC069400409D56B4601AA311C4C31301C283097F7C4FD002831D0032094F7C3FA051E2CD0381C78F72AFEE8725C239F5B311C2831681D0622BEF788F92006000EA870EF703F0A2F7198218959C900C90F2973011C301C00F089FA012803D1281C9AF752FF0BE0281C94F71CFAAB78002B05D1194A506F012109048843506702B0F0BD10B5041CFF20052194F780FA002806D039238370C470210A017194F702FA10BD10B583B00C1C417AE0690004C00F88420DD0094B684603800723837002A84170074A6946201C82F71CFE002000E0012003B010BDC046D42008000B0800009B6A0100B6480368FF2103310B1C
    :FB672500430360704710B5B34CB4490A68D00705D55006400F022801D1FFF7EDFFAF494888C310AE490B600023AE490B706378002B08D101236370AB49AC4800231A1CB6F75EFE02E0A948B6F779FE0023A848037010BC08BC1847704700B513225C300188002094F759FB00BDF0B583B00E1CA04D041C00F0E6F9F8210859C0075DD5002E55D0201C6EF79BF8E069F822904340221043E061F821085904218843F8210851201C91F755F9206800216EF7C3F82068002101F010FA8A480378002B0AD0E069000430D48C4A90798C4A1178014001D1002826D1F821085900050CD5E069000418D4864B69460B8007238B70854A201C82F791FD0EE0261C5C3616
    :FB682000318800231A1C181C94F765FC30880021FFF7E6FE201C00F008FA00232B70724803707748037038E001232B70201C00F0FCF932E00859400502D4201CFFF78FFF201C78F77CFDE269012000068243E261E06C40004008F8210B596C4F3B40EC273D5901263607B5433D5108210B43F8273B5198273B59B3433B5103239B069843E0641204D20F301C002A01D1331500E080235F490B6079F701FA012003B0F0BC08BC184710B5041CF830006859490840F8210851400626D5E06900040CD48DF742FF206801218140CA4353490B6813400B606DF747FF19E050490B7850490878834210D2206801218140CA434A490B6813400B606DF736FF48480317
    :FB691B0078013303708EF7BCFD2CE0002344480370E069000426D5211CF8310A6810060ED5101C0C218843F82210513F4A1168042094F7B2F9FF21201C00F062F912E0101C3A4A1040086008215C23185BFFF74AFEF822105904221043F82210510821201C7FF738FD10BD70B5041C244D03685B012F48C618E069000403D4201C00218EF79DF920687DF754F8201C00F0D1F8E0690006C00E0A2817D1012120688140254803688B430360201C75F766F8E069F821884340210843E061206884F789FB201CA030042104F08CF9E069F821884318210843E061F821085907212DE0301B080076B10900641B08009006080084AE0900F345020080AF090022B1C4
    :FB6A1600090076B1090078AF090085AE09000B0800009B6A0100FFF5FFFFD4500800FFF7FFFFB4C4080074B1090051AE090088060800FFFBFFFF7C290800E4C70800084340218843F8210851206801218140CA439F490B6813400B606DF789FE211C301C012290F73AF8E069000402D42B78012B05D05C23185B0021FFF7A5FD01E000232B70F821085992490840F8210851201C82F764FD012070BC08BC184700B5011C1D2079F774F908BC1847000030B5051C89480378002B0AD0884C884A11688848BEF791FB011C201CB6F7ACFCA56030BD002808D0F8221158490704D5C169914340221143C161704700B58EF79BFD012008BC18470000704770B5063A
    :FB6B11001C051CFC352C68002C0DD114209AF7F9FC2860002810D07449321C0023B6F779FC2C68002C08D0714A11686E48BEF75DFB011C201CB6F778FC70BD10B5041CFC342068002806D0B6F783FC20689AF7EFFC0023236010BD00B560480378002B02D05F48B6F775FC00BD10B5041CC16909040CD50068002101F038F85D4908788307DA0FC107C90F201C8DF757FF10BC08BC184710B5041C002935D1F830006880218843F8221051011C0007800F15D0081C0C218843504A1040F8221051400503D4201C002194F778FAE069000405D4201C28308EF7C9F88DF7BDFDF82210590104490E8B070FD5444A0A407F214902884351020843F82318511321A2
    :FB6C0C005C342088FFF7F6FC012000E0002010BD10B5041C9A231954C0690006C00E0A2803D10B21201C79F744FD201C7FF747FE201C7FF733FD206878F78FF910BD10B582B0041CF83000682E490840F8210851E06900041CD48DF780FD98210859C00020D5E06C28498843E064284B69460B8003238B705C23185BC870000A01A9087001234B70224A6946201C82F751FB09E098210859C00003D5E06C1B498843E0648DF789FEA36B1B070AD5E069000407D418494B681B0503D5201C01218EF706F8E069012189058843C9018843E0619C340020207002B010BDB4C40800FFFDFFFF77B1090080AF090054AE0900D4300000D345020058AE090075B109F3
    :FB6D070000FFF7FFFFFDFF0000FFFBFFFF0000000C13040000AB750100181B080070B5041E3CD0F83000680104490E4B0736D5000734D43448437E002B18D08069C0032DD58B070ED530480A1C0240F82319592F48814350020143195108215C23185BFFF74BFC0821201C7FF73FFB17E028480A1C0240F826315925488143500201433151251C5C3529880022101C94F7B0F928880021FFF731FC201CFFF753FF70BD10B582B0041C00230193C069C00819490840042814D16B4601AA211C4C31201C283097F705FA002806D0019B002B03D0201C7BF764FE03E0211C002078F7DFFF02B010BD10B50124201C78F768F9C1690906C90E022902D313217FF778
    :FB6E0200F6FA01340B2CF1D910BD2C2D0800FDFF000000FE0000FBFF00001F10000070B5041C061C037D022B36D1807B9AF754FD251C1835A74A13685900884201D2091AA548401AA54A1368618C49005918884206D90123DB06984202D23723A3741BE0201C72F7EBFB002816D170363078042812D0A07B9AF730FD2B685900884201D2091A9448401A431F9548834204D201236B73201C6FF73CFF70BC08BC184730B5904A9049006843075B0D1078C407240D2343181C8D4D2B681B0418430860686800042B681B0C18434860507888600020C860012030BDB0B5041C837B844A13600123834A1360834D844A106878F761F92860686880210843686080F1
    :FB6EFD00480168C94361674368A3672964A06F6904084368647C4AD07828627023185D022829D0042844D1784A1368180A4300D91C774A1160031F764A1360764A1160744A1368754A13600023754A1360606FA861A06FE86173484178CB0101781943807883030B4351070B436F4A13601021081C6EF716FE1CE04923684A13606B4A136880200343664A1360282112206EF708FE674A1368674803401360634A13685B065B0E802018430302614A106818431060614C0027E0577EF752FF03061B0E5E4D2868000A000218432860E0577EF747FF0006010C2868564A104008432860B0BD10B5041C00290AD1FFF777FF7034207804281ED152484379012B3F
    :FB6FF8001AD115E002290DD1807B9AF76AFC80084000324908606D23185D77F738F80023A38109E0052907D100F0B1FB002803D18DF7D4FE00F04CFE10BC08BC184700B53049086878F742F8C2693F4B1968072399431A4011433C4A11602A490B680360C16901221205114352119143C161F822115804221143F822115000BD3348C3890360704710B5324C208A2189884203D36068884200D9081C208020882D4941431B4A1068000A0430BEF7ACF8E1690818294A10609FF7FCF9011C0320BEF7BEF8638A21898B4206D9E368984203D1411C0320BEF7B3F8E06010BDC04680AE0900000000108CAE0900FBFFFF0784AE0900B8890E0038800E0000830EF7
    :FB70F3000098830E0000820E008C0608000C47080064000800940608009C060800A0060800108B0E00148B0E00A4860E00A8060800009A0E00E4500800648B0E00FF00FFFF9203080004830E00A42C0800ACAF090070AE09006CAE0900710200009C830E0002234377C368012149020B4380210B43C3600023C37503680B430360012383777047F0B5B24CB34E301C77F7C9FCB24D002802D0C16909040AD4012077F752FD2860FF2801D1002050E077F791FF01E003682B60C169F822914318221143C161F822115804221143F8221150311C28300622BDF7DDFB0123A0480360A0480370FFF74EFF0123E3749E4F3968201C6FF776FB2423237402236374A0
    :FB71EE003523A374201C60300023037001234370002383702362286877F7D5FFA0730123E373211C6431301C8DF728FE286877F7CAFF211C64316FF7CAF9201C4030FFF792FF3968201C6FF75CFB002000F0CFFC0120F0BC08BC184710B5037D092B0ED1834C7E4A106877F7AEFF20606068802188436060794AD0782062FFF708FF10BC08BC184700B5002902D100F045FB16E0022907D1012376490B604030407F76F7FBFE0CE005290AD1002371490B6000F073FA002803D18DF796FD00F00EFD08BC1847000030B5041C051C61352878012803D102232B7051230FE002281ED165490B680120C004186064490B68002B09D0FFF7CDFE01232B703523A339
    :FB72E90074201C6FF711FD0BE0201C6FF76BFB042355490B60980678F7DCFC012000F069FC30BC08BC184710B585B0041C1422E92109036846BDF731FB00984207520F21680723994311432160010A6170010CA170039B1B0609D4030EE37001982071010A6171000CA071062200E00222611C3B4803F097FC002801D0002000E0012005B010BD30B5041C6034A3780133A370051C6EF7C2FEA378281C032B13D90023A37037490B68002B08D16FF71CFB04232D490B60980678F78DFC08E0012363706FF7B3FC03E0022363706FF709FC30BD30B5051C041C60346378022B24D1294A1168043A1068CB0719D4430317D54A0315D50722D2040A4011D14306D5
    :FB73E400180F03280FD18B05D80E11280BD11F48FFF78CFF002806D00023A3700323637004E0CB0702D4281CFFF7AEFF30BC08BC184710B5041C011C6131087803283ED10949086877F74CFE002821D00F4B1A68C169072399431A401143C16118E0C046C0AF0900B7C1080088060800D4500800BEC10800AC06080000820E00F0FC0E00AC2C080070AE09002C8B0E00ACAF09000223B04A1360D80678F71EFC211C6431AD487CF715F9AD4A106877F791FE211C64316FF791F8201C6FF797FA0CE0A84A1388002B08D1012806D102230B705123A374201C6FF72BFC10BC08BC1847A049037D022B07D14868431E00D34B600888013800D30880704730B59A92
    :FB74DF004C9A4D2B68FF2B49D1002077F7A5FB2860FF2843D00123904A1360954A13700323E374944A1168201C6FF7E3F925232374022363743323A374201C70300423037000234380236323848B4A13685B006384242000230355286877F73CFEA0730023E373FFF778FD286877F7BCFD6C2103680B55C169E06D0722904311400843E065201C5030FFF7F6FD211C74317B488DF77CFC784A1168201C6FF7BAF9012030BC08BC1847F0B5021C73490D6874490B8859088D4200D8291C724F3B68C918041C7034668873438B4213D96B005384252101230B540423237033239374002363806FF7A7FB20235C480360D80578F776FB01E06FF79EFBF0BD30B539
    :FB75DA00051C041C5B49086877F76FFD002808D0C1695E4A106807229043114008435B4A10605B490868430E5B490B605848FFF74AFC7023022058554823A37453490B685B006384183401236373281C6FF774FB30BD70B5444D2B68FF2B1FD04F4E4049301C062203F025FB002817D1286877F73CFD041E0DD0C069C0020AD5301C77F75CFA002805D0844203D0FF21201CFFF7D8FAFF232B6041486FF76FF970BD10B5041C10232E4A1360180678F71AFB334A13685B006384252001230355211C703104230B7000234B80201C6FF793F910BD70B5051C041C324A1368324803401360254A1378002B06D140231C490B60980578F7F7FA2FE04B0711D5702C
    :FB76D50023585D042829D1332600F06AFA002800D13126A674183401236373281C6FF70EFB1BE08B0704D570342078022815D10DE0CB0712D57034207802280ED306D0042808D30AD1281CFFF75CFF06E0281CFFF72EFF02E0281CFFF7A4FF70BC08BC1847C046D4500800B7C10800880608006CAE09002CB009008C060800BEC10800B0060800900608006400080074AE090098060800ACAF090098830E00E4500800E8500800C0AF090018800E00FFF0FFFF70479F498868002805D0007C2438012801D8012000E00020704700B51F21994803F0AAFA1B21984803F0A6FAFF23974A1360974A13600023964A13708DF708FB00F080FA00BD10B583B0041CD7
    :FB77D0000C22E92109036846BDF7D4F8694600200A78013122548D4B1A5401300628F7D34B78A37103B010BD00B5002388490B7081486FF723F983490868FF2804D077F7AAFBFF237F490B600123824803607E480378012B04D18DF708FF00237A490B7000BD10B5041C70342378022B27D17A4B1968043B1A68CB0717D4530315D54B0313D50723DB040B400FD153061A0F032A0BD18B05DA0E082A01D00C2A05D16F48FFF7ABFF0323237009E0CB07638804D4013363806FF745FA01E00133638010BC08BC1847664A13681802664A1060664A13681802043A11680B0E1843634A1060704710B562480368180A62490143624C216003021918614A8B1861A1
    :FB78CB004C2360614C236861490B4023602368032189040B43236000235D4C236003040B2109045918FD221202114303242143594C21600F30584C206010BDF0B5041C574D574F404A106877F74FFC38607868802188437860534AD0783862A37B524A13602B68524AD05C0843514A1060261C606E3864A06E60361521890608437864707801281BD12C48416A002902D1836A022B09D9032904D1836AFF203630834202D2201C6FF789FA301DFFF79DFF0023414A1360082113206EF70CF999E0022800D096E03D4B2F4A13603C4B2C4A13600123304A1360201C002170F7F7F8384A106838490B1C4343591821624300581CA081E36C7820834318200343F4
    :FB79C6001F2080028343032080020343E364236D2F4883436322134323654034A3892C4A1360238A5360EB23DB00234A1360FFF74EFF282101206EF7CFF8264A4DE06C2108002CB00900C0AF0900880608008C060800BFC10800E8500800BEC10800D45008002C8B0E0078AF090038800E00B8890E003C800E00BC890E009406080000D07DC0D4890E00043E00008C800E00B88A0E00FFFFC3FF94830E0098830E00C8890E0078AE090000820E00B7C1080000830E00A8060800A4860E00F8800E00447E000040C07DC098060800E2040000F81F0000CC8A0E00648B0E0013688C48034013602B688B4AD05C802101430902894A13680B431360884C002020CB
    :FB7AC100567EF7CBF903061B0E864E3068000A000218433060002020567EF7BFF90006010C30687B4A104008433060F0BD30B582B0041C7C490B7E002B5AD17B490B68702003401D09A37BAB4252D078490B68FE20034000D00123002B47D10020B2F72BFE002842D173490B689B063ED48BF761FD00283AD16946281C99F7C6FF68466FF74DFE684699F7F3FF00209AF753F86948002343628362009B9B089B00416B59180B011B0943636448016819E0251F237B212B15D1281C71F73EFD00984308606918184308990149096161E08BBDF751FBA083281C71F78DFB281C71F7FAF807E00C1C09688442E1D102E0A07B9AF722F802B030BD52480368002BCB
    :FB7BBC0000D00123002B09D0007D002806D0072801D0002000E00120002800D0012070473121002800D0332147488174704700B59AF758F8430818335B089B01580900BD30B50D1C6CF7DCFD041E14D0002D0BD05C23A3743D4A1370807BFFF7E8FF011C201C6CF7BDFE06E090340021C9432160362336490B7030BD00B532486EF708FF00BD334A1368180A32490143324A11600023324A1360704710B5041C304B2E490B603048FFF71EF90723DB012B490B60E36D7F208343182003431F2080028343032080020343E365236E274883438820034323665034A38924490B60238A4B6010BD00B5C37B4B400BD07022115C022904D0042907D1FFF7C4FF04E6
    :FB7CB700E0FFF7CCFF01E08DF769FA08BC1847000018480368184803607047C046FF00FFFFA8060800648B0E009203080004830E002C2D080024860E00B4C4080008800E006C210800A8020800C0AF09002CB00900F40108009406080000D07DC0D4890E00F8800E0040C07DC0ACAF0900F81F0000CC8A0E00A8AF090094830E00037B0C30FF2B02D14378202B05D0F8225058400A0422104000D001207047F0B582B00C1C01D1042097E0051C4C480268002A08D0281CC3F7A1FD002803D0FF300006000E89E0F82148590007800F012821D1237B5B081ED0291C201CFFF7D0FF002818D13F490B78201C002B06D099F7CDFB5C352888FEF786FC6DE0F8220C
    :FB7DB200515902229143F822515199F7C0FB0821281C7EF714FBC7E72F687B0133481E18F37F012B55D0237B5B080ED1637B052B02D12E4900910DE02E490091042B09D0DB002C48C218009204E0201C0C307AF7F2FB009000990B7963770023236002F064FF01900099486840010BD4B068002805D003682360B3681C60B46011E0B46024600EE0F068002805D003682360F3681C60F46001E0F4602460211C281C8FF724FF0123BB401449086818430860019802F043FFE8690006C00E0A2803D1381C73F73DFE09E0082807D1381C6CF7F0FC03E0201C99F75BFB66E7002002B0F0BDC046BCC8080022B109007C2908006CAD090074AD09006CCF050074BA
    :FB7EAD0029080070B5041C0D1CF82253580122D2021343F8225350C3699343E361061C5C36308876F7F1FF20233380291C201C76F776FF291C201C8FF707FE286877F73CF870BD70B5FFF79FFEB04E30687BF7A7FDAF4876F708FE041C306877F7DCF8051C002C0AD0F8210B5904210B4340208343F8210B51201C8CF72EFE002D07D0002C05D0A54203D0FF21281CFEF770FEFF23336070BD30B59D4876F7E5FD9B4D041E09D0C3691B0406D4286877F7B4F8211CFFF7A7FF05E0F820035995480340F8200351286877F7A7F8041C2B682360FF232B6002F0ACFE012321688B408E4A11681943116002F0ABFE20686CF771FB20686CF70DFC9423195B6CF71D
    :607FA8000DFD20680121FFF725FEE369F820834310200343E361206801216CF7CAFC201C8FF706FD201CFEF778FDFFF72FFE30BDF0B581B00026FFF725FB7949086877F76DF8051C774F381C76F790FD041E3FD0C3691B06DB0E083B062B02D2FCF7D8F8BC
    :FB80080036E0F82003595B0732D50126235803200343F8200351E3691B0405D5211C281CFFF742FF2C1C36E05C23585B195B884201D076F73CFF2F68E8690090FF221132211C281CBCF79AFC2F60EB690720834300984007400F0343EB61381C8FF7E2F8206876F77CFF2C1C281C8FF7B1FC12E05349086877F722F8391C041C28300622BCF77CFCF820035903208343F820035120688FF7C7F8201CFEF70FFD201CFEF70DF802F017FE012321688B40434A11681943116002F016FE20686CF7DCFA20686CF778FB9423195B6CF778FC20680121FFF790FD002E05D1E369F820834310200343E361206801216CF733FCFF23344A1360354A1378012B03D1021E
    :FB8103002100208CF74BFC01B0F0BD10B52E4876F7FFFC041E17D0C369F8218B4320210B43C36100217BF7F2F9201C00217BF749FA274A1368012B06D1E3691B0403D40021081C8CF72BFC10BD00B522490868042802D1FFF7CBFE2BE0022802D1FFF7EFFE26E080280BD1144876F7D2FC00281FD0C369F8218B4328210B43C36118E0202816D0102802D1FFF725FF11E0FF230133984202D1FFF7B9FF0AE0402802D18DF7B2FA05E001235B02984201D18DF743FA012000BD88060800B7C10800FFF7FFFFB4C408008C060800E850080078B1090088C80800D450080010B5C1698B0203D500217BF7D1F91FE0041C0806C00E08281AD2F8210B591B0703D59E
    :FB81FE00201CFEF7D1FD12E0E3691B0409D4201C7AF7E2FDE369F820834328200343E36105E0042803D1211C002077F7BCFD10BD30B5051C3A4CF82043591B0709D4A369DB0302D4637E002B03D1617E281C92F73DFFA369DB03D90F281C012281F75AF9281CFEF760FD30BDF0B502232D4A1360C7690568F12301221A541A1C0E1C041CBCF781FB1E22311CF231201CF230BCF77AFB201C0023836448302560E36907218B437907490F1943E161F369DB135A1C0B1C0121C9038B43D107090C0B43E361F82109590B0507D4174A1188818101829423154A10881853E3693F2000028343092000020343E361EC2213590720000683430120000603431351984D
    :3382F900221059400F0021002800D10121281C81F7F8FFF0BDF8300068430A04201840800870472C2D080040440800560308005803080093
    :FB83800070B582B0051C0024200123181B0145481E18F821885940071AD4306876F70AFF6968884214D1301C77F730F800280FD03D4B69460B8002238B705C23985BC870000A01A90870394A6946301C80F7B6FF01340B2CD8D30123354A1376686872F75EFD686873F772FA6868B2F79FF8696830486EF754FD69682F486EF750FD69682E486EF74CFD69682D486EF748FD6C68002C45D10C2363432A481D18A87A022831D304280ED32ED1281C82F730FE061C288000236B72E87976F744FEA03006810C3028E0281C82F722FE288000236B72EB7999005B189B011B495E18311CB831487100230B71C436B379002B15D073792B80B3796B8033796B7228DC
    :51847B001C82F707FE7071301D07E0002807D0281C82F7FFFD2880281C09300023037001340E2CB9D302B070BD88380800530C000043720100CC2F0800B42E0800682E08001C2E0800D037080040490800140B080033
    :2C84D40010B5041C6CF7C0FC237D072B01D0082B06D190340021C9432160362302490B7010BC08BC1847C046F401080048
    :7485240070B5061C0C1C151CF82043585B0728D5CB691B0425D4144803689B0721D513480378002B09D01104090C301C8EF7D8FC281CFEF7B0F8002014E0081C28308CF7ECFB2904090C301C8EF7CAFC0821201C7DF73CFF8CF723FA0123054A1370042000E0FF2070BDC046641B080022B10900BFC108003E
    :6885B000044A137883730123C3702830022101707047C04678B1090010B5041CF8210B581804400E83071BD50E4B011C1940F82213597F204002834348020343135122215C23185BFEF704F8E369F820834340200343E361F822135904229343F822135110BDC046FDFF000024
    :FB867E00F0B5051C13235B049F4F3B60082105206DF786FA9D4F3B689D4803403B603B68C00703433B608B4F3B6802273B43894F3B60974C984820620123974F3B60974FB868606278686065A8692430C17880220A43934F3A60934E8378B07B002B0ED1924D0021AFF7AFFFB169081C243042781302007B18430022B0F7BCF909E00121AFF7A1FF8A4D8A4A13680120400603431360884805608848838A8848036000232360F0BD0523838183692633187801280FD10021CB4382490B6000234B607D490B68802003430B607A490B68800403430B60704700B5C369002B23D013235B04694A13605F4A13685D4A13605B4A1368594A1360554A1368644A131C
    :C3877900607248724A11684160724A11684161714A11688160714A13680360704A1368704A136061486EF78FF908BC1847000030B5052383816C4A116806220A40062A02D181692A3108E08B0702D481692C3103E04B0704D481692E310B8801330B8013235B0449490B605049CB69002B12D1524C2568C37B012B0CD12368802083432360022099F7C7FA80231D43A06899040843A060256030BC08BC184713235B043A4803604148C369002B02D1434803680360704700B5002901D1FFF724FF08BC18470000FE
    :FB89AC00F0B581B0051C0C1C08790002C978084352D00020ADF718FAFF2801D109234CE0071CADF7D2F90023038121790902E27811438186C186051C82F71BFF2E1CB03673885808E8806379252B0ED2394800900521BCF7E3FA6179C8084907490F01228A40009B195C11431954B07BFF233D334343314819180091281CAFF7CEFB2F4885662521281CFCF777FF307B0021AFF703FE0523AB80381CAFF74EFC00999E3101200870381C002100F035F8A279E179381C00F005F801E012232B7001B0F0BDF0B50C1C171CADF780F9061C201DB4F75FFA051E1ED0B18D0B051B0D012040031843210408432B1CA907890F01D1186006E01870000A5870000A981C
    :FB8AA70070000AD8703A06120E2104090C281D90F7DBFF281CB2F7CAFDF0BD30B50C1CFF233D3343430548C51802F004F9A2352C8002F008F930BDC046F44E0800349D080038B0080000B5FCF741FB00BD10B5041CC37B012B05D1A9480378002B01D101230370201CB2F7D3F8201CFFF7EBFF10BC08BC184700B52C22A149A248BBF72EFFA048A14B1860A1494160A1498161A149C16100BD30B5041CBE342178FF233D334B439D495918FF2208328B18FF2119709A493C30062202F095F800280CD1984D23782B6002236B717F21C943A81D072202F090F800232B7130BD30B5041CBE342078FF233D3343438B495D18203082F7A9FA281C6DF756FF85F7CA
    :FB8BA20078FA8848036821788B4203D1FF2303600023437130BD00B5017D032901D0042902D1B2F7DBF809E0037D062B02D100F008F803E0092B01D1B2F701F908BC1847000070B582B0051C041C8034E37A002B08D0036DBE3319780820AEF740FB0023A376E3726378032B28D0A87B98F764FE4008218C431A1E04360C618C00291DD08E421BD36078012806D1688CBCF70DFB062803D13E2002E0042803D008202B6DAF33187003236370281C6DF7BFFE2B6DBE3319780520AEF712FB31E06068002808D00090002301936946A87B98F786FF002363606378032B11D0FF201930285A864209D8A87B85F7A6F9002804D1281CB2F7E0FB002802D04C49C829
    :FB8C9D00780CE06378002B07D14A4BA87B185C032802D24649887801E045494878A874281CB2F7BCFA02B070BD70B5041C0E1C354D2878002802D0013828702878012804D83D4A13683D490B401360002816D0201C9830C378002B02D18188CA060ED58379002B11D0311C201CB0F70AF82B78012B0AD9311C201CAFF7D6FF05E0201CAFF79BFC201CB2F744FA70BDF0B581B0041C051C80350027AF81EF76FF230533C618F37D0133F375C37B012B13D17378002B19D1224803689B0715D5A07B98F7BEFD80084100A06981420DD098F752FD4000686008E00123737015480378A3740123DB07B361B77015480068009083075CD514490B685B0602D4009821
    :FB8D9800430731D5A07B98F79CFD1FE0FDCC080078E40500DCB0090078150800B98B0900298D0900F58A0900349D080009C10800B4AE090074150800E3C008001C800E00FFBFFFFFBC8B0E0040150800400828846B78012B08D102236B70236D588900016884201CB2F7C2F8F37D012B07D17DF721F8011C201CAEF7B8FA01F0F1F92C484379022B14D1236DBE330068197888420ED17DF70FF8264B991D1A7988541879411C0720BCF71AFA214B1871214B1F707DF700F8B074009906220A40062A1ED1236DBE33187885F7ECF8201C00F0A6F8F078012804D8184980000B5C01330B54E37B0099201C002B02D1FFF720FF01E000F054F8201CAFF7E2FBAF3F
    :998E93007214E0B7758B070AD5A87A0D490B78984205D2E37B002B02D00130A87206E02B7E002B00D02F76201CB2F777F901B0F0BC08BC1847B4AE090086030800ECB008001CCD0800F0B5061E20D00768002F1DD0407CACF746FF051C707C182141430C484418786890F7E5FB98F766FB381C98F71DFB00233360217A01312172217A05480278A88D90F71AFB00232372F0BDC046F4B008007C150800CF
    :FB8F340070B5051C0E1C041C8034A37F002B1ED0AFF7EBFE184A537C012B09D9E37E002B02D1A08BC10603D5311C281CAFF7B0FECD23585D00280AD0FF230533E818837D002B04D04378002B01D1012383700B490B681B070FD56378022B0CD1FF201630285C002807D0A0898004800E0023002800D10123237670BDECCC0800E02C0800F0B5041C051C3A4806689835A8880712F306D90FE9707307D90F0307DA0F002F04D0344803685B0300D5111CFF231533E0184378002B03D1002901D0012343708A4216D0AB79002B15D1002F08D0D0231859C168C91BC16002D48368DB1983600122AA71201CB2F705FA201CAFF7F8F901E0002383713307DA0FA8E7
    :FB902F00884307D90F8A4234D11C4F397C0A0702D5B304990E2DD1184A13689B0303D5B3079B0F032B25D004214840A880251C5035AE87B304980E1CD020221149BB68181D01F02CFECC342078800712D50D490B68012080030340580B0BD02B68BE331878ACF771FEAF303D210170012028870023AB87F0BDA88B0E00E02C0800ECCC080080980E00BC8B0E0010B51F4C2068002805D08008800098F73BFA0023236010BDF0B5051CC668B469002C16D0AFF7AFFF002812D1154F3A1C211C1331E01CAFF787FE381C00F00AF80023AB60EB60A008800098F71DFA0023B361F0BD00B582B0262369460B800190081C76F7A1FD02B000BD00B54368002B04D0EA
    :1A912A0010220448002191F780FF00BDC046E49C080023B109001720000026
    :9C916000F0B583B00291FF233D3343432248C618356D01F0B3FD371C90372C1CB0348E239A5B02998A1A1204120C638853433A6FD21851014909019101F0A8FDF37B012B0ED16B8B5B000093288B4000019A101841014909181CBCF73DF8A0800098E080281C82F72CFBF37B002B0ED1E68870086883A188019898F71BFBE288011C101CBCF728F8301A400828830298431E3B800123BB7203B0F0BD349D0800B4
    :F4920400F0B581B00090ACF7B4FD041C0027364E336BDB071FD5B4421DD0251C2C354223A97D9A5D914216D1291C1031301C3C30062201F029FD00280DD101F04DFD051CBE36307800F036F8281C01F04DFD3078AFF76AF803E0C03601370F2FD8DB0098B2F7BBF9251C0123EB852C35201C80F7A3FC00980021ADF7A3FE1C4A13681021DB0603D5A971201CB3F72FF8201CB1F7EDF9BE342178FF223D325143144BC9187F23FF2023300B54A623FF2017300B5401B0F0BD10B5FF233D3343430C48C418201C80304178012907D1418C608CBBF7BBFF062803D13E2002E0042903D00820236DAF33187010BD2890080040150800349D08006D
    :BC930000F0B5061C046D2B4803689E4201D1AFF703FF301CAFF73FFD351C8035288901380ED32881288904236B70002808D1301C6DF74DFBBE3421780520ADF7A1FF38E0687800281FD1B07B98F7C7FA4008B034A16898F75DFA01239B0698420CD267883B1859014909381CBBF748FF7843A168081840014009A060A06800236B700223F374B06112E0022810D1AB7E002B0DD0E889298A431A1804000C074B984205D2EB7A002B02D1301CB1F797FE301C6DF7B0FCF0BD6C210800FF7F0000A8
    :8C93F800F0B5051C1F49FF230533C418E378980000230B544318581C00230370AF692B6D1889421C267C688C5043B04063681B1858014009381A01239B06984220D2B31D20789840A368D901EB7B002B00D15143E268824200D3101CBBF7D4FE011C802800D980219F352970074803789E4202D2701C207404E000230434191C381C0BC4F0BDC046ECB008006F150800F0
    :E4949000F0B5061C071C9C373888102101401D490BD01D4BF518EB7898000A5C9301AA68D218AA604318597811E0174BF518EB7898004118487800280DD08C78097861438901BBF793FEA9680918A960211C8B01E868C018E8602B7C002B11D1E86800280ED0AB68D901F37B002B03D1336D1A8901325143BBF77AFE802800D98020F870F0BDC046ECB0080004010000F0B50D1C114C20600B68DB0701D598F770F90F4E0020706637680E483840306098F77CFC98F77AFC2868E0606868A0600220706698F772FC98F770FC98F76EFC37600020E060A060F0BDC04600820E001C800E00FFFFFFFD3B
    :30957C0000B54068084A13681979002909D1074A13681B0605D4002801D097F7D3FF012000E0002000BDC046C04F0800E02C0800D2
    :7895C80030B5041C80304378002B1BD10323E374252101230B55837E002B07D0236DD98B09014184A36903840123C372618CA06974F78AFB238C984204D02084216DB03188800880FF230133E158E518A06998F7FBF8216DB2310A88011C101CBBF7EAFD011C201CB1F73EFEA3692B60201CAFF74CFD00236B7130BDDE
    :FB965000F0B581B0344806683448056834480378002B5CD133480368AB4209D132480368B34205D131490B683149086883424ED0304C314FFE20284007D1002D03D02F480368DB0301D5002E1CD063681B071B0F022B02D0022098F74BFC29480078606328480078A06366F7C9FD01F027FB822141432068642250436430BBF797FD431C3B6018E063681B0702D0002098F730FC00206063A0631C4A136800931B4A1088392109014143181CBBF780FD386018490098BBF77BFD174908603868A06109490D6009490E600A490B6808490B6001B0F0BC08BC1847C04614CD0800B4C4080008C30800B8CA080094AE090074AF09008C0608000C000F00DC5E087C
    :91974B0000FC0A080009C308000AC30800C02D0800E80A080020CF01009C000F00381CFFF7E7F902B0B0F7F0FFFFF705FAB0F7FDFF30B5041C13490B685D78B0F75DFD022C01D0042C16D1281C203081F7A9FC042C07D10D4800231A1C191C91F745FC022102E0022C03D10821281CADF705FC281CACF782FB05490B689879012801D1ACF7E4FB30BDC49C08000E200000C89C080062
    :FB97EC00F0B5041C00216DF74CFE002803DA01234E4843716FE0061C251C7835687A00280DD1A07B98F763F84008236DB833196897F7FFFF002804DC687A002805D0002E03DD201CB1F7BDFC55E0E37B012B03D1002801D101236B72A878802101433C4A1160082105206CF7A4F9384A5379002B41D1AFF75BFC374F381C052101F048FA03233B74201C00F037F8AFF70CFCEB8A002B0AD1FF201630205C002805D1AFF745FC3B7C082003433B740023AB74FF230533E6180023F375201CB1F788FD264A13780021002B00D101211170F078FF2806D16B7A022B03D1081CF070A3697360012805D8F1708B001C48C0187B7C8370201CAEF7ADFDF0BD30B58496
    :6D98E7007C18490B788374051C012200216DF769FCAC742C6DB223195B0239884200DB081C11494143E5208000BBF774FCFF210531695C884200D3081C32342178490701D5012801D8002800D101200349487430BDA42C0800A4860E00ECCC08006C150800ECB008007415080071020000F1
    :FB995C00F0B583B0012100910027C0237B431A481C18206BC00729D5251CBC356B78002B24D1261CE38D2C36002B1FD0B379002B02D00021009119E0211C0C310F48052201F076F9002811D00223B371201CB2F72AFC01A9201CB2F712FC01A9A878B1F7ACFC082201A9A878B2F72EFD01370F2FCBD3009803B0F0BD28900800004F080010B5002912D140498B79002B0BD03F490B69834207D13E4C2368DB0603D54631012008700EE0AFF751FD0BE0022909D1011C48318A880B7E9B18013383814B889B1A4B8010BC08BC184730B5314A11680B06D90F884218D12F4D2C68ACF798FAC1780B02817819430279130419434279130619438C4208D12A1F13B8
    :FB9A5700681A0C41780B0200781843824201D0002000E0012030BDF0B583B0051C00910026041C58342379002B2CD0012601A8B0F723F8071C6379002B13D0E378012B07D13023585DFFF7C3FF002801D1061C19E02835AB79012B04D101A9381CAFF7C1FE061C0F480378002B0CD0012F0AD1029B03208003034001208003834202D1012300980360301C03B0F0BDC046AC210800642C080008800E00A88B0E0088980E006C9C0800F0B50D1C041C002D14D14B488379002B0CD04A480369A34208D1494A1368DB0604D5031C46330120187036E0201CB0F7B5FB32E0FFF754FF022D2ED1414A131C5421085B0004271C52373988084318644433251C56359E
    :FB9B5200A807800F01D12E6808E02D1AC0002968C1402026301A6E6886400E431E60A36B002B0CD1A06EC16B91603C30457908212D0200792843D06013680B431360A06E806A9064F0BC08BC1847F0B582B0041C051CAFF75BFE58352B79002B31D0EB78012B10D1201C28308379012B0BD16B79002B08D1007AFFF72DFF002803D1201C6CF796FA1DE0EB78012B1AD8A66E6846AFF775FF6B79002B0CD1071C6946301C3C300622BAF7C5FE423637706C340120207012E02E231B5D012B02D16946AFF713FEA37C0B498878834202D1201CB0F768FC201C0121AFF712FD02B0F0BC08BC1847AC210800642C080008800E00808B0E0074150800034B044803D1
    :479C4D0060044B044803607047C046D4AD09005015080000AE09006415080010B5041C6CF749FA201C6CF7ACFE4A23002018536523195D0220ADF7FDFAA36EBC3318780021AEF7D9FC10BD07
    :149CBC0000B5011C32310B78FB2213400B70ADF7E5FE00BDAD
    :4C9CE000F0B5061C0F1C104D2C68A07B97F7F5FD80084300991C608CA26983185801400997F786FD041C002F0BD0B17B2B68987B6DF7BBFD002804D1032C01D8002400E0033C201CF0BDC0466C21080011
    :FB9D3400F0B586B0061C4568039581780A07120F0092C07802908F0943191A79059200200490C74A13681879002804D1C5490B681B0600D4BCE10098062800D9BDE10598002808D0122806D0301CAEF783F8002800D1ADE1B1E1BC4C2378BC490879834202D3201CADF772F8B8484188002923D00378002B10D06378002B04D0B44898F75DF9002818D000236370A370AF4A508850214143AE4805E02378AD48002B04D15022514398F7FFF806E098F747F9002802D0201CADF74AF820782923191C41430191E11C8807800F01D10A6808E0091AC0000B68C3402022101A4A6882401A4301989C4B0099C95C815480180099032901D0052957D1934A13681B0D
    :FB9E2F000600D441E1477002998B1F0372291C09300622BAF79FFD0635E11C8807800F01D10A6808E0091AC0000B68C3402022101A4A6882401A43019880180230291C0622BAF788FD0098052817D10635E11C8807800F01D10B6808E0091AC0000A68C2402023181A4B68834013430199C8180F30029A0C3A291CBAF76DFDE11C8807800F01D10B6808E0091AC0000A68C2402023181A4B68834013430199C8182830F17872688918C9780170F1E0FF07FF0F0098042806D0634A1368F07871684018C078587260490868C379012B18D1391C281CADF7F0FA009A042A05D1ADF70DFB002800D1D7E03BE0FF2803D1391C281CADF736FBADF716FB002800D1B0
    :FB9F2A00CBE02FE057490B78002B2BD0009A042A18D1291C54481030062200F0A2FE002800D0BAE05049887D03071B0FBB4200D0B3E08023034000D1AFE04006400E494988750FE00922835601200856834200DAA3E0291C45480622BAF7FFFC80233B434148837501210491E11C8807800F01D10A6808E0091AC0000B68C3402022101A4A6882401A43019880184770291C02300622BAF7E2FC2F480378002B19D0E11C8807800F01D10A6808E0091AC0000B68C3402022101A4A6882401A4301998818F17872688918ADF7E8FB0006000EFF2863D106350298FA300006000E02900098E11C012812D18807800F01D10B6808E0091AC0000A68C240202318C2
    :D3A025001A4B68834013430199C8180021017215E08807800F01D10B6808E0091AC0000A68C2402023181A4B68834013430199C818029A0272291C0930BAF791FCE11C8807800F01D10B681CE0091A12E0C046C04F0800E02C08005DC30800BC9C080093C3080014E3050068C30800B8AF0800C8AF0800C0000A68C2402023181A4B68834013430199C8182830F17872688918C97801700498002802D023780133237023780B490879834202D3201CACF7D6FE0598122804D1ADF78EFFADF7C3FF04E00398002801D097F729FA06B0F0BDC046BC9C0800EA
    :FBA10000F0B586B0041C012203920292002200923249051C08682035EB7A012B02D1304A117801E02E4A5178A17406220240062A51D12C4A16683207120F019201070BD529490B68987B002805D0301CAFF7FCFD0090029000E00390244F019805282BD1EB7A012B28D83306D90F287B414023D1ABF7FCFE79680491B968059104A90231062200F083FD002816D10398002813D00298002810D0201CAFF7C1FE009900290AD0201C6BF7ADFF11490B68DB0703D4201C0021AFF76AFD0E490B681B060AD50198052801D0032805D1391C3004000C0022ADF700F906B0F0BDC046BC8B0E005C150800A88B0E00B89C080080980E0008800E00E02C080010B556ED
    :FBA1FB004C822099F731F8000600160022A15600290ED0CB10CA1AC310D2187F23DB439A4201DA181C04E07F207F2A01DC10060016010609162170494A1368002B01D14848C17710BD70B5002644480368002B01D184F790FB434C4449201C0F300522BAF793FB00252819C07B97F756FD36180135052DF7D33D48C36A5B011CD53C4803685B0518D400253B4803789E4213D001200A2D00D9022040194100374885F7E0FA002805D0291C201C0F3085F7EBFA013E0135252DE7D3211C0F313048052200F0E7FC002809D0211C0F312C480522BAF75BFB63690120834363616369DB0707D4FFF73EFB616901229143104001436161002070BC08BC184700B595
    :96A2F60075F70FF900280BD11F480368002B07D114490B681D490868834201D1012000E0002000BD00B5B821194800F0ECFC00230B4A137000BD10B5041C15480368002B0BD0201C002185F7A0FA1821201C85F79CFA4E21201C85F798FA10BDC04680B10900B4C4080050370800F4460800F44E08005420080020040800A4030800E0340800004F080010CD0800E4C708009034080014CD0800C6
    :ACA3C00030B5041C0A4D2B78002B0FD07BF73EFD01216956884209DA251C5C356B78002B04D1201C6BF78DFE00232B7030BDC04668C3080000B574F74DFE002805D11848437D002B01D175F78CFE00BD00B574F741FE002805D11248437D002B01D175F780FE00BD70B5051C0E1C0024C02363430C481818036BDB0703D5321C291CB1F725FE01340F2CF1D370BD00B5064875F75CFE7BF7A5FF13211620FFF7E3FF00BDE44E0800289008009C4508004E
    :84A4A40070B5041C08790002C9780843ABF786FC051C01D1122331E0006BC0051ED40026281C3030817810220A40296B09D0890502D50C23237012E0286B1149084328630DE00F4A1143402211432963C37810210B43C370281CADF7CDFA00E00126A078000261780843217890F7B5FD002E03D0281C0021ACF718FE28340023237070BD00020000EA
    :FBA5FC00002809D1104A1068104A1368984201D1012801D1002002E08800411AC81E70470B4A1068C306990F01290BD14007400F052801D8002801D1002001E002490868024908607047C046901C080008B1090004300E00002E02D00020E05504E0E35D002B01D0013BE3557BF785FA10B5A44C201C042100F044FB7F21C943A01D072200F00EFBFF23236000239E4803709E4803709E4803709E4803709E4803709E4B9E4803600123DB029D48038080239D48037000239C4803709C4803709C480621BAF784FC14219B48BAF780FC14219A48BAF77CFC10BD30B5041C98480368002B04D000230360282300201855944D00216962A96277F75DF99248038A
    :FBA6F70068002B07D174F7CAFC002807D18F48437D002B03D1012090F793F904E075F7F9FB2834042020700023894A137089480378012213430370FFF79BFF281C8A300621BAF746FC30BDF0B5061C051C081C08356C4C2368FF2B20D076490330062200F099FA002819D16079022807D12068ABF706FBC38D012B10D1002711E001280FD1206874F7A3FCC1690906C90E0839062903D2FF210931475C02E0122333700EE0A11DE81D0722BAF7F1F88021A01D072200F078FA00232371AF710823F370F0BD30B50C1C5B4D0331281C0622BAF7DEF8637A564803701422211C0A315648BAF7D5F81422211C1E315448BAF7CFF8002347480370434CFF232360BF
    :FBA7F200281C0021ABF7C7FA002803D1281C0121ABF7C1FA002806D0C38D012B12D1BE30007802210CE0281C74F77BF9002809D0C2691206D20E083A062A03D2006801212060617130BD0B7935480370CB78304803707047F0B5052630480378002B50D12A4C2768FF2F4CD02079811D0720BAF708FD05062D0E607902280CD1381CABF781FAC38D012B3CD1A31DEA560024012622490E7016E0012833D1381C74F719FCC1690906C90E0B1C083B062B29D2A31DEA56FF230933C45C0123174803700A2900D10326144800211D4B1B579A420DDA0278013202700278B24212D301700F4A1378002B0DD090F71FFF0AE0154B1B5701709A4205DD06480378001D
    :FBA8ED002B01D090F7F8FE0120F0BC08BC1847B4AE090002C108000FC10800840308008603080010C10800C05D00009C070800A007080099070800D8C20800ADC9080009C1080011C1080025C1080024C9080054200800DCCC0800E44E0800EEC00800E00A0800381CF9F711FA69F712FF281CF9F72AFA69F72BFF81B000F003F873F74CF90000F0B5041C0D1C7BF769FA324E7379012B12D180213368095D8B420DD1A02210553179891988713079411C0720BAF76AFC30710023284A1370271C261C6436317F9F2038569F377BF7F8F93870371CB37D0C37002B15D03368DB0508D41F4803691B010ED5301C8FF7D3F9002809D00023B3610123FB7200233D
    :74A9E800BB727B72301C8DF7F8F933685806000F295C002904D0144B185CB072431E0DE010490B69DB000BD5104A11680A6853031B0F984204D193025B0F013BA3810CE0012333723B68FF20013083433B600D2307490B70301C73F775F9F0BDB4AE090086030800542008009EBB05001C2B0800E8C008004E
    :54AA840083780F2B02D1032311480360704700B50F480368002B05D0002303600F21181C78F7FAFF00BD00B5094902060CD40868012807D102230B6018220F21002078F7CAFF03E0032801D1022000E0002000BD90AE09009F
    :18AAF400044A1088012149020140480A012250407047C046E8C4080040
    :98AB6C0000B500F0B5F8002320490B7000F0B8F800BD00B51E4B984202D1081C00F001F800BD00B5012100F006F800BD00B5002100F001F800BD30B50C1C144D15490B78012B1AD10178032901D0082915D18378002B12D100F08CF8002C03D02B7801332B7008E0041C2878013803D3287002208BF7C5FD201C00F083F830BD00B5FFF7D5FF00BD014908787047C04681B10900B85208005400080072
    :24AC10000F2304480360044803600448036004480360704730300E0030340E0030380E000C200E00EB
    :FBAC3C0010B5041C10480368052B02D19BF7B2F903E09FF7FFF9022801D0012012E0201CA1F74FF9041C9FF71FFC9FF73AFC204007D006490B7823430B70012080028BF776FD002010BDC046B0C808003BC308007847000000C09FE51CFF2FE1FC4005007847000000C09FE51CFF2FE1CC4805007847000000C09FE51CFF2FE1E05105007847000000C09FE51CFF2FE1741005007847000000C09FE51CFF2FE160E801007847000000C09FE51CFF2FE17CD704007847000000C09FE51CFF2FE190D704007847000000C09FE51CFF2FE1304F05007847000000C09FE51CFF2FE1CC51050023000000593B090024000000553B0900250000005D3B09002800002F
    :FBAD370000415B09002E000000B55D090035000000953B090088000000D53B09008D000000F93B09009100000047A809009200000000000000000000000300000259460200040001040000000085770900000000009F7C0900DF6F0900AB760900337809000000000000000000216E0900675402000000000047720900000000000000000073720900B3720900B97309001774090000000000C3740900875102009F9504006D9904007F93040000000000DD99090000000000A7960400000000000000000005990400C39304009F9504006D99040091A2040000000000FD9A0900000000009D9B090093A3040099590900C7590900C3930400420500005E04AD
    :62AE3200000062040000420500006C04000062190000440500006C040000621900000A060000A0860100C47A0200A861000021000C0000180008010000003C000000001800003C000000000000000008001800000000000000001E000000400100000100000014
    :00000001FF
    so I placed the hex file in the folder with bcmfwup.py, and edited bcmfwup.py to:

    Code:
    #!/usr/bin/python2
    # -*- coding: utf-8 -*-
    
    import sys
    import usb.core
    import usb.util
    import threading
    import time
    
    ID_VENDOR = 0x0b05
    ID_PRODUCT = 0x17cf
    
    class bcm_fw_up:
    
      def __init__(self):
        self.dev = usb.core.find(idVendor = ID_VENDOR, idProduct = ID_PRODUCT)
    
        if self.dev is None:
          raise ValueError('Device not found')
    
        self.cfg = self.dev.get_active_configuration()
        self.detach_drivers()
    
      def detach_drivers(self):
        for intf in self.cfg:
          if self.dev.is_kernel_driver_active(intf.bInterfaceNumber):
            self.dev.detach_kernel_driver(intf.bInterfaceNumber)
    
      def attach_drivers(self):
        for intf in self.cfg:
          if not self.dev.is_kernel_driver_active(intf.bInterfaceNumber):
            self.dev.attach_kernel_driver(intf.bInterfaceNumber)
      
      def init_upload(self):
        re = read_event_thread(self.dev)
        re.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x79, 0xfc, 0x00])
        re.join()
        re = read_event_thread(self.dev)
        re.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x2e, 0xfc, 0x00])
        re.join()
    
      def finish_upload(self):
        re = read_event_thread(self.dev)
        re.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x4e, 0xfc, 0x04, 0xff, 0xff, 0xff, 0xff])
        re.join()
        re = read_event_thread(self.dev)
        re.read()
        re.join()
        re = read_event_thread(self.dev)
        re.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x79, 0xfc, 0x00])
        re.join()
        re = read_event_thread(self.dev)
        re.read()
        #re2 = read_event_thread(self.dev, 0x82)
        #re2.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x53, 0xfc, 0x01, 0x13])
        re.join()
        #re2.join()
    
      def upload(self, address, data):
        re = read_event_thread(self.dev)
        re.read()
        self.dev.write(2, '\x4c\xfc' + chr(len(data) + 4) + chr(address & 0xFF) +
          chr((address >> 8) & 0xFF) + chr((address >> 16) & 0xFF) + chr((address >> 24) & 0xFF) + data)
        re.join()
    
      def reset(self):
        re = read_event_thread(self.dev)
        re.read()
        self.dev.ctrl_transfer(0x20, 0, data_or_wLength = [0x03, 0x0c, 0x00])
        re.join()
        usb.util.dispose_resources(self.dev)
        self.cfg = self.dev.get_active_configuration()
    
    
    class read_event_thread(threading.Thread):
      def __init__(self, dev, endpoint = 0x81):
        super(read_event_thread, self).__init__()
        self.daemon = True
        self.dev = dev
        self.endpoint = endpoint
    
      def run(self):
        try:
          self.result = self.dev.read(self.endpoint, 0xff)
        except usb.core.USBError as (errno, strerror):
          print "read event error({0}): {1}".format(errno, strerror)
        print 'event:', self.result
    
      def read(self):
        self.start()
        time.sleep(0.1)
    
    
    class intelhex:
    
      data = []
    
      def __init__(self, filename = None):
        self.offset = 0
        if filename is None:
          return
        self.load_from_file(filename)
    
      def load_from_file(self, filename):
        for line in open(filename):
          self.append(line)
    
      def append(self, line):
        if not line[0] == ':':
          return
        line = line.rstrip()
        length = int(line[1:3], 16)
        address = int(line[3:7], 16)
        rectype = int(line[7:9], 16)
        checksum = int(line[-2:], 16)
        if rectype == 1:
          return
        if rectype == 4:
          self.offset = int(line[9:13], 16) * 0x10000
          return
        self.data.append((length, address + self.offset, line[9:-2].decode('hex'), checksum))
    
    
    def main():
      #hex = intelhex('BCM20702A0_001.001.024.0156.0204.hex')
      hex = intelhex('BCM20702A1_001.002.014.1443.1469.hex')
      up = bcm_fw_up()
      up.init_upload()
      for line in hex.data:
        up.upload(line[1], line[2])
      up.finish_upload()
      up.reset()
      #up.attach_drivers()
      return 0
    
    if __name__ == '__main__':
      sys.exit(main())
    NOTE: the version of pyusb in the ubuntu repos is too old in 14.04, since removing it would break other packages that depend on it, I did the following:

    Code:
    cd ~
    git clone https://github.com/walac/pyusb.git
    cd pyusb
    sudo python setup.py install
    Which overwrote the pyusb installed by the package python-usb using apt-get without causing dependency errors.

    I then went back to the directory containing BCM20702A1_001.002.014.1443.1469.hex AND bcmfwup.py and ran:

    Code:
    ./bcmfwup.py
    Which printed a bunch of python lists to my terminal, just as it did for others in the archlinux topic, only it exited without generating any exceptions. I was then able to pair both my HTC One cellphone and a bluetooth beatbox, and played music on Amarok through the beatbox.

  2. #2
    Join Date
    Jun 2008
    Beans
    10
    Distro
    Kubuntu 8.04 Hardy Heron

    Re: Instructions for BCM20702A0 [0b05:17cf]

    I followed all your steps, though my usb-devices is different:

    Code:
    T:  Bus=03 Lev=01 Prnt=01 Port=06 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
    D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e07a Rev=01.12
    S:  Manufacturer=Broadcom Corp
    S:  Product=BCM20702A0
    S:  SerialNumber=B01041F34B6A
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
    So I did everything using the "e07a" Product ID (look for the right hexa, compiling the kernel, modifying the python script).
    When I try to run the script, I get this message

    Code:
     ./bcmfwup.py
    Traceback (most recent call last):
      File "./bcmfwup.py", line 143, in <module>
        sys.exit(main())
      File "./bcmfwup.py", line 133, in main
        up = bcm_fw_up()
      File "./bcmfwup.py", line 19, in __init__
        raise ValueError('Device not found')
    ValueError: Device not found
    milton@milton-Lenovo-Y50-70:~/bluetooth fix$ ./bcmfwup.py
    Traceback (most recent call last):
      File "./bcmfwup.py", line 143, in <module>
        sys.exit(main())
      File "./bcmfwup.py", line 133, in main
        up = bcm_fw_up()
      File "./bcmfwup.py", line 19, in __init__
        raise ValueError('Device not found')
    ValueError: Device not found
    Any idea why? Thanks in advance.
    Last edited by miltonlaufer; January 11th, 2015 at 05:12 AM.

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •