From a0ebc07bb2fda415861a47173ad5e83e09ef7dac Mon Sep 17 00:00:00 2001 From: scawful Date: Thu, 22 Feb 2024 21:20:35 -0500 Subject: [PATCH] Add custom world map module, new 8-bit dark world map --- Overworld/world_map.asm | 423 +++++++++++++++++++++++++++ Overworld/world_map/DwMapGfx.bin | 1 + Overworld/world_map/DwMapTileset.bin | Bin 0 -> 4096 bytes Overworld/world_map/LwMapGfx.bin | Bin 0 -> 16384 bytes Overworld/world_map/LwMapTileset.bin | Bin 0 -> 4096 bytes 5 files changed, 424 insertions(+) create mode 100644 Overworld/world_map.asm create mode 100644 Overworld/world_map/DwMapGfx.bin create mode 100644 Overworld/world_map/DwMapTileset.bin create mode 100644 Overworld/world_map/LwMapGfx.bin create mode 100755 Overworld/world_map/LwMapTileset.bin diff --git a/Overworld/world_map.asm b/Overworld/world_map.asm new file mode 100644 index 0000000..a616b50 --- /dev/null +++ b/Overworld/world_map.asm @@ -0,0 +1,423 @@ +; 0x0C4000 to 0x0C8000 for the map gfx so you patch a new rom with your map data/gfx and you create a new bin file out of these bytes +; OverworldMap.asm you can copy everything from start to line 214 i think +; and 264 to 272 if you want palettes in asm too + +; 0AC727 (pc: 054727) +; to 0AD726 (pc: 055726) +; it should be 0x1000 bytes big +; ============================================================================== +; LW OVERWORLD MAP +; ============================================================================== + +org $008E54 ;STZ $2115 + JSL DMAOwMap + RTS + +org $00E399 + JSL DMAOwMapGfx + RTL + +; ============================================================================== +; DW OVERWORLD MAP +; ============================================================================== +org $008FF3 + RTS ; do not do anything during the DW update we'll handle it in the LW routine + +org $3D8000 + LWWorldMap_Tiles: + incbin world_map/LWMapTileset.bin + + LWWorldMap_Gfx: + incbin world_map/LWMapGfx.bin + +org $3E8000 + DWWorldMap_Tiles: + incbin world_map/DwMapTileset.bin + + DWWorldMap_Gfx: + incbin world_map/DWMapGfx.bin + +DMAOwMap: +{ + LDA $8A : AND #$40 : BEQ .LWMAP + JMP .DWMAP + + .LWMAP + + STZ.w $2115 + + LDA.b #LWWorldMap_Tiles>>16 + STA.w $4304 + + REP #$20 + + LDA.w #$1800 + STA.w $4300 + + STZ.b $04 + STZ.b $02 + + LDY.b #$01 + LDX.b #$00 + + .next_quadrant + + LDA.w #$0020 + STA.b $06 + + LDA.l .vram_offset,X + STA.b $00 + + .next_row + + LDA.b $00 + STA.w $2116 + + CLC + ADC.w #$0080 + STA.b $00 + + LDA.b $02 + CLC + ADC.w #LWWorldMap_Tiles + STA.w $4302 + + LDA.w #$0020 + STA.w $4305 + + STY.w $420B + + CLC + ADC.b $02 + STA.b $02 + + DEC.b $06 + BNE .next_row + + INC.b $04 + INC.b $04 + + LDX.b $04 + CPX.b #$08 + BNE .next_quadrant + + SEP #$20 + + RTL + + .vram_offset + dw $0000, $0020, $1000, $1020 + + .DWMAP + + STZ.w $2115 + + LDA.b #DWWorldMap_Tiles>>16 + STA.w $4304 + + REP #$20 + + LDA.w #$1800 + STA.w $4300 + + STZ.b $04 + STZ.b $02 + + LDY.b #$01 + LDX.b #$00 + + .next_quadrant2 + + LDA.w #$0020 + STA.b $06 + + LDA.l .vram_offset,X + STA.b $00 + + .next_row2 + + LDA.b $00 + STA.w $2116 + + CLC + ADC.w #$0080 + STA.b $00 + + LDA.b $02 + CLC + ADC.w #DWWorldMap_Tiles + STA.w $4302 + + LDA.w #$0020 + STA.w $4305 + + STY.w $420B + + CLC + ADC.b $02 + STA.b $02 + + DEC.b $06 + BNE .next_row2 + + INC.b $04 + INC.b $04 + + LDX.b $04 + CPX.b #$08 + BNE .next_quadrant2 + + SEP #$20 + + RTL +} + + +DMAOwMapGfx: +{ + LDA $8A : AND #$40 : BNE .DWMAP + LDA.b #LWWorldMap_Gfx>>16 : STA $02 + + LDA.b #$80 : STA $2115 + + STZ $2116 : STZ $2117 + + REP #$10 + + LDY.w #LWWorldMap_Gfx : STY $00 + + LDY.w #$0000 + + .writeChr + + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + CPY.w #$4000 : BNE .writeChr + + SEP #$10 + + RTL + + .DWMAP + + LDA.b #DWWorldMap_Gfx>>16 : STA $02 + + LDA.b #$80 : STA $2115 + + STZ $2116 : STZ $2117 + + REP #$10 + + LDY.w #DWWorldMap_Gfx : STY $00 + + LDY.w #$0000 + + .writeChr2 + + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + CPY.w #$4000 : BNE .writeChr2 + + SEP #$10 + + RTL +} + +org $0ADC27 + DWPalettes: + incbin world_map/dw_palette.bin + +org $0AC589 + WorldMapIcon_AdjustCoordinate: + +org $0AC51C + WorldMap_HandleSpriteBlink: + +org $0ABF90 +MapIconDraw: +{ + ; .dont_draw_link + LDA.l $7EC108 + PHA + + LDA.l $7EC109 + PHA + + LDA.l $7EC10A + PHA + + LDA.l $7EC10B + PHA + +;Removed mirror portal draw code + +;Removed pyramid open code? + +;--------------------------------------------------------------------------------------------------- + + .draw_prizes + LDA.b $8A : AND.b #$40 : BEQ .lwprizes + ; X position + LDA.b #$00 : STA.l $7EC10B + LDA.b #$89 : STA.l $7EC10A ; Upper nybble control Zoomed low X pos + ; Y position + LDA.b #$00 : STA.l $7EC109 + LDA.b #$E4 : STA.l $7EC108 ; Upper nybble control Zoomed low Y pos + ; Tile GFX + LDA.b #$66 : STA.b $0D + LDA.b #$34 : STA.b $0C + ; Tile Size + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0E : STA.l $7EC025 ; OAM Slot used + + JSR HandleMapDrawIcon + + JMP restore_coords_and_exit + + .lwprizes + + ; Draw Amulet 1 + LDA.l $7EF374 : AND #$04 : BNE .skip_draw_0 + ; X position + LDA.b #$0E : STA.l $7EC10B + LDA.b #$3E : STA.l $7EC10A + ; Y position + LDA.b #$04 : STA.l $7EC109 + LDA.b #$68 : STA.l $7EC108 + ; Tile GFX + LDA.b #$60 : STA.b $0D + LDA.b #$38 : STA.b $0C + ; Tile Size + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0E : STA.l $7EC025 ; OAM Slot used + JSR HandleMapDrawIcon + + .skip_draw_0 + + + ; Draw Amulet 2 + LDA.l $7EF374 : AND #$02 : BNE .skip_draw_1 + ; X position + LDA.b #$0D : STA.l $7EC10B + LDA.b #$05 : STA.l $7EC10A + ; Y position + LDA.b #$0D : STA.l $7EC109 + LDA.b #$09 : STA.l $7EC108 + + LDA.b #$60 : STA.b $0D + LDA.b #$34 : STA.b $0C ; Tile GFX + + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0D : STA.l $7EC025 + + JSR HandleMapDrawIcon + + .skip_draw_1 + + ; Draw Amulet 3 + LDA.l $7EF374 : AND #$01 : BNE .skip_draw_2 + ; X position + LDA.b #$09 : STA.l $7EC10B + LDA.b #$34 : STA.l $7EC10A + ; Y position + LDA.b #$00 : STA.l $7EC109 + LDA.b #$0E : STA.l $7EC108 + + LDA.b #$60 : STA.b $0D + LDA.b #$32 : STA.b $0C ; Tile GFX + + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0C : STA.l $7EC025 + + JSR HandleMapDrawIcon + + .skip_draw_2 + + + ; Draw Amulet 4 + ; LDA.l $7EF37A : AND #$01 : BNE .skip_draw_3 + ; ; X position + ; LDA.b #$00 : STA.l $7EC10B + ; LDA.b #$87 : STA.l $7EC10A + ; ; Y position + ; LDA.b #$06 : STA.l $7EC109 + ; LDA.b #$01 : STA.l $7EC108 + + ; LDA.b #$60 : STA.b $0D + ; LDA.b #$3C : STA.b $0C ; Tile GFX + + ; LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + ; LDA.b #$0B : STA.l $7EC025 + + ; JSR HandleMapDrawIcon + + ; .skip_draw_3 + + ; ; Draw Flute X + ; LDA.l $7EF34C : CMP #$01 : BNE .skip_draw_flute + ; ; X position + ; LDA.b #$09 : STA.l $7EC10B + ; LDA.b #$00 : STA.l $7EC10A + ; ; Y position + ; LDA.b #$02 : STA.l $7EC109 + ; LDA.b #$74 : STA.l $7EC108 + + ; LDA.b #$68 : STA.b $0D + ; LDA.b #$3C : STA.b $0C ; Tile GFX + + ; LDA.b #$00 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + ; LDA.b #$0A : STA.l $7EC025 + + ; JSR HandleMapDrawIcon_noflash + + ; .skip_draw_flute + + JMP restore_coords_and_exit +} + +HandleMapDrawIcon: +{ + LDA.b $1A + AND.b #$10 + BNE .skip_draw ; Timer to make it flash + .noflash ; ALTERNATE ENTRY POINT + + JSR WorldMapIcon_AdjustCoordinate + LDA.l $7EC025 : TAX + JSR WorldMap_CalculateOAMCoordinates + + BCC .skip_draw + LDA.l $7EC025 : TAX + LDA.b #$02 + JSR WorldMap_HandleSpriteBlink + + .skip_draw + + RTS +} + +warnpc $0AC387 + +org $0AC38A +{ + restore_coords_and_exit: + PLA + STA.l $7EC10B + + PLA + STA.l $7EC10A + + PLA + STA.l $7EC109 + + PLA + STA.l $7EC108 + + RTS +} + +WorldMap_CalculateOAMCoordinates: \ No newline at end of file diff --git a/Overworld/world_map/DwMapGfx.bin b/Overworld/world_map/DwMapGfx.bin new file mode 100644 index 0000000..4da659b --- /dev/null +++ b/Overworld/world_map/DwMapGfx.bin @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAA''''A''''A'''''AAAAAAAAAAAAAAAAAAAAAAAA'''''''''''''''''''''AAAAAAAAAAAAAAAAAAAAA'''''AA'''''''A''''''A••••••••••••-••-•••••--•••••-••-•••••--••-••--••-•••••$$••$$••••$$•$$•$•$$••••$$$•••$$$$$•••$$$••$$•$$•••••$$••••$$$•$$$$$$•DDDDDDDD8888888D8D8D8D8D8D8D8D8D8D8D8D8D8D8DGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGA'''''A'''''A''''A''''A'''''A''''A'''''A''''''''''''''''''''''''•'•''''•'•••'''•••••'''''•'''''•••'''''''''''''A'''''''A'''''''A''''''A'''''''A''''''A''''''A'''''''A••••••-•••--••••-•••-•••••----••--••••-•••-•••••••-•••-•••••-•••-----ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•$$$$$•••$$$•••••$•$••$•$$$••••$$$••$$$$$$$$•$$$$••••••••••••$•$$$•$••••$•••$$$$$DDDDDDDDD8888888D8D8D8D8D8D88D8D8D8D8D8D8888888DDDDDDDDDD8D8D8D8D8D8D8D8DDDDDDDD88888888A'''''A'''''A''''A'''''A''''A'''AAAA''''''''''''''''''''''''''''''''''''''''''''AAAAAAAA'''''''A'''''''A''''''A'''''''A''''''A''''''AAAAAAA•••••-••-•---••••••D8D8D8D8D8D8D8888888DDDDDDDD88888888DDDDDDDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA••••••---•••••••••••••••••••››››•››››•››››••››››•››››•••••›››››•›››››•›››››•›››››••›››››•AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•››››••››››•••••••›••••••••••••›››››•›››››•••••••••›••••••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•••••›•••••›••››•••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•••••''''•''''•''''••''''•''''•••••'''''•'''''•'''''•'''''••'''''••••••----•----•----••----•----••••-----•-----•-----•-----••-----•AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•''''••''''•••••••'••••••••••••'''''•'''''•••••••••'•••••••••••••••----••----•••••••-••••••••••••-----•-----•••••••••-••••••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''A'''''A''''A''''A'''''AAAAAAAAAAAAAAAAAAAAAAAA'''''''''''''''''''''''''''''''''''''AAAAAAAAAAAAAAAAAAAAAAAA'''''A'''''A''''''A'''''A''''''AAAAAAAAAAAAAAAAAAAAAAA''AAAAAA••••••---••••••••••••••A'''''A'''''A''''A'''''A''''A'''AAAA''''''''''''''''''''''''''''''''''''''''''''AAAAAAAA''''''A'''''''A''''''A'''''''A''''''A''''''AAAAAAA••••••---••••••••••••••A'AA'AA'AA'AA'AA'AAAA'AAAA'''''AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\AAAAA\A\AAAAAAAAAAAAAA\AAAAAAAAAAAAA\AA\\\\\AAAAAAAAA\\\AAAAAAAAAAAAAAA\\\AAAAAA\AAAAAAA\AAAAAAAAAAAAAAAAAAAAAAAAAAA\\A\\AA\AAA\AA\AAA\AA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\A\\\A\AAAA\AAAAAAA\AAAA\\\\\\\AAA\\AAAAAA\\AAAAAAAAAAAAAAA\\AAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\\AAA\\\\\AAA\\\\\AAA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\AA\\\\AA\\\\AAAAAA\AAAAAAAAAAA\\\\\AAAAAA\AAAAAAA\AAAAAAA\AAA\\\AAAAAAAAAAAAAAAA\AAA\AAA\AAAAAAA\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAAA\AAAAAA\AAAA\AAAAAAAAAAAA\\AAAA\\AAAAAA\\AAAA\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\AAAA\\\\AAAA\\\\A\\\\\\\'''''A'''''AA''''AA'''''AA''''''A'''''A'''''A'''''AAAAA'''A'''''A''''A''''AAAAAAAAAAAAAAAA//////€€//////€€////€€€€////€€€€//€€€€//AAAA////€€////€€////€€€€//AAAAAAAAAAAAA\AAAAAA\AAAAAA\AƒƒƒA\\\ƒƒƒA\\\AAAA\\\\\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAA\AAAA\\\AAAA\A\AAAA\A\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAƒƒƒƒƒƒƒAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAƒƒƒƒƒƒƒAAAAAAAAAAAAAA\AA\A\AA\A\AAAAA\AAAAAAAAAA\\\AA\\\AAAAAAAAAA\\\AƒA\A\\AAƒAAA\\AƒƒƒƒAAAAƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAAAAAAAAA\\\AƒƒAAAAAAƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'''''A'''''A''''AA'''''AAA''''''AA''''''A'''''''''''''''A''''AA'''''AAA'''''AA''''A'''''''''''''''''''''//€€€€////€€//////€€//////€€//////€€////////////////////€€€€////€€////€€////€€////€€//////////////AAAAAAAAAAAAAAAAAAAA\\AAA\\A\\AAA\\AAAAAAAAA\AA\AAAAAAAAAAA\\\AAAAA\\\AAAA\\\AAAAAAAAAAAAAA\A\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\\AA\\\\\AA\\\\\AA\\\\\\AA\\\\\AAAAAAAAAAAAA\\AAAAAA\\AA\\\\\\A\\\\\\\A\\\\\\A\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAA\AAAA\\AAAAAA\\AAA\\\\AAAAAAAAAAAAAAAAAAAAAAAAA\AAAA\AAAAAAAAAAAAAAAAA\\AAAAAA\\AAAAA\\\\\AAA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''AAAAAAAAAAAAƒƒAAAAƒƒAAƒƒƒƒAAƒƒƒƒAAAAAAAAAAAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒƒƒAAAAƒƒƒƒAAAAAAƒƒƒƒAAAAƒƒƒƒAAAAAAAAA\A\AAAAAAAAAAA\A\AAAAAAAA\AA\A\A\AAAAAAAAA\A\AAAAAA\AA\AAAAAA\AA\AAAAAA\AA\AAAAAA\AA\AAAAAAAA\A\AAAAAAAAA\A\AAAAAAAAAAA\A\AA\AAAAAA\A\A\AAAAAAA\AA\AAAAAA\\\AA\\\\\\AAA\AAAAAA\AAAAAAAAA\\\AAA\\\\\AA\\\\\AAA\\\\\AAA\\\\\AA\\\\\AA\\\\\\AA\\\\\AA\\\\\\AAAAAAAAAAAAAAAAAAAAAAAA\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\AAAAAAAAAA\\\\\A\A\\\\\A\\\AAAA\\\\AA\\AAAA\\AAA\AAAAAAAAAAAA\\\AA\\\AA\\AAA\\AAA\\AAA\\AAAAAAAAAAA\AA\\\\A\AA\\\\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''''AAƒƒAAAAƒƒAAAAƒƒAAAAƒƒAAAAAAAAAAAAAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒAAAAAAAAAAAAAAAAAAAAAAAAAAA\AA\AAAAAA\AA\AAAAAAAAAAAAAAAAAAAAA\\\\\\A›››››››A›A››››\A›››››››\›››››››››››››››››\››››››››››\›››AA\\\\\AAA››››››AA\›››››\\›››››››››››››››››››››››\››››››››››\›››››››››››››››››››››››››››››››››››\\’›››’\›››A›››››››››\››››››››››AAAAAAAAAAAAAAAAAAAAAAAAAA›’\’›A\\’›››’\›››A›››››››››\››››››››››AAAAAAAAAAAAAAAAAAAAAAAAAA›’\’›A\\’›››’\›››››››››\››››››››››\›››p \ No newline at end of file diff --git a/Overworld/world_map/DwMapTileset.bin b/Overworld/world_map/DwMapTileset.bin new file mode 100644 index 0000000000000000000000000000000000000000..683f4a1422a9a2625b62646e5b6d38d05ef83afb GIT binary patch literal 4096 zcmeH}IcyU_6oxUog~!2G;@!fs0T=5Mcf_ftB-8=L^xRj$eFO>)2`H$70u)rSA>h&i z0+FDKkvSy`a~l*V+z2GgTu~a{8!u7z-`(DY-$c84^Sw9ocI5YKA`yp$9iH3iaQB%k zoN2rBNjq(s(@m!r7Ek|&=jJrMHH0$cnr@h_;mr+GSeE!ZJFDqF`PT3`OB9O~$cF11 zrj^TC#bS~2H*VUz1-Yh=S{4OZhS|Gs|AB+ZY1z@7u!N=QtNO{1hq`#s#)dhV&1PLZ zp5QSo1P85Id&-@^XD_pXctVKv8_pw-Cr+Fc@kEefq}TWHvO#(T;|VEbZ^oTZnY=ce z9LypQbx|hg^Fm@|1UaWtM38FW6+*}Bult=!X?GI%?tyZgrLIL^KZQFP3 z6jTM_>a*uBkRLicbmVB?{Rj6ZXJ+1i`1lDq_jv#6SS;3THh~+ZsMR(7^Ot(P z{`DJjC1+gU)D-dQY2-@I`1^b~{CvYKE~FnMAL`-KXC+QS(ir=*-T4fIwm!M_{l9ea z9*Y8jfLA`t7i&~^PpyVL)e>+nLw46{J;-HCz*$|r^JOX}d62qNzH5CdY2F@raGG)$ z?(cx)v^!5aZHd!OCb53-(QUi?4;0v`4-Q1^+RZl=U;Plrj`K}I)8D=$eYtZN^~II} z!~FiE(P%t=f}EOZvC=;~5IMDQl#pSn`=X{JCkcpBK1Zkra+Po2H7P*4IprIsuwaS+SU>JP4gGzB0IR~3(KYSLMzHZQGq|fahfxfpJjBdC22Y| z=L%5L69D+vy$j5$Y9{+;Hfx;6U^%a88uDDGA&IECKV`!iakdV*wFKh7WPFcTt*&jUJ= z89PodrOf9YBTugxnSf>O2k-qiK7&So;T55V+QkqP20xCu@#1sR8^BpVj~uZja$QUkL3 zAV%qr`-{@dq1~wAqwSrPoBFTZ>!|Z1VVOS%ypcm-U9T0n!3QhCczb=9|COJ$A11!@ zBsvpd8e(gROeOlM8vkUBV5;?O#Cuq;;sMcknAl&d?V)kk5PalLvzprv2=}`4u|79u zEJca1{%g9e(n_Y90-3?5u!r#cs6Bo%Mr7-sCsei{@m_74@9YgS|AD5mEf}^;b_o}9 z+VD6@q@ahc5j zW#Rvo%lGx>b=~*R&$~4woMKA3fvW6s@AKNYX1oxm*YjK)gt~$7P)=U z^&gO8^y^H1Nq6~|mzTw2@$!-qF@al)P(66B{c9(15ScZoNqB~I27RYVUoQ1;C?A&} z{LlM@clQrv^D*)Y_&IAMoa}E(I&9BYBV+jAeq&qEedE_63Zx6Zu~i_Q0xDASovf7Z z8`7OT|3ROner%!p9&!m3saO4qf82joTG9#+t{(pw$NU_?KEaEF_6u610_Evr$!h#; zK~^pwIVy`w6|idHm8qi&<<^;ZsUQ*YE*W<_7$g-m>`cDV z0El}q@FfF^G^qx2Q!&Kh!axcd!J_c}ueR@TQ{a2j_lh#%v_I_SS_12WDn)udMv`o! ziHc?XtpNQh=<8oqt!QJicd=m(7#GLn;1r`G#xWWbYJa5>JjP_cKp7LK?}h3G$?iY- z>aX}BT*I!wNM9Eosq2=b{%fJ}57vp5*qffzi-fgO;iZ>C^SH3 zDsy=Wj2yA?2mG>}zW&m`KlazKd-Px4KY9#^uh&Z8$wp5<;Mz|?O@q$UkGiC%ABQ~s z@C;KV529+2;J18JLF-tC9_5*S4Ksp$D7)bGNirob^HMow6o z(#jCi&+;EWoAJlIUMo5HUXT>?f1Il)M8bGfh*8zr#O zVtw=Y=t7%V)T_zjcA=JPj_sG9wJ*)%)NpGTo6oJYYdLOz%6sjn;Dz^9fpP%M6km0pv@bvo>(BA} zrAdXk!`d-v#Ii8YEm6;5T~~p_zUkxpC+2eSIFPoqzN>wuOC=)E)TjSM_{ToMN#1r6 z{rvM6MwY^R_ungjtn*wm3|?vkydhx!=Ul?#RLnxPoc!|)be*Xt6+`={jCuI%C!9`w zfnm%gNYZ+(iYz{bx3SYLjQVhHI9p`Kebj_5I-crWSlUnEeO$`PsM&WZG0C)T883(6&+ z3lciBPkIQ$;J*xQ5$c=BdcCZwB_TjWAx=)BVn;`>q`*`+oB_*dKSOe7lu4fm*Z4Dq z20j1YBRmC49v6?X?g^iso*E?zn}>%7#Wi6c9-X`ZU0Ug?1BD8x1XMYtHyC5u2uqsM z7tJGyGJkyd?Db9t3#E)B^*ajl9TD{vDOl1=xxvo-9{3!DY?{57Yk2SWFcSI}IN_kM zr;vjf_*^JWl12K&&Z)Ymkq@omH^13zxg_AkBR4wWGCC3EPr{g|h4(4ut>^1+=WVIy z+WptH_5(l44arzuU+85-ypV|Z7ju~4-+U0Rv#!vDDKH(794*!iEziHH*8A-l&%f3E zedV8g$@B9ZHxX!mfo`17Yx@nMN>LZUk(9c?8}cT1B1f9GbHXXMkzUH}_eB>kREx%; zB~q}>x+gQ~`&=-2y3O_ch|KBdKxeUf;J^wvc~7c#N0iOrba^ z$>eu@&|s+ZV6?lHbul*z$_m9*fQ|$P@!K8#-suXJU9eod9te?jFSc*Raj8c5J;9vr z3sE5p11ze+>)`W&-=cKQ4pszH{(<+_Gyip`5U*46AnI4A{j)J8maDddAJ&=d>VI0N z5D-4o&MB{b{uk-T`BUA~=i}c$>Y@<*mm^ra0@Iwi__6OdsU-YR@9!Y;P4~wU5bkep zetY)w_4TK6e*FCT!zF$M?0)2kr#_Qe8xjIuayW?Em}Q!4TEjfwH0xs8jpiTu1Fywz zUVt9+`@Q^Y`FpK>T&+UWZcwM%kbEX0e}JR&*Nr%n5&C;aeF&+2Ic2m5+p*tYvZza! zsKPOyFX;9saw0iD>ziG&C+ZTYSQmQRPLLcGkR&1!FeKaCxb2b)P0%@!-W?lj_o%Dz z`h$O5r|_4+1^?OiD(~|z6@s#b_eLc^5a$HGbAEQ}zf%hH8dNNPbrz^&aSH@xJx}Dz z4^aMqs8~Ds()rm1|3STK#(qWLUv_FIEeO1>2 z=zKSAJ%4v~*y!qD2~FPzX>EPmFIa$yfjOc#WBLL~$5RS{*N={0xGi0iMik9kx4w>J zFB+m*eb+RgB5pzJyym^z)4`S=mZ6vCLAAS$%{lf#S=GckwEFj%}B2!zwRQxYeDi`A?1a#AM~5Z zzY&sN(~k0QcA-~7>~;R;KGXfA3CJ~cEh1HjKLopW&7-(=Je10D3}-thk`ah^P$2|# zbfi0(4V@+Lr2mr$h=K z_{4OY$2ZrI32&;y_T%?&GGbzQUoDieP$INBh$)hF z_FZFHJUlI={}o(tNYi}(e!t*|*4TU!vDd}R-iZBYuw2LeJ^ww0pF;U6#pKM4_%dTo zm;0jZy6{r!=fQ6XVor%upDM?vY7=3$HCPFX>>axma%MRK>Y zKlsWgj{J(;-S#~mq^LdaWTLZ4AyFiB@BIbD5_u0Diq6SiE0ZE0NORewZgomtCPW8nT1l>UR7 zs+#>}J`YGn6$GE=kIRSq;2fU5Bb>*p2lx}(rO5%+K4L#1jAnUW5XlPvCnzG>FBF7F zr#ifH{wcr0{!IR){Lyu%(9;3cQ!a^gMQVZi9(drjE>`_ZL=M=t41-kAfTc7IcZmB< zlrasO)>Hqbdi_fp(NoFQP;Zt`+6RxBu<%(^lT$*k)S3I+Wms+`X+@r3Fm2d-%HLSd$^rCj%C?bQQ`);JZZ06_Ll0Vpo`9=F;XZ{>s=&?AC7D=sEu~-GW z2+Is$T3E_B6s&Wko<-ymcDdZO``2sjm;Eh&U%v+4-3bxv{oPkS&qdcP_}iqt^Ub;U+|xOKZ*Fde zaxzBzV4CwanRsQ&)u%jD^D>9!Q|?n8H5>1_pjA`>H8leCjlS8IF#l^&O_X38ni%0lxsrFN0?&UtL#MulO;uU^XO^FPBq3$FTlmm!Iq^3$W4z!C6vL(oge~?cF|~ z&wU**KT{k(SD$B-x_j_vsKHe{gy+tu7sz;;lY)@pRI3l|_eJDFH4)99;A+a3GKK%% zMmcL@ecyk%6@B9BwX5M4oQuX|i@%l>fbP59fnY&F0p&;f`cfumDgdDT?3Y30=s94p zR48AOe3_Eahg3D_77bPB`1|3MWT>lHaL}!AJX=Uf{)=F)fZ{obDJkk@y@u`9LF3Pk zj((8Tpkk=3tGV_2vB}XZ6u+g)+79j9{OM(pJ7-C^zuxA!+2bB>O^4r-@5r+9oIJic za>AZxb69)OhOsJZ)^c37J4{?KUYX^d`?)(Khe??_N#thPB+1`1B@&!z0JpRi7 z+@su*m6lb&{Ru{l@_bublDWd(I~wI<*ye~Y)5Q~$@h!V{9mTs2Y4>%QjE~Q7sO`}t zymcJor$c|(M%QnRjNcH6*c|yolt)_4S6cWPDbCdF%wcgcjVEI|oO0(MlHhcHq#$TJ zx)H?VP98otQa|S(XgkL;jV64* zeaHEqTYx7QFM-n75NdAt^m!xo&%z?%`ORCu1I-Og9PjMy1WOg`=_>2W+D$Y*9@ho) zAZ4mF)D)&%(?U900sei&>Nfr)X>sg|)6p;x$d{ zLZ@idw2eG(V|pY+ui(jc6VGi!=F5?#M=zV=>WeMTn%yzxYjl0u?{moo^0-W&4{1Tj LnAVrzDObNg+;8#& literal 0 HcmV?d00001