[ { "inputs": [], "name": "OnlyContractOwner", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "params", "type": "bytes" }, { "indexed": false, "internalType": "uint256[]", "name": "destinationChains", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "gasValues", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256", "name": "tokenMintingChain", "type": "uint256" } ], "name": "InitiateNFTDeployment", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "destinationChain", "type": "uint16" }, { "indexed": false, "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "gasValue", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "trackId", "type": "string" } ], "name": "InitiatedBridgeOutNFT", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "salt", "type": "bytes32" } ], "name": "NFTDeployed", "type": "event" }, { "inputs": [ { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "name": "computeAddressNFT", "outputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "baseUri", "type": "string" } ], "name": "deployNFT", "outputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint16", "name": "recipientChain", "type": "uint16" }, { "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" }, { "internalType": "string", "name": "trackId", "type": "string" } ], "name": "initiateBridgeOutNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "params", "type": "bytes" }, { "internalType": "uint256[]", "name": "destinationChains", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "gasValues", "type": "uint256[]" }, { "internalType": "uint256", "name": "tokenMintingChain", "type": "uint256" } ], "name": "initiateNFTDeployment", "outputs": [], "stateMutability": "payable", "type": "function" } ]
608060405234801561001057600080fd5b50615ea7806100206000396000f3fe608060405260043610620000445760003560e01c8063b8676a9b1462000049578063c79d168d1462000062578063da58ce3c14620000b0578063e81d088a14620000c7575b600080fd5b620000606200005a36600462000a3f565b620000ec565b005b3480156200006f57600080fd5b50620000876200008136600462000ae4565b620003be565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b62000060620000c136600462000bad565b620004a9565b348015620000d457600080fd5b5062000087620000e636600462000c89565b6200066d565b600034116200015c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642076616c756520666f7220676173000000000000000000000060448201526064015b60405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1322546040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9173ffffffffffffffffffffffffffffffffffffffff16903480156108fc02916000818181858888f19350505050158015620001e2573d6000803e3d6000fd5b508773ffffffffffffffffffffffffffffffffffffffff81166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018b9052606401600060405180830381600087803b1580156200027557600080fd5b505af11580156200028a573d6000803e3d6000fd5b50506040517fff99c39f000000000000000000000000000000000000000000000000000000008152600481018b905261ffff8a1660248201526044810189905263ffffffff8816606482015273ffffffffffffffffffffffffffffffffffffffff8c16925063ff99c39f91506084016020604051808303816000875af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000de5565b5073ffffffffffffffffffffffffffffffffffffffff89163373ffffffffffffffffffffffffffffffffffffffff167f4fcad4da00dbe7dd5c42c7515b4e7b93853b44de0a2f97d825b0a3654561a8908a8a8a8a348b8b604051620003ab979695949392919062000e61565b60405180910390a3505050505050505050565b60008060405180602001620003d390620009bb565b6020820181038252601f19601f8201166040525090506000818787878760405160200162000405949392919062000eac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000443929160200162000f15565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160208083019190912092840183905283018b9052308084529093509091600b0160ff8153605590209a9950505050505050505050565b6000341162000515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642076616c756520666f72206761730000000000000000000000604482015260640162000153565b83821462000580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f696e76616c6964206761732076616c75657320616e6420636861696e732e0000604482015260640162000153565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1322546040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9173ffffffffffffffffffffffffffffffffffffffff16903480156108fc02916000818181858888f1935050505015801562000606573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f41adf9b1fb777945686c32857eba20fc7cf857c7807f37fed5f6163ff3a49000898989898989896040516200065b979695949392919062000f98565b60405180910390a25050505050505050565b60006200067962000945565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6000620006ab868c8c8c8c620003be565b9050803b1562000718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f616c72656164792061646472657373206465706c6f7965640000000000000000604482015260640162000153565b858b8b8b8b6040516200072b90620009bb565b6200073a949392919062000eac565b8190604051809103906000f59050801580156200075b573d6000803e3d6000fd5b50600483810154600585015460068601546040517fe1d7864200000000000000000000000000000000000000000000000000000000815294975073ffffffffffffffffffffffffffffffffffffffff8089169563e1d7864295620007f095740100000000000000000000000000000000000000009081900461ffff169593909316939290920460ff16918e918c910162000fef565b600060405180830381600087803b1580156200080b57600080fd5b505af115801562000820573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663f2fde38b620008483390565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381600087803b158015620008af57600080fd5b505af1158015620008c4573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f791cb5ccabc786ca1a3dd1750762634ee2bf5148768a3e52021a3d623aede5e78d8d8d8d8c6040516200092f9594939291906200107b565b60405180910390a3505098975050505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6004015473ffffffffffffffffffffffffffffffffffffffff163314620009b9576040517f277d76f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b614db880620010ba83390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114620009ee57600080fd5b919050565b60008083601f84011262000a0657600080fd5b50813567ffffffffffffffff81111562000a1f57600080fd5b60208301915083602082850101111562000a3857600080fd5b9250929050565b600080600080600080600060c0888a03121562000a5b57600080fd5b62000a6688620009c9565b965060208801359550604088013561ffff8116811462000a8557600080fd5b945060608801359350608088013563ffffffff8116811462000aa657600080fd5b925060a088013567ffffffffffffffff81111562000ac357600080fd5b62000ad18a828b01620009f3565b989b979a50959850939692959293505050565b60008060008060006060868803121562000afd57600080fd5b85359450602086013567ffffffffffffffff8082111562000b1d57600080fd5b62000b2b89838a01620009f3565b9096509450604088013591508082111562000b4557600080fd5b5062000b5488828901620009f3565b969995985093965092949392505050565b60008083601f84011262000b7857600080fd5b50813567ffffffffffffffff81111562000b9157600080fd5b6020830191508360208260051b850101111562000a3857600080fd5b60008060008060008060006080888a03121562000bc957600080fd5b873567ffffffffffffffff8082111562000be257600080fd5b62000bf08b838c01620009f3565b909950975060208a013591508082111562000c0a57600080fd5b62000c188b838c0162000b65565b909750955060408a013591508082111562000c3257600080fd5b5062000c418a828b0162000b65565b989b979a50959894979596606090950135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060008060008060008060c0898b03121562000ca657600080fd5b883567ffffffffffffffff8082111562000cbf57600080fd5b62000ccd8c838d01620009f3565b909a50985060208b013591508082111562000ce757600080fd5b62000cf58c838d01620009f3565b909850965060408b0135955060608b0135945086915062000d1960808c01620009c9565b935060a08b013591508082111562000d3057600080fd5b818b0191508b601f83011262000d4557600080fd5b81358181111562000d5a5762000d5a62000c5a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000da35762000da362000c5a565b816040528281528e602084870101111562000dbd57600080fd5b8260208601602083013760006020848301015280955050505050509295985092959890939650565b60006020828403121562000df857600080fd5b815167ffffffffffffffff8116811462000e1157600080fd5b9392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b87815261ffff8716602082015285604082015263ffffffff8516606082015283608082015260c060a0820152600062000e9f60c08301848662000e18565b9998505050505050505050565b60408152600062000ec260408301868862000e18565b828103602084015262000ed781858762000e18565b979650505050505050565b60005b8381101562000eff57818101518382015260200162000ee5565b8381111562000f0f576000848401525b50505050565b6000835162000f2981846020880162000ee2565b83519083019062000f3f81836020880162000ee2565b01949350505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111562000f7b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60808152600062000fae60808301898b62000e18565b828103602084015262000fc381888a62000f48565b9050828103604084015262000fda81868862000f48565b91505082606083015298975050505050505050565b61ffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015260ff8416604082015282606082015260a06080820152600082518060a0840152620010458160c085016020870162000ee2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b6060815260006200109160608301878962000e18565b8281036020840152620010a681868862000e18565b915050826040830152969550505050505056fe60806040523480156200001157600080fd5b5060405162004db838038062004db88339810160408190526200003491620002aa565b8151829082906200004d90600a90602085019062000137565b5080516200006390600b90602084019062000137565b505050620000806200007a6200009360201b60201c565b62000097565b6200008b46620000e9565b505062000351565b3390565b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b468114620001325760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b604482015260640160405180910390fd5b600455565b828054620001459062000314565b90600052602060002090601f016020900481019282620001695760008555620001b4565b82601f106200018457805160ff1916838001178555620001b4565b82800160010185558215620001b4579182015b82811115620001b457825182559160200191906001019062000197565b50620001c2929150620001c6565b5090565b5b80821115620001c25760008155600101620001c7565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020557600080fd5b81516001600160401b0380821115620002225762000222620001dd565b604051601f8301601f19908116603f011681019082821181831017156200024d576200024d620001dd565b816040528381526020925086838588010111156200026a57600080fd5b600091505b838210156200028e57858201830151818301840152908201906200026f565b83821115620002a05760008385830101525b9695505050505050565b60008060408385031215620002be57600080fd5b82516001600160401b0380821115620002d657600080fd5b620002e486838701620001f3565b93506020850151915080821115620002fb57600080fd5b506200030a85828601620001f3565b9150509250929050565b600181811c908216806200032957607f821691505b602082108114156200034b57634e487b7160e01b600052602260045260246000fd5b50919050565b614a5780620003616000396000f3fe6080604052600436106102e75760003560e01c806374d32ad411610184578063c599efdd116100d6578063ded8454a1161008a578063f2fde38b11610064578063f2fde38b146108b5578063f7ee9998146108d5578063ff99c39f1461090657600080fd5b8063ded8454a14610825578063e1d786421461084c578063e985e9c51461086c57600080fd5b8063d400e157116100bb578063d400e157146107c3578063d5abeb01146107e3578063dc02f456146107f857600080fd5b8063c599efdd14610783578063c87b56dd146107a357600080fd5b80639a8a059211610138578063aa4efa5b11610112578063aa4efa5b1461071e578063b88d4fde1461074e578063c1bd8cf91461076e57600080fd5b80639a8a0592146106c65780639abc8320146106e9578063a22cb465146106fe57600080fd5b806384acd1bb1161016957806384acd1bb146106755780638da5cb5b1461069357806395d89b41146106b157600080fd5b806374d32ad4146106375780637d557a3f1461065557600080fd5b80632f745c591161023d5780636352211e116101f157806370a08231116101cb57806370a08231146105d7578063715018a6146105f7578063739fc8d11461060c57600080fd5b80636352211e1461058257806364d42b17146105a25780636a627842146105b757600080fd5b806342842e0e1161022257806342842e0e1461052257806342966c68146105425780634f6ccce71461056257600080fd5b80632f745c59146104d2578063392e53cd146104f257600080fd5b8063150b7a021161029f5780632af6d4a8116102795780632af6d4a8146104725780632c5485f4146104925780632d1fdb46146104b257600080fd5b8063150b7a02146103bd57806318160ddd1461043357806323b872dd1461045257600080fd5b8063081812fc116102d0578063081812fc14610343578063095ea7b31461037b5780631150f0f31461039d57600080fd5b806301ffc9a7146102ec57806306fdde0314610321575b600080fd5b3480156102f857600080fd5b5061030c610307366004613b31565b610932565b60405190151581526020015b60405180910390f35b34801561032d57600080fd5b5061033661098e565b6040516103189190613ba6565b34801561034f57600080fd5b5061036361035e366004613bb9565b610a20565b6040516001600160a01b039091168152602001610318565b34801561038757600080fd5b5061039b610396366004613bee565b610a47565b005b3480156103a957600080fd5b5061030c6103b8366004613d66565b610b7e565b3480156103c957600080fd5b506104026103d8366004613de4565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610318565b34801561043f57600080fd5b506013545b604051908152602001610318565b34801561045e57600080fd5b5061039b61046d366004613e53565b610bab565b34801561047e57600080fd5b5061039b61048d366004613f1e565b610c33565b34801561049e57600080fd5b5061039b6104ad366004613f7e565b610f01565b3480156104be57600080fd5b506103366104cd366004613fd7565b611133565b3480156104de57600080fd5b506104446104ed366004613bee565b6114fe565b3480156104fe57600080fd5b5060055474010000000000000000000000000000000000000000900460ff1661030c565b34801561052e57600080fd5b5061039b61053d366004613e53565b6115a6565b34801561054e57600080fd5b5061039b61055d366004613bb9565b6115c1565b34801561056e57600080fd5b5061044461057d366004613bb9565b611648565b34801561058e57600080fd5b5061036361059d366004613bb9565b6116ec565b3480156105ae57600080fd5b50600454610444565b3480156105c357600080fd5b5061039b6105d2366004614019565b611751565b3480156105e357600080fd5b506104446105f2366004614019565b6117e3565b34801561060357600080fd5b5061039b61187d565b34801561061857600080fd5b5060005462010000900460ff1660405160ff9091168152602001610318565b34801561064357600080fd5b506005546001600160a01b0316610363565b34801561066157600080fd5b5061039b6106703660046140be565b611891565b34801561068157600080fd5b506001546001600160a01b0316610363565b34801561069f57600080fd5b506015546001600160a01b0316610363565b3480156106bd57600080fd5b50610336611bf3565b3480156106d257600080fd5b5060005460405161ffff9091168152602001610318565b3480156106f557600080fd5b50610336611c02565b34801561070a57600080fd5b5061039b6107193660046141a8565b611c14565b34801561072a57600080fd5b5061030c610739366004613bb9565b60009081526002602052604090205460ff1690565b34801561075a57600080fd5b5061039b6107693660046141df565b611c1f565b34801561077a57600080fd5b50600854610444565b34801561078f57600080fd5b5061036361079e366004613bb9565b611ca7565b3480156107af57600080fd5b506103366107be366004613bb9565b611d1d565b3480156107cf57600080fd5b506103366107de366004614247565b611d28565b3480156107ef57600080fd5b50600654610444565b34801561080457600080fd5b50610818610813366004613d66565b611d74565b60405161031891906142fc565b34801561083157600080fd5b50610444610840366004614019565b6001600160a01b031690565b34801561085857600080fd5b5061039b610867366004614361565b611e76565b34801561087857600080fd5b5061030c6108873660046143de565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205460ff1690565b3480156108c157600080fd5b5061039b6108d0366004614019565b611fb2565b3480156108e157600080fd5b506104446108f0366004614411565b61ffff1660009081526003602052604090205490565b610919610914366004614440565b61203f565b60405167ffffffffffffffff9091168152602001610318565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3eff476500000000000000000000000000000000000000000000000000000000148061098857506109888261244d565b92915050565b6060600a805461099d9061448a565b80601f01602080910402602001604051908101604052809291908181526020018280546109c99061448a565b8015610a165780601f106109eb57610100808354040283529160200191610a16565b820191906000526020600020905b8154815290600101906020018083116109f957829003601f168201915b5050505050905090565b6000610a2b826124a3565b506000908152600e60205260409020546001600160a01b031690565b6000610a52826116ec565b9050806001600160a01b0316836001600160a01b03161415610ae15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b0382161480610afd5750610afd8133610887565b610b6f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610ad8565b610b798383612507565b505050565b60008060090182604051610b9291906144de565b9081526040519081900360200190205460ff1692915050565b610bb6335b8261258d565b610c285760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610ad8565b610b7983838361260b565b80610c466015546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415610c9657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff861602179055505050565b6000610d4682600001518360200151604051602001610ce692919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b82519091506001600160a01b03163314610da25760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c790000000000000000006044820152606401610ad8565b42826020015111610df55760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610ad8565b610e028260400151610b7e565b15610e4f5760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610ad8565b610e6f818360400151610e6a6015546001600160a01b031690565b612877565b610ebb5760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610ad8565b610ec8826040015161292f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000060ff8716021790555b50505050565b80610f146015546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415610f485761ffff84166000908152600360205260409020839055610efb565b6000610f9882600001518360200151604051602001610ce692919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b82519091506001600160a01b03163314610ff45760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c790000000000000000006044820152606401610ad8565b428260200151116110475760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610ad8565b6110548260400151610b7e565b156110a15760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610ad8565b6110bc818360400151610e6a6015546001600160a01b031690565b6111085760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610ad8565b611115826040015161292f565b61ffff851660009081526003602052604090208490555b5050505050565b60055460609074010000000000000000000000000000000000000000900460ff1615156001146111a55760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420496e697469616c697a656400000000000000000000000000000000006044820152606401610ad8565b466111af60045490565b146111fc5760405162461bcd60e51b815260206004820152601060248201527f756e737570706f7274656420666f726b000000000000000000000000000000006044820152606401610ad8565b60008060006112136001546001600160a01b031690565b6001600160a01b031663c0fd8bde87876040518363ffffffff1660e01b81526004016112409291906144fa565b600060405180830381865afa15801561125d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112859190810190614657565b9250925092508181906112ab5760405162461bcd60e51b8152600401610ad89190613ba6565b50306001600160a01b03166112c38460800151611ca7565b6001600160a01b031614806112f257506080830151606084015161ffff16600090815260036020526040902054145b61133e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420456d697474657200000000000000000000000000000000006044820152606401610ad8565b61014083015160009081526002602052604090205460ff16156113a35760405162461bcd60e51b815260206004820152601e60248201527f416c726561647920436f6d706c6574656420546865205472616e7366657200006044820152606401610ad8565b6113e5836101400151600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60006113f48460e00151611d74565b905061140360005461ffff1690565b61ffff168160a0015161ffff161461145d5760405162461bcd60e51b815260206004820152601460248201527f696e76616c69642074617267657420636861696e0000000000000000000000006044820152606401610ad8565b600061146c8260800151611ca7565b905061147c818360400151612985565b61148e82604001518360600151612b36565b81608001517fdf5e04c9235e5b4ddaec2baee15dc9c74de339075fa433a8dd25ebbc0719857b836040015184602001518560a001516040516114e79392919092835261ffff918216602084015216604082015260600190565b60405180910390a25050505060e001519392505050565b6000611509836117e3565b821061157d5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610ad8565b506001600160a01b03919091166000908152601160209081526040808320938352929052205490565b610b7983838360405180602001604052806000815250611c1f565b6115ca33610bb0565b61163c5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610ad8565b61164581612bdf565b50565b600061165360135490565b82106116c75760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610ad8565b601382815481106116da576116da6147a5565b90600052602060002001549050919050565b6000818152600c60205260408120546001600160a01b0316806109885760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610ad8565b611759612be8565b600654600854106117ac5760405162461bcd60e51b815260206004820152601260248201527f4d415820535550504c59205245414348454400000000000000000000000000006044820152606401610ad8565b60006117b760085490565b90506117d56117c560085490565b6117d0906001614803565b600855565b6117df8282612985565b5050565b60006001600160a01b0382166118615760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610ad8565b506001600160a01b03166000908152600d602052604090205490565b611885612be8565b61188f6000612c42565b565b806118a46015546001600160a01b031690565b6001600160a01b0316336001600160a01b0316141561198057825184511461190e5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e707574000000000000000000000000000000000000006044820152606401610ad8565b60005b835181101561197a5761196885828151811061192f5761192f6147a5565b6020026020010151858381518110611949576119496147a5565b602002602001015161ffff909116600090815260036020526040902055565b806119728161481b565b915050611911565b50610efb565b60006119d082600001518360200151604051602001610ce692919060609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b82519091506001600160a01b03163314611a2c5760405162461bcd60e51b815260206004820152601760248201527f637573746f6469616e2063616e2063616c6c206f6e6c790000000000000000006044820152606401610ad8565b42826020015111611a7f5760405162461bcd60e51b815260206004820152601a60248201527f7369676e6564207472616e73616374696f6e20657870697265640000000000006044820152606401610ad8565b611a8c8260400151610b7e565b15611ad95760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f742072652d757365207369676e61747572657300000000000000006044820152606401610ad8565b611af4818360400151610e6a6015546001600160a01b031690565b611b405760405162461bcd60e51b815260206004820152601660248201527f756e617574686f72697a6564207369676e6174757265000000000000000000006044820152606401610ad8565b611b4d826040015161292f565b8351855114611b9e5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e707574000000000000000000000000000000000000006044820152606401610ad8565b60005b8451811015611beb57611bd9868281518110611bbf57611bbf6147a5565b6020026020010151868381518110611949576119496147a5565b80611be38161481b565b915050611ba1565b505050505050565b6060600b805461099d9061448a565b60606000600701805461099d9061448a565b6117df338383612cac565b611c29338361258d565b611c9b5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610ad8565b610efb84848484612d99565b60007fffffffffffffffffffffffff0000000000000000000000000000000000000000821615611d195760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642045564d2061646472657373000000000000000000000000006044820152606401610ad8565b5090565b606061098882612e22565b80516020808301516040808501516060868101518051608089015160a08a015195519398611d5e98909796929491929101614854565b6040516020818303038152906040529050919050565b6040805160c0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905290611daf8382612f1e565b8252611dbc602082614803565b9050611dc88382612f84565b61ffff166020830152611ddc600282614803565b9050611de88382612fea565b6040830152611df8602082614803565b9050611e05600182614803565b9050611e2c816022838651611e1a91906148ed565b611e2491906148ed565b859190613047565b6060830152508151611e3f6002826148ed565b9050611e4b8382612f84565b61ffff1660a0830152611e5f6020826148ed565b9050611e6b8382612f1e565b608083015250919050565b611e7e612be8565b60055474010000000000000000000000000000000000000000900460ff1615611ee95760405162461bcd60e51b815260206004820152601360248201527f416c726561647920496e697469616c697a6564000000000000000000000000006044820152606401610ad8565b60008054600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881617905561ffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000909116176201000060ff8616021790556006829055611f648161316f565b611f6e6000600855565b61112c600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b611fba612be8565b6001600160a01b0381166120365760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ad8565b61164581612c42565b60055460009074010000000000000000000000000000000000000000900460ff1615156001146120b15760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420496e697469616c697a656400000000000000000000000000000000006044820152606401610ad8565b466120bb60045490565b146121085760405162461bcd60e51b815260206004820152601060248201527f756e737570706f7274656420666f726b000000000000000000000000000000006044820152606401610ad8565b61ffff8416600090815260036020526040812054141561216a5760405162461bcd60e51b815260206004820152601e60248201527f726563697069656e7420636861696e206e6f7420636f6e6669677572656400006044820152606401610ad8565b600061217e6001546001600160a01b031690565b6001600160a01b0316631a90a2196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190614904565b9050803410156122575760405162461bcd60e51b815260206004820152602a60248201527f4e6f7420656e6f756768206665652070726f766964656420746f207075626c6960448201527f7368206d657373616765000000000000000000000000000000000000000000006064820152608401610ad8565b6000805461ffff1690309061226b89611d1d565b905060006040518060c001604052808481526020018561ffff1681526020018b81526020018381526020018981526020018a61ffff16815250905060c881606001515111156123225760405162461bcd60e51b815260206004820152602260248201527f746f6b656e555249206d757374206e6f7420657863656564203230302062797460448201527f65730000000000000000000000000000000000000000000000000000000000006064820152608401610ad8565b600061232d82611d28565b905060006123436001546001600160a01b031690565b6001600160a01b031663b19a437e348b8561236760005460ff620100009091041690565b6040518563ffffffff1660e01b81526004016123859392919061491d565b60206040518083038185885af11580156123a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123c8919061494f565b9050896123d76108408e6116ec565b7fce2636d514abb08349f7cf4369885a4ac22355555ff0e1c6f99afc895a77f366856040015186602001518760a0015160405161242b9392919092835261ffff918216602084015216604082015260600190565b60405180910390a361243c8c6115c1565b96505050505050505b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610988575061098882613182565b6000818152600c60205260409020546001600160a01b03166116455760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610ad8565b6000818152600e6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190612554826116ec565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612599836116ec565b9050806001600160a01b0316846001600160a01b031614806125e057506001600160a01b038082166000908152600f602090815260408083209388168352929052205460ff165b806124455750836001600160a01b03166125f984610a20565b6001600160a01b031614949350505050565b826001600160a01b031661261e826116ec565b6001600160a01b03161461269a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610ad8565b6001600160a01b0382166127155760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ad8565b6127228383836001613265565b826001600160a01b0316612735826116ec565b6001600160a01b0316146127b15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610ad8565b6000818152600e6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b03878116808652600d855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600c90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008060008061288686613271565b9250925092506000600188858585604051600081526020016040526040516128ca949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa1580156128ec573d6000803e3d6000fd5b505050602060405103519050856001600160a01b0316816001600160a01b0316141561291f576001945050505050612928565b60009450505050505b9392505050565b600160006009018260405161294491906144de565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691909117905550565b6001600160a01b0382166129db5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610ad8565b6000818152600c60205260409020546001600160a01b031615612a405760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ad8565b612a4e600083836001613265565b6000818152600c60205260409020546001600160a01b031615612ab35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ad8565b6001600160a01b0382166000818152600d6020908152604080832080546001019055848352600c90915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600c60205260409020546001600160a01b0316612bc05760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e0000000000000000000000000000000000006064820152608401610ad8565b60008281526010602090815260409091208251610b7992840190613a38565b611645816132a0565b6015546001600160a01b0316331461188f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ad8565b601580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415612d0e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610ad8565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612da484848461260b565b612db0848484846132e0565b610efb5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610ad8565b6060612e2d826124a3565b60008281526010602052604081208054612e469061448a565b80601f0160208091040260200160405190810160405280929190818152602001828054612e729061448a565b8015612ebf5780601f10612e9457610100808354040283529160200191612ebf565b820191906000526020600020905b815481529060010190602001808311612ea257829003601f168201915b505050505090506000612ed061347b565b9050805160001415612ee3575092915050565b815115612f15578082604051602001612efd92919061496a565b60405160208183030381529060405292505050919050565b6124458461348a565b6000612f2b826020614803565b83511015612f7b5760405162461bcd60e51b815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610ad8565b50016020015190565b6000612f91826002614803565b83511015612fe15760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610ad8565b50016002015190565b6000612ff7826020614803565b83511015612f7b5760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401610ad8565b60608161305581601f614803565b10156130a35760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610ad8565b6130ad8284614803565b845110156130fd5760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610ad8565b60608215801561311c5760405191506000825260208201604052613166565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561315557805183526020928301920161313d565b5050858452601f01601f1916604052505b50949350505050565b80516117df906007906020840190613a38565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061321557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061098857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610988565b610efb848484846134f0565b6000806000835160411461328457600080fd5b5050506020810151604082015160609092015160001a92909190565b6132a981613625565b600081815260106020526040902080546132c29061448a565b15905061164557600081815260106020526040812061164591613ab8565b60006001600160a01b0384163b15613473576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061333d903390899088908890600401614999565b6020604051808303816000875af1925050508015613378575060408051601f3d908101601f19168201909252613375918101906149d5565b60015b613428573d8080156133a6576040519150601f19603f3d011682016040523d82523d6000602084013e6133ab565b606091505b5080516134205760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610ad8565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050612445565b506001612445565b6060613485611c02565b905090565b6060613495826124a3565b600061349f61347b565b905060008151116134bf5760405180602001604052806000815250612928565b806134c9846136fe565b6040516020016134da92919061496a565b6040516020818303038152906040529392505050565b60018111156135675760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f7274656400000000000000000000006064820152608401610ad8565b816001600160a01b0385166135c3576135be81601380546000838152601460205260408120829055600182018355919091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900155565b6135e6565b836001600160a01b0316856001600160a01b0316146135e6576135e685826137c6565b6001600160a01b038416613602576135fd81613863565b61112c565b846001600160a01b0316846001600160a01b03161461112c5761112c8482613912565b6000613630826116ec565b9050613640816000846001613265565b613649826116ec565b6000838152600e6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038516808552600d845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055878552600c909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060600061370b83613956565b600101905060008167ffffffffffffffff81111561372b5761372b613c18565b6040519080825280601f01601f191660200182016040528015613755576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846137b9576137be565b61375f565b509392505050565b600060016137d3846117e3565b6137dd91906148ed565b600083815260126020526040902054909150808214613830576001600160a01b03841660009081526011602090815260408083208584528252808320548484528184208190558352601290915290208190555b5060009182526012602090815260408084208490556001600160a01b039094168352601181528383209183525290812055565b601354600090613875906001906148ed565b6000838152601460205260408120546013805493945090928490811061389d5761389d6147a5565b9060005260206000200154905080601383815481106138be576138be6147a5565b60009182526020808320909101929092558281526014909152604080822084905585825281205560138054806138f6576138f66149f2565b6001900381819060005260206000200160009055905550505050565b600061391d836117e3565b6001600160a01b039093166000908152601160209081526040808320868452825280832085905593825260129052919091209190915550565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061399f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106139cb576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106139e957662386f26fc10000830492506010015b6305f5e1008310613a01576305f5e100830492506008015b6127108310613a1557612710830492506004015b60648310613a27576064830492506002015b600a83106109885760010192915050565b828054613a449061448a565b90600052602060002090601f016020900481019282613a665760008555613aac565b82601f10613a7f57805160ff1916838001178555613aac565b82800160010185558215613aac579182015b82811115613aac578251825591602001919060010190613a91565b50611d19929150613aee565b508054613ac49061448a565b6000825580601f10613ad4575050565b601f01602090049060005260206000209081019061164591905b5b80821115611d195760008155600101613aef565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461164557600080fd5b600060208284031215613b4357600080fd5b813561292881613b03565b60005b83811015613b69578181015183820152602001613b51565b83811115610efb5750506000910152565b60008151808452613b92816020860160208601613b4e565b601f01601f19169290920160200192915050565b6020815260006129286020830184613b7a565b600060208284031215613bcb57600080fd5b5035919050565b80356001600160a01b0381168114613be957600080fd5b919050565b60008060408385031215613c0157600080fd5b613c0a83613bd2565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715613c6a57613c6a613c18565b60405290565b6040516080810167ffffffffffffffff81118282101715613c6a57613c6a613c18565b604051610160810167ffffffffffffffff81118282101715613c6a57613c6a613c18565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ce057613ce0613c18565b604052919050565b600067ffffffffffffffff821115613d0257613d02613c18565b50601f01601f191660200190565b600082601f830112613d2157600080fd5b8135613d34613d2f82613ce8565b613cb7565b818152846020838601011115613d4957600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613d7857600080fd5b813567ffffffffffffffff811115613d8f57600080fd5b61244584828501613d10565b60008083601f840112613dad57600080fd5b50813567ffffffffffffffff811115613dc557600080fd5b602083019150836020828501011115613ddd57600080fd5b9250929050565b600080600080600060808688031215613dfc57600080fd5b613e0586613bd2565b9450613e1360208701613bd2565b935060408601359250606086013567ffffffffffffffff811115613e3657600080fd5b613e4288828901613d9b565b969995985093965092949392505050565b600080600060608486031215613e6857600080fd5b613e7184613bd2565b9250613e7f60208501613bd2565b9150604084013590509250925092565b60ff8116811461164557600080fd5b600060608284031215613eb057600080fd5b6040516060810167ffffffffffffffff8282108183111715613ed457613ed4613c18565b81604052829350613ee485613bd2565b8352602085013560208401526040850135915080821115613f0457600080fd5b50613f1185828601613d10565b6040830152505092915050565b60008060408385031215613f3157600080fd5b8235613f3c81613e8f565b9150602083013567ffffffffffffffff811115613f5857600080fd5b613f6485828601613e9e565b9150509250929050565b61ffff8116811461164557600080fd5b600080600060608486031215613f9357600080fd5b8335613f9e81613f6e565b925060208401359150604084013567ffffffffffffffff811115613fc157600080fd5b613fcd86828701613e9e565b9150509250925092565b60008060208385031215613fea57600080fd5b823567ffffffffffffffff81111561400157600080fd5b61400d85828601613d9b565b90969095509350505050565b60006020828403121561402b57600080fd5b61292882613bd2565b600067ffffffffffffffff82111561404e5761404e613c18565b5060051b60200190565b600082601f83011261406957600080fd5b81356020614079613d2f83614034565b82815260059290921b8401810191818101908684111561409857600080fd5b8286015b848110156140b3578035835291830191830161409c565b509695505050505050565b6000806000606084860312156140d357600080fd5b833567ffffffffffffffff808211156140eb57600080fd5b818601915086601f8301126140ff57600080fd5b8135602061410f613d2f83614034565b82815260059290921b8401810191818101908a84111561412e57600080fd5b948201945b8386101561415557853561414681613f6e565b82529482019490820190614133565b9750508701359250508082111561416b57600080fd5b61417787838801614058565b9350604086013591508082111561418d57600080fd5b50613fcd86828701613e9e565b801515811461164557600080fd5b600080604083850312156141bb57600080fd5b6141c483613bd2565b915060208301356141d48161419a565b809150509250929050565b600080600080608085870312156141f557600080fd5b6141fe85613bd2565b935061420c60208601613bd2565b925060408501359150606085013567ffffffffffffffff81111561422f57600080fd5b61423b87828801613d10565b91505092959194509250565b60006020828403121561425957600080fd5b813567ffffffffffffffff8082111561427157600080fd5b9083019060c0828603121561428557600080fd5b61428d613c47565b82358152602083013561429f81613f6e565b6020820152604083810135908201526060830135828111156142c057600080fd5b6142cc87828601613d10565b6060830152506080830135608082015260a083013592506142ec83613f6e565b60a0810192909252509392505050565b60208152815160208201526000602083015161ffff8082166040850152604085015160608501526060850151915060c0608085015261433e60e0850183613b7a565b9150608085015160a08501528060a08601511660c0850152508091505092915050565b600080600080600060a0868803121561437957600080fd5b853561438481613f6e565b945061439260208701613bd2565b935060408601356143a281613e8f565b925060608601359150608086013567ffffffffffffffff8111156143c557600080fd5b6143d188828901613d10565b9150509295509295909350565b600080604083850312156143f157600080fd5b6143fa83613bd2565b915061440860208401613bd2565b90509250929050565b60006020828403121561442357600080fd5b813561292881613f6e565b63ffffffff8116811461164557600080fd5b6000806000806080858703121561445657600080fd5b84359350602085013561446881613f6e565b925060408501359150606085013561447f8161442e565b939692955090935050565b600181811c9082168061449e57607f821691505b602082108114156144d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082516144f0818460208701613b4e565b9190910192915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b8051613be981613e8f565b8051613be98161442e565b8051613be981613f6e565b805167ffffffffffffffff81168114613be957600080fd5b600082601f83011261457357600080fd5b8151614581613d2f82613ce8565b81815284602083860101111561459657600080fd5b612445826020830160208701613b4e565b600082601f8301126145b857600080fd5b815160206145c8613d2f83614034565b82815260079290921b840181019181810190868411156145e757600080fd5b8286015b848110156140b357608081890312156146045760008081fd5b61460c613c70565b81518152848201518582015260408083015161462781613e8f565b9082015260608281015161463a81613e8f565b908201528352918301916080016145eb565b8051613be98161419a565b60008060006060848603121561466c57600080fd5b835167ffffffffffffffff8082111561468457600080fd5b90850190610160828803121561469957600080fd5b6146a1613c93565b6146aa83614529565b81526146b860208401614534565b60208201526146c960408401614534565b60408201526146da6060840161453f565b6060820152608083015160808201526146f560a0840161454a565b60a082015261470660c08401614529565b60c082015260e08301518281111561471d57600080fd5b61472989828601614562565b60e08301525061010061473d818501614534565b90820152610120838101518381111561475557600080fd5b6147618a8287016145a7565b9183019190915250610140838101519082015294506147826020870161464c565b9350604086015191508082111561479857600080fd5b50613fcd86828701614562565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614816576148166147d4565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561484d5761484d6147d4565b5060010190565b87815260007fffff000000000000000000000000000000000000000000000000000000000000808960f01b1660208401528760228401527fff000000000000000000000000000000000000000000000000000000000000008760f81b16604284015285516148c9816043860160208a01613b4e565b90920160438101949094525060f09190911b16606382015260650195945050505050565b6000828210156148ff576148ff6147d4565b500390565b60006020828403121561491657600080fd5b5051919050565b63ffffffff8416815260606020820152600061493c6060830185613b7a565b905060ff83166040830152949350505050565b60006020828403121561496157600080fd5b6129288261454a565b6000835161497c818460208801613b4e565b835190830190614990818360208801613b4e565b01949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526149cb6080830184613b7a565b9695505050505050565b6000602082840312156149e757600080fd5b815161292881613b03565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220be2856cbc6dbc49020ee3987899928c14048a953d7467d7af7e3c6f7adbc2fcb64736f6c634300080a0033a26469706673582212208163ca715396e61940c52fed7481bfaffc9740e4d71df42ceb07ef787b4f559564736f6c634300080a0033