Full Code of risolvipro/playdate-mode7 for AI

main 6980c89df915 cached
27 files
3.9 MB
1.0M tokens
594 symbols
1 requests
Download .txt
Showing preview only (4,077K chars total). Download the full file or copy to clipboard to get everything.
Repository: risolvipro/playdate-mode7
Branch: main
Commit: 6980c89df915
Files: 27
Total size: 3.9 MB

Directory structure:
gitextract_yz4kh1sf/

├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── Makefile
├── README.md
├── Source/
│   ├── images/
│   │   ├── coin-mask.pgm
│   │   ├── coin.pgm
│   │   ├── full-car.pdt
│   │   ├── tile.pgm
│   │   ├── tile1.pgm
│   │   └── track-0.pgm
│   ├── main.lua
│   ├── mode7.lua
│   └── pdxinfo
├── VERSION.txt
├── blender/
│   ├── export.py
│   └── project_4_0.blend
├── lua/
│   └── stub.lua
├── platforms/
│   ├── macos/
│   │   ├── VERSION.txt
│   │   └── pdex.elf
│   └── windows/
│       ├── VERSION.txt
│       └── pdex.elf
├── src/
│   ├── c_example/
│   │   └── main.c
│   ├── c_lua/
│   │   └── main.c
│   ├── pd_mode7.c
│   └── pd_mode7.h
└── tools/
    └── resize/
        └── resize.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
