import { Signer, ContractFactory, BigNumberish, Overrides } from "ethers"; import type { Provider, TransactionRequest } from "@ethersproject/providers"; import type { PromiseOrValue } from "../common"; import type { CreditManagerFactoryBase, CreditManagerFactoryBaseInterface, CreditManagerOptsStruct } from "../CreditManagerFactoryBase"; declare type CreditManagerFactoryBaseConstructorParams = [signer?: Signer] | ConstructorParameters; export declare class CreditManagerFactoryBase__factory extends ContractFactory { constructor(...args: CreditManagerFactoryBaseConstructorParams); deploy(_pool: PromiseOrValue, opts: CreditManagerOptsStruct, salt: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue; }): Promise; getDeployTransaction(_pool: PromiseOrValue, opts: CreditManagerOptsStruct, salt: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue; }): TransactionRequest; attach(address: string): CreditManagerFactoryBase; connect(signer: Signer): CreditManagerFactoryBase__factory; static readonly contractName: "CreditManagerFactoryBase"; readonly contractName: "CreditManagerFactoryBase"; static readonly bytecode = "0x60e06040523480156200001157600080fd5b506040516201609f3803806201609f83398101604081905262000034916200063c565b826001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000999190620007de565b620000a433620004b7565b6001600160a01b038116608081905260408051630873769560e01b815290516308737695916004808201926020929091908290030181865afa158015620000ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001159190620007de565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000153573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001799190620007de565b6001600160a01b0390811660a052841660c0525060405183906200019d9062000525565b6001600160a01b039091168152602001604051809103906000f080158015620001ca573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039290921691821790556060830151608084015160a0850151604051620002079062000533565b6001600160a01b0394851681529284166020840152921660408201529015156060820152608001604051809103906000f0801580156200024b573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055604051600090620002806020820162000541565b601f1982820381018352601f909101166040819052600154600254620002bc926001600160a01b03928316929190911690879060200162000805565b60408051601f1981840301815290829052620002dc929160200162000916565b60408051601f19818403018152919052905060006200036582848151602092830120604080517fff00000000000000000000000000000000000000000000000000000000000000818601523060601b6001600160601b03191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b600154604051634fafc35760e11b81526001600160a01b038084166004830152929350911690639f5f86ae90602401600060405180830381600087803b158015620003af57600080fd5b505af1158015620003c4573d6000803e3d6000fd5b50505050620003da82846200050760201b60201c565b600380546001600160a01b0319166001600160a01b0383811691821790925560015460408051630304b08760e61b81529051919093169263c12c21c09160048083019260209291908290030181865afa1580156200043c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004629190620007de565b6001600160a01b031614620004ac5760405162461bcd60e51b815260206004820152600c60248201526b496e636f727265637420434d60a01b604482015260640160405180910390fd5b505050505062000937565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183516020850134f59050803b6200052057600080fd5b505050565b6160af806200184e83390190565b616f4980620078fd83390190565b617859806200e84683390190565b6001600160a01b03811681146200056557600080fd5b50565b805162000575816200054f565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620005b557620005b56200057a565b60405290565b604080519081016001600160401b0381118282101715620005b557620005b56200057a565b604051601f8201601f191681016001600160401b03811182821017156200060b576200060b6200057a565b604052919050565b80516001600160801b03811681146200057557600080fd5b805180151581146200057557600080fd5b6000806000606084860312156200065257600080fd5b83516200065f816200054f565b602085810151919450906001600160401b03808211156200067f57600080fd5b9086019060c082890312156200069457600080fd5b6200069e62000590565b620006a98362000613565b8152620006b884840162000613565b8482015260408084015183811115620006d057600080fd5b8401601f81018b13620006e257600080fd5b805184811115620006f757620006f76200057a565b62000707878260051b01620005e0565b818152878101955060069190911b82018701908c8211156200072857600080fd5b918701915b818310156200078a5783838e031215620007475760008081fd5b62000751620005bb565b83516200075e816200054f565b81528389015161ffff81168114620007765760008081fd5b818a0152865294870194918301916200072d565b84840152506200079f90506060850162000568565b6060830152620007b26080850162000568565b6080830152620007c560a085016200062b565b60a0830152979097015195989697509495945050505050565b600060208284031215620007f157600080fd5b8151620007fe816200054f565b9392505050565b600060018060a01b0380861683526020818616818501526040606081860152610120850160018060801b038088511660608801528084890151166080880152508187015160c060a0880152818151808452610140890191508583019350600092505b808310156200089857835180518816835286015161ffff168683015292850192600192909201919084019062000867565b5060608901516001600160a01b0390811660c08a015260808a01511660e089015260a0909801511515610100909701969096525094979650505050505050565b6000815160005b81811015620008fb5760208185018101518683015201620008df565b818111156200090b576000828601525b509290920192915050565b60006200092f620009288386620008d8565b84620008d8565b949350505050565b60805160a05160c051610ec5620009896000396000818160ff0152610acc0152600081816102cc01526107d6015260008181610150015281816103cf0152818161070c01526108450152610ec56000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063805abe6a11610097578063ebf0c71711610066578063ebf0c717146102c7578063f2fde38b146102ee578063f4747c5814610301578063f9aa028a1461031457600080fd5b8063805abe6a146101ec5780638da5cb5b146101f457806394ca2cb514610212578063c12c21c0146102a757600080fd5b8063318d0d10116100d3578063318d0d10146101925780633e0b1a231461019c5780634ef501ac146101a4578063715018a6146101e457600080fd5b806316f0115b146100fa5780632954018c1461014b5780632f7a188114610172575b600080fd5b6101217f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101217f000000000000000000000000000000000000000000000000000000000000000081565b6002546101219073ffffffffffffffffffffffffffffffffffffffff1681565b61019a610334565b005b61019a610346565b6101b76101b2366004610ba5565b610356565b6040805173ffffffffffffffffffffffffffffffffffffffff938416815292909116602083015201610142565b61019a61039c565b61019a6103ae565b60005473ffffffffffffffffffffffffffffffffffffffff16610121565b610121610220366004610c65565b8151602092830120604080517fff00000000000000000000000000000000000000000000000000000000000000818601523060601b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b6001546101219073ffffffffffffffffffffffffffffffffffffffff1681565b6101217f000000000000000000000000000000000000000000000000000000000000000081565b61019a6102fc366004610d3f565b61051b565b61019a61030f366004610d63565b6105d7565b6003546101219073ffffffffffffffffffffffffffffffffffffffff1681565b61033c610687565b610344610708565b565b61034e610687565b61033c610841565b6004818154811061036657600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff91821692501682565b6103a4610687565b6103446000610b30565b6103b6610687565b3073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c9190610e43565b73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610e43565b73ffffffffffffffffffffffffffffffffffffffff161415610518576040517fbdebb83f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33ff5b610523610687565b73ffffffffffffffffffffffffffffffffffffffff81166105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105d481610b30565b50565b6105df610687565b805160005b8181101561068257600483828151811061060057610600610e60565b602090810291909101810151825460018082018555600094855293839020825160029092020180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416178255929093015192840180549092169216919091179055016105e4565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c2565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107999190610e43565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192509082169063f2fde38b90602401600060405180830381600087803b15801561082657600080fd5b505af115801561083a573d6000803e3d6000fd5b5050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c513c9bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d29190610e43565b60045490915060005b81811015610a00576003546004805473ffffffffffffffffffffffffffffffffffffffff90921691637bccacee91908490811061091a5761091a610e60565b906000526020600020906002020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004848154811061095f5761095f610e60565b600091825260209091206002909102015460405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b505050508060010190506108db565b506001546040517fe26b2f6300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529083169063e26b2f6390602401600060405180830381600087803b158015610a6e57600080fd5b505af1158015610a82573d6000803e3d6000fd5b50506001546040517fcf33d95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f0000000000000000000000000000000000000000000000000000000000000000909116925063cf33d9559150602401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610bb757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610c1057610c10610bbe565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c5d57610c5d610bbe565b604052919050565b60008060408385031215610c7857600080fd5b823567ffffffffffffffff80821115610c9057600080fd5b818501915085601f830112610ca457600080fd5b8135602082821115610cb857610cb8610bbe565b610ce8817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601610c16565b92508183528781838601011115610cfe57600080fd5b8181850182850137600091830181019190915290969401359450505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105d457600080fd5b600060208284031215610d5157600080fd5b8135610d5c81610d1d565b9392505050565b60006020808385031215610d7657600080fd5b823567ffffffffffffffff80821115610d8e57600080fd5b818501915085601f830112610da257600080fd5b813581811115610db457610db4610bbe565b610dc2848260051b01610c16565b818152848101925060069190911b830184019087821115610de257600080fd5b928401925b81841015610e385760408489031215610e005760008081fd5b610e08610bed565b8435610e1381610d1d565b815284860135610e2281610d1d565b8187015283526040939093019291840191610de7565b979650505050505050565b600060208284031215610e5557600080fd5b8151610d5c81610d1d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e3f79cf148fb30274d3520057d0c4921a8d0bd0e8f85dbe0b52c54beff81094064736f6c634300080a00336101606040526000805463ff0000001916630c0000001790553480156200002557600080fd5b50604051620060af380380620060af833981016040819052620000489162000539565b806001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad919062000539565b6000805460ff191690556001600160a01b038116620000df57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000144919062000539565b6001600160a01b03166080816001600160a01b031681525050506000816001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c5919062000539565b6001600160a01b03831661010081905260e081905260408051632495a59960e01b81529051929350600092632495a599916004808201926020929091908290030181865afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000242919062000539565b6001600160a01b03811660c05290506200025c8162000474565b816001600160a01b0316634c252f916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000539565b6001600160a01b0316610120816001600160a01b031681525050816001600160a01b03166377532ed96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000340919062000539565b6001600160a01b0316610140816001600160a01b031681525050816001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000539565b6001600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316639068a8686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d919062000539565b6001600160a01b031660a0525050600380546001600160a01b03191633179055506200058a565b6001600160a01b03811660009081526006602052604090205415620004ac57604051632e5a5c7760e01b815260040160405180910390fd5b61010060055410620004d157604051633f02862960e11b815260040160405180910390fd5b600580546001600160a01b0383166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290620005178362000560565b91905055505050565b6001600160a01b03811681146200053657600080fd5b50565b6000602082840312156200054c57600080fd5b8151620005598162000520565b9392505050565b60006000198214156200058357634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c05160e0516101005161012051610140516159f8620006b76000396000818161088d01528181613d930152613e480152600081816105980152613cfb01526000818161041001528181610f8e01528181610ff2015281816128300152818161298b01528181612ccd01528181612e0e01528181612e7f01528181612f49015281816130800152818161312f01526142130152600061060d01526000818161069801528181610e5901528181610eea01528181610f3701528181610f6d015281816110760152818161239201528181612de601528181613058015281816135a501528181613a4e01528181613bf801526146060152600081816108c70152818161111801526127f3015260008181610840015281816112dd01526125bf01526159f86000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80638456cb59116101de578063b3da9e6b1161010f578063e75538c7116100ad578063f9aa028a1161007c578063f9aa028a1461096e578063fdd576451461098e578063fe47cde7146109c4578063ff687543146109e457600080fd5b8063e75538c714610922578063e958b70414610935578063eb99c2bf14610948578063f67c5bd01461095b57600080fd5b8063db7ceb80116100e9578063db7ceb80146108c2578063dc2b21c1146108e9578063dc9e0faa146108fc578063e1998cf91461090f57600080fd5b8063b3da9e6b14610875578063c5e10eef14610888578063d48bfca7146108af57600080fd5b80639af1d35a1161017c578063a366f49611610156578063a366f49614610815578063a460e10414610828578063a50cf2c81461083b578063a70bc5421461086257600080fd5b80639af1d35a146107a05780639f5f86ae146107f95780639fd12b771461080c57600080fd5b80638fe3f93f116101b85780638fe3f93f14610754578063944ac59f1461076757806394cf073a1461077a578063953730181461078d57600080fd5b80638456cb591461071957806384edaa42146107215780638991b2f11461073457600080fd5b80634f0e0ef3116102b8578063693ce7f5116102565780636f307dc3116102305780636f307dc31461069357806378327438146106ba578063830aa745146106e05780638345f26e146106f357600080fd5b8063693ce7f51461064d5780636ce4074a146106605780636e98e5e41461068057600080fd5b806354fd4d501161029257806354fd4d5014610600578063570a7af2146106085780635c975abb1461062f578063654a9eda1461063a57600080fd5b80634f0e0ef3146105935780635063524a146105ba57806351e3f160146105ed57600080fd5b80632f7a1881116103255780633e8297ca116102ff5780633e8297ca1461054f5780633f4ba83a1461056f578063458936f51461057757806346fb371d1461058057600080fd5b80632f7a1881146104d65780633192195c146104fe57806338975bc41461052c57600080fd5b8063172c48c711610361578063172c48c7146104325780632362a2d8146104745780632630c12f1461049557806329df0b93146104c157600080fd5b8063055ee9b5146103885780630d8f9cee146103e857806316f0115b1461040b575b600080fd5b6103be6103963660046151e3565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6103fb6103f6366004615200565b610a1a565b60405190151581526020016103df565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b610445610440366004615239565b610bd1565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835261ffff9091166020830152016103df565b61048761048236600461526f565b610be9565b6040519081526020016103df565b6001546a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff166103be565b6104d46104cf3660046151e3565b6111ac565b005b6000546103be90640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61051161050c3660046151e3565b611242565b604080519384526020840192909252908201526060016103df565b6103fb61053a3660046151e3565b600c6020526000908152604090205460ff1681565b61048761055d3660046151e3565b60096020526000908152604090205481565b6104d46112af565b61048760055481565b6104d461058e3660046152f1565b61139d565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6105cd6105c8366004615342565b611608565b6040805194855260208501939093529183015260608201526080016103df565b6104d46105fb366004615200565b6117f7565b61048760d281565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff166103fb565b6104d461064836600461537d565b6119a5565b6104d461065b3660046151e3565b611e60565b61067361066e36600461549c565b611f00565b6040516103df91906155b7565b6104d461068e366004615200565b6121e6565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6106cd6106c83660046151e3565b61238e565b60405161ffff90911681526020016103df565b6104d46106ee3660046152f1565b612467565b600054610707906301000000900460ff1681565b60405160ff90911681526020016103df565b6104d4612591565b6104d461072f3660046151e3565b61267d565b6104876107423660046151e3565b60086020526000908152604090205481565b6103be6107623660046155ca565b61271d565b6104d4610775366004615601565b612a49565b610487610788366004615666565b612b76565b6104d461079b3660046151e3565b613273565b6001546040805161ffff808416825262010000840481166020830152640100000000840481169282019290925266010000000000008304821660608201526801000000000000000090920416608082015260a0016103df565b6104d46108073660046151e3565b61339f565b61048760075481565b6104d4610823366004615239565b61345f565b6104d46108363660046151e3565b6134b5565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6104d46108703660046156a8565b613552565b6000546103fb9062010000900460ff1681565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6104d46108bd3660046151e3565b6136d8565b6103be7f000000000000000000000000000000000000000000000000000000000000000081565b6104d46108f73660046156dd565b613732565b6104d461090a3660046151e3565b6137be565b6104d461091d366004615200565b613864565b610445610930366004615239565b613a3b565b6103be6109433660046151e3565b613ac0565b6103fb610956366004615700565b613b24565b6104876109693660046151e3565b613bf4565b6003546103be9073ffffffffffffffffffffffffffffffffffffffff1681565b6103be61099c3660046151e3565b600b6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600d546103be9073ffffffffffffffffffffffffffffffffffffffff1681565b6103be6109f23660046151e3565b600a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6000805460ff161580610a35575060005462010000900460ff165b610aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610af35750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15610b2a576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615610b6c576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610ba28383613c7d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b600080610be06001841b613a3b565b91509150915091565b60008054610100900460ff1615610c2c576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790819055640100000000900473ffffffffffffffffffffffffffffffffffffffff163314610cb2576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1615610d8e5773ffffffffffffffffffffffffffffffffffffffff85166000908152600c602052604090205460ff168015610d1e57506001876003811115610d0157610d0161572e565b1480610d1e57506002876003811115610d1c57610d1c61572e565b145b15610d2c5760039650610d8e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b6000610d9989613ac0565b73ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590915080808080610df486611242565b509094509050610e068c8e8684611608565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152939b5093985090955093506000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec6919061575d565b9050610ed288876157a5565b610edd9060016157a5565b811115610f1d57610f18877f00000000000000000000000000000000000000000000000000000000000000008d60018c8b870303038d613cf1565b610f67565b610f6773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168d8960018a8d0186900301613f43565b610fb5877f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000896000613cf1565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ca9505e490606401600060405180830381600087803b15801561104b57600080fd5b505af115801561105f573d6000803e3d6000fd5b5050505050505050600184111561109e5761109e837f00000000000000000000000000000000000000000000000000000000000000008d876000613cf1565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020548619166110d384898884613fde565b6040517f89b77b3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f000000000000000000000000000000000000000000000000000000000000000016906389b77b3e90602401600060405180830381600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550949c9b505050505050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156111ff5750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15611236576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123f816140b8565b50565b60008060008060006112538661412a565b919650925090508161126582876157bd565b61126f91906157fa565b6001549094506127109061ffff166112878787615835565b61129191906157bd565b61129b91906157fa565b6112a590856157a5565b9496939550505050565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015611339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135d919061584c565b611393576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139b6142a8565b565b60005460ff1615806113b7575060005462010000900460ff165b61141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b600054610100900460ff161561145f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff908116908416148015906114e15750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b80156115055750600d5473ffffffffffffffffffffffffffffffffffffffff163314155b80611524575073ffffffffffffffffffffffffffffffffffffffff8316155b1561155b576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61156482613bf4565b61159a576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115a585613ac0565b90506115b5838583856000614325565b6115d9576115c883858360006001614325565b506115d7838583856001614325565b505b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b6001546000908190819081906127109061ffff166116268888615835565b61163091906157bd565b61163a91906157fa565b61164490866157a5565b9350600187600381111561165a5761165a61572e565b1480611677575060028760038111156116755761167561572e565b145b80611693575060038760038111156116915761169161572e565b145b156117e657600060018860038111156116ae576116ae61572e565b141561171457600154612710906116d190640100000000900461ffff168b6157bd565b6116db91906157fa565b600154909150612710906116f99062010000900461ffff168b6157bd565b61170391906157fa565b61170d90866157a5565b94506117b0565b60028860038111156117285761172861572e565b141561177b576001546127109061174f9068010000000000000000900461ffff168b6157bd565b61175991906157fa565b600154909150612710906116f9906601000000000000900461ffff168b6157bd565b506001548890612710906117999062010000900461ffff16836157bd565b6117a391906157fa565b6117ad90866157a5565b94505b848111156117c55760018582030393506117c9565b8094505b8581106117da5785850392506117e0565b84860391505b506117ec565b84840391505b945094509450949050565b60005460ff161580611811575060005462010000900460ff165b611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156118ca5750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15611901576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615611943576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905561197982826144c6565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156119f85750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b15611a2f576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615611a71576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611aa785846144c6565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600091908616906370a0823190602401602060405180830381865afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b919061575d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918616906370a0823190602401602060405180830381865afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd1919061575d565b60015490915060009081906a0100000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16635cecbd0e611c0f8689615835565b8a611c1a8988615835565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152600481019390935273ffffffffffffffffffffffffffffffffffffffff918216602484015260448301528a1660648201526084016040805180830381865afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba9190615869565b9150915060018411611cd257611cd08989613c7d565b505b611cdb8761238e565b611ce99061ffff16826157bd565b9050611cf48861238e565b611d029061ffff16836157bd565b9150818110611d1d57611d14896140b8565b505050506115d9565b73ffffffffffffffffffffffffffffffffffffffff891660009081526009602052604081205483611d5a6b033b2e3c9fd0803ce8000000856157bd565b611d6491906157fa565b611d7a906b033b2e3c9fd0803ce8000000615835565b611d8491906157a5565b60015490915061271090611daf906b033b2e3c9fd0803ce80000009062010000900461ffff166157bd565b611db991906157fa565b8111611dfa5773ffffffffffffffffffffffffffffffffffffffff8a166000908152600960205260409020819055611df08a6140b8565b50505050506115d9565b611e038a614576565b50505073ffffffffffffffffffffffffffffffffffffffff871660009081526009602052604090206001905550505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314611eb1576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6060611f0e60005460ff1690565b1580611f22575060005462010000900460ff165b611f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b600054610100900460ff1615611fca576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100178155338152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff90811690841614158061203f575073ffffffffffffffffffffffffffffffffffffffff8316155b1561209557600d5473ffffffffffffffffffffffffffffffffffffffff163314612095576040517ffc1a554300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120a085613ac0565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167faed1eb34af6acd8c1e3911fb2ebb875a66324b03957886bd002227b17f52ab0360405160405180910390a36040517f1cff79cd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690631cff79cd90612150908790879060040161588d565b6000604051808303816000875af115801561216f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121b591908101906158bc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612237576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216156122a75773ffffffffffffffffffffffffffffffffffffffff8281166000908152600a6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169183169190911790555b73ffffffffffffffffffffffffffffffffffffffff8116156123175773ffffffffffffffffffffffffffffffffffffffff8181166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169184169190911790555b73ffffffffffffffffffffffffffffffffffffffff811673cccccccccccccccccccccccccccccccccccccccc141561238a57600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124125750506001547e01000000000000000000000000000000000000000000000000000000000000900461ffff1690565b600061241d83613bf4565b905080612456576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61245f81613a3b565b949350505050565b61246f6148ea565b600054610100900460ff16156124b1576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790819055640100000000900473ffffffffffffffffffffffffffffffffffffffff163314612537576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61254183836144c6565b61256373ffffffffffffffffffffffffffffffffffffffff8316858584613f43565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f919061584c565b612675576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61139b614957565b60035473ffffffffffffffffffffffffffffffffffffffff1633146126ce576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006127276148ea565b600054610100900460ff1615612769576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790819055640100000000900473ffffffffffffffffffffffffffffffffffffffff1633146127ef576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166321d18456857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bd919061575d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925260248201526044016020604051808303816000875af1158015612918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293c919061592a565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80831660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b1580156129d157600080fd5b505af11580156129e5573d6000803e3d6000fd5b505050506129f383826149b2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081206001905580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690559392505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314612a9a576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff92831668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff9484166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff96851664010000000002969096167fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff97851662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931694909816939093171794909416949094179190911716919091179055565b6000612b806148ea565b600054610100900460ff1615612bc2576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790819055640100000000900473ffffffffffffffffffffffffffffffffffffffff163314612c48576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000612c568761412a565b92509250925060008515612d3057612c6e87856157a5565b9450612c7e848884866001614a85565b6040517fbf28068b0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff8a811660248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063bf28068b90604401600060405180830381600087803b158015612d1357600080fd5b505af1158015612d27573d6000803e3d6000fd5b505050506131b8565b60008484612d3e85836157bd565b612d4891906157fa565b612d529190615835565b60015490915060009061271090612d6d9061ffff16846157bd565b612d7791906157fa565b9050612d8381836157a5565b8910612fdd578881612d9584896157a5565b612d9f91906157a5565b612da99190615835565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018c9052919850908b169063d1660f9990606401600060405180830381600087803b158015612e6557600080fd5b505af1158015612e79573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca9505e482848c612ec69190615835565b612ed09190615835565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526024810184905260006044820152606401600060405180830381600087803b158015612f2f57600080fd5b505af1158015612f43573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd6919061575d565b92506131b5565b600154600090612ff39061ffff16612710615947565b61ffff166130036127108c6157bd565b61300d91906157fa565b9050600061301b828c615835565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018e9052999a508a99919250908d169063d1660f9990606401600060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b50506040517fca9505e40000000000000000000000000000000000000000000000000000000081526000600482018190526024820185905260448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16925063ca9505e49150606401600060405180830381600087803b15801561318a57600080fd5b505af115801561319e573d6000803e3d6000fd5b505050506131b08883888a6000614a85565b945050505b50505b6040517f16128211000000000000000000000000000000000000000000000000000000008152600481018690526024810182905273ffffffffffffffffffffffffffffffffffffffff891690631612821190604401600060405180830381600087803b15801561322757600080fd5b505af115801561323b573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055509498975050505050505050565b336000908152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff161580156132c65750600054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314155b156132fd576040517fad40d9e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff161561333f576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905561337481614576565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146133f0576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ff62005acebe9b616aefb5f248b48f5e89f28437b27d1eebc0b2d911209f297af90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff1633146134b0576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600755565b60035473ffffffffffffffffffffffffffffffffffffffff163314613506576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146135a3576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561364a576001805461ffff83167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790555050565b600061365583613bf4565b90508061368e576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1675ffff000000000000000000000000000000000000000060a084901b161790555050565b60035473ffffffffffffffffffffffffffffffffffffffff163314613729576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61123f81614b6b565b60035473ffffffffffffffffffffffffffffffffffffffff163314613783576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805460ff9092166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff16331461380f576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff9092166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b60005460ff16158061387e575060005462010000900460ff165b6138e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b600054610100900460ff1615613926576040517f69bc183d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9091161790819055640100000000900473ffffffffffffffffffffffffffffffffffffffff1633146139ac576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006139b783613ac0565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559050613a0e82826149b2565b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6000808260011415613a995750506001547f0000000000000000000000000000000000000000000000000000000000000000927e0100000000000000000000000000000000000000000000000000000000000090910461ffff169150565b600083815260046020526040902054915081613ab860a082901c614c5f565b915050915091565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600260205260409020541680613b1f576040517fb5ba4c4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008054640100000000900473ffffffffffffffffffffffffffffffffffffffff163314613b7e576040517fd8026b2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff16808015613bb6575073ffffffffffffffffffffffffffffffffffffffff84166000908152600c602052604090205460ff165b15613bed57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000851515021790555b9392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613c745773ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040902054613c77565b60015b92915050565b600080613c8983613bf4565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260086020526040902054909150811615613cea5773ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040902080548219169055600191505b5092915050565b808015613d4957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613eab576040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b158015613de657600080fd5b505af1158015613dfa573d6000803e3d6000fd5b50506040517f5869dba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169250635869dba89150604401600060405180830381600087803b158015613e8e57600080fd5b505af1158015613ea2573d6000803e3d6000fd5b50505050613f3c565b6040517fd1660f9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301526044820184905286169063d1660f9990606401600060405180830381600087803b158015613f2357600080fd5b505af1158015613f37573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052613fd8908590614cf7565b50505050565b60025b818111613f3c57818116156140b0576000613ffb82613a3b565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529192506000918316906370a0823190602401602060405180830381865afa15801561406e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614092919061575d565b905060018111156140ad576140ad8783886001850389613cf1565b50505b60011b613fe1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040812054906140e882614e03565b6000549091506301000000900460ff1681111561412557600061410a83614e19565b6141159060016157a5565b9050613fd8848484600085614e84565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561417a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419e919061575d565b92508373ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420f919061575d565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561427c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a0919061575d565b929491935050565b6142b0614ff3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291517f1cff79cd000000000000000000000000000000000000000000000000000000008152600092861691631cff79cd916143e6918a9160040161588d565b6000604051808303816000875af192505050801561444457506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261444191908101906158bc565b60015b61444d57614481565b8051158061447057508080602001905181019061446a919061584c565b15156001145b1561447f5760019150506144bd565b505b81156144b9576040517f2f10a7f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060005b95945050505050565b60006144d182613bf4565b90508015806144e35750600754811615155b1561451a576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205481166141255773ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805482179055505050565b60015473ffffffffffffffffffffffffffffffffffffffff8281166000908152600860205260408120546a0100000000000000000000909304909116919080806145bf86611242565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526127108202600482015273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166024830152919450908816925063f9a650309150604401602060405180830381865afa15801561465b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467f919061575d565b925061468a84614e19565b6001019150506000806000805b848110156148b75780156146b05760018186031b6146b3565b60015b9350868416156148af576000806146c986613a3b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e811660048301529294509092506000918416906370a0823190602401602060405180830381865afa15801561473e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614762919061575d565b905060018111156148a2576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff848116602483015261ffff841691908d169063f9a6503090604401602060405180830381865afa1580156147e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061480b919061575d565b61481591906157bd565b61481f90876157a5565b955088861061489d5760006148338b614e03565b6000549091506301000000900460ff1681111561485f5761485a8d8c836001898e03614e84565b61488e565b851561488e5773ffffffffffffffffffffffffffffffffffffffff8d1660009081526008602052604090208b90555b50505050505050505050505050565b6148ab565b98861898600194505b5050505b600101614697565b506040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff161561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a97565b61495f6148ea565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586142fb3390565b73ffffffffffffffffffffffffffffffffffffffff821615806149fb575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600260205260409020541615155b15614a32576040517f9e59609e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60008115614b02576000614a9986886157a5565b9050614aa986633b9aca006157bd565b8488614ab988633b9aca006157bd565b614ac391906157bd565b614acd91906157fa565b614ad791906157a5565b633b9aca00614ae683886157bd565b614af091906157bd565b614afa91906157fa565b9150506144bd565b8583614b1287633b9aca006157bd565b614b1c91906157bd565b614b2691906157fa565b614b3485633b9aca006157bd565b614b3e9190615835565b83614b4d86633b9aca006157bd565b614b5791906157bd565b614b6191906157fa565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090205415614bc8576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61010060055410614c05576040517f7e050c5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005805473ffffffffffffffffffffffffffffffffffffffff83166000818152600660209081526040808320600190951b9485905584835260049091528120919091558254919290614c568361596d565b91905055505050565b600061ffff821115614cf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610a97565b5090565b6000614d59826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661505f9092919063ffffffff16565b8051909150156141255780806020019051810190614d77919061584c565b614125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a97565b60005b8115613b1f57600182811c921601614e06565b60008160011415614e2c57506000919050565b61010060015b6001614e3e82846157a5565b901c92506001831b84811615801590614e595750600185851c145b15614e645750614e7d565b848110614e7357839250614e77565b8391505b50614e32565b5050919050565b815b81811015614fc0576001811b85811615614fb7576000614ea582613a3b565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529192506000918316906370a0823190602401602060405180830381865afa158015614f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f3c919061575d565b905060018111614fb457600054978318977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9097019660ff6301000000909104168711614fb45750505073ffffffffffffffffffffffffffffffffffffffff8616600090815260086020526040902085905550613f3c565b50505b50600101614e86565b506040517f30b5495c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005460ff1661139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a97565b606061245f84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6150e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a97565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161511191906159a6565b60006040518083038185875af1925050503d806000811461514e576040519150601f19603f3d011682016040523d82523d6000602084013e615153565b606091505b509150915061516382828661516e565b979650505050505050565b6060831561517d575081613bed565b82511561518d5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9791906155b7565b73ffffffffffffffffffffffffffffffffffffffff8116811461123f57600080fd5b6000602082840312156151f557600080fd5b8135613bed816151c1565b6000806040838503121561521357600080fd5b823561521e816151c1565b9150602083013561522e816151c1565b809150509250929050565b60006020828403121561524b57600080fd5b5035919050565b803560048110613b1f57600080fd5b801515811461123f57600080fd5b600080600080600080600060e0888a03121561528a57600080fd5b8735615295816151c1565b96506152a360208901615252565b95506040880135945060608801356152ba816151c1565b935060808801356152ca816151c1565b925060a0880135915060c08801356152e181615261565b8091505092959891949750929550565b6000806000806080858703121561530757600080fd5b8435615312816151c1565b93506020850135615322816151c1565b92506040850135615332816151c1565b9396929550929360600135925050565b6000806000806080858703121561535857600080fd5b8435935061536860208601615252565b93969395505050506040820135916060013590565b600080600080600060a0868803121561539557600080fd5b85356153a0816151c1565b945060208601356153b0816151c1565b935060408601356153c0816151c1565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561544e5761544e6153d8565b604052919050565b600067ffffffffffffffff821115615470576154706153d8565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156154b157600080fd5b83356154bc816151c1565b925060208401356154cc816151c1565b9150604084013567ffffffffffffffff8111156154e857600080fd5b8401601f810186136154f957600080fd5b803561550c61550782615456565b615407565b81815287602083850101111561552157600080fd5b816020840160208301376000602083830101528093505050509250925092565b60005b8381101561555c578181015183820152602001615544565b83811115613fd85750506000910152565b60008151808452615585816020860160208601615541565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000613bed602083018461556d565b600080604083850312156155dd57600080fd5b82359150602083013561522e816151c1565b803561ffff81168114613b1f57600080fd5b600080600080600060a0868803121561561957600080fd5b615622866155ef565b9450615630602087016155ef565b935061563e604087016155ef565b925061564c606087016155ef565b915061565a608087016155ef565b90509295509295909350565b60008060006060848603121561567b57600080fd5b8335615686816151c1565b925060208401359150604084013561569d81615261565b809150509250925092565b600080604083850312156156bb57600080fd5b82356156c6816151c1565b91506156d4602084016155ef565b90509250929050565b6000602082840312156156ef57600080fd5b813560ff81168114613bed57600080fd5b6000806040838503121561571357600080fd5b823561571e816151c1565b9150602083013561522e81615261565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561576f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156157b8576157b8615776565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157f5576157f5615776565b500290565b600082615830577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008282101561584757615847615776565b500390565b60006020828403121561585e57600080fd5b8151613bed81615261565b6000806040838503121561587c57600080fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061245f604083018461556d565b6000602082840312156158ce57600080fd5b815167ffffffffffffffff8111156158e557600080fd5b8201601f810184136158f657600080fd5b805161590461550782615456565b81815285602083850101111561591957600080fd5b6144bd826020830160208601615541565b60006020828403121561593c57600080fd5b8151613bed816151c1565b600061ffff80831681851680830382111561596457615964615776565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561599f5761599f615776565b5060010190565b600082516159b8818460208701615541565b919091019291505056fea26469706673582212204e4c285b3b4107cb60b83040b1ee4f82085e0be802d8a3f2da0528ef9e5ec74a64736f6c634300080a00336101a06040523480156200001257600080fd5b5060405162006f4938038062006f4983398101604081905262000035916200027a565b60016000556001600160a01b0384166200006257604051635919af9760e11b815260040160405180910390fd5b6001600160a01b038416608081905260408051636f307dc360e01b81529051636f307dc3916004808201926020929091908290030181865afa158015620000ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d39190620002dd565b6001600160a01b0316610100816001600160a01b031681525050836001600160a01b0316634f0e0ef36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620002dd565b6001600160a01b0316610120816001600160a01b031681525050836001600160a01b03166316f0115b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d19190620002dd565b6001600160a01b0390811661018052838116610140819052151560a052821661016081905215801560c05262000236576040516001600160a01b038316907fcb3b4bdae9a9c5626b486904f099393ae5286a7f2b58380329f6d67a6ecdc9da90600090a25b151560e0525050600480546001600160801b03166001600160801b03191790555062000302565b80516001600160a01b03811681146200027557600080fd5b919050565b600080600080608085870312156200029157600080fd5b6200029c856200025d565b9350620002ac602086016200025d565b9250620002bc604086016200025d565b915060608501518015158114620002d257600080fd5b939692955090935050565b600060208284031215620002f057600080fd5b620002fb826200025d565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516169c26200058760003960008181610326015261443e01526000818161061601528181614645015281816147df01528181614bb201528181614c5f015281816152d901526153f601526000818161064a0152818161393a0152613a3a01526000818161041b0152818161322201526132d201526000818161057b015281816119c60152818161216c0152818161222a0152818161300c015281816131800152818161446901528181614b8201528181614c870152818161530401526153b80152600081816106f70152818161268401526144df0152600081816108e30152614b1f0152600081816103c701528181610f7b015281816136eb015261397601526000818161074b01528181610ab801528181610cb101528181610dc70152818161100201528181611180015281816112eb015281816113ab0152818161159d015281816117ad015281816118da01528181611ae801528181611c2801528181611d1201528181611e4801528181611f650152818161208c0152818161235a0152818161243e015281816124fd0152818161259101528181612770015281816127ea01528181612883015281816129eb01528181612ae201528181612b9201528181612d0801528181612f2c015281816130d1015281816133bf015281816134d001528181613c1601528181613e1f01528181613f27015281816140a2015281816141570152818161421d015281816145640152818161466d0152818161472101528181614795015281816152220152818161566c015281816157760152818161583d0152818161596d01528181615a6001528181615b880152615bfb01526169c26000f3fe6080604052600436106102ba5760003560e01c806382871ace1161016e578063c7de38a6116100cb578063e1d49d7d1161007f578063f9eaee0d11610064578063f9eaee0d14610925578063fc7b9c1814610945578063ffd9b9071461098657600080fd5b8063e1d49d7d146108d1578063eb9606df1461090557600080fd5b8063cff0ab96116100b0578063cff0ab96146107b5578063d9ccbec114610876578063dfd59465146108b157600080fd5b8063c7de38a61461076d578063caa5c23f146107a257600080fd5b80639c55a05411610122578063b1836d3211610107578063b1836d32146106e5578063b2f4d32814610719578063c12c21c01461073957600080fd5b80639c55a054146106b0578063a706efc4146106d057600080fd5b8063938294a911610153578063938294a9146106045780639408b63f146106385780639b67ab301461066c57600080fd5b806382871ace146105b0578063860aefcf146105c357600080fd5b8063503931091161021c5780635f73fbec116101d05780636c8f225d116101b55780636c8f225d146105565780636f307dc3146105695780637071b7c51461059d57600080fd5b80635f73fbec14610523578063601d66f61461053657600080fd5b8063597810341161020157806359781034146104ea5780635c1ca80f146104fd5780635d91a0e01461051057600080fd5b8063503931091461045d57806354fd4d50146104c757600080fd5b806326aac859116102735780634527d9ce116102585780634527d9ce146103e95780634f0e0ef3146104095780635019e20a1461043d57600080fd5b806326aac859146103a25780633d9287fa146103b557600080fd5b806312de90c9116102a457806312de90c91461030157806316f0115b14610314578063256ac9151461037257600080fd5b8062842b57146102bf57806308c25f8f146102e1575b600080fd5b3480156102cb57600080fd5b506102df6102da366004615edd565b6109a6565b005b3480156102ed57600080fd5b506102df6102fc366004615f36565b610ab6565b6102df61030f366004615f9d565b610bde565b34801561032057600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561037e57600080fd5b5061039261038d366004615ff9565b610c67565b6040519015158152602001610369565b6102df6103b0366004616016565b610d3a565b3480156103c157600080fd5b506103927f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f557600080fd5b506102df610404366004616099565b610dc5565b34801561041557600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b34801561044957600080fd5b506102df610458366004615ff9565b610f07565b34801561046957600080fd5b5060035461049e906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610369565b3480156104d357600080fd5b506104dc60dc81565b604051908152602001610369565b6102df6104f83660046160b6565b611229565b6102df61050b366004616016565b611412565b6102df61051e3660046160f7565b611491565b6102df61053136600461617c565b61151d565b34801561054257600080fd5b506102df6105513660046161d2565b61159b565b6102df610564366004616205565b6116bd565b34801561057557600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b6102df6105ab366004616258565b6119f9565b6102df6105be3660046160f7565b611c91565b3480156105cf57600080fd5b5060025461049e906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b34801561061057600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b34801561064457600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b34801561067857600080fd5b506006546040805167ffffffffffffffff608084901c1681526fffffffffffffffffffffffffffffffff909216602083015201610369565b3480156106bc57600080fd5b506102df6106cb366004615f36565b611d10565b3480156106dc57600080fd5b506102df611e46565b3480156106f157600080fd5b506103927f000000000000000000000000000000000000000000000000000000000000000081565b34801561072557600080fd5b506102df6107343660046161d2565b611f63565b34801561074557600080fd5b506103487f000000000000000000000000000000000000000000000000000000000000000081565b34801561077957600080fd5b5061078d610788366004615ff9565b612085565b60408051928352602083019190915201610369565b6102df6107b03660046162cc565b6122b8565b3480156107c157600080fd5b50600154610833906fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000810460ff169071010000000000000000000000000000000000810464ffffffffff1690760100000000000000000000000000000000000000000000900461ffff1684565b604080516fffffffffffffffffffffffffffffffff9095168552921515602085015264ffffffffff9091169183019190915261ffff166060820152608001610369565b34801561088257600080fd5b5061039261089136600461630e565b600560209081526000928352604080842090915290825290205460ff1681565b3480156108bd57600080fd5b506104dc6108cc366004615ff9565b6124a5565b3480156108dd57600080fd5b506103927f000000000000000000000000000000000000000000000000000000000000000081565b34801561091157600080fd5b506102df61092036600461633c565b61258f565b34801561093157600080fd5b50610392610940366004615ff9565b612726565b34801561095157600080fd5b5060045461049e906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b34801561099257600080fd5b506102df6109a1366004616363565b612881565b60026000541415610a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600090815573ffffffffffffffffffffffffffffffffffffffff8316808252600560209081526040808420338086529083529381902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081527f9b3258bc4904fd6426b99843e206c6c7cdb1fd0f040121c25b71dafbb3851ee0910160405180910390a350506001600055565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b459190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba9576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b60026000541415610c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b6002600055610c5c848484846129ba565b505060016000555050565b6040517f055ee9b500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063055ee9b590602401602060405180830381865afa158015610cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1c9190616380565b73ffffffffffffffffffffffffffffffffffffffff16141592915050565b60026000541415610da7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b6002600055610db98585858585612cc0565b50506001600055505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e549190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805461ffff909216760100000000000000000000000000000000000000000000027fffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b60026000541415610f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b60026000557f000000000000000000000000000000000000000000000000000000000000000015610fd1576040517f5aa6676700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa15801561105e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110829190616380565b33600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205490915060ff166110ef576040517f85b0772600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110fa82612f25565b5090508015611135576040517ff713841e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe1998cf900000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e1998cf990604401600060405180830381600087803b1580156111c457600080fd5b505af11580156111d8573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff861692503391507f93c70cc9715bef0d83edf2095f3595402279d274f402a73ffc17f1bcb19d863d90600090a35050600160005550565b60026000541415611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b60026000556112a361321a565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e958b70490602401602060405180830381865afa158015611334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113589190616380565b90506113668482858561335c565b6040517f29df0b9300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f000000000000000000000000000000000000000000000000000000000000000016906329df0b9390602401600060405180830381600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b50506001600055505050505050565b6002600054141561147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b6002600055610db98585858585613488565b600260005414156114fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b60026000556115108686868585613488565b5050600160005550505050565b6002600054141561158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b6002600055610db9858584846129ba565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162a9190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461168e576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617600255565b6002600054141561172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b60026000908155606461174161ffff8516876163cc565b61174b9190616409565b9050611756816136e9565b61175f816137e8565b61176884613868565b61177061321a565b61177b816001613aa0565b6040517f172c48c7000000000000000000000000000000000000000000000000000000008152600060048201819052907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063172c48c7906024016040805180830381865afa158015611808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182c9190616444565b61ffff169150611840905081612710616473565b61184a90836163cc565b61185482886163cc565b1161188b576040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff86811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638fe3f93f906044016020604051808303816000875af1158015611925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119499190616380565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffa2baf5d3eb95569f312f22477b246f9d4c50276f1cb3ded8e1aeadcbc07a76385876040516119b792919091825261ffff16602082015260400190565b60405180910390a36119eb86827f00000000000000000000000000000000000000000000000000000000000000008a61335c565b505060016000555050505050565b60026000541415611a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b6002600055611a74856136e9565b611a7d84613868565b611a86856137e8565b611a8e61321a565b611a99856001613aa0565b6040517f8fe3f93f0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff85811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638fe3f93f906044016020604051808303816000875af1158015611b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b579190616380565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167ffa2baf5d3eb95569f312f22477b246f9d4c50276f1cb3ded8e1aeadcbc07a7638885604051611bc592919091825261ffff16602082015260400190565b60405180910390a38215611be357611be38484878460006001613bcb565b6040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690639537301890602401600060405180830381600087803b158015611c6c57600080fd5b505af1158015611c80573d6000803e3d6000fd5b505060016000555050505050505050565b60026000541415611cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b60026000556115108686868585612cc0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9f9190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e03576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed59190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f39576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff29190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612056576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617600455565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121199190616380565b90506000806121288387614108565b6040517f7afb01040000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015292945090925090841690637afb010490604401602060405180830381865afa1580156121c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e6919061648a565b6040517f7afb01040000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015291965061271091851690637afb010490604401602060405180830381865afa158015612280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a4919061648a565b6122ae9190616409565b9350505050915091565b60026000541415612325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a0f565b600260009081556040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa1580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123da9190616380565b90506123e461321a565b811561249b576123f983833384600080613bcb565b6040517f9537301800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690639537301890602401600060405180830381600087803b15801561248257600080fd5b505af1158015612496573d6000803e3d6000fd5b505050505b5050600160005550565b6000806124b183612085565b6040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152919350600092507f000000000000000000000000000000000000000000000000000000000000000090911690633192195c90602401606060405180830381865afa158015612546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256a91906164a3565b925082915061257d9050612710846163cc565b6125879190616409565b949350505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261e9190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612682576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006126d9576040517f50dd11fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001805464ffffffffff90921671010000000000000000000000000000000000027fffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffffff909216919091179055565b6040517ff67c5bd000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f67c5bd090602401602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db919061648a565b9050801580159061287a5750807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612877919061648a565b16155b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129109190616380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612974576040517feee4716900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054911515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff909216919091179055565b6040517fe958b7040000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e958b70490602401602060405180830381865afa158015612a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6b9190616380565b9050612a7561321a565b8115612a8b57612a8b8383338460016000613bcb565b6000612a95614401565b6040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291925060009182917f000000000000000000000000000000000000000000000000000000000000000090911690633192195c90602401606060405180830381865afa158015612b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4f91906164a3565b506040517f2362a2d8000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632362a2d890612bd4903390600090819083908f908f90849060040161650c565b6020604051808303816000875af1158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c17919061648a565b506000612c22614401565b9050612c2e8285616568565b811015612c67576040517f1e05cdad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c72836000613aa0565b60405173ffffffffffffffffffffffffffffffffffffffff8a169033907f460ad03b1cf79b1d64d3aefa28475f110ab66e84649c52bb41ed796b9b39198190600090a3505050505050505050565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e958b70490602401602060405180830381865afa158015612d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d759190616380565b905073ffffffffffffffffffffffffffffffffffffffff8516612dc4576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612dcc6144db565b612e02576040517f7e52ccb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612e0d82612085565b509050612e1861321a565b6000612e24600161452b565b90508315612e3c57612e3c85858a8660016000613bcb565b8015612e895760015461271090612e7190760100000000000000000000000000000000000000000000900461ffff16846163cc565b612e7b9190616409565b9150612e87600061452b565b505b6000612e9a83858b8b8b60016145ec565b90508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167ffada13ff2d5e1a1d9da37ad4a4130893b34e3c69c32b17f87ec31fd661b8670784604051612f1291815260200190565b60405180910390a4505050505050505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb99190616380565b9050600080612fc88387614108565b6040517f7afb01040000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116602483015292945090925090841690637afb010490604401602060405180830381865afa158015613062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613086919061648a565b6040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301529195506000917f00000000000000000000000000000000000000000000000000000000000000001690633192195c90602401606060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313c91906164a3565b6040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301529194506000935061271092509087169063f9a6503090604401602060405180830381865afa1580156131dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613200919061648a565b61320a91906163cc565b9092109794965093945050505050565b341561335a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561328857600080fd5b505af115801561329c573d6000803e3d6000fd5b50506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201523460248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16935063a9059cbb925060440190506020604051808303816000875af1158015613334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133589190616580565b505b565b613365846149e7565b6040517f830aa74500000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063830aa74590608401600060405180830381600087803b15801561340357600080fd5b505af1158015613417573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fa32435755c235de2976ed44a75a2f85cb01faf0c894f639fe0c32bb9455fea8f8360405161347a91815260200190565b60405180910390a350505050565b6040517fe958b70400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063e958b70490602401602060405180830381865afa158015613519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353d9190616380565b905073ffffffffffffffffffffffffffffffffffffffff851661358c576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061359883612f25565b91509150816135d3576040517f1fdd676f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135db61321a565b60006135e7600161452b565b905084156135ff576135ff86868b8760016000613bcb565b801561364c576001546127109061363490760100000000000000000000000000000000000000000000900461ffff16846163cc565b61363e9190616409565b915061364a600061452b565b505b600061365d83868c8c8c60006145ec565b90508873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f7dfecd8419723a9d3954585a30c2a270165d70aafa146c11c1e1b88ae1439064846040516136d591815260200190565b60405180910390a450505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000613358576001546fffffffffffffffffffffffffffffffff9081169081146137e457600654608081901c906fffffffffffffffffffffffffffffffff16600067ffffffffffffffff83164314613760578461377c565b61377c6fffffffffffffffffffffffffffffffff831686616568565b9050838111156137b8576040517f675f1a5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6137e06137c482614a75565b6fffffffffffffffffffffffffffffffff164360801b17600655565b5050505b5050565b6002546fffffffffffffffffffffffffffffffff16811080613831575060025470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681115b15613358576040517fce16799400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154700100000000000000000000000000000000900460ff16156138b9576040517f7615238d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6138c16144db565b156138f8576040517fcba1df9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61390181614b1b565b15613938576040517f03cd171200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615613a97577f000000000000000000000000000000000000000000000000000000000000000080156139b757503373ffffffffffffffffffffffffffffffffffffffff821614155b156139ee576040517f5aa6676700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600160248301527f00000000000000000000000000000000000000000000000000000000000000001690639dc29fac90604401600060405180830381600087803b158015613a7e57600080fd5b505af1158015613a92573d6000803e3d6000fd5b505050505b613358816149e7565b81156137e457604080518082019091526004546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201528115613b6457613af383614a75565b81518290613b0290839061659d565b6fffffffffffffffffffffffffffffffff90811690915260208301518351908216911611159050613b5f576040517fce16799400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b92565b613b6d83614a75565b81518290613b7c9083906165d1565b6fffffffffffffffffffffffffffffffff169052505b80516020909101516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029116176004555050565b6040517fe1998cf900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527f0000000000000000000000000000000000000000000000000000000000000000169063e1998cf990604401600060405180830381600087803b158015613c5a57600080fd5b505af1158015613c6e573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff871692507f4ad424605b950d17d87835716d98c0cac1f6ff9c38114e63304902188a6908119150600090a260608560005b8181101561401c5736898983818110613cd457613cd4616602565b9050602002810190613ce69190616631565b90506004613cf7602083018361666f565b90501015613d31576040517fe2b0e50600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30613d3f6020830183615ff9565b73ffffffffffffffffffffffffffffffffffffffff161415613e1b578515613df8576000613d70602083018361666f565b613d79916166d4565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f81314b590000000000000000000000000000000000000000000000000000000014613df6576040517f5fb9107f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b613e118888613e0a602085018561666f565b8989614cfd565b9095509350614013565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ff687543613e666020850185615ff9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015613ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef39190616380565b73ffffffffffffffffffffffffffffffffffffffff161480613f6c575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613f546020830183615ff9565b73ffffffffffffffffffffffffffffffffffffffff16145b15613fa3576040517ffc1a554300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614011613fb3602083018361666f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613ff5925050506020840184615ff9565b73ffffffffffffffffffffffffffffffffffffffff1690615087565b505b50600101613cb9565b5081511561402e5761402e82866150c9565b6040517f60c8e8938c9a0c0d88a98d6f1c562ce68077e12bf3edb8047378f2f736cb45b490600090a16040517fe1998cf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff87811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e1998cf990604401600060405180830381600087803b1580156140e657600080fd5b505af11580156140fa573d6000803e3d6000fd5b505050505050505050505050565b6040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152600091829160019183917f00000000000000000000000000000000000000000000000000000000000000001690638991b2f190602401602060405180830381865afa15801561419e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c2919061648a565b90505b8082116143f857808216156143ec576040517fe75538c700000000000000000000000000000000000000000000000000000000815260048101839052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e75538c7906024016040805180830381865afa158015614263573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142879190616444565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529294509092506000918416906370a0823190602401602060405180830381865afa1580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614320919061648a565b905060018111156143e8576040517ff9a650300000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff8481166024830152600091908b169063f9a6503090604401602060405180830381865afa1580156143a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c6919061648a565b9788019790506143da61ffff8416826163cc565b6143e49088616568565b9650505b5050505b600182901b91506141c5565b50509250929050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156144b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144d6919061648a565b905090565b60007f000000000000000000000000000000000000000000000000000000000000000080156144d657505060015471010000000000000000000000000000000000900464ffffffffff1642101590565b6040517feb99c2bf00000000000000000000000000000000000000000000000000000000815233600482015281151560248201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063eb99c2bf906044016020604051808303816000875af11580156145c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145e69190616580565b92915050565b6000806145f886614b1b565b905080156146ca576040517fe1998cf900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e1998cf990604401600060405180830381600087803b1580156146b157600080fd5b505af11580156146c5573d6000803e3d6000fd5b505050505b60006146d4614401565b6040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015291925060009182917f000000000000000000000000000000000000000000000000000000000000000090911690633192195c90602401606060405180830381865afa15801561476a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061478e91906164a3565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632362a2d8600086116147dd578a6147ff565b7f00000000000000000000000000000000000000000000000000000000000000005b8861480b57600161480e565b60025b8e338d8d60006040518863ffffffff1660e01b8152600401614836979695949392919061650c565b6020604051808303816000875af1158015614855573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614879919061648a565b94506000614885614401565b905060006148938386616568565b82106148a05760006148b5565b816148ab8487616568565b6148b59190616473565b905080156149ad57600180547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000017905561490181614a75565b600380546000906149259084906fffffffffffffffffffffffffffffffff1661659d565b82546101009290920a6fffffffffffffffffffffffffffffffff8181021990931691831602179091556003547001000000000000000000000000000000008104821691161115905061497957614979615220565b6040518181527f039b20af1a8da82c3d37dd7b0fe81a987532ffca72fbd69951823f7c40511f2d9060200160405180910390a15b6149b8846000613aa0565b6000861180156149c85750600187115b156149d7576149d78b8761529c565b5050505050509695505050505050565b3373ffffffffffffffffffffffffffffffffffffffff821614801590614a3e575033600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15613358576040517f85b0772600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006fffffffffffffffffffffffffffffffff821115614b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610a0f565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000008015614c1d57506040517f4028eddc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015283811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634028eddc90604401602060405180830381865afa158015614bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c1d9190616580565b15614cf8576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015614cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cf2919061648a565b60010190505b919050565b81816000614d0b86886166d4565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f81314b59000000000000000000000000000000000000000000000000000000001415614dbd57815115614d90576040517fe61eedf500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614d9d866004818a61671c565b810190614daa91906167ed565b9150614db682896154ab565b915061507b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f6d75b9ee000000000000000000000000000000000000000000000000000000001415614e3b57600080614e17886004818c61671c565b810190614e2491906168b8565b91509150614e34338b848461335c565b505061507b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f2b7c7b11000000000000000000000000000000000000000000000000000000001415614eb857600192506000614e98876004818b61671c565b810190614ea591906168e4565b9050614eb28a8a836155a8565b5061507b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f2a7ba1f7000000000000000000000000000000000000000000000000000000001415614f63578215614f3a576040517fc0b0caa800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000614f49876004818b61671c565b810190614f5691906168e4565b9050614eb28a8a8361572e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc690908a000000000000000000000000000000000000000000000000000000001415614fd6576000614fbc876004818b61671c565b810190614fc99190615ff9565b9050614eb28a8a83615920565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f23e27a6400000000000000000000000000000000000000000000000000000000141561504957600061502f876004818b61671c565b81019061503c9190615ff9565b9050614eb28a8a83615a13565b6040517f1e9e7e7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50965096945050505050565b606061287a83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250615b31565b815160005b8181101561521a578381815181106150e8576150e8616602565b60200260200101516020015184828151811061510657615106616602565b6020908102919091010151516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152909116906370a0823190602401602060405180830381865afa15801561517f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151a3919061648a565b1015615212578381815181106151bb576151bb616602565b6020908102919091010151516040517f2f42bd8700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a0f565b6001016150ce565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561528857600080fd5b505af115801561521a573d6000803e3d6000fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561534d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615371919061648a565b9050818111156154a6576040517f9e38961000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152848116602483015260018484030160448301819052917f000000000000000000000000000000000000000000000000000000000000000090911690639e38961090606401600060405180830381600087803b15801561543c57600080fd5b505af1158015615450573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff167fe2655809b4fc2a2dffc14ecf5aad9dbf5a9703a5bb2b19ab7ae6afa29ef0c7c88260405161549c91815260200190565b60405180910390a2505b505050565b815160609060005b8181101561559f578481815181106154cd576154cd616602565b6020908102919091010151516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152909116906370a0823190602401602060405180830381865afa158015615546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061556a919061648a565b85828151811061557c5761557c616602565b60200260200101516020018181516155949190616568565b9052506001016154b3565b50929392505050565b600154700100000000000000000000000000000000900460ff16156155f9576040517f7615238d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b615602816136e9565b61560b82615b40565b615616816001613aa0565b6040517f94cf073a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260248201839052600160448301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906394cf073a906064016020604051808303816000875af11580156156b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156db919061648a565b90506156e6816137e8565b8373ffffffffffffffffffffffffffffffffffffffff167f9cac51154cc0d835e2f9c9d1f59a9344588cee107f4203bf58a8c797e3a58c458360405161549c91815260200190565b6040517f3192195c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633192195c90602401606060405180830381865afa1580156157bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906157e391906164a3565b50506040517f94cf073a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590526000604483018190529293507f000000000000000000000000000000000000000000000000000000000000000016906394cf073a906064016020604051808303816000875af1158015615886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906158aa919061648a565b90506158b5816137e8565b6158c96158c28284616473565b6000613aa0565b8473ffffffffffffffffffffffffffffffffffffffff167f98274bf834d179ee08dc0604071b0dc90b54731bd5f725a5a96a39a86bce025a8460405161591191815260200190565b60405180910390a25050505050565b6040517f51e3f16000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f000000000000000000000000000000000000000000000000000000000000000016906351e3f16090604401600060405180830381600087803b1580156159b157600080fd5b505af11580156159c5573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff8085169350861691507fdf498aa1c340e992665d6fb4f3be8436d452c45a630cb6d7fab7963da39bac8790600090a3505050565b6040517f0d8f9cee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f00000000000000000000000000000000000000000000000000000000000000001690630d8f9cee906044016020604051808303816000875af1158015615aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615acd9190616580565b156154a6578073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f69db9e9764da61b6681b89fb0f5be018506e0342036e56b59c3015a620d6097760405160405180910390a3505050565b60606125878484600085615cc4565b6040517f8991b2f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638991b2f190602401602060405180830381865afa158015615bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615bf5919061648a565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015615c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615c88919061648a565b9050818116156154a6576040517faea975da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082471015615d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610a0f565b73ffffffffffffffffffffffffffffffffffffffff85163b615dd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a0f565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051615dfd9190616929565b60006040518083038185875af1925050503d8060008114615e3a576040519150601f19603f3d011682016040523d82523d6000602084013e615e3f565b606091505b5091509150615e4f828286615e5a565b979650505050505050565b60608315615e6957508161287a565b825115615e795782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f919061693b565b73ffffffffffffffffffffffffffffffffffffffff8116811461335857600080fd5b801515811461335857600080fd5b60008060408385031215615ef057600080fd5b8235615efb81615ead565b91506020830135615f0b81615ecf565b809150509250929050565b80356fffffffffffffffffffffffffffffffff81168114614cf857600080fd5b600060208284031215615f4857600080fd5b61287a82615f16565b60008083601f840112615f6357600080fd5b50813567ffffffffffffffff811115615f7b57600080fd5b6020830191508360208260051b8501011115615f9657600080fd5b9250929050565b60008060008060608587031215615fb357600080fd5b8435615fbe81615ead565b935060208501359250604085013567ffffffffffffffff811115615fe157600080fd5b615fed87828801615f51565b95989497509550505050565b60006020828403121561600b57600080fd5b813561287a81615ead565b60008060008060006080868803121561602e57600080fd5b853561603981615ead565b9450602086013561604981615ead565b935060408601359250606086013567ffffffffffffffff81111561606c57600080fd5b61607888828901615f51565b969995985093965092949392505050565b61ffff8116811461335857600080fd5b6000602082840312156160ab57600080fd5b813561287a81616089565b6000806000606084860312156160cb57600080fd5b83356160d681615ead565b925060208401356160e681615ead565b929592945050506040919091013590565b60008060008060008060a0878903121561611057600080fd5b863561611b81615ead565b9550602087013561612b81615ead565b945060408701359350606087013561614281615ecf565b9250608087013567ffffffffffffffff81111561615e57600080fd5b61616a89828a01615f51565b979a9699509497509295939492505050565b60008060008060006080868803121561619457600080fd5b853561619f81615ead565b94506020860135935060408601356161b681615ecf565b9250606086013567ffffffffffffffff81111561606c57600080fd5b600080604083850312156161e557600080fd5b6161ee83615f16565b91506161fc60208401615f16565b90509250929050565b6000806000806080858703121561621b57600080fd5b84359350602085013561622d81615ead565b9250604085013561623d81616089565b9150606085013561624d81616089565b939692955090935050565b60008060008060006080868803121561627057600080fd5b85359450602086013561628281615ead565b9350604086013567ffffffffffffffff81111561629e57600080fd5b6162aa88828901615f51565b90945092505060608601356162be81616089565b809150509295509295909350565b600080602083850312156162df57600080fd5b823567ffffffffffffffff8111156162f657600080fd5b61630285828601615f51565b90969095509350505050565b6000806040838503121561632157600080fd5b823561632c81615ead565b91506020830135615f0b81615ead565b60006020828403121561634e57600080fd5b813564ffffffffff8116811461287a57600080fd5b60006020828403121561637557600080fd5b813561287a81615ecf565b60006020828403121561639257600080fd5b815161287a81615ead565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156164045761640461639d565b500290565b60008261643f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000806040838503121561645757600080fd5b825161646281615ead565b6020840151909250615f0b81616089565b6000828210156164855761648561639d565b500390565b60006020828403121561649c57600080fd5b5051919050565b6000806000606084860312156164b857600080fd5b8351925060208401519150604084015190509250925092565b60048110616508577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b73ffffffffffffffffffffffffffffffffffffffff888116825260e0820190616538602084018a6164d1565b6040830197909752948616606082015292909416608083015260a082015291151560c09092019190915292915050565b6000821982111561657b5761657b61639d565b500190565b60006020828403121561659257600080fd5b815161287a81615ecf565b60006fffffffffffffffffffffffffffffffff8083168185168083038211156165c8576165c861639d565b01949350505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156165fa576165fa61639d565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261666557600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126166a457600080fd5b83018035915067ffffffffffffffff8211156166bf57600080fd5b602001915036819003821315615f9657600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156167145780818660040360031b1b83161692505b505092915050565b6000808585111561672c57600080fd5b8386111561673957600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561679857616798616746565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156167e5576167e5616746565b604052919050565b6000602080838503121561680057600080fd5b823567ffffffffffffffff8082111561681857600080fd5b818501915085601f83011261682c57600080fd5b81358181111561683e5761683e616746565b61684c848260051b0161679e565b818152848101925060069190911b83018401908782111561686c57600080fd5b928401925b81841015615e4f576040848903121561688a5760008081fd5b616892616775565b843561689d81615ead565b81528486013586820152835260409093019291840191616871565b600080604083850312156168cb57600080fd5b82356168d681615ead565b946020939093013593505050565b6000602082840312156168f657600080fd5b5035919050565b60005b83811015616918578181015183820152602001616900565b8381111561521a5750506000910152565b600082516166658184602087016168fd565b602081526000825180602084015261695a8160408501602087016168fd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220b697251adcf801c4e8a143363a51bb663b395cb48fd7c9c00b545f20d922d43964736f6c634300080a003360a06040523480156200001157600080fd5b5060405162007859380380620078598339810160408190526200003491620015c0565b826001600160a01b031663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009991906200175a565b6001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd91906200175a565b6000805460ff191690556001600160a01b0381166200012f57604051635919af9760e11b815260040160405180910390fd5b806001600160a01b031663087376956040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019491906200175a565b6001600160a01b03908116608052600180546001600160a01b031916918616918217905560408051636f307dc360e01b81529051919250636f307dc39160048083019260209291908290030181865afa158015620001f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021c91906200175a565b600260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b031663570a7af26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a791906200175a565b6001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030b91906200175a565b60008054610100600160a81b0319166101006001600160a01b039384160217815560015460408051637cd5014560e11b815290519293919091169163f9aa028a916004808201926020929091908290030181865afa15801562000372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039891906200175a565b90506001600160a01b038116301462000471576000816001600160a01b031663373c8f626040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000416919081019062001781565b805190915060005b8181101562000468576200045e83828151811062000440576200044062001825565b60200260200101516003620006ae60201b620030251790919060201c565b506001016200041e565b505050620006a4565b620004a161138860966200048a61019061271062001851565b60646200049b60c861271062001851565b620006ce565b60408201515160005b818110156200052d57600084604001518281518110620004ce57620004ce62001825565b6020026020010151600001519050620004ed816200099c60201b60201c565b6200052381866040015184815181106200050b576200050b62001825565b60200260200101516020015162000c3860201b60201c565b50600101620004aa565b5060015460405163693ce7f560e01b81526001600160a01b0386811660048301529091169063693ce7f590602401600060405180830381600087803b1580156200057657600080fd5b505af11580156200058b573d6000803e3d6000fd5b50506040516001600160a01b03871692507fa8b21f72cb83bce808df32dc2330217d744a1c22f3e9e44e4b11bbf049d37d9d9150600090a2600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000617573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063d91906200175a565b6001600160a01b03167f3f82447be465b0b5a4a9e54c74d5f6ae73f2e9537f2cc1590a340524703d096160405160405180910390a260208301516200068f906200068990600262001877565b62000e2c565b82516020840151620006a291906200101b565b505b5050505062001a22565b6000620006c5836001600160a01b0384166200119b565b90505b92915050565b6000620006dc858562001851565b60015460405163172c48c760e01b81526000600482018190529293506001600160a01b039091169063172c48c7906024016040805180830381865afa1580156200072a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007509190620018a9565b9150508061ffff168261ffff1614620007a4576200076e82620011ed565b60025460405161ffff841681526001600160a01b0390911690600080516020620078398339815191529060200160405180910390a25b6000806000806000600160009054906101000a90046001600160a01b03166001600160a01b0316639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa15801562000800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008269190620018e3565b945094509450945094508461ffff168c61ffff161415806200085057508361ffff168b61ffff1614155b806200086457508261ffff168a61ffff1614155b806200087857508161ffff168961ffff1614155b806200088c57508061ffff168861ffff1614155b156200098e5760015460405163944ac59f60e01b815261ffff808f166004830152808e166024830152808d166044830152808c1660648301528a1660848201526001600160a01b039091169063944ac59f9060a401600060405180830381600087803b158015620008fc57600080fd5b505af115801562000911573d6000803e3d6000fd5b505050507f2214a403d5f8d049e52eacca974c6dea01a471e41d6a18903bfaf7dbc709741f8c8c8c61271062000948919062001851565b8c620009578d61271062001851565b6040805161ffff96871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190a15b505050505050505050505050565b6001600160a01b038116620009c457604051635919af9760e11b815260040160405180910390fd5b620009e3816001600160a01b03166200141560201b620030501760201c565b62000a105760405163df4c572d60e01b81526001600160a01b038216600482015260240160405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa92505050801562000a73575060408051601f3d908101601f1916820190925262000a709181019062001953565b60015b62000a915760405163528ca31d60e01b815260040160405180910390fd5b50600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ae6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b0c91906200175a565b604051630f9a650360e41b8152670de0b6b3a764000060048201526001600160a01b038381166024830152919091169063f9a6503090604401602060405180830381865afa92505050801562000b81575060408051601f3d908101601f1916820190925262000b7e9181019062001953565b60015b62000b9f576040516367a7cd4360e01b815260040160405180910390fd5b5060015460405163d48bfca760e01b81526001600160a01b0383811660048301529091169063d48bfca790602401600060405180830381600087803b15801562000be857600080fd5b505af115801562000bfd573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbeceb48aeaa805aeae57be163cca6249077a18734e408a85aa74e875c43738099150600090a250565b6002546001600160a01b038381169116141562000c6857604051633b899cf960e01b815260040160405180910390fd5b60015460405163172c48c760e01b8152600060048201819052916001600160a01b03169063172c48c7906024016040805180830381865afa15801562000cb2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd89190620018a9565b9150508061ffff168261ffff16111562000d05576040516333c6608d60e01b815260040160405180910390fd5b600154604051630f064e8760e31b81526001600160a01b0385811660048301526000921690637832743890602401602060405180830381865afa15801562000d51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d7791906200196d565b90508261ffff168161ffff161462000e2657600154604051635385e2a160e11b81526001600160a01b03868116600483015261ffff861660248301529091169063a70bc54290604401600060405180830381600087803b15801562000ddb57600080fd5b505af115801562000df0573d6000803e3d6000fd5b505060405161ffff861681526001600160a01b038716925060008051602062007839833981519152915060200160405180910390a25b50505050565b600062000e3862001424565b6001600160a01b031663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa15801562000e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e9c91906200198b565b5050509050600062000eb36200142460201b60201c565b6001600160a01b031663860aefcf6040518163ffffffff1660e01b81526004016040805180830381865afa15801562000ef0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f169190620019f3565b915050806001600160801b0316836001600160801b0316101562000f4d576040516309aadd6f60e41b815260040160405180910390fd5b826001600160801b0316826001600160801b031614620010165762000f7162001424565b604051632715681560e21b81526001600160801b03851660048201526001600160a01b039190911690639c55a05490602401600060405180830381600087803b15801562000fbe57600080fd5b505af115801562000fd3573d6000803e3d6000fd5b50506040516001600160801b03861681527fa030eec20ae970821387224ec3bb15b4bd22b89bfb86dc4d2b3827aa3d99e48d925060200190505b60405180910390a15b505050565b60006200102762001424565b6001600160a01b031663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa15801562001065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200108b91906200198b565b5050509050816001600160801b0316836001600160801b03161180620010c25750806001600160801b0316826001600160801b0316115b15620010e1576040516309aadd6f60e41b815260040160405180910390fd5b620010eb62001424565b60405163300eb37b60e11b81526001600160801b038086166004830152841660248201526001600160a01b03919091169063601d66f690604401600060405180830381600087803b1580156200114057600080fd5b505af115801562001155573d6000803e3d6000fd5b5050604080516001600160801b038088168252861660208201527f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb93500190506200100d565b6000818152600183016020526040812054620011e457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620006c8565b506000620006c8565b600154600254604051635385e2a160e11b81526001600160a01b03918216600482015261ffff8416602482015291169063a70bc54290604401600060405180830381600087803b1580156200124157600080fd5b505af115801562001256573d6000803e3d6000fd5b505050506000600160009054906101000a90046001600160a01b03166001600160a01b031663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012d6919062001953565b905060015b81811015620010165760015460405163172c48c760e01b81526004810183905260009182916001600160a01b039091169063172c48c7906024016040805180830381865afa15801562001332573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013589190620018a9565b915091508461ffff168161ffff1611156200140a57600154604051635385e2a160e11b81526001600160a01b03848116600483015261ffff881660248301529091169063a70bc54290604401600060405180830381600087803b158015620013bf57600080fd5b505af1158015620013d4573d6000803e3d6000fd5b505060405161ffff881681526001600160a01b038516925060008051602062007839833981519152915060200160405180910390a25b5050600101620012db565b6001600160a01b03163b151590565b60015460408051632f7a188160e01b815290516000926001600160a01b031691632f7a18819160048083019260209291908290030181865afa1580156200146f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200149591906200175a565b905090565b6001600160a01b0381168114620014b057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715620014ee57620014ee620014b3565b60405290565b604080519081016001600160401b0381118282101715620014ee57620014ee620014b3565b604051601f8201601f191681016001600160401b0381118282101715620015445762001544620014b3565b604052919050565b80516001600160801b03811681146200156457600080fd5b919050565b60006001600160401b03821115620015855762001585620014b3565b5060051b60200190565b805162001564816200149a565b805161ffff811681146200156457600080fd5b805180151581146200156457600080fd5b600080600060608486031215620015d657600080fd5b8351620015e3816200149a565b80935050602080850151620015f8816200149a565b604086810151919450906001600160401b03808211156200161857600080fd5b9087019060c0828a0312156200162d57600080fd5b62001637620014c9565b62001642836200154c565b8152620016518584016200154c565b8582015283830151828111156200166757600080fd5b83019150601f82018a136200167b57600080fd5b8151620016926200168c8262001569565b62001519565b81815260069190911b8301860190868101908c831115620016b257600080fd5b938701935b828510156200170b5786858e031215620016d15760008081fd5b620016db620014f4565b8551620016e8816200149a565b8152620016f7868a016200159c565b818a015282529386019390870190620016b7565b8387015250620017209050606084016200158f565b606082015262001733608084016200158f565b60808201526200174660a08401620015af565b60a082015280955050505050509250925092565b6000602082840312156200176d57600080fd5b81516200177a816200149a565b9392505050565b600060208083850312156200179557600080fd5b82516001600160401b03811115620017ac57600080fd5b8301601f81018513620017be57600080fd5b8051620017cf6200168c8262001569565b81815260059190911b82018301908381019087831115620017ef57600080fd5b928401925b828410156200181a5783516200180a816200149a565b82529284019290840190620017f4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff838116908316818110156200186f576200186f6200183b565b039392505050565b60006001600160801b0382811684821681151582840482111615620018a057620018a06200183b565b02949350505050565b60008060408385031215620018bd57600080fd5b8251620018ca816200149a565b9150620018da602084016200159c565b90509250929050565b600080600080600060a08688031215620018fc57600080fd5b62001907866200159c565b945062001917602087016200159c565b935062001927604087016200159c565b925062001937606087016200159c565b915062001947608087016200159c565b90509295509295909350565b6000602082840312156200196657600080fd5b5051919050565b6000602082840312156200198057600080fd5b620006c5826200159c565b60008060008060808587031215620019a257600080fd5b620019ad856200154c565b9350620019bd60208601620015af565b9250604085015164ffffffffff81168114620019d857600080fd5b9150620019e8606086016200159c565b905092959194509250565b6000806040838503121562001a0757600080fd5b62001a12836200154c565b9150620018da602084016200154c565b608051615d4562001af4600039600081816103d6015281816104ee0152818161075e01528181610a4401528181610de801528181610edf01528181610fcd015281816110bd015281816112940152818161161b01528181611ba201528181611c9001528181611d7c01528181611e6901528181611f560152818161204401528181612131015281816122a70152818161238b01528181612478015281816125a801528181612804015281816128f1015281816129de01528181612ce801528181612e730152612f630152615d456000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c80638456cb591161012a578063ae10deeb116100bd578063dc2b21c11161008c578063f0527ac611610071578063f0527ac614610492578063f206d32a1461049a578063ffd9b907146104ad57600080fd5b8063dc2b21c11461046c578063eb9606df1461047f57600080fd5b8063ae10deeb14610413578063b2f4d32814610426578063b53472ef14610439578063c12c21c01461044c57600080fd5b8063a460e104116100f9578063a460e104146103be578063a50cf2c8146103d1578063a706efc4146103f8578063a70bc5421461040057600080fd5b80638456cb591461037d57806384edaa42146103855780639c55a054146103985780639f1c5069146103ab57600080fd5b80634527d9ce116101a257806354fd4d501161017157806354fd4d501461031e5780635c975abb146103345780636f307dc31461034a5780637bccacee1461036a57600080fd5b80634527d9ce146102d2578063456e0742146102e557806352438e54146102f8578063526a41e81461030b57600080fd5b80632f7a1881116101de5780632f7a18811461029a578063373c8f62146102a25780633e7c88d6146102b75780633f4ba83a146102ca57600080fd5b806308c25f8f146102105780631495c7d21461022557806324147708146102385780632954018c1461024b575b600080fd5b61022361021e366004615750565b6104c0565b005b610223610233366004615796565b610730565b610223610246366004615796565b610a16565b60005461027090610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610270610c72565b6102aa610d0b565b60405161029191906157b3565b6102236102c536600461581d565b610dba565b610223610eb1565b6102236102e0366004615856565b610f9f565b6102236102f3366004615796565b61108f565b610223610306366004615796565b611266565b610223610319366004615881565b6115ed565b61032660d281565b604051908152602001610291565b60005460ff166040519015158152602001610291565b6002546102709073ffffffffffffffffffffffffffffffffffffffff1681565b6102236103783660046158af565b611b74565b610223611c62565b610223610393366004615796565b611d4e565b6102236103a6366004615750565b611e3b565b6102236103b93660046158dd565b611f28565b6102236103cc366004615796565b612016565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b610223612103565b61022361040e36600461581d565b612279565b610223610421366004615750565b61235d565b6102236104343660046158dd565b61244a565b610223610447366004615796565b61257a565b6001546102709073ffffffffffffffffffffffffffffffffffffffff1681565b61022361047a36600461591a565b6127d6565b61022361048d36600461594a565b6128c3565b6102236129b0565b6102236104a8366004615967565b612cba565b6102236104bb3660046159d8565b612e3d565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e91906159f5565b6105a4576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ae610c72565b73ffffffffffffffffffffffffffffffffffffffff1663503931096040518163ffffffff1660e01b81526004016040805180830381865afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061b9190615a12565b915050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161461072c57610651610c72565b6040517f08c25f8f0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8416600482015273ffffffffffffffffffffffffffffffffffffffff91909116906308c25f8f90602401600060405180830381600087803b1580156106cc57600080fd5b505af11580156106e0573d6000803e3d6000fd5b50506040516fffffffffffffffffffffffffffffffff851681527f1cb1645cf44744a79c6a2c5b59b369aeb21904c0348c3b5952fd588fb861cc46925060200190505b60405180910390a15b5050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de91906159f5565b610814576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610861576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fff68754300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063ff68754390602401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190615a41565b905073ffffffffffffffffffffffffffffffffffffffff8116610945576040517f87d928a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526000602483015290911690636e98e5e490604401600060405180830381600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff851692507f552a57f99ccc96237d3776052b6c7cee047700e953c6e21d3a12c023ccf91d029150600090a25050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac491906159f5565b610afa576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b058261306c565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190615a5e565b9050818116610c6d576001546040517fa366f496000000000000000000000000000000000000000000000000000000008152918317600483018190529173ffffffffffffffffffffffffffffffffffffffff9091169063a366f49690602401600060405180830381600087803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff861692507ff17b849746e74d7186170c9553d4bbf60b4f8bb1ed81fe50c099b934fb078f059150600090a25b505050565b600154604080517f2f7a1881000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691632f7a18819160048083019260209291908290030181865afa158015610ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d069190615a41565b905090565b60606000610d19600361314c565b90508067ffffffffffffffff811115610d3457610d34615a77565b604051908082528060200260200182016040528015610d5d578160200160208202803683370190505b50915060005b81811015610db557610d76600382613156565b838281518110610d8857610d88615aa6565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610d63565b505090565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6891906159f5565b610e9e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea782613162565b61072c828261353c565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f91906159f5565b610f95576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f9d6137f4565b565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d91906159f5565b611083576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81613871565b50565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d91906159f5565b611173576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81163014156111945750565b61119d816139fe565b6001546040517f9f5f86ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015290911690639f5f86ae90602401600060405180830381600087803b15801561120a57600080fd5b505af115801561121e573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507f5a0b7d0f9c24b39256e112a0584b4c5ce38d8f1dee2e7c56f15b852604cdc8869150600090a250565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156112f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131491906159f5565b61134a576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611397576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063fdd5764590602401602060405180830381865afa158015611408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190615a41565b905073ffffffffffffffffffffffffffffffffffffffff811661147b576040517f87d928a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000602483015290911690636e98e5e490604401600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b50506001546040517f6e98e5e40000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff86811660248301529091169250636e98e5e49150604401600060405180830381600087803b15801561157b57600080fd5b505af115801561158f573d6000803e3d6000fd5b505050506115a7826003613bc090919063ffffffff16565b5060405173ffffffffffffffffffffffffffffffffffffffff8316907fab9f405bf0c19b97f65a7031634db41569cd2f0e0376a610a1e977f9ab22b58f90600090a25050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b91906159f5565b6116d1576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d9610c72565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611710575050565b611719826139fe565b6000611723610c72565b73ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190615a5e565b90506000806000808460021415611824576117aa610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401606060405180830381865afa1580156117f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118189190615ad5565b919550935091506118a5565b61182c610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190615b22565b929650909450925090505b6000806118b0610c72565b73ffffffffffffffffffffffffffffffffffffffff1663860aefcf6040518163ffffffff1660e01b81526004016040805180830381865afa1580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190615a12565b9150915060008088600214156119485750600090506fffffffffffffffffffffffffffffffff6119c3565b611950610c72565b73ffffffffffffffffffffffffffffffffffffffff1663fc7b9c186040518163ffffffff1660e01b81526004016040805180830381865afa158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd9190615a12565b90925090505b60006119cd610c72565b73ffffffffffffffffffffffffffffffffffffffff1663b1836d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3b91906159f5565b6001546040517f693ce7f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f8116600483015292935091169063693ce7f590602401600060405180830381600087803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b505050508a15611b0b57611ad189613be2565b611adb8585613e49565b611ae48861403f565b611aed86613871565b611af78383614185565b8015611b0657611b068761422c565b611b25565b611b25836fffffffffffffffffffffffffffffffff614185565b60405173ffffffffffffffffffffffffffffffffffffffff8d16907fa8b21f72cb83bce808df32dc2330217d744a1c22f3e9e44e4b11bbf049d37d9d90600090a2505050505050505050505050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2291906159f5565b611c58576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072c82826143cb565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1091906159f5565b611d46576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f9d6148d6565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc91906159f5565b611e32576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81614931565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee991906159f5565b611f1f576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81613be2565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015611fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd691906159f5565b61200c576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61072c8282613e49565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156120a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c491906159f5565b6120fa576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81614a99565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa15801561218d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b191906159f5565b6121e7576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121ef610c72565b73ffffffffffffffffffffffffffffffffffffffff1663a706efc46040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561223657600080fd5b505af115801561224a573d6000803e3d6000fd5b50506040517f76867738b1ea031dba288b212a346e09748d59c0dd4a24a79d73b2ff4825445c925060009150a1565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015612303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232791906159f5565b610ea7576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b91906159f5565b612441576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81614c02565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f891906159f5565b61252e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125388282614185565b6040516fffffffffffffffffffffffffffffffff821681527fa38676460d3a7ae7dabafec8ec493c078b50d27a16ef41d82d1a29027b61aeda90602001610723565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015612604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262891906159f5565b61265e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006126698261306c565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe9190615a5e565b905081811615610c6d576001546040517fa366f496000000000000000000000000000000000000000000000000000000008152918318600483018190529173ffffffffffffffffffffffffffffffffffffffff9091169063a366f49690602401600060405180830381600087803b15801561277857600080fd5b505af115801561278c573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff861692507fbeceb48aeaa805aeae57be163cca6249077a18734e408a85aa74e875c43738099150600090a2505050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015612860573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288491906159f5565b6128ba576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c81614d8f565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa15801561294d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297191906159f5565b6129a7576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c8161422c565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015612a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5e91906159f5565b612a94576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b269190615a41565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbb9190615a41565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461072c576001546040517fdc9e0faa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063dc9e0faa90602401600060405180830381600087803b158015612c5d57600080fd5b505af1158015612c71573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff851692507f3f82447be465b0b5a4a9e54c74d5f6ae73f2e9537f2cc1590a340524703d09619150600090a25050565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635f259aba90602401602060405180830381865afa158015612d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6891906159f5565b612d9e576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff8616101580612dc25750612710612dbb8585615bb0565b61ffff1610155b80612ddc5750612710612dd58383615bb0565b61ffff1610155b15612e13576040517f0b361d6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e368585612e2486612710615bd6565b85612e3186612710615bd6565b614eec565b5050505050565b808015612ef557506040517f3a41ec640000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633a41ec6490602401602060405180830381865afa158015612ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef391906159f5565b155b15612f2c576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015612fe557506040517fd4eb5db00000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d4eb5db090602401602060405180830381865afa158015612fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe391906159f5565b155b1561301c576040517f10332dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61108c8161403f565b60006130478373ffffffffffffffffffffffffffffffffffffffff8416615228565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6001546040517ff67c5bd000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063f67c5bd090602401602060405180830381865afa1580156130dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131019190615a5e565b90508015806131105750806001145b15613147576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600061304a825490565b60006130478383615277565b73ffffffffffffffffffffffffffffffffffffffff81166131af576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81163b61321a576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8216906370a0823190602401602060405180830381865afa9250505080156132be575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526132bb91810190615a5e565b60015b6132f4576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133869190615a41565b6040517ff9a65030000000000000000000000000000000000000000000000000000000008152670de0b6b3a7640000600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152919091169063f9a6503090604401602060405180830381865afa92505050801561343c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261343991810190615a5e565b60015b613472576040517f67a7cd4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001546040517fd48bfca700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529091169063d48bfca790602401600060405180830381600087803b1580156134e057600080fd5b505af11580156134f4573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff841692507fbeceb48aeaa805aeae57be163cca6249077a18734e408a85aa74e875c43738099150600090a250565b60025473ffffffffffffffffffffffffffffffffffffffff83811691161415613591576040517f3b899cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f172c48c70000000000000000000000000000000000000000000000000000000081526000600482018190529173ffffffffffffffffffffffffffffffffffffffff169063172c48c7906024016040805180830381865afa158015613600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136249190615bf9565b9150508061ffff168261ffff161115613669576040517f33c6608d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517f7832743800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000921690637832743890602401602060405180830381865afa1580156136da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fe9190615c28565b90508261ffff168161ffff16146137ee576001546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015261ffff861660248301529091169063a70bc54290604401600060405180830381600087803b15801561378657600080fd5b505af115801561379a573d6000803e3d6000fd5b505060405161ffff8616815273ffffffffffffffffffffffffffffffffffffffff871692507f94525be3f877fb3bb3d260299de56a31f86aaacb06ccba90e4fbedcb693ac650915060200160405180910390a25b50505050565b6137fc6152a1565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b61271061ffff8216106138b0576040517f0b361d6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006138ba610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015613904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139289190615b22565b93505050508061ffff168261ffff161461072c57613944610c72565b6040517f4527d9ce00000000000000000000000000000000000000000000000000000000815261ffff8416600482015273ffffffffffffffffffffffffffffffffffffffff9190911690634527d9ce90602401600060405180830381600087803b1580156139b157600080fd5b505af11580156139c5573d6000803e3d6000fd5b505060405161ffff851681527ff6752a535d833e0a40003935cfd7e73e6865d523e7bbcf4e5526a2afc5e18e5c92506020019050610723565b73ffffffffffffffffffffffffffffffffffffffff8116613a4b576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81163b613ab1576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401613211565b8073ffffffffffffffffffffffffffffffffffffffff1663c12c21c06040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613b36575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613b3391810190615a41565b60015b613b6c576040517fe9eddd1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff82811691161461072c576040517fe9eddd1700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006130478373ffffffffffffffffffffffffffffffffffffffff841661530d565b6000613bec610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015613c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c5a9190615b22565b50505090506000613c69610c72565b73ffffffffffffffffffffffffffffffffffffffff1663860aefcf6040518163ffffffff1660e01b81526004016040805180830381865afa158015613cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd69190615a12565b915050806fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161015613d37576040517f9aadd6f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1614610c6d57613d6a610c72565b6040517f9c55a0540000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff9190911690639c55a05490602401600060405180830381600087803b158015613de557600080fd5b505af1158015613df9573d6000803e3d6000fd5b50506040516fffffffffffffffffffffffffffffffff861681527fa030eec20ae970821387224ec3bb15b4bd22b89bfb86dc4d2b3827aa3d99e48d925060200190505b60405180910390a1505050565b6000613e53610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015613e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec19190615b22565b5050509050816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff161180613f1b5750806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16115b15613f52576040517f9aadd6f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613f5a610c72565b6040517f601d66f60000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff80861660048301528416602482015273ffffffffffffffffffffffffffffffffffffffff919091169063601d66f690604401600060405180830381600087803b158015613fdd57600080fd5b505af1158015613ff1573d6000803e3d6000fd5b5050604080516fffffffffffffffffffffffffffffffff8088168252861660208201527f4d4981437d0211f9e6843eb024d9ada1fa3a99514d4343d4aece106dd11524bb9350019050613e3c565b6000614049610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015614093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b79190615b22565b50509150508015158215151461072c576140cf610c72565b6040517fffd9b907000000000000000000000000000000000000000000000000000000008152831515600482015273ffffffffffffffffffffffffffffffffffffffff919091169063ffd9b90790602401600060405180830381600087803b15801561413a57600080fd5b505af115801561414e573d6000803e3d6000fd5b505050507f2eec109225800da31a3ab4a2d9a7133cc60dd9f2ec1e96b545f5b3a3432abb4682604051610723911515815260200190565b61418d610c72565b6040517fb2f4d3280000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff80851660048301528316602482015273ffffffffffffffffffffffffffffffffffffffff919091169063b2f4d32890604401600060405180830381600087803b15801561421057600080fd5b505af1158015614224573d6000803e3d6000fd5b505050505050565b6000614236610c72565b73ffffffffffffffffffffffffffffffffffffffff1663cff0ab966040518163ffffffff1660e01b8152600401608060405180830381865afa158015614280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a49190615b22565b50925050508164ffffffffff168164ffffffffff161015806142cc57508164ffffffffff1642115b15614303576040517fe4eaca7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61430b610c72565b6040517feb9606df00000000000000000000000000000000000000000000000000000000815264ffffffffff8416600482015273ffffffffffffffffffffffffffffffffffffffff919091169063eb9606df90602401600060405180830381600087803b15801561437b57600080fd5b505af115801561438f573d6000803e3d6000fd5b505060405164ffffffffff851681527f0b3eb35ba750e7a7e4d26c9eee3d226f4e1f68c5568f4a3d051c94b241b02ac092506020019050610723565b73ffffffffffffffffffffffffffffffffffffffff8216614418576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163b158015614467575073ffffffffffffffffffffffffffffffffffffffff821673cccccccccccccccccccccccccccccccccccccccc14155b156144b6576040517fdf4c572d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401613211565b6144bf816139fe565b60015473ffffffffffffffffffffffffffffffffffffffff8381169116148061451a57506144eb610c72565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061453f575060015473ffffffffffffffffffffffffffffffffffffffff8281169116145b8061457c575061454d610c72565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156145b3576040517f025cd69700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517fff68754300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600092169063ff68754390602401602060405180830381865afa158015614624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146489190615a41565b73ffffffffffffffffffffffffffffffffffffffff1614614695576040517f21ff1e7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040517ffdd5764500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152600092169063fdd5764590602401602060405180830381865afa158015614706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061472a9190615a41565b905073ffffffffffffffffffffffffffffffffffffffff8116156147d5576001546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526000602483015290911690636e98e5e490604401600060405180830381600087803b1580156147bc57600080fd5b505af11580156147d0573d6000803e3d6000fd5b505050505b6001546040517f6e98e5e400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152858116602483015290911690636e98e5e490604401600060405180830381600087803b15801561484a57600080fd5b505af115801561485e573d6000803e3d6000fd5b5050505061487683600361302590919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4bcbefaef68b99503d502f5a6abe7bca2b183ab8ac55457013c77d084ebd130560405160405180910390a3505050565b6148de615400565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586138473390565b6001546040517f38975bc400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009216906338975bc490602401602060405180830381865afa1580156149a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149c691906159f5565b90508061072c576001546040517f84edaa4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906384edaa4290602401600060405180830381600087803b158015614a3a57600080fd5b505af1158015614a4e573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff851681527f3de547663b878d95431ab299ea53d5775b060dc12927ca53b25cb76d4529ae2e92506020019050610723565b6001546040517f38975bc400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009216906338975bc490602401602060405180830381865afa158015614b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b2e91906159f5565b9050801561072c576001546040517fa460e10400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063a460e10490602401600060405180830381600087803b158015614ba357600080fd5b505af1158015614bb7573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff851681527fbfd52fe4a723932429ed43c34045d687ba64e56d2c75f021648ec457e9da765092506020019050610723565b600080614c0d610c72565b73ffffffffffffffffffffffffffffffffffffffff1663fc7b9c186040518163ffffffff1660e01b81526004016040805180830381865afa158015614c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c7a9190615a12565b91509150806fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1614610c6d57614cb1610c72565b6040517fb2f4d3280000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff80851660048301528516602482015273ffffffffffffffffffffffffffffffffffffffff919091169063b2f4d32890604401600060405180830381600087803b158015614d3457600080fd5b505af1158015614d48573d6000803e3d6000fd5b50506040516fffffffffffffffffffffffffffffffff861681527fa38676460d3a7ae7dabafec8ec493c078b50d27a16ef41d82d1a29027b61aeda92506020019050613e3c565b600154604080517f8345f26e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638345f26e9160048083019260209291908290030181865afa158015614dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e239190615c45565b60ff169050808260ff161461072c576001546040517fdc2b21c100000000000000000000000000000000000000000000000000000000815260ff8416600482015273ffffffffffffffffffffffffffffffffffffffff9091169063dc2b21c190602401600060405180830381600087803b158015614ea057600080fd5b505af1158015614eb4573d6000803e3d6000fd5b505060405160ff851681527f73caacd705657a7d283e48ecf288b73bc517e3aea1bbc9da2fd54a979e8aa95092506020019050610723565b6000614ef88585615bd6565b6001546040517f172c48c700000000000000000000000000000000000000000000000000000000815260006004820181905292935073ffffffffffffffffffffffffffffffffffffffff9091169063172c48c7906024016040805180830381865afa158015614f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f8f9190615bf9565b9150508061ffff168261ffff1614614ffe57614faa8261546d565b60025460405161ffff8416815273ffffffffffffffffffffffffffffffffffffffff909116907f94525be3f877fb3bb3d260299de56a31f86aaacb06ccba90e4fbedcb693ac6509060200160405180910390a25b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015615073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150979190615c62565b945094509450945094508461ffff168c61ffff161415806150c057508361ffff168b61ffff1614155b806150d357508261ffff168a61ffff1614155b806150e657508161ffff168961ffff1614155b806150f957508061ffff168861ffff1614155b1561521a576001546040517f944ac59f00000000000000000000000000000000000000000000000000000000815261ffff808f166004830152808e166024830152808d166044830152808c1660648301528a16608482015273ffffffffffffffffffffffffffffffffffffffff9091169063944ac59f9060a401600060405180830381600087803b15801561518d57600080fd5b505af11580156151a1573d6000803e3d6000fd5b505050507f2214a403d5f8d049e52eacca974c6dea01a471e41d6a18903bfaf7dbc709741f8c8c8c6127106151d69190615bd6565b8c6151e38d612710615bd6565b6040805161ffff96871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190a15b505050505050505050505050565b600081815260018301602052604081205461526f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561304a565b50600061304a565b600082600001828154811061528e5761528e615aa6565b9060005260206000200154905092915050565b60005460ff16610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401613211565b600081815260018301602052604081205480156153f6576000615331600183615cc9565b855490915060009061534590600190615cc9565b90508181146153aa57600086600001828154811061536557615365615aa6565b906000526020600020015490508087600001848154811061538857615388615aa6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806153bb576153bb615ce0565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061304a565b600091505061304a565b60005460ff1615610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401613211565b6001546002546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261ffff8416602482015291169063a70bc54290604401600060405180830381600087803b1580156154e657600080fd5b505af11580156154fa573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561556d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906155919190615a5e565b905060015b81811015610c6d576001546040517f172c48c700000000000000000000000000000000000000000000000000000000815260048101839052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063172c48c7906024016040805180830381865afa158015615611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156359190615bf9565b915091508461ffff168161ffff161115615728576001546040517fa70bc54200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015261ffff881660248301529091169063a70bc54290604401600060405180830381600087803b1580156156c057600080fd5b505af11580156156d4573d6000803e3d6000fd5b505060405161ffff8816815273ffffffffffffffffffffffffffffffffffffffff851692507f94525be3f877fb3bb3d260299de56a31f86aaacb06ccba90e4fbedcb693ac650915060200160405180910390a25b5050600101615596565b6fffffffffffffffffffffffffffffffff8116811461108c57600080fd5b60006020828403121561576257600080fd5b813561576d81615732565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461108c57600080fd5b6000602082840312156157a857600080fd5b813561576d81615774565b6020808252825182820181905260009190848201906040850190845b8181101561580157835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016157cf565b50909695505050505050565b61ffff8116811461108c57600080fd5b6000806040838503121561583057600080fd5b823561583b81615774565b9150602083013561584b8161580d565b809150509250929050565b60006020828403121561586857600080fd5b813561576d8161580d565b801515811461108c57600080fd5b6000806040838503121561589457600080fd5b823561589f81615774565b9150602083013561584b81615873565b600080604083850312156158c257600080fd5b82356158cd81615774565b9150602083013561584b81615774565b600080604083850312156158f057600080fd5b82356158fb81615732565b9150602083013561584b81615732565b60ff8116811461108c57600080fd5b60006020828403121561592c57600080fd5b813561576d8161590b565b64ffffffffff8116811461108c57600080fd5b60006020828403121561595c57600080fd5b813561576d81615937565b600080600080600060a0868803121561597f57600080fd5b853561598a8161580d565b9450602086013561599a8161580d565b935060408601356159aa8161580d565b925060608601356159ba8161580d565b915060808601356159ca8161580d565b809150509295509295909350565b6000602082840312156159ea57600080fd5b813561576d81615873565b600060208284031215615a0757600080fd5b815161576d81615873565b60008060408385031215615a2557600080fd5b8251615a3081615732565b602084015190925061584b81615732565b600060208284031215615a5357600080fd5b815161576d81615774565b600060208284031215615a7057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080600060608486031215615aea57600080fd5b8351615af581615732565b6020850151909350615b0681615873565b6040850151909250615b1781615937565b809150509250925092565b60008060008060808587031215615b3857600080fd5b8451615b4381615732565b6020860151909450615b5481615873565b6040860151909350615b6581615937565b6060860151909250615b768161580d565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff808316818516808303821115615bcd57615bcd615b81565b01949350505050565b600061ffff83811690831681811015615bf157615bf1615b81565b039392505050565b60008060408385031215615c0c57600080fd5b8251615c1781615774565b602084015190925061584b8161580d565b600060208284031215615c3a57600080fd5b815161576d8161580d565b600060208284031215615c5757600080fd5b815161576d8161590b565b600080600080600060a08688031215615c7a57600080fd5b8551615c858161580d565b6020870151909550615c968161580d565b6040870151909450615ca78161580d565b6060870151909350615cb88161580d565b60808701519092506159ca8161580d565b600082821015615cdb57615cdb615b81565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220410d531e66f4f1920876bf41149a52a0ef4dc9da178add25c811dc1a8ab45a2e64736f6c634300080a003394525be3f877fb3bb3d260299de56a31f86aaacb06ccba90e4fbedcb693ac650"; static readonly abi: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_pool"; readonly type: "address"; }, { readonly components: readonly [{ readonly internalType: "uint128"; readonly name: "minBorrowedAmount"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxBorrowedAmount"; readonly type: "uint128"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "uint16"; readonly name: "liquidationThreshold"; readonly type: "uint16"; }]; readonly internalType: "struct CollateralToken[]"; readonly name: "collateralTokens"; readonly type: "tuple[]"; }, { readonly internalType: "address"; readonly name: "degenNFT"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "blacklistHelper"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "expirable"; readonly type: "bool"; }]; readonly internalType: "struct CreditManagerOpts"; readonly name: "opts"; readonly type: "tuple"; }, { readonly internalType: "uint256"; readonly name: "salt"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "RootSelfDestoyException"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "adapters"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "adapter"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "targetContract"; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "adapter"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "targetContract"; readonly type: "address"; }]; readonly internalType: "struct Adapter[]"; readonly name: "_adapters"; readonly type: "tuple[]"; }]; readonly name: "addAdapters"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "addressProvider"; readonly outputs: readonly [{ readonly internalType: "contract AddressProvider"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "creditConfigurator"; readonly outputs: readonly [{ readonly internalType: "contract CreditConfigurator"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "creditFacade"; readonly outputs: readonly [{ readonly internalType: "contract CreditFacade"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "creditManager"; readonly outputs: readonly [{ readonly internalType: "contract CreditManager"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "destoy"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "bytecode"; readonly type: "bytes"; }, { readonly internalType: "uint256"; readonly name: "_salt"; readonly type: "uint256"; }]; readonly name: "getAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getRootBack"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pool"; readonly outputs: readonly [{ readonly internalType: "contract PoolService"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "root"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; static createInterface(): CreditManagerFactoryBaseInterface; static connect(address: string, signerOrProvider: Signer | Provider): CreditManagerFactoryBase; } export {};