[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newEndTime", "type": "uint256" } ], "name": "AuctionTimeModified", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newPeriod", "type": "uint256" } ], "name": "DisplayPeriodModified", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "enum NeuralDrift.DispositionType", "name": "disposition", "type": "uint8" } ], "name": "DispositionExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "enum NeuralDrift.DispositionType", "name": "disposition", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "solanaAddress", "type": "string" } ], "name": "DispositionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "EmergencyLock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "EmergencyUnlock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "string", "name": "solanaAddress", "type": "string" } ], "name": "NFTMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "enum NeuralDrift.NFTState", "name": "state", "type": "uint8" } ], "name": "NFTStateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "auctionEndTime", "type": "uint256" } ], "name": "NewAuctionStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "operator", "type": "address" } ], "name": "OracleOperatorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "newAddress", "type": "string" } ], "name": "SolanaAddressModified", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "newSolanaAddress", "type": "string" } ], "name": "SolanaAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "StateTransitionFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "usdValue", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" } ], "name": "TokenBalanceUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenBurnRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "enum NeuralDrift.DispositionType", "name": "disposition", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "targetAddress", "type": "string" } ], "name": "TokenDispositionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string[]", "name": "symbols", "type": "string[]" } ], "name": "TokenReturnRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "solanaAddress", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenTransferRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokensBurned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "TokensReturned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "solanaAddress", "type": "string" } ], "name": "TokensTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_DISPLAY_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_AUCTION_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_DISPLAY_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_AUCTION_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_DISPLAY_PERIOD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "_updateState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "symbol", "type": "string" } ], "name": "addToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "reason", "type": "string" } ], "name": "emergencyLock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "emergencyUnlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "executeDisposition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getModificationStatus", "outputs": [ { "internalType": "bool", "name": "hasModifiedAuctionTime", "type": "bool" }, { "internalType": "bool", "name": "hasModifiedDisplayPeriod", "type": "bool" }, { "internalType": "bool", "name": "hasModifiedSolanaAddress", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isOwnerOf", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "solanaAddr", "type": "string" } ], "name": "mintNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "newAuctionEndTime", "type": "uint256" } ], "name": "modifyAuctionEndTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "newPeriodMinutes", "type": "uint256" } ], "name": "modifyDisplayPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nfts", "outputs": [ { "internalType": "string", "name": "solanaAddress", "type": "string" }, { "internalType": "enum NeuralDrift.NFTState", "name": "state", "type": "uint8" }, { "internalType": "uint256", "name": "auctionEndTime", "type": "uint256" }, { "internalType": "uint256", "name": "displayPeriod", "type": "uint256" }, { "internalType": "bool", "name": "hasModifiedAuctionTime", "type": "bool" }, { "internalType": "bool", "name": "hasModifiedDisplayPeriod", "type": "bool" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" }, { "internalType": "bool", "name": "isLocked", "type": "bool" }, { "internalType": "bool", "name": "hasModifiedSolanaAddress", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "oracleOperators", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "enum NeuralDrift.DispositionType", "name": "dispositionType", "type": "uint8" }, { "internalType": "string", "name": "targetAddress", "type": "string" } ], "name": "setDisposition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "setOracleOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "", "type": "string" } ], "name": "tokenBalances", "outputs": [ { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "usdValue", "type": "uint256" }, { "internalType": "address", "name": "originalSender", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenDispositions", "outputs": [ { "internalType": "bool", "name": "isSet", "type": "bool" }, { "internalType": "enum NeuralDrift.DispositionType", "name": "dispositionType", "type": "uint8" }, { "internalType": "string", "name": "targetAddress", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenSymbols", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalUSDValue", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "updateNFTState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "newSolanaAddress", "type": "string" } ], "name": "updateSolanaAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "usdValue", "type": "uint256" } ], "name": "updateTokenBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523462000026576200001462000111565b60405161476c62000488823961476c90f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b038211176200006357604052565b6200002b565b90620000806200007860405190565b928362000041565b565b6001600160401b0381116200006357602090601f01601f19160190565b90620000b5620000af8362000082565b62000069565b918252565b620000c6600a6200009f565b69139d5c985b111c9a599d60b21b602082015290565b620000e6620000ba565b90565b620000f560066200009f565b6513911492519560d21b602082015290565b620000e6620000e9565b620000806200011f620000dc565b6200012962000107565b62000134916200018b565b620000803362000425565b620000e6620000e6620000e69290565b620000e660016200013f565b90600019905b9181191691161790565b906200017f620000e662000187926200013f565b82546200015b565b9055565b90620001979162000395565b62000080620001a56200014f565b60066200016b565b634e487b7160e01b600052602260045260246000fd5b9060016002830492168015620001e6575b6020831014620001e057565b620001ad565b91607f1691620001d4565b9160001960089290920291821b911b62000161565b91906200021b620000e662000187936200013f565b908354620001f1565b620000809160009162000206565b8181106200023e575050565b806200024e600060019362000224565b0162000232565b9190601f81116200026557505050565b620002796200008093600052602060002090565b906020601f8401819004830193106200029d575b6020601f90910104019062000232565b90915081906200028d565b90620002b2815190565b906001600160401b0382116200006357620002da82620002d38554620001c3565b8562000255565b602090601f83116001146200031957620001879291600091836200030d575b5050600019600883021c1916906002021790565b015190503880620002f9565b601f198316916200032f85600052602060002090565b9260005b818110620003705750916002939185600196941062000356575b50505002019055565b01516000196008601f8516021c191690553880806200034d565b9193602060018192878701518155019501920162000333565b906200008091620002a8565b90620003a76200008092600062000389565b600162000389565b620000e6905b6001600160a01b031690565b620000e69054620003af565b906001600160a01b039062000161565b620000e690620003b5906001600160a01b031682565b620000e690620003dd565b620000e690620003f3565b906200041d620000e66200018792620003fe565b8254620003cd565b620004316007620003c1565b906200043f81600762000409565b620004766200046f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093620003fe565b91620003fe565b916200048160405190565b600090a356fe6080604052600436101561001257600080fd5b60003560e01c80629a9b7b146102bc5780630197fa12146102b757806301ffc9a7146102b257806306fdde03146102ad578063081812fc146102a8578063095ea7b3146102a357806312e127df146102445780631803a2091461029e57806319632275146102995780631d6053f61461029457806323b872dd1461028f578063265aa6211461028a5780633b015bbe1461028557806342842e0e1461028057806353458e401461027b5780636352211e146102765780636e7ddea81461027157806370a082311461026c578063715018a61461026757806378157805146102625780637c3882a01461025d5780638ce26108146102585780638da5cb5b1461025357806395d89b411461024e57806398984de6146102495780639f2754ea14610244578063a22cb4651461023f578063a23b6c871461023a578063aeb484f714610235578063b079331314610230578063b635df671461022b578063b88d4fde14610226578063b98f8efb14610221578063c0a027f41461021c578063c5b8f77214610217578063c87b56dd14610212578063cbf00c331461020d578063d4a627ea14610208578063d64baaca14610203578063e985e9c5146101fe578063eacabe14146101f9578063f2fde38b146101f45763fc91e626036102c1576110bd565b6110a5565b61108c565b611059565b611027565b61100e565b610ff5565b610fda565b610fbe565b610f8d565b610e86565b610e56565b610ded565b610dbb565b610d7f565b610d66565b610d2a565b6105fa565b610cd7565b610ca8565b610c8d565b610c75565b610c34565b610be8565b610b7a565b610b5f565b610b30565b610a81565b610a66565b610a17565b6109fb565b610975565b6106fd565b6106b4565b610643565b610628565b6105c0565b61054b565b610503565b61046d565b61041e565b6102d7565b600080fd5b60009103126102c157565b9052565b565b346102c1576102e73660046102c6565b6103036102f2614396565b6040515b9182918290815260200190565b0390f35b805b036102c157565b905035906102d582610307565b634e487b7160e01b600052604160045260246000fd5b90601f01601f1916810190811067ffffffffffffffff82111761035557604052565b61031d565b906102d561036760405190565b9283610333565b67ffffffffffffffff811161035557602090601f01601f19160190565b0190565b90826000939282370152565b909291926103b06103ab8261036e565b61035a565b938185526020850190828401116102c1576102d59261038f565b9080601f830112156102c1578160206103e59335910161039b565b90565b9190916040818403126102c1576103ff8382610310565b92602082013567ffffffffffffffff81116102c1576103e592016103ca565b346102c1576104376104313660046103e8565b90614343565b604051005b6001600160e01b03198116610309565b905035906102d58261043c565b906020828203126102c1576103e59161044c565b346102c157610303610488610483366004610459565b6112e8565b6040515b91829182901515815260200190565b60005b8381106104ae5750506000910152565b818101518382015260200161049e565b6104df6104e860209361038b936104d3815190565b80835293849260200190565b9586910161049b565b601f01601f191690565b60208082526103e5929101906104be565b346102c1576105133660046102c6565b61030361051e61145b565b6040515b918291826104f2565b906020828203126102c1576103e591610310565b6001600160a01b031690565b346102c15761030361056661056136600461052b565b611642565b6040515b918291826001600160a01b03909116815260200190565b6001600160a01b038116610309565b905035906102d582610581565b91906040838203126102c1576103e5906105b78185610590565b93602001610310565b346102c1576104376105d336600461059d565b906115e1565b6103e56103e56103e59290565b6103e562278d006105d9565b6103e56105e6565b346102c15761060a3660046102c6565b6103036102f26105f2565b6103e561012c6105d9565b6103e5610615565b346102c1576106383660046102c6565b6103036102f2610620565b346102c15761043761065636600461052b565b613297565b600311156102c157565b905035906102d58261065b565b916060838303126102c1576106878284610310565b926106958360208301610665565b92604082013567ffffffffffffffff81116102c1576103e592016103ca565b346102c1576104376106c7366004610672565b91612ac2565b90916060828403126102c1576103e56106e68484610590565b936106f48160208601610590565b93604001610310565b346102c1576104376107103660046106cd565b916116f9565b90610720906105d9565b600052602052604060002090565b634e487b7160e01b600052602260045260246000fd5b9060016002830492168015610764575b602083101461075f57565b61072e565b91607f1691610754565b8054600093929161078b61078183610744565b8085529360200190565b91600181169081156107dd57506001146107a457505050565b6107b79192939450600052602060002090565b916000925b8184106107c95750500190565b8054848401526020909301926001016107bc565b92949550505060ff1916825215156020020190565b906103e59161076e565b906102d56108169261080d60405190565b938480926107f2565b0383610333565b6103e5905b60ff1690565b6103e5905461081d565b6103e59081565b6103e59054610832565b6103e59060081c610822565b6103e59054610843565b61086490600b610716565b61086d816107fc565b9161087a60018301610828565b9161088760028201610839565b9161089460038301610839565b916108a160048201610828565b916108ae6004830161084f565b916108bb60058201610839565b916103e560066108cc818501610828565b930161084f565b634e487b7160e01b600052602160045260246000fd5b600311156108f357565b6108d3565b906102d5826108e9565b6103e5906108f8565b6102d190610902565b9694929099989795939199610120880188810360008a0152610935916104be565b99602088016109439161090b565b6040870152606086015215156080850152151560a084015260c0830152151560e0820152610100016102d59115159052565b346102c15761030361099061098b36600461052b565b610859565b956109a399979995919594929460405190565b998a998a610914565b6080818303126102c1576109c08282610310565b92602082013567ffffffffffffffff81116102c1576109e4846103e59285016103ca565b936109f28160408601610310565b93606001610310565b346102c157610437610a0e3660046109ac565b92919091613572565b346102c157610437610a2a3660046106cd565b91611716565b6103e5916008021c6001600160a01b031690565b906103e59154610a30565b6103e590610a61600d91600092610716565b610a44565b346102c157610303610566610a7c36600461052b565b610a4f565b346102c157610303610566610a9736600461052b565b611424565b634e487b7160e01b600052603260045260246000fd5b8054821015610ad557610acc600191600052602060002090565b91020190600090565b610a9c565b634e487b7160e01b600052600060045260246000fd5b90600010610b01576103e5906107fc565b610ada565b60086000610b12825490565b831015610b2d57506103e591610b2791610ab2565b90610af0565b80fd5b346102c15761030361051e610b4636600461052b565b610b06565b906020828203126102c1576103e591610590565b346102c1576103036102f2610b75366004610b4b565b61139b565b346102c157610b8a3660046102c6565b610437611117565b610b9d90600c610716565b610ba681610828565b916103e56001610bb58461084f565b93016107fc565b90151581526103e5926060820192909190610bdb90602083019061090b565b60408184039101526104be565b346102c157610303610c03610bfe36600461052b565b610b92565b60405191939193849384610bbc565b6103e5916008021c81565b906103e59154610c12565b6103e56000600a610c1d565b346102c157610c443660046102c6565b6103036102f2610c28565b906020828203126102c157813567ffffffffffffffff81116102c1576103e592016103ca565b346102c157610437610c88366004610c4f565b613eb5565b346102c157610c9d3660046102c6565b6103036105666110d5565b346102c157610cb83660046102c6565b61030361051e611465565b6103e5620151806105d9565b6103e5610cc3565b346102c157610ce73660046102c6565b6103036102f2610ccf565b801515610309565b905035906102d582610cf2565b91906040838203126102c1576103e590610d218185610590565b93602001610cfa565b346102c157610437610d3d366004610d07565b90611667565b91906040838203126102c1576103e590610d5d8185610310565b93602001610590565b346102c157610437610d79366004610d43565b9061202b565b346102c157610303610d9a610d9536600461052b565b614460565b60408051931515845291151560208401521515908201529081906060820190565b346102c157610437610dce36600461052b565b612167565b91906040838203126102c1576103e5906105b78185610310565b346102c157610437610e00366004610dd3565b9061472c565b906080828203126102c157610e1b8183610590565b92610e298260208501610590565b92610e378360408301610310565b92606082013567ffffffffffffffff81116102c1576103e592016103ca565b346102c157610437610e69366004610e06565b92919091611726565b6103e5621275006105d9565b6103e5610e72565b346102c157610e963660046102c6565b6103036102f2610e7e565b61038b610eb992602092610eb3815190565b94859290565b9384910161049b565b610ed261038b9160209493610ea1565b918252565b610eec610ee360405190565b92839283610ec2565b03902090565b6103e591610ed7565b6103e59061053f565b6103e59054610efb565b610f19906009610ef2565b90610f23826107fc565b91610f3060018201610839565b916103e56003610f4260028501610839565b9301610f04565b610f7e6102d594610f77610f6f60609599989699608086019086820360008801526104be565b986020850152565b6040830152565b01906001600160a01b03169052565b346102c157610303610fa8610fa3366004610c4f565b610f0e565b90610fb594929460405190565b94859485610f49565b346102c157610303610488610fd436600461059d565b906143c1565b346102c15761030361051e610ff036600461052b565b6114a2565b346102c1576104376110083660046103e8565b906120f4565b346102c157610437611021366004610dd3565b90613790565b346102c15761043761103a36600461052b565b61394e565b91906040838203126102c1576103e590610d5d8185610590565b346102c15761030361048861106f36600461103f565b90611672565b9190916040818403126102c1576103ff8382610590565b346102c15761043761109f366004611075565b906125e1565b346102c1576104376110b8366004610b4b565b61122e565b346102c1576104376110d036600461052b565b6139aa565b6103e56007610f04565b6110e7611173565b6102d5611105565b61053f6103e56103e59290565b6103e5906110ef565b6102d561111260006110fc565b61128d565b6102d56110df565b1561112657565b60405162461bcd60e51b81528061116f600482016020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b0390fd5b6102d561117e6110d5565b61119761118a3361053f565b916001600160a01b031690565b1461111f565b6102d5906111a9611173565b611209565b156111b557565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b6102d59061111261121d61053f60006110fc565b6001600160a01b03831614156111ae565b6102d59061119d565b906001600160a01b03905b9181191691161790565b6103e59061053f906001600160a01b031682565b6103e59061124c565b6103e590611260565b906112826103e561128992611269565b8254611237565b9055565b6112976007610f04565b906112a3816007611272565b6112d66112d07f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611269565b91611269565b916112e060405190565b80805b0390a3565b6380ac58cd60e01b6001600160e01b0319821614908115611318575b811561130e575090565b6103e59150611e5b565b6001600160e01b03198116635b5e139f60e01b149150611304565b1561133a57565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b9061072090611269565b6113d36103e5916113aa600090565b506113cc6113bb61053f60006110fc565b6001600160a01b0383161415611333565b6003611391565b610839565b156113df57565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6114319060005b506117c6565b6103e561144161053f60006110fc565b6001600160a01b03831614156113d8565b6103e5906107fc565b6103e56000611452565b6103e56001611452565b90610ed26103ab8361036e565b6103e5600061146f565b6103e561147c565b61149c906103e59392610ea1565b90610ea1565b6114ab81611bc6565b6114b3611511565b80516000906114c86114c4836105d9565b9190565b11159050611507576103e56114fb916114e36103e594611dc6565b906114ed60405190565b93849260208401928361148e565b90810382520382610333565b50506103e5611486565b6103e5611486565b1561152057565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b1561157657565b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b906102d59161162c6115f283611424565b6116106001600160a01b0382166001600160a01b0385161415611519565b336001600160a01b0382168114918215611631575b505061156f565b611a7e565b61163b9250611672565b3880611625565b6116626103e591611651600090565b5061165b81611bc6565b6004610716565b610f04565b6102d5919033611b50565b6103e59161168d61169292611685600090565b506005611391565b611391565b610828565b1561169e57565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b6102d592919061171161170c84336117dd565b611697565b611958565b90916102d592611724611486565b925b6102d59392919061173a61170c84336117dd565b6117a7565b1561174657565b6040515b62461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608490fd5b916102d593916117c1936117bc838383611958565b611c79565b61173f565b6116626103e5916117d5600090565b506002610716565b6117e682611424565b916001600160a01b0383166001600160a01b03831614928315611833575b50821561181057505090565b61182f91925061182261118a91611642565b926001600160a01b031690565b1490565b6118409193508290611672565b9138611804565b1561184e57565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b156118a857565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b916001600160a01b0360089290920291821b911b611242565b91906119236103e561128993611269565b9083546118f9565b6102d591600091611912565b9060001990611242565b906119516103e5611289926105d9565b8254611937565b90916102d59261198261196a83611424565b61197c6001600160a01b03861661118a565b14611847565b6119d560006119a761199661053f836110fc565b6001600160a01b03851614156118a1565b6119c56119b385611424565b61197c6001600160a01b03881661118a565b6119d0846004610716565b61192b565b6119df60016105d9565b92611a1a611a0d83600361168d6119f68683611391565b611a078a611a0383610839565b0390565b90611941565b611a078661038b83610839565b611a2e82611a29856002610716565b611272565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a5882611269565b611a6184611269565b90611a6b866105d9565b92611a7560405190565b600090a461434d565b90611a8e82611a29836004610716565b611a9781611424565b91611ad4611ace611ac87f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92595611269565b92611269565b926105d9565b92611ade60405190565b600090a4565b15611aeb57565b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b9060ff90611242565b90611b496103e561128992151590565b8254611b30565b611b6e6001600160a01b0383166001600160a01b0383161415611ae4565b611b8683611b818461168d856005611391565b611b39565b6112e3611bbc611bb67f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3193611269565b93611269565b9361048c60405190565b611bd26102d591611bd7565b6113d8565b611be290600061142b565b611bf261118a61053f60006110fc565b141590565b905051906102d58261043c565b906020828203126102c1576103e591611bf7565b6001600160a01b039182168152911660208201526103e5926080820192909190611c4190610f77565b60608184039101526104be565b6040513d6000823e3d90fd5b3d15611c7457611c693d61146f565b903d6000602084013e565b606090565b92909190611c8683611d67565b15611d5e57611ccb6000611ca3611c9e602096611269565b611269565b92611cd663150b7a0291611cb43390565b96611cbe60405190565b998a988997889660e01b90565b865260048601611c18565b03925af160009181611d2e575b50611d1457611cf0611c5a565b8051611cff6114c460006105d9565b03611d0c5760405161174a565b805190602001fd5b61182f630a85bd0160e11b5b916001600160e01b03191690565b611d5091925060203d8111611d57575b611d488183610333565b810190611c04565b9038611ce3565b503d611d3e565b50505050600190565b3b611d756114c460006105d9565b1190565b369037565b906102d5611d94611d8e8461146f565b9361036e565b601f190160208401611d79565b634e487b7160e01b600052601260045260246000fd5b8115611dc1570490565b611da1565b611dcf81611e6b565b90611ddf60019261038b846105d9565b9180611dea84611d7e565b8094611df4600090565b5060200101905b611e06575b50505090565b611e3a9060001901926f181899199a1a9b1b9c1cb0b131b232b360811b600a82061a8453611e34600a6105d9565b90611db7565b9081611e496114c460006105d9565b14611e5657909181611dfb565b611e00565b61182f6301ffc9a760e01b611d20565b611e7560006105d9565b907a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000611e9b816105d9565b821015611fed575b506d04ee2d6d415b85acef8100000000611ebc816105d9565b821015611fcb575b50662386f26fc10000611ed6816105d9565b821015611fa9575b506305f5e100611eed816105d9565b821015611f87575b50612710611f02816105d9565b821015611f65575b506064611f16816105d9565b821015611f43575b50611f2c6114c4600a6105d9565b1015611f355790565b6103e59061038b60016105d9565b611f5e91611e34611f53926105d9565b9161038b60026105d9565b9038611f1e565b611f8091611e34611f75926105d9565b9161038b60046105d9565b9038611f0a565b611fa291611e34611f97926105d9565b9161038b60086105d9565b9038611ef5565b611fc491611e34611fb9926105d9565b9161038b60106105d9565b9038611ede565b611fe691611e34611fdb926105d9565b9161038b60206105d9565b9038611ec4565b61200891611e34611ffd926105d9565b9161038b60406105d9565b9038611ea3565b906102d59161201c611173565b90611a296102d592600d610716565b906102d59161200f565b906102d591612042611173565b61208a565b1561204e57565b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b906102d5916120a061209b82611bd7565b612047565b6120b8600160066120b284600b610716565b01611b39565b6120ef6120e57f7ef1428bbce91d5e9d18c5c34802c7c02b901464f6d5488a8bd0a1ad6444f916926105d9565b9261052260405190565b0390a2565b906102d591612035565b6102d59061210a611173565b6102d59061211a61209b82611bd7565b61212c600060066120b284600b610716565b6121567fb40ecda044b40192be4a209fe70a9ae9708b7ca524700e321314a23e14e12201916105d9565b9061216060405190565b80806120ef565b6102d5906120fe565b906102d59161217d611173565b612492565b1561218957565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420536f6c616e61206164647265737360501b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b919082018092116121ea57565b6121c7565b6103e561012061035a565b906102d1906108f8565b9160001960089290920291821b911b611242565b91906122296103e5611289936105d9565b908354612204565b6102d591600091612218565b818110612248575050565b806122566000600193612231565b0161223d565b9190601f811161226b57505050565b61227d6102d593600052602060002090565b906020601f8401819004830193106122a0575b6020601f909101045b019061223d565b9091508190612290565b600019600883021c1916906002021790565b906122c5815190565b9067ffffffffffffffff8211610355576122e9826122e38554610744565b8561225c565b602090601f83116001146123175761128992916000918361230c575b50506122aa565b015190503880612305565b601f1983169161232c85600052602060002090565b9260005b81811061236a57509160029391856001969410612351575b50505002019055565b01516000196008601f8516021c19169055388080612348565b91936020600181928787015181550195019201612330565b906102d5916122bc565b6103e590516108f8565b90611b496103e561128992610902565b9061ff009060081b611242565b906123c36103e561128992151590565b82546123a6565b9061245161010060066102d5946123ef600082016123e9600088015190565b90612382565b612408600182016124026020880161238c565b90612396565b61241a60028201611a07604088015190565b61242c60038201611a07606088015190565b612457600482016124496124436080890151151590565b82611b39565b60a087015115155b906123b3565b61246960058201611a0760c088015190565b019261248161247b60e0830151151590565b85611b39565b0151151590565b906102d5916123ca565b6124a361249e83613ef5565b612182565b6124b6600e6124b181612731565b61271c565b906124c182826125eb565b6125564261254660006125356124e26124dc62278d006105d9565b856121dd565b9361251f6124ee610e72565b6125186124f96121ef565b976125048d888b0152565b6125118760208b016121fa565b6040890152565b6060870152565b8215156080860181905260a086015260c0850152565b151560e08301819052610100830152565b61255184600b610716565b612488565b61256581611a2984600d610716565b61258f7fec30c42357d7a90a80d7f1fc87f96ca0cc5c1504d15c7130ae849673d95a9ecb926105d9565b809261259a60405190565b6001600160a01b0384168152602090a26112e36125d77f06becd955c918828f6e985541acbf49cc842c9e9bd569fffc7698e721ef1357592611269565b9361052260405190565b906102d591612170565b6102d5916125f7611486565b6117c1916102d59361260982826126af565b6117bc60006110fc565b1561261a57565b60405162461bcd60e51b81528061116f600482016020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b1561266a57565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b6102d5916126bd60006110fc565b916126dc6001600160a01b0384166001600160a01b0383161415612613565b6126f46126ef6126eb84611bd7565b1590565b612663565b6127036126ef6126eb84611bd7565b61270d60016105d9565b92611a1a611a0d836003611391565b60006103e59161272a600090565b5001610839565b6102d590611a07600061274460016105d9565b92019161038b83610839565b906102d5929161276261209b82611bd7565b6127a5565b1561276e57565b60405162461bcd60e51b815260206004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606490fd5b906102d592916127c66127b782611424565b6127c03361118a565b14612767565b612807565b156127d257565b60405162461bcd60e51b815260206004820152600d60248201526c139195081a5cc81b1bd8dad959609a1b6044820152606490fd5b906102d5929161282e6128296126eb600661282385600b610716565b01610828565b6127cb565b6129c6565b1561283a57565b60405162461bcd60e51b815260206004820152602e60248201527f43616e206f6e6c792073657420646973706f736974696f6e20647572696e672060448201526d191a5cdc1b185e481c195c9a5bd960921b6064820152608490fd5b1561289d57565b60405162461bcd60e51b815260206004820152602e60248201527f54617267657420616464726573732073686f756c6420626520656d707479206660448201526d37b910313ab93717b932ba3ab93760911b6064820152608490fd5b1561290057565b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642074617267657420536f6c616e6120616464726573730000006044820152606490fd5b6103e5606061035a565b906123c36103e561128992610902565b6102d591906123e9906040906001906129918161297f6124438851151590565b61298b6020880161238c565b9061294f565b0192015190565b906102d59161295f565b916103e5926129b96040820193600083019061090b565b60208184039101526104be565b9091612a5f6129de60016128236103e586600b610716565b6129fc6001916129f66129f0846108f8565b916108f8565b14612833565b612a0660026108f8565b612a0f866108f8565b03612a9f57612a25612a2084613ef5565b6128f9565b612a37612a30612945565b9115158252565b612a4485602083016121fa565b612a4f836040830152565b612a5a84600c610716565b612998565b612a897fbf5dc5535ad9134da7db8f849c5d44bdbf22ee705deae7360e536e5cfd6678e2926105d9565b926120ef612a9660405190565b928392836129a2565b612abd612aaa845190565b612ab76114c460006105d9565b14612896565b612a25565b906102d59291612750565b612ade90612ad96132f6565b612ae6565b6102d5613328565b6102d590612af661209b82611bd7565b612dfb565b15612b0257565b60405162461bcd60e51b8152602060048201526015602482015274139bdd081a5b88191a5cdc1b185e481c195c9a5bd9605a1b6044820152606490fd5b15612b4657565b60405162461bcd60e51b8152602060048201526013602482015272111a5cdc1bdcda5d1a5bdb881b9bdd081cd95d606a1b6044820152606490fd5b15612b8857565b60405162461bcd60e51b815260206004820152601860248201527f446973706c617920706572696f64206e6f7420656e64656400000000000000006044820152606490fd5b6103e59054610744565b60001981146121ea5760010190565b818102929181159184041417156121ea57565b919082039182116121ea57565b90929192612c166103ab8261036e565b938185526020850190828401116102c1576102d59261049b565b9080601f830112156102c15781516103e592602001612c06565b906020828203126102c157815167ffffffffffffffff81116102c1576103e59201612c30565b939290612ca06102d593612c92604093606089019089820360008b015261076e565b9087820360208901526104be565b940152565b939290612ca06102d593612c92604093606089019089820360008b01526104be565b60208082526103e59291019061076e565b67ffffffffffffffff81116103555760208091020190565b90610ed26103ab83612cd8565b60005b828110612d0c57505050565b606082820152602001612d00565b906102d5612d30612d2a84612cf0565b93612cd8565b601f190160208401612cfd565b90612d46825190565b811015610ad5576020809102010190565b906103e5916104be565b90612d77612d6d835190565b8083529160200190565b9081612d896020830284019460200190565b926000915b838310612d9d57505050505090565b90919293946020612dc0612db983856001950387528951612d57565b9760200190565b9301930191939290612d8e565b60208082526103e592910190612d61565b92916020612ca06102d593604087019087820360008901526104be565b612e096103e582600b610716565b90612e8b6103e582612e1d60018601610828565b94612e36600196612e306129f0896108f8565b14612afb565b612e86612e74600c92612e56612e5160006128238888610716565b612b3f565b612e6e6003612e6760028401610839565b9201610839565b906121dd565b612e7f6114c4429290565b1015612b81565b610716565b612e948161084f565b90600091612ea46129f0846108f8565b03612f995750612eb483916105d9565b905b612f00575b506102d591507f6ef4855b666dcc7884561072e4358b28dfe01feb1b7f4dcebc00e62d50394ac7612eeb826105d9565b90612ef560405190565b80805b0390a2613ced565b6008612f0d6103e5825490565b821015612f935781612f2c612f268694612f8d94610ab2565b50611452565b612f4484612f3e6103e5846009610ef2565b01610839565b7f3da5f6d794705174517c5fe244154439ce200dfe7582f564d192613546e0306e90612f6f876105d9565b92612f85612f7c60405190565b92839283612dde565b0390a2612bd7565b90612eb6565b50612ebb565b612fa88282969593960161084f565b612fb46129f0846108f8565b036130a7575080612fc4856105d9565b905b612ffd575b50506102d59192507ff67f9c5a5132e07fe7bd1d94c26dde8b391e69cdbe9609ec940ae57f584fcb1b612eeb826105d9565b600861300a6103e5825490565b8210156130a15781613023612f26859461309b94610ab2565b61303461302f856105d9565b612d1a565b906130476130418a6105d9565b83612d3d565b5261305a613054896105d9565b82612d3d565b507f7ba48a57e46e29ab78330c4392c8ab68535d74e0ae57937fcfb57339b402938d612f85613088886105d9565b9261309260405190565b91829182612dcd565b90612fc6565b50612fcb565b9093908401906130cb6130b983612bcd565b6130c56114c4846105d9565b11612182565b846130d5826105d9565b905b613124575b50506102d59293507f6c88ca6b394074daf557fb9297e0fddb55fb1e427fdc536da3bca3077182d73e612ef8613111846105d9565b9261311b60405190565b91829182612cc7565b60086131316103e5825490565b8210156132915790613149612f268261318e94610ab2565b906131938861315c6103e5856009610ef2565b0161318661317c61316c83610839565b613176600a6105d9565b90612be6565b611e3460646105d9565b948591610839565b612bf9565b926131ea856131a06110d5565b7360028746eebfb7037dd80567ce77097ddb08cf726131d3635e57966d6131c660405190565b9586948593849360e01b90565b83526001600160a01b031660048301526024820190565b03915af493841561328c578a95613260956132519461323c948a92613266575b50612f8591928c858d7ff69e5b983a5a5ceca325d6652dbf9b0c194389af4251703317b3865fa2747d659889936105d9565b998a9461324860405190565b93849384612c70565b0390a260405193849384612ca5565b906130d7565b612f859250613286903d808d833e61327e8183610333565b810190612c4a565b9161320a565b611c4e565b506130dc565b6102d590612acd565b6103e560026105d9565b156132b157565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6102d56133036006610839565b61331761330e6132a0565b918214156132aa565b6006611941565b6103e560016105d9565b6102d561331761331e565b1561333a57565b60405162461bcd60e51b81526020600482015260156024820152744e6f7420617574686f72697a6564206f7261636c6560581b6044820152606490fd5b906102d593929161339e61338f61166283600d610716565b6133983361118a565b14613333565b906102d59392916133b161209b82611bd7565b906102d59392916133ce6128296126eb600661282385600b610716565b61347c565b805460009392916133ea6133e683610744565b9390565b916001811690811561343b575060011461340357505050565b6134169192939450600052602060002090565b6000905b8382106134275750500190565b60018160209254848601520191019061341a565b60ff191683525050811515909102019150565b610ed261038b91602094936133d3565b610eec61346a60405190565b9283928361344e565b6103e59161345e565b926003929491936009956134c46134966103e5888a610ef2565b6134a08882612382565b6134ad8360018301611941565b6134ba8560028301611941565b3396879101611272565b6134ce60006105d9565b6134d981600a611941565b60086134e66103e5825490565b82101561353157906135276135206135116002612f3e8d61350a8761352c99610ab2565b5090613473565b61351b600a610839565b6121dd565b600a611941565b612bd7565b6134d9565b5050929550926120ef909491946135687feab7ad6f1f2c47f469a07b3e92d2e2d4e9fd2ac27348551c320634ef552e5fc2956105d9565b95610fb560405190565b906102d5939291613377565b906102d59161358f61209b82611bd7565b906102d5916135a06127b782611424565b6135f1565b156135ac57565b60405162461bcd60e51b815260206004820152601b60248201527f496e76616c696420737461746520666f72206f7065726174696f6e00000000006044820152606490fd5b906102d59161361d60006136176129f0613611600161282387600b610716565b926108f8565b146135a5565b906102d5916136386128296126eb600661282385600b610716565b6136d5565b1561364457565b60405162461bcd60e51b815260206004820152601f60248201527f416c7265616479206d6f64696669656420646973706c617920706572696f64006044820152606490fd5b1561369057565b60405162461bcd60e51b815260206004820152601760248201527f496e76616c696420706572696f64206475726174696f6e0000000000000000006044820152606490fd5b6137406003926137386136ec6103e585600b610716565b61371260048201936137086137036126eb8761084f565b61363d565b613176603c6105d9565b9586916137206103e5610615565b83101580613777575b61373290613689565b01611941565b6001906123b3565b6120ef61376d7fe509c4b24939dea59f4bed29944321f6decb8f2c42757b29575dc3e2313cb209926105d9565b926102f660405190565b506137326137866103e56105e6565b8411159050613729565b906102d59161357e565b6102d5906137aa61209b82611bd7565b6102d5906137c46128296126eb600661282385600b610716565b613857565b60009060033d116137d657565b905060046000803e60005160e01c90565b60009060443d106102d55760405160043d036004823e8051903d602483011167ffffffffffffffff8311176138535781810191825167ffffffffffffffff811161384d5780602085010160043d0384011061384d576103e5939495506020010190610333565b50505050565b5050565b6138656103e582600b610716565b61386e30611269565b63fc91e62690803b156102c1576138949160009161388b60405190565b93849260e01b90565b825260048201869052602490829084905af19081613930575b5061392157506001906138be6137c9565b6308c379a0146138d0575b5061328c57565b6138d86137e7565b806138e4575b506138c9565b9091506000916139176120e57fb7877ff7a66a9cedd344d99418e871dbf60d7cab50fb7dbc54ab7832ae286664926105d9565b0390a238806138de565b6102d591506005429101611941565b6139489060006139408183610333565b8101906102c6565b386138ad565b6102d59061379a565b1561395e57565b60405162461bcd60e51b815260206004820152601460248201527313919508185b1c9958591e48191a5cdc1bdcd95960621b6044820152606490fd5b6020810192916102d5919061090b565b6139b86103e582600b610716565b90600182016139c681610828565b906139e06002926139d96129f0856108f8565b1415613957565b6139e981610828565b906000916139f96129f0846108f8565b1480613b15575b15613a5657505050613a16600180809401612396565b6120ef613a437f4177c53b3051a45d9d4c6845c4380f0c8d526dc9c38f48de93373b0606ac3b3d926105d9565b92613a4d60405190565b9182918261399a565b613a639094919294610828565b91600192613a736129f0856108f8565b14613a80575b5050505050565b613a9a613a8e868401610839565b612e6e60038501610839565b613aa56114c4429290565b10159081613aff575b50613aba575b80613a79565b613ac691849101612396565b613af3613a437f4177c53b3051a45d9d4c6845c4380f0c8d526dc9c38f48de93373b0606ac3b3d926105d9565b0390a238808080613ab4565b613b0f915061282385600c610716565b38613aae565b5042613b286114c46103e5868901610839565b1015613a00565b90613b4290600019906020036008021c90565b8154169055565b90600091613b67613b5f82600052602060002090565b9283546122aa565b905555565b9192906020821015613bc457601f8411600114613b8e576112899293506122aa565b5090613bbf6102d5936001613bb6613bab85600052602060002090565b92601f602091010490565b8201910161223d565b613b49565b50613bfd8293613bdb600194600052602060002090565b6122996020601f860104820192601f861680613c05575b50601f602091010490565b600202179055565b613c1190888603613b2f565b38613bf2565b929091600160401b82116103555760201115613c5e576020811015613c3f57611289916122aa565b60019160ff1916613c5584600052602060002090565b55600202019055565b60019150600202019055565b908154613c7681610744565b90818311613c9e575b818310613c8c5750505050565b613c9593613b6c565b3880808061384d565b613caa83838387613c17565b613c7f565b60006102d591613c6a565b90600003610b01576102d590613caf565b60008082556102d591600101613cba565b90600003610b01576102d590613ccb565b613d75613cfe6103e583600b610716565b6113d36000613d108160018501612396565b613d65426005613d2b613d2562278d006105d9565b836121dd565b95613d3a600282019788611941565b613d4e613d45610e72565b60038301611941565b6137328560048301613d608282611b39565b6123b3565b613d7085600c610716565b613cdc565b906120ef61376d7fea47391ed75d900ce38a7e83751a170fdcbdc03af55761c7dc4cffe5f0cf17bf926105d9565b6102d590613daf611173565b613e2f565b15613dbb57565b60405162461bcd60e51b8152602060048201526014602482015273546f6b656e20616c72656164792065786973747360601b6044820152606490fd5b9190610b01576102d5916122bc565b90815491600160401b8310156103555782613e299160016102d595018155610ab2565b90613df7565b613e3960006105d9565b6008613e466103e5825490565b821015613ea25790613527613e6d613e68613e6484613e9d96610ab2565b5090565b611452565b613e7f613e78825190565b9160200190565b20613e966114c486613e92613e78825190565b2090565b1415613db4565b613e39565b50506102d590613eb0600890565b613e06565b6102d590613da3565b90613ec7825190565b811015610ad5570160200190565b613ee8613ee26103e59290565b60f81b90565b6001600160f81b03191690565b8051613f046114c460206105d9565b1080156141b5575b6141af576000613f1b816105d9565b613f266103e5845190565b8110156141a757613fc1613f4b613f3d8386613ebe565b516001600160f81b03191690565b613f556031613ed5565b6001600160f81b0319821610159081614188575b8115614146575b8115614104575b81156140e6575b81156140c8575b81156140aa575b811561408c575b811561406e575b8115614050575b8115614032575b8115614014575b8115613ff6575b8115613fd957501590565b613fd357613fce90612bd7565b613f1b565b50905090565b9050611bf2613fe8605a613ed5565b916001600160f81b03191690565b90506140026059613ed5565b6001600160f81b031982161490613fb6565b90506140206058613ed5565b6001600160f81b031982161490613faf565b905061403e6057613ed5565b6001600160f81b031982161490613fa8565b905061405c6056613ed5565b6001600160f81b031982161490613fa1565b905061407a6055613ed5565b6001600160f81b031982161490613f9a565b90506140986054613ed5565b6001600160f81b031982161490613f93565b90506140b66053613ed5565b6001600160f81b031982161490613f8c565b90506140d46052613ed5565b6001600160f81b031982161490613f85565b90506140f26051613ed5565b6001600160f81b031982161490613f7e565b90506141106061613ed5565b6001600160f81b03198216101580614129575b90613f77565b50614134607a613ed5565b6001600160f81b031982161115614123565b90506141526041613ed5565b6001600160f81b0319821610158061416b575b90613f70565b50614176605a613ed5565b6001600160f81b031982161115614165565b90506141946039613ed5565b6001600160f81b03198216111590613f69565b505050600190565b50600090565b5080516141c56114c4602c6105d9565b11613f0c565b906102d5916141dc61209b82611bd7565b906102d5916141ed6127b782611424565b906102d5916142086128296126eb600661282385600b610716565b6142b6565b1561421457565b60405162461bcd60e51b815260206004820152602860248201527f536f6c616e6120616464726573732063616e206f6e6c79206265206d6f646966604482015267696564206f6e636560c01b6064820152608490fd5b1561427157565b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420536f6c616e61206164647265737320666f726d61740000006044820152606490fd5b614316600b6142db6142d66126eb60066142d08786610716565b0161084f565b61420d565b6142ec6142e785613ef5565b61426a565b6143028460006142fc8685610716565b01612382565b600661431084600193610716565b016123b3565b6120ef6120e57ff8d0ff227345364ba22e9be1922b2233bf55aeadb02c3b5c88ac70ca1e4ac397926105d9565b906102d5916141cb565b50915061435f82611a2983600d610716565b6120ef61438c7fec30c42357d7a90a80d7f1fc87f96ca0cc5c1504d15c7130ae849673d95a9ecb926105d9565b9261056a60405190565b6103e5600e61271c565b905051906102d582610581565b906020828203126102c1576103e5916143a0565b6020614405926143cf600090565b506143d930611269565b6143f7636352211e6143ea60405190565b9687948593849360e01b90565b835260048301526024820190565b03915afa60009281614430575b5061441e575050600090565b61182f906001600160a01b031661118a565b61445291935060203d8111614459575b61444a8183610333565b8101906143ad565b9138614412565b503d614440565b6103e56144779161446f600090565b50600b610716565b90600482019061449b600661449461448e85610828565b9461084f565b940161084f565b91929190565b906102d5916144b261209b82611bd7565b906102d5916144c36127b782611424565b906102d5916144de6128296126eb600661282385600b610716565b614656565b156144ea57565b60405162461bcd60e51b815260206004820152601d60248201527f41756374696f6e2074696d6520616c7265616479206d6f6469666965640000006044820152606490fd5b1561453657565b60405162461bcd60e51b81526020600482015260146024820152734e6f7420696e2061756374696f6e20737461746560601b6044820152606490fd5b1561457957565b60405162461bcd60e51b815260206004820152601a60248201527f456e642074696d65206d75737420626520696e206675747572650000000000006044820152606490fd5b156145c557565b60405162461bcd60e51b815260206004820152601860248201527f41756374696f6e20706572696f6420746f6f2073686f727400000000000000006044820152606490fd5b1561461157565b60405162461bcd60e51b815260206004820152601760248201527f41756374696f6e20706572696f6420746f6f206c6f6e670000000000000000006044820152606490fd5b6146ff6146676103e583600b610716565b6146f784600260048401936146866146816126eb87610828565b6144e3565b6146a861469560018301610828565b6146a26129f060006108f8565b1461452f565b6137326146e2426146ba818711614572565b6146dc6146c78288612bf9565b6146d56114c46103e5610cc3565b10156145be565b85612bf9565b6146f06114c46103e56105e6565b111561460a565b600190611b39565b6120ef61376d7f505ee897cb99a799e1f4b80d323f5e41a64afde7ba6c6214446e2b260955e23e926105d9565b906102d5916144a156fea26469706673582212205d35f54e11210414522ec2f658304b256ca87141b9376dd36a783b728486bc1b64736f6c63430008140033