/.vscode/
/build/
/cmake_build/
/*.xcodeproj
/*.pdx
/Source/pdex.*
/blender/output/
/blender/*.blend1
/assets/full-car
luacheck.py
.python-version

================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.14)
set(CMAKE_C_STANDARD 11)

set(ENVSDK $ENV{PLAYDATE_SDK_PATH})

if (NOT ${ENVSDK} STREQUAL "")
	# Convert path from Windows
	file(TO_CMAKE_PATH ${ENVSDK} SDK)
else()
	execute_process(
			COMMAND bash -c "egrep '^\\s*SDKRoot' $HOME/.Playdate/config"
			COMMAND head -n 1
			COMMAND cut -c9-
			OUTPUT_VARIABLE SDK
			OUTPUT_STRIP_TRAILING_WHITESPACE
	)
endif()

if (NOT EXISTS ${SDK})
	message(FATAL_ERROR "SDK Path not found; set ENV value PLAYDATE_SDK_PATH")
	return()
endif()

set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
set(CMAKE_XCODE_GENERATE_SCHEME TRUE)
IF (APPLE)
	set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE INTERNAL "" FORCE)
endif()

# Game Name Customization
set(PLAYDATE_GAME_NAME Mode7)
set(PLAYDATE_GAME_DEVICE Mode7_DEVICE)

project(${PLAYDATE_GAME_NAME} C ASM)

include_directories("${CMAKE_CURRENT_LIST_DIR}/src")

if (TOOLCHAIN STREQUAL "armgcc")
	add_executable(${PLAYDATE_GAME_DEVICE} ${SDK}/C_API/buildsupport/setup.c src/c_lua/main.c src/pd_mode7.c)
else()
	add_library(${PLAYDATE_GAME_NAME} SHARED src/c_lua/main.c src/pd_mode7.c)
endif()

include(${SDK}/C_API/buildsupport/playdate_game.cmake)



================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2023, Risolvi Productions

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: Makefile
================================================
HEAP_SIZE      = 8388208
STACK_SIZE     = 61800

PRODUCT = Mode7.pdx

# Locate the SDK
SDK = ${PLAYDATE_SDK_PATH}
ifeq ($(SDK),)
	SDK = $(shell egrep '^\s*SDKRoot' ~/.Playdate/config | head -n 1 | cut -c9-)
endif

ifeq ($(SDK),)
$(error SDK path not found; set ENV value PLAYDATE_SDK_PATH)
endif

######
# IMPORTANT: You must add your source folders to VPATH for make to find them
# ex: VPATH += src1:src2
######

VPATH += src
VPATH += src/c_example
VPATH += src/c_lua

# List C source files here
SRC += src/c_lua/main.c
SRC += src/pd_mode7.c

# List all user directories here
UINCDIR += src
UINCDIR += src/c_example
UINCDIR += src/c_lua

# List user asm files
UASRC = 

# List all user C define here, like -D_DEBUG=1
UDEFS = 

# Define ASM defines here
UADEFS = 

# List the user directory to look for the libraries here
ULIBDIR =

# List all user libraries here
ULIBS =

include $(SDK)/C_API/buildsupport/common.mk



================================================
FILE: README.md
================================================
## Playdate Mode7

Playdate Mode7 is a library designed to recreate the graphics mode known as "Mode 7".

![demo](assets/demo.gif)

## Features

* Camera(s) with adjustable position, angle, tilt, FOV
* Customizable sprites
* Support to multiple displays (splitscreen)
* Functions to project a 3D point from the world onto the screen
* C and Lua support

## Lua setup

The library has a simplified Lua setup:
* Locate the pre-compiled binaries for your platform in the *platforms/[platform]* folder
* Copy the files (elf, dylib, dll) into the Source folder of the project
* Import the library: `import mode7`

## Documentation

* [Lua API Documentation](https://risolvipro.github.io/playdate-mode7/Lua-API.html)
* [C API Documentation](https://risolvipro.github.io/playdate-mode7/C-API.html)

## Assets

The assets included in the demo (track-0, full-car) are part of [P-Racing](https://play.date/games/p-racing/), please don't use them in your final game.

## AI Disclosure

AI was not used to develop this library.

================================================
FILE: Source/images/track-0.pgm
================================================
P5
2048 2048
255
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@??@???@@@@@@???@@??@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@@@@@@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@@@AAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBCBCBCBBBBBCBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAA@@@@@@@@@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@@AAAAAAAAAABBBBBBBBBBBCCCCCCCDDDDDDDDDDDDDDDDDDDDEEDEDEDDEEDDDDDDDDDDDDDDDDDDCCCCCCCCBBBBBBBBAAAAAAAA@@@@@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@AAAAAAAABBBBBBBBCCCCCCDDDDDDEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEEEDDDDDCCCCCBBBBBAAAAAA@@@@@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@AAAAAAABBBBBBCCCCCCDDDDDEEEEEEEFFFFFFFFGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGGGGGGGGFFFFFFFEEEEEEDDDDCCCBBBBBAAAA@@@@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@AAAAAABBBBBBCCCCDDDDEEEEEEFFFFFFFGGGGGGHHHHHHHIIIIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIIIIIIHHHHHGGGGGFFFFFEEEEEDDCCCBBBAAAAA@@@@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@AAAAAABBBBBCCCCDDDEEEEEFFFFFFGGGGGHHHHHIIIIJJJJJJJKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLKKKKKKKKKKJJJJJIIIIHHHHGGGFFFEEEEDDCCCBBBAAAA@@@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@AAAAAABBBBBCCCDDDDEEEEFFFFGGGGHHHHHIIIJJJJJJKKKKKKKKLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLLLLLLKKKKKKKJJJJJIIHHHGGGFFFEEDDDCCBBBAAAA@@@@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@AAAAAABBBBCCCCDDDEEEEFFFFGGGHHHIIIIJJJJJKKKKKKLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNOONNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONNONNNNNNNNNNMMMMMMMMLLLLLKKKKKJJJIIHHGGFFFEEEDDCCBBBAAAA@@@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@AAAAABBBBBCCDDDDEEEEFFFFGGGHHHIIJJJJJKKKKKLLLLLLLMMMMMNNNNNNNNOOOOOOOOOOOOOOOOOOOOOPPOPPPPPPOPPPPPPPPPPPPPPPPPPPPPPPPPPPPOPOOOOOOOOOOOOOOONONNNNMMMMMLLLLLKKKJJIIHHHGGFFEEEDDCCBBBAAA@@@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@AAAAABBBBCCCDDDEEEEFFFFGGGHHIIIIJJJKKKKKLLLLMMMMMMMNNNNOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOOOOOOONNNNNMMMLLLKKKKJJIIHHGGFFEEEDDCCBBAAAA@@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@AAAAABBBBCCCDDDEEEFFFFFGGHHHIIIJJJKKKKKLLLLMMMMMNNNNNOOOOOOOOOPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPPPPPPPPPPOOOOOONNNMMMMLLLKKKJJIIHGGGFFEEDDDCCBBAAA@@@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@AAAABBBBBCCDDDEEEFFFFGGGHHHIIJJJKKKKKLLLLMMMMMNNNNNOOOOOOPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQPPPPPPPPOOOOONNNMMMLLLKKKJJIIHGGFFFEEDDCCBBAAA@@@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@AAABBBBCCDDDEEEFFFFGGGHHHIJJJJKKKKLLLLLMMMMNNNOOOOOOOOPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQRQQQQQQQQQQQQQQQQQQPPPPPPPPOOOONNNMMMLLLKKJJIIHHGGFFEEDDCCBBAAAA@@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@AAABBBCCCDDEEEFFFGGGHHIIJJJJKKKKLLLLMMMNNNNNOOOOOOOPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQQQPPPPPOOOOOONNMMMLLKKKJJIIHGGFFFEEDDCBBBAA@@@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@AAABBCCDDEEEFFFGGHHIIJJJJKKKKLLLLMMMNNNNOOOOOPPOPPPPPPPPPQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQRQQQQQQQQQPPPPPPOOOONNNMMLLLKKJJJIHHGGFFEEDCCBBAAA@@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AAABBCCDEEEFFGGHHIIJJJKKKKLLLMMMMNNNOOOOOOOPPPPPPPPQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQPPPPPOOOOONNNMMLLLKKJJIIHGGFFEEDDCBBAAA@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABBCCDEEFFGGHIIJJKKKKLLLLMMMMNNNOOOOOPPPPPPPPQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQPQPPPPPOOOONNMMMLLKKKJIIHGGFFEEDCCBBAA@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABBCDEEFFGHHIJJKKKKLLMMMNNNNOOOOOOPPPPPPPQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQPPPPPOOOONNMMMLLKKKJIIHGGFFEDDCBBAA@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABBCDEFFGHHIJJKKLLMMMNNNNOOOOOOPPPPPPPQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQPPPPOOOONNNMMLLLKKJIIHGFFEEDCBBAA@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABBCDEFFGHIJJKLLLMMNNNOOOPOPPPPPPPQQQQQQQQQQQRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQQQPPPPOOOONNMMLLKKJJIHGGFEEDCBBAA@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBCDEFFGHIJKKLLMMNNOOOPPPPPPPQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQPPPPPOOOONNMMLLKKJJIHGFEEDCBBA@@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABCDEEFGHIJKLLMMNNOOOPPPPPQQQQQQQQQQQRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQQPPPPPOONNNMMLKKJJIHGFEEDCBAA@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBCDEFGHIJKLLMNNOOOPPPPQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQPPPPOOONNMMLLKJJIHGFEDCCBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFFHIJKLLMMNOOPPPQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQQPPPPOOONMMLLKJIIHGFEDCBAA@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABCDEFGHIJKLMMNOOPPPQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQQPPPPOONMMLLKJIHGFEECCBA@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBCEFFHIJKLLMNOOPPPQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQQPPPPOONNMLLKJIHGFEDCBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHIJKLMNNOPPPQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQPPPPOONMMLKKJHGFEDCBAA@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGHJKKLMNOOPPQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQPPPOONMLLKJIHGFEDCBA@@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@AABCDEFHIJKLMMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQQPPPOONMLKJIHGFEDCBA@@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBDEFGHIJKLMNOOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQPPOONMLLKJHGFEDCBAA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPPONNMLKJIGFEDCBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGIJKLLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQPPOONMLKJIHFFDCBAA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGIJKLMNNOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPOONMLKJIHGFECBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFHIJKLMNOOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPOONMLLKIHGFECBAA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPPONNMLKJHGFECBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHIKKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQPPONNMLKJHGFECBAA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKLLMNOPPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONMLKJHGFECBA@@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGIJKLMMNOOPQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPOONMLKJHGFECBA@@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGIJKLMNNOPPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPOONMLKJHGFDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGIJKLMNOOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONMLKIHFEDCBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONMLKIHFEDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPOONLLKIHFEDCBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDFGHIKKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMLKJIGFEDBBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFGHJKLMMNOPPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJIGFEDBAA@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFGHJKLLMNOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJIGFECBA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFGHJKLLNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGFDCBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGEDCBA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPOONMLKIHFEDCBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBCEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONMKKIGFEDBAA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJIGFEDBAA@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJIGFECBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGFDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGEDCBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOONMLKIHFEDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONLKJIGFEDBAA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJIGFECBAA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGFECBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMLKJHGEDCBA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMLKJHFEDCBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQPPOONMLKIHFEDBAA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONLKJIGFECBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABCDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGFECBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABCDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGFDCBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMLKJHFEDBAA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOONMLJIGFECBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPOONLKJIGFECBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHGEDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGIJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMLKIHFEDBAA@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGIJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKIGFECBA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGIJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOONLKJHGFDCBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKJHFEDCAA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFHIJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKIHFEDBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCEFFHIJKLMNOOPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOONLKJIGFDCBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABDEFGHIJKLMNOOPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOONLKJHGEDBAA@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@ABBDEFGHIKKLMNOOPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKIGFECBA@@?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABCDEFGHJKLLMNOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMKJIGFDCBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGHJKLLMNOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPOOMLKJHFEDBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGIJKLMNNOPPPQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSRRRRRRRRRRRSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKIGFECBA@@???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBCEEFGIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSRSSRSRRRSRRSRSSSSSSRRSRRRRRRRRRSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQPPONMKJHGFDCBA@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@ABBDEFGHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSRRRRRRRRSSRSSSRSSSSSSSSSSSSRSSSRRSRSSSRSRRRSSRSRRSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQPPONMLKJHFEDBA@@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@AABCDEFGHIJKLMNOOPPQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSRRRSSRRRRRRRRSRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQPPONMLKIGFECBA@@??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Download .txt
gitextract_yz4kh1sf/

├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── Makefile
├── README.md
├── Source/
│   ├── images/
│   │   ├── coin-mask.pgm
│   │   ├── coin.pgm
│   │   ├── full-car.pdt
│   │   ├── tile.pgm
│   │   ├── tile1.pgm
│   │   └── track-0.pgm
│   ├── main.lua
│   ├── mode7.lua
│   └── pdxinfo
├── VERSION.txt
├── blender/
│   ├── export.py
│   └── project_4_0.blend
├── lua/
│   └── stub.lua
├── platforms/
│   ├── macos/
│   │   ├── VERSION.txt
│   │   └── pdex.elf
│   └── windows/
│       ├── VERSION.txt
│       └── pdex.elf
├── src/
│   ├── c_example/
│   │   └── main.c
│   ├── c_lua/
│   │   └── main.c
│   ├── pd_mode7.c
│   └── pd_mode7.h
└── tools/
    └── resize/
        └── resize.py
Download .txt
SYMBOL INDEX (594 symbols across 6 files)

FILE: blender/export.py
  function quote_arg (line 24) | def quote_arg(str):

FILE: src/c_example/main.c
  function eventHandler (line 34) | __declspec(dllexport)
  function PDMode7_World (line 62) | PDMode7_World *newWorld(void)
  function update (line 133) | static int update(void *userdata)
  function restartWorld (line 203) | void restartWorld(void)
  function restartCallback (line 225) | void restartCallback(void *userdata)

FILE: src/c_lua/main.c
  function eventHandler (line 17) | int eventHandler(PlaydateAPI *playdate, PDSystemEvent event, uint32_t arg)

FILE: src/pd_mode7.c
  type _PDMode7_Pool (line 22) | typedef struct {
  type PDMode7_Vec2ui (line 27) | typedef struct {
  type _PDMode7_Array (line 31) | typedef struct {
  type kPDMode7LuaItem (line 36) | typedef enum {
  type _PDMode7_LuaArray (line 42) | typedef struct {
  type _PDMode7_LuaBitmapTable (line 48) | typedef struct {
  type _PDMode7_LuaBitmap (line 53) | typedef struct {
  type _PDMode7_GC (line 58) | typedef struct {
  type _PDMode7_GCRef (line 62) | typedef struct {
  type _PDMode7_CallbackType (line 67) | typedef enum {
  type _PDMode7_Callback (line 72) | typedef struct {
  type _PDMode7_LuaSpriteDataSource (line 78) | typedef struct {
  type PDMode7_SpriteDataSource (line 82) | typedef struct PDMode7_SpriteDataSource {
  type PDMode7_SpriteInstance (line 90) | typedef struct PDMode7_SpriteInstance {
  type PDMode7_Sprite (line 112) | typedef struct PDMode7_Sprite {
  type _PDMode7_GridCell (line 124) | typedef struct {
  type _PDMode7_Grid (line 128) | typedef struct _PDMode7_Grid {
  type PDMode7_ShaderType (line 137) | typedef enum {
  type PDMode7_Shader (line 142) | typedef struct PDMode7_Shader {
  type PDMode7_LinearShader (line 148) | typedef struct PDMode7_LinearShader {
  type PDMode7_RadialShader (line 158) | typedef struct PDMode7_RadialShader {
  type PDMode7_Tile (line 170) | typedef struct PDMode7_Tile {
  type PDMode7_Tilemap (line 175) | typedef struct PDMode7_Tilemap {
  type PDMode7_Background (line 188) | typedef struct PDMode7_Background {
  type PDMode7_Plane (line 198) | typedef struct PDMode7_Plane {
  type PDMode7_World (line 204) | typedef struct PDMode7_World {
  type PDMode7_Camera (line 218) | typedef struct PDMode7_Camera {
  type PDMode7_Display (line 228) | typedef struct PDMode7_Display {
  type _PDMode7_BitmapLayerCompositing (line 246) | typedef struct {
  type PDMode7_BitmapLayer (line 254) | typedef struct PDMode7_BitmapLayer {
  type PDMode7_Bitmap (line 265) | typedef struct PDMode7_Bitmap {
  type _PDMode7_Parameters (line 276) | typedef struct {
  type _PDMode7_DitherPattern (line 290) | typedef struct {
  function mode7_min (line 402) | static inline int mode7_min(const int a, const int b)
  function mode7_max (line 407) | static inline int mode7_max(const int a, const int b)
  function PDMode7_World (line 499) | static PDMode7_World* worldWithConfiguration(PDMode7_WorldConfiguration ...
  function PDMode7_World (line 527) | static PDMode7_World* worldWithParameters(float width, float height, flo...
  function PDMode7_WorldConfiguration (line 550) | static PDMode7_WorldConfiguration defaultWorldConfiguration(void)
  function _PDMode7_Parameters (line 560) | static _PDMode7_Parameters worldGetParameters(PDMode7_Display *display)
  function PDMode7_Plane (line 618) | static PDMode7_Plane newPlane(void)
  function worldUpdateDisplay (line 627) | static void worldUpdateDisplay(PDMode7_World *world, PDMode7_Display *di...
  function sortSprites (line 804) | static int sortSprites(const void *a, const void *b)
  function worldGetRelativeAngle (line 821) | static float worldGetRelativeAngle(PDMode7_Vec3 cameraPoint, float camer...
  function worldGetRelativePitch (line 840) | static float worldGetRelativePitch(PDMode7_Vec3 cameraPoint, float camer...
  function worldUpdate (line 862) | static void worldUpdate(PDMode7_World *world)
  function drawBackground (line 871) | static void drawBackground(PDMode7_Display *display, _PDMode7_Parameters...
  function drawPlane (line 906) | static void drawPlane(PDMode7_World *world, PDMode7_Display *display, _P...
  function drawSprite (line 1025) | static void drawSprite(PDMode7_SpriteInstance *instance)
  function drawSprites (line 1033) | static void drawSprites(PDMode7_Display *display)
  function worldDraw (line 1063) | static void worldDraw(PDMode7_World *pWorld, PDMode7_Display *display)
  function planeColorAt (line 1158) | static inline uint8_t planeColorAt(PDMode7_World *world, PDMode7_Plane *...
  function worldSetColor (line 1202) | static inline void worldSetColor(uint8_t color, PDMode7_DisplayScale dis...
  function PDMode7_Vec3 (line 1266) | static PDMode7_Vec3 displayToPlanePoint(PDMode7_Display *display, int di...
  function shaderPrepare (line 1303) | static void shaderPrepare(PDMode7_Shader *shader, PDMode7_Display *displ...
  function shaderPrepareRow (line 1339) | static void shaderPrepareRow(PDMode7_Shader *shader, PDMode7_Display *di...
  function shaderApply (line 1369) | static inline void shaderApply(PDMode7_Shader *shader, uint8_t *color, P...
  function shaderSpriteIsVisible (line 1411) | static int shaderSpriteIsVisible(PDMode7_Shader *shader, PDMode7_Sprite ...
  function distanceAtScanline (line 1452) | static float distanceAtScanline(int y, PDMode7_Display *display, _PDMode...
  function PDMode7_Vec3 (line 1466) | static PDMode7_Vec3 displayToPlanePoint_public(PDMode7_World *pWorld, in...
  function PDMode7_Vec3 (line 1473) | static PDMode7_Vec3 worldToDisplayPoint(PDMode7_Display *display, PDMode...
  function PDMode7_Vec3 (line 1512) | static PDMode7_Vec3 worldToDisplayPoint_public(PDMode7_World *pWorld, PD...
  function PDMode7_Vec2 (line 1519) | static PDMode7_Vec2 planeToBitmapPoint(PDMode7_World *pWorld, float poin...
  function PDMode7_Vec2 (line 1525) | static PDMode7_Vec2 bitmapToPlanePoint(PDMode7_World *pWorld, float bitm...
  function PDMode7_Vec3 (line 1531) | static PDMode7_Vec3 displayMultiplierForScanlineAt(PDMode7_Display *disp...
  function PDMode7_Vec3 (line 1561) | static PDMode7_Vec3 displayMultiplierForScanlineAt_public(PDMode7_World ...
  function addSprite (line 1568) | static void addSprite(PDMode7_World *world, PDMode7_Sprite *sprite)
  function addDisplay (line 1586) | static int addDisplay(PDMode7_World *world, PDMode7_Display *display)
  function indexForDisplay (line 1611) | static int indexForDisplay(PDMode7_World *world, PDMode7_Display *display)
  function _PDMode7_Array (line 1625) | static _PDMode7_Array* _getSprites(PDMode7_World *world)
  function PDMode7_Sprite (line 1630) | static PDMode7_Sprite** getSprites(PDMode7_World *world, int* len)
  function _PDMode7_Array (line 1638) | static _PDMode7_Array* _getVisibleSpriteInstances(PDMode7_World *pWorld,...
  function PDMode7_SpriteInstance (line 1644) | static PDMode7_SpriteInstance** getVisibleSpriteInstances(PDMode7_World ...
  function getDisplayScaleStep (line 1651) | static void getDisplayScaleStep(PDMode7_DisplayScale displayScale, int *...
  function PDMode7_DisplayScale (line 1667) | static inline PDMode7_DisplayScale truncatedDisplayScale(PDMode7_Display...
  function PDMode7_Display (line 1677) | static PDMode7_Display* getDisplay(PDMode7_World *world, PDMode7_Display...
  function PDMode7_Vec3 (line 1686) | static PDMode7_Vec3 worldGetSize(PDMode7_World *world)
  function worldGetScale (line 1691) | static float worldGetScale(PDMode7_World *world)
  function worldGetScaleInv (line 1701) | static float worldGetScaleInv(PDMode7_World *world)
  function PDMode7_Display (line 1711) | static PDMode7_Display* worldGetMainDisplay(PDMode7_World *world)
  function PDMode7_Camera (line 1716) | static PDMode7_Camera* worldGetMainCamera(PDMode7_World *world)
  function PDMode7_Color (line 1721) | static PDMode7_Color planeColorAt_public(PDMode7_World *world, PDMode7_P...
  function PDMode7_Color (line 1732) | static PDMode7_Color worldPlaneColorAt(PDMode7_World *world, int x, int y)
  function PDMode7_Color (line 1737) | static PDMode7_Color worldCeilingColorAt(PDMode7_World *world, int x, in...
  function setPlaneTilemap_generic (line 1742) | static void setPlaneTilemap_generic(PDMode7_Plane *plane, PDMode7_Tilema...
  function setPlaneBitmap_generic (line 1758) | static void setPlaneBitmap_generic(PDMode7_Plane *plane, PDMode7_Bitmap ...
  function PDMode7_Bitmap (line 1774) | static PDMode7_Bitmap* getPlaneBitmap(PDMode7_World *world)
  function setPlaneBitmap (line 1779) | static void setPlaneBitmap(PDMode7_World *world, PDMode7_Bitmap *bitmap)
  function setPlaneFillColor (line 1784) | static void setPlaneFillColor(PDMode7_World *world, PDMode7_Color color)
  function PDMode7_Color (line 1789) | static PDMode7_Color getPlaneFillColor(PDMode7_World *world)
  function PDMode7_Bitmap (line 1794) | static PDMode7_Bitmap* getCeilingBitmap(PDMode7_World *world)
  function setCeilingBitmap (line 1799) | static void setCeilingBitmap(PDMode7_World *world, PDMode7_Bitmap *bitmap)
  function setCeilingFillColor (line 1804) | static void setCeilingFillColor(PDMode7_World *world, PDMode7_Color color)
  function PDMode7_Color (line 1809) | static PDMode7_Color getCeilingFillColor(PDMode7_World *world)
  function setPlaneTilemap (line 1814) | static void setPlaneTilemap(PDMode7_World *world, PDMode7_Tilemap *tilemap)
  function PDMode7_Tilemap (line 1819) | static PDMode7_Tilemap* getPlaneTilemap(PDMode7_World *world)
  function setCeilingTilemap (line 1824) | static void setCeilingTilemap(PDMode7_World *world, PDMode7_Tilemap *til...
  function PDMode7_Tilemap (line 1829) | static PDMode7_Tilemap* getCeilingTilemap(PDMode7_World *world)
  function releasePlane (line 1834) | static void releasePlane(PDMode7_Plane *plane)
  function freeWorld (line 1846) | static void freeWorld(PDMode7_World *world)
  function PDMode7_Display (line 1889) | static PDMode7_Display* newDisplay(int x, int y, int width, int height)
  function PDMode7_DisplayScale (line 1927) | static PDMode7_DisplayScale displayGetScale(PDMode7_Display *display)
  function displaySetScale (line 1932) | static void displaySetScale(PDMode7_Display *display, PDMode7_DisplaySca...
  function PDMode7_DitherType (line 1937) | static PDMode7_DitherType displayGetDitherType(PDMode7_Display *display)
  function displaySetDitherType (line 1942) | static void displaySetDitherType(PDMode7_Display *display, PDMode7_Dithe...
  function PDMode7_Camera (line 1950) | static PDMode7_Camera* displayGetCamera(PDMode7_Display *display)
  function displaySetCamera (line 1955) | static void displaySetCamera(PDMode7_Display *display, PDMode7_Camera *c...
  function PDMode7_Background (line 1971) | static PDMode7_Background* displayGetBackground(PDMode7_Display *display)
  function PDMode7_Shader (line 1976) | static PDMode7_Shader* displayGetPlaneShader(PDMode7_Display *display)
  function displaySetPlaneShader (line 1981) | static void displaySetPlaneShader(PDMode7_Display *display, PDMode7_Shad...
  function PDMode7_Shader (line 1994) | static PDMode7_Shader* displayGetCeilingShader(PDMode7_Display *display)
  function displaySetCeilingShader (line 1999) | static void displaySetCeilingShader(PDMode7_Display *display, PDMode7_Sh...
  function displayNeedsClip (line 2012) | static int displayNeedsClip(PDMode7_Display *display)
  function displayRectDidChange (line 2017) | static void displayRectDidChange(PDMode7_Display *display)
  function PDMode7_Rect (line 2034) | static PDMode7_Rect displayGetRect(PDMode7_Display *display)
  function displaySetRect (line 2039) | static void displaySetRect(PDMode7_Display *display, int x, int y, int w...
  function PDMode7_DisplayOrientation (line 2051) | static PDMode7_DisplayOrientation displayGetOrientation(PDMode7_Display ...
  function displaySetOrientation (line 2056) | static void displaySetOrientation(PDMode7_Display *display, PDMode7_Disp...
  function PDMode7_DisplayFlipMode (line 2062) | static PDMode7_DisplayFlipMode displayGetFlipMode(PDMode7_Display *display)
  function displaySetFlipMode (line 2067) | static void displaySetFlipMode(PDMode7_Display *display, PDMode7_Display...
  function displayGetHorizon (line 2073) | static int displayGetHorizon(PDMode7_Display *display)
  function displayPitchForHorizon (line 2079) | static float displayPitchForHorizon(PDMode7_Display *display, float hori...
  function PDMode7_World (line 2087) | static PDMode7_World* displayGetWorld(PDMode7_Display *display)
  function PDMode7_Vec2 (line 2092) | static PDMode7_Vec2 displayConvertPointFromOrientation(PDMode7_Display *...
  function PDMode7_Vec2 (line 2119) | static PDMode7_Vec2 displayConvertPointToOrientation(PDMode7_Display *di...
  function displayGetFramebuffer (line 2146) | static void displayGetFramebuffer(PDMode7_Display *display, LCDBitmap **...
  function removeDisplay (line 2173) | static void removeDisplay(PDMode7_Display *display)
  function LCDBitmap (line 2202) | static LCDBitmap* backgroundGetBitmap(PDMode7_Background *background)
  function _PDMode7_LuaBitmap (line 2207) | static _PDMode7_LuaBitmap* backgroundGetLuaBitmap(PDMode7_Background *ba...
  function backgroundSetBitmap (line 2212) | static void backgroundSetBitmap(PDMode7_Background *background, LCDBitma...
  function backgroundSetBitmap_public (line 2239) | static void backgroundSetBitmap_public(PDMode7_Background *background, L...
  function PDMode7_Vec2 (line 2244) | static PDMode7_Vec2 backgroundGetCenter(PDMode7_Background *background)
  function backgroundSetCenter (line 2249) | static void backgroundSetCenter(PDMode7_Background *background, float x,...
  function backgroundGetRoundingIncrement (line 2255) | static void backgroundGetRoundingIncrement(PDMode7_Background *backgroun...
  function backgroundSetRoundingIncrement (line 2261) | static void backgroundSetRoundingIncrement(PDMode7_Background *backgroun...
  function PDMode7_Vec2 (line 2267) | static PDMode7_Vec2 backgroundGetOffset(PDMode7_Background *background, ...
  function PDMode7_Vec2 (line 2295) | static PDMode7_Vec2 backgroundGetOffset_public(PDMode7_Background *backg...
  function releaseDisplay (line 2302) | static void releaseDisplay(PDMode7_Display *display)
  function freeDisplay (line 2309) | static void freeDisplay(PDMode7_Display *display)
  function PDMode7_Camera (line 2349) | static PDMode7_Camera* newCamera(void)
  function PDMode7_Vec3 (line 2366) | static PDMode7_Vec3 cameraGetPosition(PDMode7_Camera *camera)
  function cameraSetPosition (line 2371) | static void cameraSetPosition(PDMode7_Camera *camera, float x, float y, ...
  function cameraGetAngle (line 2378) | static float cameraGetAngle(PDMode7_Camera *camera)
  function cameraSetAngle (line 2383) | static void cameraSetAngle(PDMode7_Camera *camera, float angle)
  function cameraGetFOV (line 2388) | static float cameraGetFOV(PDMode7_Camera *camera)
  function cameraSetFOV (line 2393) | static void cameraSetFOV(PDMode7_Camera *camera, float fov)
  function cameraGetPitch (line 2398) | static float cameraGetPitch(PDMode7_Camera *camera)
  function cameraSetPitch (line 2403) | static void cameraSetPitch(PDMode7_Camera *camera, float pitch)
  function cameraGetClipDistanceUnits (line 2408) | static int cameraGetClipDistanceUnits(PDMode7_Camera *camera)
  function cameraSetClipDistanceUnits (line 2413) | static void cameraSetClipDistanceUnits(PDMode7_Camera *camera, int units)
  function cameraLookAtPoint (line 2418) | static void cameraLookAtPoint(PDMode7_Camera *camera, PDMode7_Vec3 point)
  function freeCamera (line 2429) | static void freeCamera(PDMode7_Camera *camera)
  function PDMode7_Sprite (line 2437) | static PDMode7_Sprite* newSprite(float width, float height, float depth)
  function spriteSetSize (line 2501) | static void spriteSetSize(PDMode7_Sprite *sprite, float width, float hei...
  function PDMode7_Vec3 (line 2510) | static PDMode7_Vec3 spriteGetSize(PDMode7_Sprite *sprite)
  function PDMode7_Vec3 (line 2515) | static PDMode7_Vec3 spriteGetPosition(PDMode7_Sprite *sprite)
  function spriteSetPosition (line 2520) | static void spriteSetPosition(PDMode7_Sprite *sprite, float x, float y, ...
  function spriteBoundsDidChange (line 2529) | static void spriteBoundsDidChange(PDMode7_Sprite *sprite)
  function spriteGetAngle (line 2538) | static float spriteGetAngle(PDMode7_Sprite *sprite)
  function spriteSetAngle (line 2543) | static void spriteSetAngle(PDMode7_Sprite *sprite, float angle)
  function spriteGetPitch (line 2549) | static float spriteGetPitch(PDMode7_Sprite *sprite)
  function spriteSetPitch (line 2554) | static void spriteSetPitch(PDMode7_Sprite *sprite, float pitch)
  function _spriteSetVisible (line 2559) | static void _spriteSetVisible(PDMode7_SpriteInstance *instance, int flag)
  function spriteSetVisible (line 2564) | static void spriteSetVisible(PDMode7_Sprite *sprite, int flag)
  function _spriteGetVisible (line 2572) | static int _spriteGetVisible(PDMode7_SpriteInstance *instance)
  function _spriteSetVisibilityMode (line 2577) | static void _spriteSetVisibilityMode(PDMode7_SpriteInstance *instance, P...
  function spriteSetVisibilityMode (line 2582) | static void spriteSetVisibilityMode(PDMode7_Sprite *sprite, PDMode7_Spri...
  function PDMode7_SpriteVisibilityMode (line 2590) | static PDMode7_SpriteVisibilityMode _spriteGetVisibilityMode(PDMode7_Spr...
  function _spriteSetImageCenter (line 2595) | static void _spriteSetImageCenter(PDMode7_SpriteInstance *instance, floa...
  function spriteSetImageCenter (line 2601) | static void spriteSetImageCenter(PDMode7_Sprite *sprite, float cx, float...
  function PDMode7_Vec2 (line 2609) | static PDMode7_Vec2 _spriteGetImageCenter(PDMode7_SpriteInstance *instance)
  function _spriteSetFrame (line 2614) | static void _spriteSetFrame(PDMode7_SpriteInstance *instance, unsigned i...
  function spriteSetFrame (line 2619) | static void spriteSetFrame(PDMode7_Sprite *sprite, unsigned int frame)
  function _spriteGetFrame (line 2627) | static unsigned int _spriteGetFrame(PDMode7_SpriteInstance *instance)
  function _spriteSetBillboardSizeBehavior (line 2632) | static void _spriteSetBillboardSizeBehavior(PDMode7_SpriteInstance *inst...
  function spriteSetBillboardSizeBehavior (line 2637) | static void spriteSetBillboardSizeBehavior(PDMode7_Sprite *sprite, PDMod...
  function PDMode7_SpriteBillboardSizeBehavior (line 2645) | static PDMode7_SpriteBillboardSizeBehavior _spriteGetBillboardSizeBehavi...
  function _spriteSetBillboardSize (line 2650) | static void _spriteSetBillboardSize(PDMode7_SpriteInstance *instance, fl...
  function spriteSetBillboardSize (line 2656) | static void spriteSetBillboardSize(PDMode7_Sprite *sprite, float width, ...
  function PDMode7_Vec2 (line 2664) | static PDMode7_Vec2 _spriteGetBillboardSize(PDMode7_SpriteInstance *inst...
  function _spriteSetRoundingIncrement (line 2669) | static void _spriteSetRoundingIncrement(PDMode7_SpriteInstance *instance...
  function spriteSetRoundingIncrement (line 2675) | static void spriteSetRoundingIncrement(PDMode7_Sprite *sprite, unsigned ...
  function _spriteGetRoundingIncrement (line 2683) | static void _spriteGetRoundingIncrement(PDMode7_SpriteInstance *instance...
  function _spriteSetAlignment (line 2689) | static void _spriteSetAlignment(PDMode7_SpriteInstance *instance, PDMode...
  function spriteSetAlignment (line 2695) | static void spriteSetAlignment(PDMode7_Sprite *sprite, PDMode7_SpriteAli...
  function _spriteGetAlignment (line 2703) | static void _spriteGetAlignment(PDMode7_SpriteInstance *instance, PDMode...
  function _spriteSetDrawCallback (line 2709) | static void _spriteSetDrawCallback(PDMode7_SpriteInstance *instance, _PD...
  function _spriteSetDrawFunction_c (line 2718) | static void _spriteSetDrawFunction_c(PDMode7_SpriteInstance *instance, P...
  function spriteSetDrawFunction_c (line 2723) | static void spriteSetDrawFunction_c(PDMode7_Sprite *sprite, PDMode7_Spri...
  function _spriteSetBitmapTable (line 2731) | static void _spriteSetBitmapTable(PDMode7_SpriteInstance *instance, LCDB...
  function _spriteSetBitmapTable_public (line 2745) | static void _spriteSetBitmapTable_public(PDMode7_SpriteInstance *instanc...
  function spriteSetBitmapTable (line 2750) | static void spriteSetBitmapTable(PDMode7_Sprite *sprite, LCDBitmapTable ...
  function spriteSetBitmapTable_public (line 2758) | static void spriteSetBitmapTable_public(PDMode7_Sprite *sprite, LCDBitma...
  function LCDBitmapTable (line 2763) | static LCDBitmapTable* _spriteGetBitmapTable(PDMode7_SpriteInstance *ins...
  function _PDMode7_LuaBitmapTable (line 2768) | static _PDMode7_LuaBitmapTable* _spriteGetLuaBitmapTable(PDMode7_SpriteI...
  function PDMode7_SpriteInstance (line 2773) | static PDMode7_SpriteInstance* spriteGetInstance(PDMode7_Sprite *sprite,...
  function PDMode7_SpriteInstance (line 2797) | static PDMode7_SpriteInstance** spriteGetInstances(PDMode7_Sprite *sprit...
  function _spriteSetUserData (line 2803) | static void _spriteSetUserData(PDMode7_SpriteInstance *instance, void *u...
  function spriteSetUserData (line 2808) | static void spriteSetUserData(PDMode7_Sprite *sprite, void *userdata)
  function LCDBitmap (line 2821) | static LCDBitmap* _spriteGetBitmap(PDMode7_SpriteInstance *instance)
  function PDMode7_Rect (line 2826) | static PDMode7_Rect _spriteGetDisplayRect(PDMode7_SpriteInstance *instance)
  function _spriteIsVisibleOnDisplay (line 2831) | static int _spriteIsVisibleOnDisplay(PDMode7_SpriteInstance *instance)
  function PDMode7_World (line 2848) | static PDMode7_World* spriteGetWorld(PDMode7_Sprite *sprite)
  function removeSprite (line 2853) | static void removeSprite(PDMode7_Sprite *sprite)
  function freeSprite (line 2880) | static void freeSprite(PDMode7_Sprite *sprite)
  function _spriteDataSourceGetLength (line 2910) | static unsigned int _spriteDataSourceGetLength(PDMode7_SpriteDataSource ...
  function _spriteDataSourceSetLength (line 2919) | static void _spriteDataSourceSetLength(PDMode7_SpriteDataSource *dataSou...
  function spriteDataSourceSetLength (line 2927) | static void spriteDataSourceSetLength(PDMode7_Sprite *sprite, unsigned i...
  function spriteGetTableIndex (line 2936) | static unsigned int spriteGetTableIndex(PDMode7_SpriteInstance *instance...
  function _spriteDataSourceGetLayout (line 2966) | static void _spriteDataSourceGetLayout(PDMode7_SpriteDataSource *dataSou...
  function _spriteDataSourceSetLayout (line 2974) | static void _spriteDataSourceSetLayout(PDMode7_SpriteDataSource *dataSou...
  function spriteDataSourceSetLayout (line 2985) | static void spriteDataSourceSetLayout(PDMode7_Sprite *sprite, PDMode7_Sp...
  function _spriteDataSourceGetMinimumWidth (line 2994) | static int _spriteDataSourceGetMinimumWidth(PDMode7_SpriteDataSource *da...
  function _spriteDataSourceSetMinimumWidth (line 2999) | static void _spriteDataSourceSetMinimumWidth(PDMode7_SpriteDataSource *d...
  function spriteDataSourceSetMinimumWidth (line 3004) | static void spriteDataSourceSetMinimumWidth(PDMode7_Sprite *sprite, int ...
  function _spriteDataSourceGetMaximumWidth (line 3013) | static int _spriteDataSourceGetMaximumWidth(PDMode7_SpriteDataSource *da...
  function _spriteDataSourceSetMaximumWidth (line 3018) | static void _spriteDataSourceSetMaximumWidth(PDMode7_SpriteDataSource *d...
  function spriteDataSourceSetMaximumWidth (line 3023) | static void spriteDataSourceSetMaximumWidth(PDMode7_Sprite *sprite, int ...
  function PDMode7_SpriteDataSource (line 3032) | static PDMode7_SpriteDataSource* _spriteGetDataSource(PDMode7_SpriteInst...
  function PDMode7_Sprite (line 3037) | static PDMode7_Sprite* spriteInstanceGetSprite(PDMode7_SpriteInstance *i...
  function PDMode7_Shader (line 3042) | static PDMode7_Shader newShader(PDMode7_ShaderType type, void *object)
  function releaseShader (line 3051) | static void releaseShader(PDMode7_Shader *shader)
  function PDMode7_LinearShader (line 3059) | static PDMode7_LinearShader* newLinearShader(void)
  function linearShaderProgress (line 3074) | static inline float linearShaderProgress(PDMode7_LinearShader *linear, f...
  function linearShaderGetMinimumDistance (line 3079) | static float linearShaderGetMinimumDistance(PDMode7_LinearShader *linear)
  function linearShaderSetMinimumDistance (line 3084) | static void linearShaderSetMinimumDistance(PDMode7_LinearShader *linear,...
  function linearShaderGetMaximumDistance (line 3089) | static float linearShaderGetMaximumDistance(PDMode7_LinearShader *linear)
  function linearShaderSetMaximumDistance (line 3094) | static void linearShaderSetMaximumDistance(PDMode7_LinearShader *linear,...
  function PDMode7_Color (line 3099) | static PDMode7_Color linearShaderGetColor(PDMode7_LinearShader *linear)
  function linearShaderSetColor (line 3104) | static void linearShaderSetColor(PDMode7_LinearShader *linear, PDMode7_C...
  function linearShaderGetInverted (line 3109) | static int linearShaderGetInverted(PDMode7_LinearShader *linear)
  function linearShaderSetInverted (line 3114) | static void linearShaderSetInverted(PDMode7_LinearShader *linear, int in...
  function freeLinearShader (line 3119) | static void freeLinearShader(PDMode7_LinearShader *linear)
  function PDMode7_RadialShader (line 3124) | static PDMode7_RadialShader* newRadialShader(void)
  function radialShaderProgress (line 3141) | static inline float radialShaderProgress(PDMode7_RadialShader *radial, f...
  function radialShaderGetMinimumDistance (line 3149) | static float radialShaderGetMinimumDistance(PDMode7_RadialShader *radial)
  function radialShaderSetMinimumDistance (line 3154) | static void radialShaderSetMinimumDistance(PDMode7_RadialShader *radial,...
  function radialShaderGetMaximumDistance (line 3159) | static float radialShaderGetMaximumDistance(PDMode7_RadialShader *radial)
  function radialShaderSetMaximumDistance (line 3164) | static void radialShaderSetMaximumDistance(PDMode7_RadialShader *radial,...
  function PDMode7_Color (line 3169) | static PDMode7_Color radialShaderGetColor(PDMode7_RadialShader *radial)
  function radialShaderSetColor (line 3174) | static void radialShaderSetColor(PDMode7_RadialShader *radial, PDMode7_C...
  function PDMode7_Vec2 (line 3179) | static PDMode7_Vec2 radialShaderGetOffset(PDMode7_RadialShader *radial)
  function radialShaderSetOffset (line 3184) | static void radialShaderSetOffset(PDMode7_RadialShader *radial, float dx...
  function radialShaderGetInverted (line 3189) | static int radialShaderGetInverted(PDMode7_RadialShader *radial)
  function radialShaderSetInverted (line 3194) | static void radialShaderSetInverted(PDMode7_RadialShader *radial, int in...
  function freeRadialShader (line 3199) | static void freeRadialShader(PDMode7_RadialShader *radial)
  function tileScaleIsValid (line 3204) | static int tileScaleIsValid(int scale)
  function PDMode7_Tilemap (line 3209) | static PDMode7_Tilemap* newTilemap(PDMode7_World *world, int tileWidth, ...
  function tilemapSetBitmapAtIndex (line 3246) | static void tilemapSetBitmapAtIndex(PDMode7_Tilemap *tilemap, PDMode7_Bi...
  function tilemapSetBitmapAtPosition (line 3275) | static void tilemapSetBitmapAtPosition(PDMode7_Tilemap *tilemap, PDMode7...
  function PDMode7_Bitmap (line 3280) | static PDMode7_Bitmap* tilemapGetBitmapAtPosition(PDMode7_Tilemap *tilem...
  function tilemapSetBitmapAtRange (line 3291) | static void tilemapSetBitmapAtRange(PDMode7_Tilemap *tilemap, PDMode7_Bi...
  function tilemapSetBitmapAtIndexes (line 3311) | static void tilemapSetBitmapAtIndexes(PDMode7_Tilemap *tilemap, PDMode7_...
  function tilemapSetFillBitmap (line 3319) | static void tilemapSetFillBitmap(PDMode7_Tilemap *tilemap, PDMode7_Bitma...
  function PDMode7_Bitmap (line 3343) | static PDMode7_Bitmap* tilemapGetFillBitmap(PDMode7_Tilemap *tilemap)
  function freeTilemap (line 3348) | static void freeTilemap(PDMode7_Tilemap *tilemap)
  function PDMode7_Rect (line 3369) | static inline PDMode7_Rect newRect(int x, int y, int width, int height)
  function rectIntersect (line 3379) | static int rectIntersect(PDMode7_Rect rect1, PDMode7_Rect rect2)
  function rectAdjust (line 3387) | static void rectAdjust(PDMode7_Rect rect, int width, int height, PDMode7...
  function PDMode7_Vec3 (line 3413) | static inline PDMode7_Vec3 newVec3(float x, float y, float z)
  function PDMode7_Vec2 (line 3422) | static inline PDMode7_Vec2 vec2FromVec3(PDMode7_Vec3 vec)
  function PDMode7_Vec2 (line 3430) | static inline PDMode7_Vec2 newVec2(float x, float y)
  function PDMode7_Vec2ui (line 3438) | static inline PDMode7_Vec2ui newVec2ui(unsigned int x, unsigned int y)
  function PDMode7_Vec3 (line 3446) | static PDMode7_Vec3 vec3_subtract(PDMode7_Vec3 v1, PDMode7_Vec3 v2)
  function vec3_dot (line 3451) | static float vec3_dot(PDMode7_Vec3 v1, PDMode7_Vec3 v2)
  function PDMode7_Color (line 3456) | static inline PDMode7_Color newGrayscaleColor(uint8_t gray, uint8_t alpha)
  function _PDMode7_Grid (line 3465) | static _PDMode7_Grid* newGrid(float width, float height, float depth, in...
  function gridIndexAtX (line 3488) | static int gridIndexAtX(_PDMode7_Grid *grid, float x)
  function gridIndexAtY (line 3493) | static int gridIndexAtY(_PDMode7_Grid *grid, float y)
  function gridIndexAtZ (line 3498) | static int gridIndexAtZ(_PDMode7_Grid *grid, float z)
  function gridIndexFor (line 3503) | static int gridIndexFor(_PDMode7_Grid *grid, int widthIndex, int heightI...
  function _PDMode7_Array (line 3508) | static _PDMode7_Array* gridGetSpritesAtPoint(_PDMode7_Grid *grid, PDMode...
  function gridUpdateSprite (line 3548) | static void gridUpdateSprite(_PDMode7_Grid *grid, PDMode7_Sprite *sprite)
  function gridRemoveSprite (line 3580) | static void gridRemoveSprite(_PDMode7_Grid *grid, PDMode7_Sprite *sprite)
  function freeGrid (line 3595) | static void freeGrid(_PDMode7_Grid *grid)
  function _PDMode7_Array (line 3608) | static _PDMode7_Array* newArray(void)
  function arrayPush (line 3618) | static void arrayPush(_PDMode7_Array *array, void *item)
  function arrayRemove (line 3625) | static void arrayRemove(_PDMode7_Array *array, int index)
  function arrayIndexOf (line 3640) | static int arrayIndexOf(_PDMode7_Array *array, void *item)
  function arrayClear (line 3653) | static void arrayClear(_PDMode7_Array *array)
  function freeArray (line 3663) | static void freeArray(_PDMode7_Array *array)
  function _PDMode7_LuaArray (line 3672) | static _PDMode7_LuaArray* newLuaArray(_PDMode7_Array *array, kPDMode7Lua...
  function freeLuaArray (line 3681) | static void freeLuaArray(_PDMode7_LuaArray *luaArray)
  function _PDMode7_LuaBitmapTable (line 3690) | static _PDMode7_LuaBitmapTable* newLuaBitmapTable(const char *filename)
  function freeLuaBitmapTable (line 3703) | static void freeLuaBitmapTable(_PDMode7_LuaBitmapTable *bitmapTable)
  function _PDMode7_LuaBitmap (line 3709) | static _PDMode7_LuaBitmap* newLuaBitmap(const char *filename)
  function freeLuaBitmap (line 3722) | static void freeLuaBitmap(_PDMode7_LuaBitmap *bitmap)
  function _PDMode7_Callback (line 3728) | static _PDMode7_Callback* newCallback_c(void *function)
  function _PDMode7_Callback (line 3737) | static _PDMode7_Callback* newCallback_lua(const char *functionName)
  function freeCallback (line 3747) | static void freeCallback(_PDMode7_Callback *callback)
  function _PDMode7_GCRef (line 3756) | static _PDMode7_GCRef* newGCRef(LuaUDObject *luaRef)
  function freeGCRef (line 3764) | static void freeGCRef(_PDMode7_GCRef *reference)
  function _PDMode7_GC (line 3769) | static _PDMode7_GC* newGC(void)
  function _PDMode7_GCRef (line 3776) | static _PDMode7_GCRef* GC_get(_PDMode7_GC *gc, LuaUDObject *luaRef, int ...
  function _PDMode7_GCRef (line 3798) | static _PDMode7_GCRef* GC_retain(LuaUDObject *luaRef)
  function GC_release (line 3811) | static void GC_release(LuaUDObject *luaRef)
  function _PDMode7_Pool (line 3827) | static _PDMode7_Pool* newPool(void)
  function poolRealloc (line 3835) | static void poolRealloc(_PDMode7_Pool *pool, size_t size)
  function poolRealloc_public (line 3844) | static void poolRealloc_public(size_t size)
  function poolClear (line 3849) | static void poolClear(_PDMode7_Pool *pool)
  function poolClear_public (line 3854) | static void poolClear_public(void)
  function log2_int (line 3859) | static int log2_int(uint32_t n)
  type pgm_buffer (line 3870) | typedef struct {
  function pgm_getc (line 3876) | static int pgm_getc(pgm_buffer *buffer)
  function pgm_scan_int (line 3887) | static int pgm_scan_int(pgm_buffer *buffer, int *n)
  function pgm_skip_comments (line 3916) | static void pgm_skip_comments(pgm_buffer *buffer)
  function PDMode7_Bitmap (line 3939) | static PDMode7_Bitmap* newBaseBitmap(void)
  function PDMode7_Bitmap (line 3955) | static PDMode7_Bitmap* newBitmap(int width, int height, PDMode7_Color bg...
  function PDMode7_Bitmap (line 3987) | static PDMode7_Bitmap* copyBitmap(PDMode7_Bitmap *src)
  function PDMode7_Bitmap (line 4021) | static PDMode7_Bitmap* loadPGM(const char *filename)
  function bitmapGetSize (line 4078) | static void bitmapGetSize(PDMode7_Bitmap *bitmap, int *width, int *height)
  function PDMode7_Color (line 4084) | static PDMode7_Color bitmapColorAt(PDMode7_Bitmap *bitmap, int x, int y)
  function PDMode7_Bitmap (line 4103) | static PDMode7_Bitmap* bitmapGetMask(PDMode7_Bitmap *bitmap)
  function bitmapSetMask (line 4108) | static void bitmapSetMask(PDMode7_Bitmap *bitmap, PDMode7_Bitmap *mask)
  function bitmapDrawInto (line 4144) | static void bitmapDrawInto(PDMode7_Bitmap *bitmap, PDMode7_Bitmap *targe...
  function bitmapAddLayer (line 4193) | static void bitmapAddLayer(PDMode7_Bitmap *bitmap, PDMode7_BitmapLayer *...
  function _PDMode7_Array (line 4214) | static _PDMode7_Array* _bitmapGetLayers(PDMode7_Bitmap *bitmap)
  function PDMode7_BitmapLayer (line 4219) | static PDMode7_BitmapLayer** bitmapGetLayers(PDMode7_Bitmap *bitmap, int...
  function bitmapRemoveAllLayers (line 4226) | static void bitmapRemoveAllLayers(PDMode7_Bitmap *bitmap)
  function releaseBitmap (line 4235) | static void releaseBitmap(PDMode7_Bitmap *bitmap)
  function freeBitmap (line 4243) | static void freeBitmap(PDMode7_Bitmap *bitmap)
  function PDMode7_BitmapLayer (line 4273) | static PDMode7_BitmapLayer* newBitmapLayer(PDMode7_Bitmap *bitmap)
  function bitmapLayerRestore (line 4299) | static void bitmapLayerRestore(PDMode7_BitmapLayer *layer)
  function bitmapLayerDraw (line 4317) | static void bitmapLayerDraw(PDMode7_BitmapLayer *layer)
  function PDMode7_Bitmap (line 4379) | static PDMode7_Bitmap* bitmapLayerGetBitmap(PDMode7_BitmapLayer *layer)
  function bitmapLayerSetBitmap (line 4384) | static void bitmapLayerSetBitmap(PDMode7_BitmapLayer *layer, PDMode7_Bit...
  function bitmapLayerGetPosition (line 4417) | static void bitmapLayerGetPosition(PDMode7_BitmapLayer *layer, int *x, i...
  function bitmapLayerSetPosition (line 4423) | static void bitmapLayerSetPosition(PDMode7_BitmapLayer *layer, int x, in...
  function bitmapLayerSetVisible (line 4434) | static void bitmapLayerSetVisible(PDMode7_BitmapLayer *layer, int visible)
  function bitmapLayerIsVisible (line 4444) | static int bitmapLayerIsVisible(PDMode7_BitmapLayer *layer)
  function bitmapLayerInvalidate (line 4449) | static void bitmapLayerInvalidate(PDMode7_BitmapLayer *layer)
  function bitmapLayerIntersect (line 4456) | static int bitmapLayerIntersect(PDMode7_BitmapLayer *layer)
  function bitmapLayerDidChange (line 4478) | static void bitmapLayerDidChange(PDMode7_BitmapLayer *layer)
  function _removeBitmapLayer (line 4527) | static void _removeBitmapLayer(PDMode7_BitmapLayer *layer, int restore)
  function removeBitmapLayer (line 4557) | static void removeBitmapLayer(PDMode7_BitmapLayer *layer)
  function freeBitmapLayer (line 4562) | static void freeBitmapLayer(PDMode7_BitmapLayer *layer)
  function degToRad (line 4579) | static inline float degToRad(float degrees)
  function roundToIncrement (line 4584) | static float roundToIncrement(float number, unsigned int step)
  function PDMode7_Color (line 4611) | static PDMode7_Color lua_getColor(lua_State *L, int *i)
  function lua_pushColor (line 4623) | static void lua_pushColor(lua_State *L, PDMode7_Color color, int *len)
  function PDMode7_Shader (line 4630) | static PDMode7_Shader* lua_getShader(lua_State *L, int i)
  function lua_pushShader (line 4645) | static void lua_pushShader(lua_State *L, PDMode7_Shader *shader)
  function lua_poolRealloc (line 4661) | static int lua_poolRealloc(lua_State *L)
  function lua_poolClear (line 4668) | static int lua_poolClear(lua_State *L)
  function lua_newWorld (line 4674) | static int lua_newWorld(lua_State *L)
  function lua_newTilemap (line 4703) | static int lua_newTilemap(lua_State *L)
  function lua_getPlaneBitmap (line 4713) | static int lua_getPlaneBitmap(lua_State *L)
  function lua_setPlaneBitmap (line 4721) | static int lua_setPlaneBitmap(lua_State *L)
  function lua_getCeilingBitmap (line 4729) | static int lua_getCeilingBitmap(lua_State *L)
  function lua_setCeilingBitmap (line 4737) | static int lua_setCeilingBitmap(lua_State *L)
  function lua_worldGetMainDisplay (line 4745) | static int lua_worldGetMainDisplay(lua_State *L)
  function lua_addDisplay (line 4753) | static int lua_addDisplay(lua_State *L)
  function lua_getPlaneFillColor (line 4762) | static int lua_getPlaneFillColor(lua_State *L)
  function lua_setPlaneFillColor (line 4770) | static int lua_setPlaneFillColor(lua_State *L)
  function lua_getCeilingFillColor (line 4778) | static int lua_getCeilingFillColor(lua_State *L)
  function lua_setCeilingFillColor (line 4786) | static int lua_setCeilingFillColor(lua_State *L)
  function lua_planeColorAt (line 4794) | static int lua_planeColorAt(lua_State *L)
  function lua_ceilingColorAt (line 4804) | static int lua_ceilingColorAt(lua_State *L)
  function lua_setPlaneTilemap (line 4814) | static int lua_setPlaneTilemap(lua_State *L)
  function lua_getPlaneTilemap (line 4822) | static int lua_getPlaneTilemap(lua_State *L)
  function lua_setCeilingTilemap (line 4829) | static int lua_setCeilingTilemap(lua_State *L)
  function lua_getCeilingTilemap (line 4837) | static int lua_getCeilingTilemap(lua_State *L)
  function lua_worldUpdate (line 4844) | static int lua_worldUpdate(lua_State *L)
  function lua_worldDraw (line 4851) | static int lua_worldDraw(lua_State *L)
  function lua_addSprite (line 4859) | static int lua_addSprite(lua_State *L)
  function lua_getSprites (line 4867) | static int lua_getSprites(lua_State *L)
  function lua_getVisibleSpriteInstances (line 4876) | static int lua_getVisibleSpriteInstances(lua_State *L)
  function lua_displayToPlanePoint (line 4886) | static int lua_displayToPlanePoint(lua_State *L)
  function lua_worldToDisplayPoint (line 4899) | static int lua_worldToDisplayPoint(lua_State *L)
  function lua_displayMultiplierForScanlineAt (line 4913) | static int lua_displayMultiplierForScanlineAt(lua_State *L)
  function lua_bitmapToPlanePoint (line 4927) | static int lua_bitmapToPlanePoint(lua_State *L)
  function lua_planeToBitmapPoint (line 4938) | static int lua_planeToBitmapPoint(lua_State *L)
  function lua_freeWorld (line 4949) | static int lua_freeWorld(lua_State *L)
  function lua_newDisplay (line 4989) | static int lua_newDisplay(lua_State *L)
  function lua_displayGetCamera (line 5000) | static int lua_displayGetCamera(lua_State *L)
  function lua_displaySetCamera (line 5008) | static int lua_displaySetCamera(lua_State *L)
  function lua_displayGetScale (line 5016) | static int lua_displayGetScale(lua_State *L)
  function lua_displaySetScale (line 5024) | static int lua_displaySetScale(lua_State *L)
  function lua_displayGetDitherType (line 5032) | static int lua_displayGetDitherType(lua_State *L)
  function lua_displaySetDitherType (line 5040) | static int lua_displaySetDitherType(lua_State *L)
  function lua_displaySetPlaneShader (line 5048) | static int lua_displaySetPlaneShader(lua_State *L)
  function lua_displayGetPlaneShader (line 5056) | static int lua_displayGetPlaneShader(lua_State *L)
  function lua_displaySetCeilingShader (line 5064) | static int lua_displaySetCeilingShader(lua_State *L)
  function lua_displayGetCeilingShader (line 5072) | static int lua_displayGetCeilingShader(lua_State *L)
  function lua_displayGetHorizon (line 5080) | static int lua_displayGetHorizon(lua_State *L)
  function lua_displayPitchForHorizon (line 5088) | static int lua_displayPitchForHorizon(lua_State *L)
  function lua_displayGetWorld (line 5097) | static int lua_displayGetWorld(lua_State *L)
  function lua_displayGetBackground (line 5105) | static int lua_displayGetBackground(lua_State *L)
  function lua_displayGetRect (line 5113) | static int lua_displayGetRect(lua_State *L)
  function lua_displaySetRect (line 5124) | static int lua_displaySetRect(lua_State *L)
  function lua_displayGetOrientation (line 5135) | static int lua_displayGetOrientation(lua_State *L)
  function lua_displaySetOrientation (line 5143) | static int lua_displaySetOrientation(lua_State *L)
  function lua_displayGetFlipMode (line 5151) | static int lua_displayGetFlipMode(lua_State *L)
  function lua_displaySetFlipMode (line 5159) | static int lua_displaySetFlipMode(lua_State *L)
  function lua_displayConvertPointFromOrientation (line 5167) | static int lua_displayConvertPointFromOrientation(lua_State *L)
  function lua_displayConvertPointToOrientation (line 5178) | static int lua_displayConvertPointToOrientation(lua_State *L)
  function lua_removeDisplay (line 5189) | static int lua_removeDisplay(lua_State *L)
  function lua_freeDisplay (line 5196) | static int lua_freeDisplay(lua_State *L)
  function lua_newLinearShader (line 5237) | static int lua_newLinearShader(lua_State *L)
  function lua_linearShaderGetMinimumDistance (line 5245) | static int lua_linearShaderGetMinimumDistance(lua_State *L)
  function lua_linearShaderSetMinimumDistance (line 5252) | static int lua_linearShaderSetMinimumDistance(lua_State *L)
  function lua_linearShaderGetMaximumDistance (line 5260) | static int lua_linearShaderGetMaximumDistance(lua_State *L)
  function lua_linearShaderSetMaximumDistance (line 5267) | static int lua_linearShaderSetMaximumDistance(lua_State *L)
  function lua_linearShaderSetColor (line 5275) | static int lua_linearShaderSetColor(lua_State *L)
  function lua_linearShaderGetColor (line 5283) | static int lua_linearShaderGetColor(lua_State *L)
  function lua_linearShaderGetInverted (line 5291) | static int lua_linearShaderGetInverted(lua_State *L)
  function lua_linearShaderSetInverted (line 5298) | static int lua_linearShaderSetInverted(lua_State *L)
  function lua_freeLinearShader (line 5305) | static int lua_freeLinearShader(lua_State *L)
  function lua_newRadialShader (line 5326) | static int lua_newRadialShader(lua_State *L)
  function lua_radialShaderGetMinimumDistance (line 5334) | static int lua_radialShaderGetMinimumDistance(lua_State *L)
  function lua_radialShaderSetMinimumDistance (line 5341) | static int lua_radialShaderSetMinimumDistance(lua_State *L)
  function lua_radialShaderGetMaximumDistance (line 5349) | static int lua_radialShaderGetMaximumDistance(lua_State *L)
  function lua_radialShaderSetMaximumDistance (line 5356) | static int lua_radialShaderSetMaximumDistance(lua_State *L)
  function lua_radialShaderGetOffset (line 5364) | static int lua_radialShaderGetOffset(lua_State *L)
  function lua_radialShaderSetOffset (line 5373) | static int lua_radialShaderSetOffset(lua_State *L)
  function lua_radialShaderSetColor (line 5382) | static int lua_radialShaderSetColor(lua_State *L)
  function lua_radialShaderGetColor (line 5390) | static int lua_radialShaderGetColor(lua_State *L)
  function lua_radialShaderGetInverted (line 5398) | static int lua_radialShaderGetInverted(lua_State *L)
  function lua_radialShaderSetInverted (line 5405) | static int lua_radialShaderSetInverted(lua_State *L)
  function lua_freeRadialShader (line 5412) | static int lua_freeRadialShader(lua_State *L)
  function lua_newCamera (line 5435) | static int lua_newCamera(lua_State *L)
  function lua_cameraGetPosition (line 5442) | static int lua_cameraGetPosition(lua_State *L)
  function lua_cameraSetPosition (line 5452) | static int lua_cameraSetPosition(lua_State *L)
  function lua_cameraGetAngle (line 5462) | static int lua_cameraGetAngle(lua_State *L)
  function lua_cameraSetAngle (line 5470) | static int lua_cameraSetAngle(lua_State *L)
  function lua_cameraGetPitch (line 5478) | static int lua_cameraGetPitch(lua_State *L)
  function lua_cameraSetPitch (line 5486) | static int lua_cameraSetPitch(lua_State *L)
  function lua_cameraGetFOV (line 5494) | static int lua_cameraGetFOV(lua_State *L)
  function lua_cameraSetFOV (line 5502) | static int lua_cameraSetFOV(lua_State *L)
  function lua_cameraGetClipDistanceUnits (line 5510) | static int lua_cameraGetClipDistanceUnits(lua_State *L)
  function lua_cameraSetClipDistanceUnits (line 5518) | static int lua_cameraSetClipDistanceUnits(lua_State *L)
  function lua_cameraLookAtPoint (line 5526) | static int lua_cameraLookAtPoint(lua_State *L)
  function lua_freeCamera (line 5537) | static int lua_freeCamera(lua_State *L)
  function lua_newImage (line 5561) | static int lua_newImage(lua_State *L)
  function lua_imageGetPDImage (line 5575) | static int lua_imageGetPDImage(lua_State *L)
  function lua_freeImage (line 5582) | static int lua_freeImage(lua_State *L)
  function lua_newImageTable (line 5596) | static int lua_newImageTable(lua_State *L)
  function lua_freeImageTable (line 5610) | static int lua_freeImageTable(lua_State *L)
  function lua_arrayGet (line 5623) | static int lua_arrayGet(lua_State *L)
  function lua_arraySize (line 5650) | static int lua_arraySize(lua_State *L)
  function lua_freeArray (line 5657) | static int lua_freeArray(lua_State *L)
  function lua_newSprite (line 5671) | static int lua_newSprite(lua_State *L)
  function lua_spriteGetPosition (line 5681) | static int lua_spriteGetPosition(lua_State *L)
  function lua_spriteSetPosition (line 5691) | static int lua_spriteSetPosition(lua_State *L)
  function lua_spriteGetAngle (line 5701) | static int lua_spriteGetAngle(lua_State *L)
  function lua_spriteSetAngle (line 5709) | static int lua_spriteSetAngle(lua_State *L)
  function lua_spriteGetPitch (line 5717) | static int lua_spriteGetPitch(lua_State *L)
  function lua_spriteSetPitch (line 5725) | static int lua_spriteSetPitch(lua_State *L)
  function lua_spriteGetSize (line 5733) | static int lua_spriteGetSize(lua_State *L)
  function lua_spriteSetSize (line 5743) | static int lua_spriteSetSize(lua_State *L)
  function lua_spriteSetBitmapTable (line 5753) | static int lua_spriteSetBitmapTable(lua_State *L)
  function lua_spriteInstanceGetBitmapTable (line 5769) | static int lua_spriteInstanceGetBitmapTable(lua_State *L)
  function lua_spriteInstanceSetBitmapTable (line 5777) | static int lua_spriteInstanceSetBitmapTable(lua_State *L)
  function lua_spriteSetVisible (line 5793) | static int lua_spriteSetVisible(lua_State *L)
  function lua_spriteInstanceGetVisible (line 5801) | static int lua_spriteInstanceGetVisible(lua_State *L)
  function lua_spriteInstanceSetVisible (line 5809) | static int lua_spriteInstanceSetVisible(lua_State *L)
  function lua_spriteSetVisibilityMode (line 5817) | static int lua_spriteSetVisibilityMode(lua_State *L)
  function lua_spriteInstanceGetVisibilityMode (line 5825) | static int lua_spriteInstanceGetVisibilityMode(lua_State *L)
  function lua_spriteInstanceSetVisibilityMode (line 5833) | static int lua_spriteInstanceSetVisibilityMode(lua_State *L)
  function lua_spriteSetImageCenter (line 5841) | static int lua_spriteSetImageCenter(lua_State *L)
  function lua_spriteInstanceGetImageCenter (line 5850) | static int lua_spriteInstanceGetImageCenter(lua_State *L)
  function lua_spriteInstanceSetImageCenter (line 5859) | static int lua_spriteInstanceSetImageCenter(lua_State *L)
  function lua_spriteSetFrame (line 5868) | static int lua_spriteSetFrame(lua_State *L)
  function lua_spriteInstanceGetFrame (line 5876) | static int lua_spriteInstanceGetFrame(lua_State *L)
  function lua_spriteInstanceSetFrame (line 5884) | static int lua_spriteInstanceSetFrame(lua_State *L)
  function lua_spriteSetBillboardSizeBehavior (line 5892) | static int lua_spriteSetBillboardSizeBehavior(lua_State *L)
  function lua_spriteInstanceGetBillboardSizeBehavior (line 5900) | static int lua_spriteInstanceGetBillboardSizeBehavior(lua_State *L)
  function lua_spriteInstanceSetBillboardSizeBehavior (line 5908) | static int lua_spriteInstanceSetBillboardSizeBehavior(lua_State *L)
  function lua_spriteSetBillboardSize (line 5916) | static int lua_spriteSetBillboardSize(lua_State *L)
  function lua_spriteInstanceGetBillboardSize (line 5925) | static int lua_spriteInstanceGetBillboardSize(lua_State *L)
  function lua_spriteInstanceSetBillboardSize (line 5934) | static int lua_spriteInstanceSetBillboardSize(lua_State *L)
  function lua_spriteSetRoundingIncrement (line 5943) | static int lua_spriteSetRoundingIncrement(lua_State *L)
  function lua_spriteInstanceGetRoundingIncrement (line 5952) | static int lua_spriteInstanceGetRoundingIncrement(lua_State *L)
  function lua_spriteInstanceSetRoundingIncrement (line 5962) | static int lua_spriteInstanceSetRoundingIncrement(lua_State *L)
  function lua_spriteSetAlignment (line 5971) | static int lua_spriteSetAlignment(lua_State *L)
  function lua_spriteInstanceGetAlignment (line 5980) | static int lua_spriteInstanceGetAlignment(lua_State *L)
  function lua_spriteInstanceSetAlignment (line 5990) | static int lua_spriteInstanceSetAlignment(lua_State *L)
  function lua_spriteGetInstance (line 5999) | static int lua_spriteGetInstance(lua_State *L)
  function lua_spriteGetInstances (line 6008) | static int lua_spriteGetInstances(lua_State *L)
  function lua_spriteGetDataSource (line 6025) | static int lua_spriteGetDataSource(lua_State *L)
  function lua_spriteInstanceGetDataSource (line 6033) | static int lua_spriteInstanceGetDataSource(lua_State *L)
  function lua_spriteDataSourceSetLength (line 6041) | static int lua_spriteDataSourceSetLength(lua_State *L)
  function lua_spriteInstanceDataSourceGetLength (line 6051) | static int lua_spriteInstanceDataSourceGetLength(lua_State *L)
  function lua_spriteInstanceDataSourceSetLength (line 6060) | static int lua_spriteInstanceDataSourceSetLength(lua_State *L)
  function lua_spriteDataSourceSetMaximumWidth (line 6069) | static int lua_spriteDataSourceSetMaximumWidth(lua_State *L)
  function lua_spriteInstanceDataSourceGetMaximumWidth (line 6078) | static int lua_spriteInstanceDataSourceGetMaximumWidth(lua_State *L)
  function lua_spriteInstanceDataSourceSetMaximumWidth (line 6086) | static int lua_spriteInstanceDataSourceSetMaximumWidth(lua_State *L)
  function lua_spriteDataSourceSetMinimumWidth (line 6094) | static int lua_spriteDataSourceSetMinimumWidth(lua_State *L)
  function lua_spriteInstanceDataSourceGetMinimumWidth (line 6103) | static int lua_spriteInstanceDataSourceGetMinimumWidth(lua_State *L)
  function lua_spriteInstanceDataSourceSetMinimumWidth (line 6111) | static int lua_spriteInstanceDataSourceSetMinimumWidth(lua_State *L)
  function lua_spriteInstanceDataSourceGetLayout (line 6119) | static int lua_spriteInstanceDataSourceGetLayout(lua_State *L)
  function lua_spriteInstanceDataSourceSetLayout (line 6131) | static int lua_spriteInstanceDataSourceSetLayout(lua_State *L)
  function lua_spriteDataSourceSetLayout (line 6142) | static int lua_spriteDataSourceSetLayout(lua_State *L)
  function lua_spriteSetDrawFunctionName (line 6154) | static int lua_spriteSetDrawFunctionName(lua_State *L)
  function lua_spriteInstanceSetDrawFunctionName (line 6169) | static int lua_spriteInstanceSetDrawFunctionName(lua_State *L)
  function lua_spriteGetWorld (line 6177) | static int lua_spriteGetWorld(lua_State *L)
  function lua_removeSprite (line 6185) | static int lua_removeSprite(lua_State *L)
  function lua_freeSprite (line 6192) | static int lua_freeSprite(lua_State *L)
  function lua_drawSpriteFunction (line 6199) | static int lua_drawSpriteFunction(lua_State *L)
  function lua_spriteCallDrawCallback (line 6206) | static void lua_spriteCallDrawCallback(PDMode7_SpriteInstance *instance)
  function lua_spriteInstanceGetSprite (line 6261) | static int lua_spriteInstanceGetSprite(lua_State *L)
  function lua_spriteInstanceGetBitmap (line 6269) | static int lua_spriteInstanceGetBitmap(lua_State *L)
  function lua_spriteInstanceGetDisplayRect (line 6277) | static int lua_spriteInstanceGetDisplayRect(lua_State *L)
  function lua_spriteInstanceIsVisibleOnDisplay (line 6288) | static int lua_spriteInstanceIsVisibleOnDisplay(lua_State *L)
  function lua_bitmapNew (line 6336) | static int lua_bitmapNew(lua_State *L)
  function lua_loadPGM (line 6348) | static int lua_loadPGM(lua_State *L)
  function lua_copyBitmap (line 6357) | static int lua_copyBitmap(lua_State *L)
  function lua_bitmapGetSize (line 6367) | static int lua_bitmapGetSize(lua_State *L)
  function lua_bitmapColorAt (line 6375) | static int lua_bitmapColorAt(lua_State *L)
  function lua_bitmapGetMask (line 6386) | static int lua_bitmapGetMask(lua_State *L)
  function lua_bitmapSetMask (line 6394) | static int lua_bitmapSetMask(lua_State *L)
  function lua_bitmapAddLayer (line 6402) | static int lua_bitmapAddLayer(lua_State *L)
  function lua_bitmapDrawInto (line 6410) | static int lua_bitmapDrawInto(lua_State *L)
  function lua_bitmapGetLayers (line 6420) | static int lua_bitmapGetLayers(lua_State *L)
  function lua_bitmapRemoveAllLayers (line 6429) | static int lua_bitmapRemoveAllLayers(lua_State *L)
  function lua_freeBitmap (line 6436) | static int lua_freeBitmap(lua_State *L)
  function lua_newBitmapLayer (line 6459) | static int lua_newBitmapLayer(lua_State *L)
  function lua_bitmapLayerGetPosition (line 6467) | static int lua_bitmapLayerGetPosition(lua_State *L)
  function lua_bitmapLayerSetPosition (line 6477) | static int lua_bitmapLayerSetPosition(lua_State *L)
  function lua_bitmapLayerGetBitmap (line 6486) | static int lua_bitmapLayerGetBitmap(lua_State *L)
  function lua_bitmapLayerSetBitmap (line 6494) | static int lua_bitmapLayerSetBitmap(lua_State *L)
  function lua_bitmapLayerIsVisible (line 6502) | static int lua_bitmapLayerIsVisible(lua_State *L)
  function lua_bitmapLayerSetVisible (line 6510) | static int lua_bitmapLayerSetVisible(lua_State *L)
  function lua_bitmapLayerInvalidate (line 6518) | static int lua_bitmapLayerInvalidate(lua_State *L)
  function lua_removeBitmapLayer (line 6525) | static int lua_removeBitmapLayer(lua_State *L)
  function lua_freeBitmapLayer (line 6532) | static int lua_freeBitmapLayer(lua_State *L)
  function lua_backgroundGetBitmap (line 6553) | static int lua_backgroundGetBitmap(lua_State *L)
  function lua_backgroundSetBitmap (line 6561) | static int lua_backgroundSetBitmap(lua_State *L)
  function lua_backgroundGetRoundingIncrement (line 6577) | static int lua_backgroundGetRoundingIncrement(lua_State *L)
  function lua_backgroundSetRoundingIncrement (line 6587) | static int lua_backgroundSetRoundingIncrement(lua_State *L)
  function lua_backgroundGetOffset (line 6596) | static int lua_backgroundGetOffset(lua_State *L)
  function lua_backgroundGetCenter (line 6605) | static int lua_backgroundGetCenter(lua_State *L)
  function lua_backgroundSetCenter (line 6614) | static int lua_backgroundSetCenter(lua_State *L)
  function lua_tilemapSetBitmapAtPosition (line 6634) | static int lua_tilemapSetBitmapAtPosition(lua_State *L)
  function lua_tilemapSetBitmapAtRange (line 6644) | static int lua_tilemapSetBitmapAtRange(lua_State *L)
  function lua_tilemapGetBitmapAtPosition (line 6656) | static int lua_tilemapGetBitmapAtPosition(lua_State *L)
  function lua_tilemapSetFillBitmap (line 6666) | static int lua_tilemapSetFillBitmap(lua_State *L)
  function lua_tilemapGetFillBitmap (line 6674) | static int lua_tilemapGetFillBitmap(lua_State *L)
  function lua_freeTilemap (line 6682) | static int lua_freeTilemap(lua_State *L)
  function PDMode7_init (line 6699) | void PDMode7_init(PlaydateAPI *pd, int enableLua)

FILE: src/pd_mode7.h
  type PDMode7_Vec2 (line 26) | typedef struct PDMode7_Vec2 {
  type PDMode7_Vec3 (line 30) | typedef struct PDMode7_Vec3 {
  type PDMode7_Rect (line 34) | typedef struct PDMode7_Rect {
  type PDMode7_ColorSpace (line 38) | typedef enum {
  type PDMode7_Color (line 42) | typedef struct PDMode7_Color {
  type PDMode7_DisplayScale (line 48) | typedef enum {
  type PDMode7_DisplayOrientation (line 56) | typedef enum {
  type PDMode7_DisplayFlipMode (line 63) | typedef enum {
  type PDMode7_DitherType (line 70) | typedef enum {
  type PDMode7_SpriteDataSourceKey (line 76) | typedef enum {
  type PDMode7_SpriteAlignment (line 83) | typedef enum {
  type PDMode7_SpriteBillboardSizeBehavior (line 89) | typedef enum {
  type PDMode7_SpriteVisibilityMode (line 94) | typedef enum {
  type PDMode7_WorldConfiguration (line 99) | typedef struct PDMode7_WorldConfiguration {
  type PDMode7_World (line 106) | typedef struct PDMode7_World PDMode7_World;
  type PDMode7_Bitmap (line 107) | typedef struct PDMode7_Bitmap PDMode7_Bitmap;
  type PDMode7_BitmapLayer (line 108) | typedef struct PDMode7_BitmapLayer PDMode7_BitmapLayer;
  type PDMode7_Background (line 109) | typedef struct PDMode7_Background PDMode7_Background;
  type PDMode7_Display (line 110) | typedef struct PDMode7_Display PDMode7_Display;
  type PDMode7_Camera (line 111) | typedef struct PDMode7_Camera PDMode7_Camera;
  type PDMode7_SpriteDataSource (line 112) | typedef struct PDMode7_SpriteDataSource PDMode7_SpriteDataSource;
  type PDMode7_Sprite (line 113) | typedef struct PDMode7_Sprite PDMode7_Sprite;
  type PDMode7_SpriteInstance (line 114) | typedef struct PDMode7_SpriteInstance PDMode7_SpriteInstance;
  type PDMode7_Shader (line 115) | typedef struct PDMode7_Shader PDMode7_Shader;
  type PDMode7_LinearShader (line 116) | typedef struct PDMode7_LinearShader PDMode7_LinearShader;
  type PDMode7_RadialShader (line 117) | typedef struct PDMode7_RadialShader PDMode7_RadialShader;
  type PDMode7_Tilemap (line 118) | typedef struct PDMode7_Tilemap PDMode7_Tilemap;
  type PDMode7_Pool_API (line 122) | typedef struct PDMode7_Pool_API {
  type PDMode7_World_API (line 127) | typedef struct PDMode7_World_API {
  type PDMode7_Camera_API (line 163) | typedef struct PDMode7_Camera_API {
  type PDMode7_Background_API (line 179) | typedef struct PDMode7_Background_API {
  type PDMode7_Display_API (line 189) | typedef struct PDMode7_Display_API {
  type PDMode7_LinearShader_API (line 217) | typedef struct PDMode7_LinearShader_API {
  type PDMode7_RadialShader_API (line 230) | typedef struct PDMode7_RadialShader_API {
  type PDMode7_Shader_API (line 245) | typedef struct PDMode7_Shader_API {
  type PDMode7_Tilemap_API (line 250) | typedef struct PDMode7_Tilemap_API {
  type PDMode7_SpriteDataSource_API (line 260) | typedef struct PDMode7_SpriteDataSource_API {
  type PDMode7_Sprite_API (line 267) | typedef struct PDMode7_Sprite_API {
  type PDMode7_SpriteInstanceDataSource_API (line 295) | typedef struct PDMode7_SpriteInstanceDataSource_API {
  type PDMode7_SpriteInstance_API (line 306) | typedef struct PDMode7_SpriteInstance_API {
  type PDMode7_Rect_API (line 336) | typedef struct PDMode7_Rect_API {
  type PDMode7_Vec2_API (line 340) | typedef struct PDMode7_Vec2_API {
  type PDMode7_Vec3_API (line 344) | typedef struct PDMode7_Vec3_API {
  type PDMode7_Color_API (line 348) | typedef struct PDMode7_Color_API {
  type PDMode7_BitmapLayer_API (line 352) | typedef struct PDMode7_BitmapLayer_API {
  type PDMode7_Bitmap_API (line 365) | typedef struct PDMode7_Bitmap_API {
  type PDMode7_API (line 381) | typedef struct PDMode7_API {

FILE: tools/resize/resize.py
  function quote_arg (line 14) | def quote_arg(str):
Condensed preview — 27 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,095K chars).
[
  {
    "path": ".gitignore",
    "chars": 146,
    "preview": "/.vscode/\n/build/\n/cmake_build/\n/*.xcodeproj\n/*.pdx\n/Source/pdex.*\n/blender/output/\n/blender/*.blend1\n/assets/full-car\nl"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 1164,
    "preview": "cmake_minimum_required(VERSION 3.14)\nset(CMAKE_C_STANDARD 11)\n\nset(ENVSDK $ENV{PLAYDATE_SDK_PATH})\n\nif (NOT ${ENVSDK} ST"
  },
  {
    "path": "LICENSE",
    "chars": 1076,
    "preview": "MIT License\n\nCopyright (c) 2023, Risolvi Productions\n\nPermission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "Makefile",
    "chars": 918,
    "preview": "HEAP_SIZE      = 8388208\nSTACK_SIZE     = 61800\n\nPRODUCT = Mode7.pdx\n\n# Locate the SDK\nSDK = ${PLAYDATE_SDK_PATH}\nifeq ("
  },
  {
    "path": "README.md",
    "chars": 1015,
    "preview": "## Playdate Mode7\n\nPlaydate Mode7 is a library designed to recreate the graphics mode known as \"Mode 7\".\n\n![demo](assets"
  },
  {
    "path": "Source/images/track-0.pgm",
    "chars": 3747680,
    "preview": "P5\n2048 2048\n255\n???????????????????????????????????????????????????????????????????????????????????????????????????????"
  },
  {
    "path": "Source/main.lua",
    "chars": 4683,
    "preview": "import \"CoreLibs/graphics\"\nimport \"mode7\"\n\nplaydate.display.setRefreshRate(0)\n\n-- Set the pool size\nmode7.pool.realloc(5"
  },
  {
    "path": "Source/mode7.lua",
    "chars": 6188,
    "preview": "import \"CoreLibs/object\"\n\nlocal lib = {}\n\n-- Color class\n\nclass('Color', {gray=255,alpha=255,space=0}, lib).extends()\n\nf"
  },
  {
    "path": "Source/pdxinfo",
    "chars": 123,
    "preview": "name=Mode7\nauthor=Risolvi Productions\ndescription=Mode7\nbundleID=com.risolvipro.mode7\nimagePath=\nversion=1.0\nbuildNumber"
  },
  {
    "path": "VERSION.txt",
    "chars": 5,
    "preview": "1.5.1"
  },
  {
    "path": "blender/export.py",
    "chars": 2003,
    "preview": "import bpy\nimport os\nimport shutil\nimport shlex\nimport math\nimport imbuf\n\n# Config BEGIN\n\nname = \"suzanne\"\n\nscale_max = "
  },
  {
    "path": "lua/stub.lua",
    "chars": 49591,
    "preview": "mode7 = {}\n\n---@class mode7.world\nmode7.world = {}\n\n---@class mode7.world.configuration\n---@field width integer\n---@fiel"
  },
  {
    "path": "platforms/macos/VERSION.txt",
    "chars": 5,
    "preview": "1.4.1"
  },
  {
    "path": "platforms/windows/VERSION.txt",
    "chars": 5,
    "preview": "1.4.1"
  },
  {
    "path": "src/c_example/main.c",
    "chars": 6396,
    "preview": "//\n//  main.h\n//  PDMode7\n//\n//  Created by Matteo D'Ignazio on 18/11/23.\n//\n\n#include <stdio.h>\n#include <stdlib.h>\n\n#i"
  },
  {
    "path": "src/c_lua/main.c",
    "chars": 441,
    "preview": "//\n//  main.h\n//  PDMode7\n//\n//  Created by Matteo D'Ignazio on 18/11/23.\n//\n\n#include <stdio.h>\n#include <stdlib.h>\n\n#i"
  },
  {
    "path": "src/pd_mode7.c",
    "chars": 227643,
    "preview": "//\n//  pd_mode7.c\n//  PDMode7\n//\n//  Created by Matteo D'Ignazio on 18/11/23.\n//\n\n#include \"pd_mode7.h\"\n#ifdef _WINDLL\n#"
  },
  {
    "path": "src/pd_mode7.h",
    "chars": 19304,
    "preview": "//\n//  pd_mode7.h\n//  PDMode7\n//\n//  Created by Matteo D'Ignazio on 18/11/23.\n//\n\n#ifndef pd_mode7_h\n#define pd_mode7_h\n"
  },
  {
    "path": "tools/resize/resize.py",
    "chars": 2630,
    "preview": "import os\nimport shlex\nimport shutil\nimport argparse\nimport re\n\nparser = argparse.ArgumentParser(description=\"Mode7 Resi"
  }
]

// ... and 8 more files (download for full content)

About this extraction

This page contains the full source code of the risolvipro/playdate-mode7 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 27 files (3.9 MB), approximately 1.0M tokens, and a symbol index with 594 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!