[ { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "propertyRegistry", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "property", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenizationAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "commonEquity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "preferredEquity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mezzanine", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "juniorDebt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "seniorDebt", "type": "uint256" } ], "name": "CapitalStackChange", "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": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "uint16", "name": "royaltyPercentage", "type": "uint16" } ], "name": "addRoyaltyPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allowMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "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": "amount", "type": "uint256" } ], "name": "burnAndMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "canBeMinted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "cap", "type": "uint256" }, { "internalType": "uint256", "name": "commonEquity", "type": "uint256" }, { "internalType": "uint256", "name": "preferredEquity", "type": "uint256" }, { "internalType": "uint256", "name": "mezzanine", "type": "uint256" }, { "internalType": "uint256", "name": "juniorDebt", "type": "uint256" }, { "internalType": "uint256", "name": "seniorDebt", "type": "uint256" } ], "name": "changeCapitalStack", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "changeLI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "name": "changeTokenNameAndSymbol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "contractBurn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "freezeToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBasicInfo", "outputs": [ { "internalType": "string", "name": "streetLocation", "type": "string" }, { "internalType": "string", "name": "geoLocation", "type": "string" }, { "internalType": "uint256", "name": "propertyValuation", "type": "uint256" }, { "internalType": "uint256", "name": "tokenValuation", "type": "uint256" }, { "internalType": "string", "name": "propertyValuationCurrency", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBurnContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCapitalStack", "outputs": [ { "internalType": "uint256", "name": "tokenization", "type": "uint256" }, { "internalType": "uint256", "name": "commonEquity", "type": "uint256" }, { "internalType": "uint256", "name": "preferredEquity", "type": "uint256" }, { "internalType": "uint256", "name": "mezzanine", "type": "uint256" }, { "internalType": "uint256", "name": "juniorDebt", "type": "uint256" }, { "internalType": "uint256", "name": "seniorDebt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getIPFSHash", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOceanPointContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "index", "type": "uint64" } ], "name": "getProperty", "outputs": [ { "internalType": "string", "name": "propertyType", "type": "string" }, { "internalType": "string", "name": "kadastralMunicipality", "type": "string" }, { "internalType": "string", "name": "parcelNumber", "type": "string" }, { "internalType": "string", "name": "ID", "type": "string" }, { "internalType": "uint64", "name": "buildingPart", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRoyaltyPercentage", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "burnContract", "type": "address" } ], "name": "setBurnContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "mintContract", "type": "address" } ], "name": "setMintContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unfreezeToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506040516200430138038062004301833981810160405260408110156200003757600080fd5b508051602091820151604080518082018252601881527f426c6f636b73717561726550726f7065727479546f6b656e0000000000000000818601908152825180840190935260048352631094d41560e21b95830195909552805193949293909283918391620000aa91600391906200026e565b508051620000c09060049060208401906200026e565b50506005805460ff19166012179055506000620000dc6200015b565b60058054610100600160a81b0319166101006001600160a01b0384169081029190911790915560405191925090600090600080516020620042e1833981519152908290a350505062000134826200015f60201b60201c565b600980546001600160a01b0319166001600160a01b0392909216919091179055506200030a565b3390565b620001696200015b565b60055461010090046001600160a01b03908116911614620001d1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116620002185760405162461bcd60e51b8152600401808060200182810382526026815260200180620042bb6026913960400191505060405180910390fd5b6005546040516001600160a01b038084169261010090041690600080516020620042e183398151915290600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b157805160ff1916838001178555620002e1565b82800160010185558215620002e1579182015b82811115620002e1578251825591602001919060010190620002c4565b50620002ef929150620002f3565b5090565b5b80821115620002ef5760008155600101620002f4565b613fa1806200031a6000396000f3fe6080604052600436106102135760003560e01c806370a08231116101185780639f999da3116100a0578063b14268221161006f578063b142682214610b9b578063dd62ed3e14610be3578063e467f7e014610c1e578063f2fde38b14610d4e578063f81bb18f14610d815761021d565b80639f999da3146109ad578063a12c4a6e14610b14578063a457c2d714610b29578063a9059cbb14610b625761021d565b80638ccbd6da116100e75780638ccbd6da146107375780638da5cb5b1461074c57806395d89b41146107615780639a16e7c8146107765780639ee1fc18146107be5761021d565b806370a0823114610697578063715018a6146106ca5780637b4eb027146106df5780637b58b0e8146106f45761021d565b806337beafe01161019b57806359c8b7dd1161016a57806359c8b7dd146105bf5780635fb64a6a146105eb578063631d24101461061e5780636434bd11146106515780636c64a678146106825761021d565b806337beafe014610505578063395093511461053857806339b22120146105715780633c503194146105aa5761021d565b80631b8dca74116101e25780631b8dca741461045857806320b28ade1461046d57806323b872dd14610482578063313ce567146104c5578063355274ea146104f05761021d565b8063053539641461022257806306fdde031461035a578063095ea7b3146103e457806318160ddd146104315761021d565b3661021d57600080fd5b600080fd5b34801561022e57600080fd5b506103586004803603604081101561024557600080fd5b810190602081018135600160201b81111561025f57600080fd5b82018360208201111561027157600080fd5b803590602001918460018302840111600160201b8311171561029257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610daf945050505050565b005b34801561036657600080fd5b5061036f610e24565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103a9578181015183820152602001610391565b50505050905090810190601f1680156103d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f057600080fd5b5061041d6004803603604081101561040757600080fd5b506001600160a01b038135169060200135610eba565b604080519115158252519081900360200190f35b34801561043d57600080fd5b50610446610ed8565b60408051918252519081900360200190f35b34801561046457600080fd5b50610358610ede565b34801561047957600080fd5b5061036f610fc7565b34801561048e57600080fd5b5061041d600480360360608110156104a557600080fd5b506001600160a01b03813581169160208101359091169060400135611102565b3480156104d157600080fd5b506104da611151565b6040805160ff9092168252519081900360200190f35b3480156104fc57600080fd5b5061044661115a565b34801561051157600080fd5b506103586004803603602081101561052857600080fd5b50356001600160a01b0316611160565b34801561054457600080fd5b5061041d6004803603604081101561055b57600080fd5b506001600160a01b03813516906020013561138d565b34801561057d57600080fd5b5061041d6004803603604081101561059457600080fd5b506001600160a01b0381351690602001356113db565b3480156105b657600080fd5b5061041d611431565b3480156105cb57600080fd5b506105d4611441565b6040805161ffff9092168252519081900360200190f35b3480156105f757600080fd5b506103586004803603602081101561060e57600080fd5b50356001600160a01b031661144b565b34801561062a57600080fd5b506103586004803603602081101561064157600080fd5b50356001600160a01b0316611678565b34801561065d57600080fd5b5061066661175b565b604080516001600160a01b039092168252519081900360200190f35b34801561068e57600080fd5b5061035861176a565b3480156106a357600080fd5b50610446600480360360208110156106ba57600080fd5b50356001600160a01b031661192a565b3480156106d657600080fd5b50610358611945565b3480156106eb57600080fd5b50610666611a04565b34801561070057600080fd5b5061041d6004803603606081101561071757600080fd5b506001600160a01b03813581169160208101359091169060400135611a13565b34801561074357600080fd5b50610358611ae4565b34801561075857600080fd5b50610666611c8a565b34801561076d57600080fd5b5061036f611c9e565b34801561078257600080fd5b5061078b611cff565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156107ca57600080fd5b506107f2600480360360208110156107e157600080fd5b503567ffffffffffffffff16611d19565b60405180806020018060200180602001806020018667ffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b8381101561084b578181015183820152602001610833565b50505050905090810190601f1680156108785780820380516001836020036101000a031916815260200191505b5085810384528951815289516020918201918b019080838360005b838110156108ab578181015183820152602001610893565b50505050905090810190601f1680156108d85780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b8381101561090b5781810151838201526020016108f3565b50505050905090810190601f1680156109385780820380516001836020036101000a031916815260200191505b50858103825287518152875160209182019189019080838360005b8381101561096b578181015183820152602001610953565b50505050905090810190601f1680156109985780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156109b957600080fd5b506109c261207f565b60405180806020018060200186815260200185815260200180602001848103845289818151815260200191508051906020019080838360005b83811015610a135781810151838201526020016109fb565b50505050905090810190601f168015610a405780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b83811015610a73578181015183820152602001610a5b565b50505050905090810190601f168015610aa05780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015610ad3578181015183820152602001610abb565b50505050905090810190601f168015610b005780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b348015610b2057600080fd5b50610666612333565b348015610b3557600080fd5b5061041d60048036036040811015610b4c57600080fd5b506001600160a01b0381351690602001356123a6565b348015610b6e57600080fd5b5061041d60048036036040811015610b8557600080fd5b506001600160a01b03813516906020013561240e565b348015610ba757600080fd5b50610358600480360360c0811015610bbe57600080fd5b5080359060208101359060408101359060608101359060808101359060a0013561241b565b348015610bef57600080fd5b5061044660048036036040811015610c0657600080fd5b506001600160a01b03813581169160200135166126a1565b348015610c2a57600080fd5b5061041d60048036036040811015610c4157600080fd5b810190602081018135600160201b811115610c5b57600080fd5b820183602082011115610c6d57600080fd5b803590602001918460208302840111600160201b83111715610c8e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610cdd57600080fd5b820183602082011115610cef57600080fd5b803590602001918460208302840111600160201b83111715610d1057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126cc945050505050565b348015610d5a57600080fd5b5061035860048036036020811015610d7157600080fd5b50356001600160a01b03166129c2565b348015610d8d57600080fd5b5061035860048036036020811015610da457600080fd5b503561ffff16612add565b6009546001600160a01b03163314610df85760405162461bcd60e51b8152600401808060200182810382526030815260200180613bac6030913960400191505060405180910390fd5b8151610e0b906003906020850190613a3a565b508051610e1f906004906020840190613a3a565b505050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610eb05780601f10610e8557610100808354040283529160200191610eb0565b820191906000526020600020905b815481529060010190602001808311610e9357829003601f168201915b5050505050905090565b6000610ece610ec7612ce2565b8484612ce6565b5060015b92915050565b60025490565b610ee6612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b158015610f3557600080fd5b505afa158015610f49573d6000803e3d6000fd5b505050506040513d6020811015610f5f57600080fd5b5051610fb2576040805162461bcd60e51b815260206004820152601960248201527f50726f70546f6b656e3a204f6e6c792043502061646d696e2100000000000000604482015290519081900360640190fd5b6009805460ff60a01b1916600160a01b179055565b6009546040805163044b772760e11b815230600482015290516060926001600160a01b031691630896ee4e916024808301926000929190829003018186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561104f57600080fd5b8101908080516040519392919084600160201b82111561106e57600080fd5b90830190602082018581111561108357600080fd5b8251600160201b81118282018810171561109c57600080fd5b82525081516020918201929091019080838360005b838110156110c95781810151838201526020016110b1565b50505050905090810190601f1680156110f65780820380516001836020036101000a031916815260200191505b50604052505050905090565b600061113c843361113785604051806060016040528060288152602001613cd3602891396111308a336126a1565b9190612e17565b612ce6565b611147848484612eae565b5060019392505050565b60055460ff1690565b60065490565b611168612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b1580156111b757600080fd5b505afa1580156111cb573d6000803e3d6000fd5b505050506040513d60208110156111e157600080fd5b50518061127557506111f1612dd2565b6001600160a01b031663c1cf7c0e306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561123d57600080fd5b505afa158015611251573d6000803e3d6000fd5b505050506040513d602081101561126757600080fd5b50516001600160a01b031633145b6112b05760405162461bcd60e51b8152600401808060200182810382526025815260200180613e8c6025913960400191505060405180910390fd5b6112b8612dd2565b6001600160a01b031663c057058a826040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561130457600080fd5b505afa158015611318573d6000803e3d6000fd5b505050506040513d602081101561132e57600080fd5b505161136b5760405162461bcd60e51b8152600401808060200182810382526026815260200180613e166026913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610ece61139a612ce2565b8461113785600160006113ab612ce2565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613376565b6008546000906001600160a01b031633146114275760405162461bcd60e51b8152600401808060200182810382526039815260200180613cfb6039913960400191505060405180910390fd5b610ece83836133d7565b600954600160a01b900460ff1690565b600f5461ffff1690565b611453612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d60208110156114cc57600080fd5b50518061156057506114dc612dd2565b6001600160a01b031663c1cf7c0e306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561152857600080fd5b505afa15801561153c573d6000803e3d6000fd5b505050506040513d602081101561155257600080fd5b50516001600160a01b031633145b61159b5760405162461bcd60e51b8152600401808060200182810382526025815260200180613e8c6025913960400191505060405180910390fd5b6115a3612dd2565b6001600160a01b031663c057058a826040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115ef57600080fd5b505afa158015611603573d6000803e3d6000fd5b505050506040513d602081101561161957600080fd5b50516116565760405162461bcd60e51b8152600401808060200182810382526026815260200180613e166026913960400191505060405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b611680612dd2565b6001600160a01b031663a49d9af2336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156116cc57600080fd5b505afa1580156116e0573d6000803e3d6000fd5b505050506040513d60208110156116f657600080fd5b50516117335760405162461bcd60e51b8152600401808060200182810382526030815260200180613eda6030913960400191505060405180910390fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6007546001600160a01b031690565b611772612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b1580156117c157600080fd5b505afa1580156117d5573d6000803e3d6000fd5b505050506040513d60208110156117eb57600080fd5b50518061187f57506117fb612dd2565b6001600160a01b031663c1cf7c0e306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561184757600080fd5b505afa15801561185b573d6000803e3d6000fd5b505050506040513d602081101561187157600080fd5b50516001600160a01b031633145b6118ba5760405162461bcd60e51b8152600401808060200182810382526025815260200180613e8c6025913960400191505060405180910390fd5b6118c2612dd2565b6001600160a01b031663e79d584e306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561191057600080fd5b505af1158015611924573d6000803e3d6000fd5b50505050565b6001600160a01b031660009081526020819052604090205490565b61194d612ce2565b60055461010090046001600160a01b039081169116146119b4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b6008546001600160a01b031690565b6000611a1d612dd2565b6001600160a01b031663a49d9af2336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6957600080fd5b505afa158015611a7d573d6000803e3d6000fd5b505050506040513d6020811015611a9357600080fd5b5051611ad05760405162461bcd60e51b8152600401808060200182810382526030815260200180613eda6030913960400191505060405180910390fd5b611ada84836133d7565b61114783836134d3565b611aec612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b158015611b3b57600080fd5b505afa158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b505180611bf95750611b75612dd2565b6001600160a01b031663c1cf7c0e306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611bc157600080fd5b505afa158015611bd5573d6000803e3d6000fd5b505050506040513d6020811015611beb57600080fd5b50516001600160a01b031633145b611c345760405162461bcd60e51b8152600401808060200182810382526025815260200180613e8c6025913960400191505060405180910390fd5b611c3c612dd2565b6001600160a01b03166378935e5b306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561191057600080fd5b60055461010090046001600160a01b031690565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610eb05780601f10610e8557610100808354040283529160200191610eb0565b600654600a54600b54600c54600d54600e54909192939495565b600954604080516313c7728d60e11b815230600482015267ffffffffffffffff8416602482015290516060928392839283926000926001600160a01b039091169163278ee51a916044808201928692909190829003018186803b158015611d7f57600080fd5b505afa158015611d93573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260a0811015611dbc57600080fd5b8101908080516040519392919084600160201b821115611ddb57600080fd5b908301906020820185811115611df057600080fd5b8251600160201b811182820188101715611e0957600080fd5b82525081516020918201929091019080838360005b83811015611e36578181015183820152602001611e1e565b50505050905090810190601f168015611e635780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611e8557600080fd5b908301906020820185811115611e9a57600080fd5b8251600160201b811182820188101715611eb357600080fd5b82525081516020918201929091019080838360005b83811015611ee0578181015183820152602001611ec8565b50505050905090810190601f168015611f0d5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611f2f57600080fd5b908301906020820185811115611f4457600080fd5b8251600160201b811182820188101715611f5d57600080fd5b82525081516020918201929091019080838360005b83811015611f8a578181015183820152602001611f72565b50505050905090810190601f168015611fb75780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b821115611fd957600080fd5b908301906020820185811115611fee57600080fd5b8251600160201b81118282018810171561200757600080fd5b82525081516020918201929091019080838360005b8381101561203457818101518382015260200161201c565b50505050905090810190601f1680156120615780820380516001836020036101000a031916815260200191505b5060405260200151959c949b50929950909750929550909350505050565b60095460408051636a00ef7f60e11b815230600482015290516060928392600092839285926001600160a01b039091169163d401defe916024808201928792909190829003018186803b1580156120d557600080fd5b505afa1580156120e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260a081101561211257600080fd5b8101908080516040519392919084600160201b82111561213157600080fd5b90830190602082018581111561214657600080fd5b8251600160201b81118282018810171561215f57600080fd5b82525081516020918201929091019080838360005b8381101561218c578181015183820152602001612174565b50505050905090810190601f1680156121b95780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b8211156121db57600080fd5b9083019060208201858111156121f057600080fd5b8251600160201b81118282018810171561220957600080fd5b82525081516020918201929091019080838360005b8381101561223657818101518382015260200161221e565b50505050905090810190601f1680156122635780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160609093018051919593949293929184600160201b82111561229357600080fd5b9083019060208201858111156122a857600080fd5b8251600160201b8111828201881017156122c157600080fd5b82525081516020918201929091019080838360005b838110156122ee5781810151838201526020016122d6565b50505050905090810190601f16801561231b5780820380516001836020036101000a031916815260200191505b50604052505050945094509450945094509091929394565b600061233d612dd2565b6001600160a01b031663a12c4a6e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561237557600080fd5b505afa158015612389573d6000803e3d6000fd5b505050506040513d602081101561239f57600080fd5b5051905090565b6000610ece6123b3612ce2565b8461113785604051806060016040528060258152602001613f4760259139600160006123dd612ce2565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612e17565b6000610ece338484612eae565b612423612dd2565b6001600160a01b031663a7f46904612439612ce2565b306040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561248757600080fd5b505afa15801561249b573d6000803e3d6000fd5b505050506040513d60208110156124b157600080fd5b50518061254157506124c1612dd2565b6001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b1580156124f957600080fd5b505afa15801561250d573d6000803e3d6000fd5b505050506040513d602081101561252357600080fd5b50516001600160a01b0316612536612ce2565b6001600160a01b0316145b61257c5760405162461bcd60e51b815260040180806020018281038252602c815260200180613c62602c913960400191505060405180910390fd5b61259681612590848187818a818e8e613376565b90613376565b69152d02c7e14af6800000146125dd5760405162461bcd60e51b8152600401808060200182810382526053815260200180613d346053913960600191505060405180910390fd5b6125e5610ed8565b8610156126235760405162461bcd60e51b815260040180806020018281038252603b815260200180613c05603b913960400191505060405180910390fd5b6006869055600a859055600b849055600c839055600d829055600e8190556040805187815260208101879052808201869052606081018590526080810184905260a08101839052905130917f350b0a1df6828f7078ed48f24d60421ddbf0357c257dfa8ae6791dcab22dc5a7919081900360c00190a2505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600954600090600160a01b900460ff166127175760405162461bcd60e51b8152600401808060200182810382526022815260200180613dcf6022913960400191505060405180910390fd5b61271f612dd2565b60408051639af2355360e01b815233600482015230602482015290516001600160a01b039290921691639af2355391604480820192602092909190829003018186803b15801561276e57600080fd5b505afa158015612782573d6000803e3d6000fd5b505050506040513d602081101561279857600080fd5b5051806127af57506007546001600160a01b031633145b6127ea5760405162461bcd60e51b815260040180806020018281038252602c815260200180613e60602c913960400191505060405180910390fd5b815183511461282a5760405162461bcd60e51b8152600401808060200182810382526029815260200180613bdc6029913960400191505060405180910390fd5b60005b83518110156111475760065461285884838151811061284857fe5b6020026020010151612590610ed8565b11156128ab576040805162461bcd60e51b815260206004820152601760248201527f50726f70546f6b656e3a20636170206578636565646564000000000000000000604482015290519081900360640190fd5b6128b3612dd2565b6001600160a01b031663f669e00c8583815181106128cd57fe5b6020026020010151306040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561292357600080fd5b505afa158015612937573d6000803e3d6000fd5b505050506040513d602081101561294d57600080fd5b505161298a5760405162461bcd60e51b8152600401808060200182810382526024815260200180613caf6024913960400191505060405180910390fd5b6129ba84828151811061299957fe5b60200260200101518483815181106129ad57fe5b60200260200101516134d3565b60010161282d565b6129ca612ce2565b60055461010090046001600160a01b03908116911614612a31576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612a765760405162461bcd60e51b8152600401808060200182810382526026815260200180613b3e6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b612ae5612dd2565b6001600160a01b031663a7f46904612afb612ce2565b306040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612b4957600080fd5b505afa158015612b5d573d6000803e3d6000fd5b505050506040513d6020811015612b7357600080fd5b505180612c035750612b83612dd2565b6001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b158015612bbb57600080fd5b505afa158015612bcf573d6000803e3d6000fd5b505050506040513d6020811015612be557600080fd5b50516001600160a01b0316612bf8612ce2565b6001600160a01b0316145b612c3e5760405162461bcd60e51b815260040180806020018281038252602c815260200180613c62602c913960400191505060405180910390fd5b600f5461ffff1615612c815760405162461bcd60e51b815260040180806020018281038252602b815260200180613b13602b913960400191505060405180910390fd5b600f5461271061ffff9091161115612cca5760405162461bcd60e51b815260040180806020018281038252603d815260200180613f0a603d913960400191505060405180910390fd5b600f805461ffff191661ffff92909216919091179055565b3390565b6001600160a01b038316612d2b5760405162461bcd60e51b8152600401808060200182810382526024815260200180613e3c6024913960400191505060405180910390fd5b6001600160a01b038216612d705760405162461bcd60e51b8152600401808060200182810382526022815260200180613b646022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6009546040805163a305a83d60e01b815290516000926001600160a01b03169163a305a83d916004808301926020929190829003018186803b15801561237557600080fd5b60008184841115612ea65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e6b578181015183820152602001612e53565b50505050905090810190601f168015612e985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038316612ef35760405162461bcd60e51b8152600401808060200182810382526029815260200180613eb16029913960400191505060405180910390fd5b6001600160a01b038216612f385760405162461bcd60e51b8152600401808060200182810382526027815260200180613d876027913960400191505060405180910390fd5b612f40612dd2565b6001600160a01b031663b9b8924c306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612f8c57600080fd5b505afa158015612fa0573d6000803e3d6000fd5b505050506040513d6020811015612fb657600080fd5b505115612ff45760405162461bcd60e51b8152600401808060200182810382526022815260200180613c406022913960400191505060405180910390fd5b6000612ffe612dd2565b6001600160a01b031663506461346040518163ffffffff1660e01b815260040160206040518083038186803b15801561303657600080fd5b505afa15801561304a573d6000803e3d6000fd5b505050506040513d602081101561306057600080fd5b50519050600061306e612dd2565b6001600160a01b031663c1cf7c0e306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156130ba57600080fd5b505afa1580156130ce573d6000803e3d6000fd5b505050506040513d60208110156130e457600080fd5b505190506130f0612dd2565b6001600160a01b031663a49d9af2866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561313c57600080fd5b505afa158015613150573d6000803e3d6000fd5b505050506040513d602081101561316657600080fd5b50518061318b5750613176612333565b6001600160a01b0316846001600160a01b0316145b806131a357506008546001600160a01b038581169116145b156131b8576131b38585856135c3565b61336f565b816001600160a01b0316846001600160a01b031614806131e95750806001600160a01b0316846001600160a01b0316145b8061320c57506131f7611c8a565b6001600160a01b0316846001600160a01b0316145b1561321c576131b38585856135c3565b613224612dd2565b6001600160a01b031663f669e00c85306040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561328157600080fd5b505afa158015613295573d6000803e3d6000fd5b505050506040513d60208110156132ab57600080fd5b50516132fe576040805162461bcd60e51b815260206004820181905260248201527f50726f70546f6b656e3a2043616e27742073656e6420746f6b656e7320746f21604482015290519081900360640190fd5b816001600160a01b0316856001600160a01b0316148061332f5750806001600160a01b0316856001600160a01b0316145b80613352575061333d611c8a565b6001600160a01b0316856001600160a01b0316145b15613362576131b38585856135c3565b61336f858585858561371e565b5050505050565b6000828201838110156133d0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661341c5760405162461bcd60e51b8152600401808060200182810382526021815260200180613dae6021913960400191505060405180910390fd5b61342882600083610e1f565b61346581604051806060016040528060228152602001613af1602291396001600160a01b0385166000908152602081905260409020549190612e17565b6001600160a01b03831660009081526020819052604090205560025461348b90826138fd565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b03821661352e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61353a60008383610e1f565b6002546135479082613376565b6002556001600160a01b03821660009081526020819052604090205461356d9082613376565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0383166136085760405162461bcd60e51b8152600401808060200182810382526025815260200180613df16025913960400191505060405180910390fd5b6001600160a01b03821661364d5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ace6023913960400191505060405180910390fd5b613658838383610e1f565b61369581604051806060016040528060268152602001613b86602691396001600160a01b0386166000908152602081905260409020549190612e17565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546136c49082613376565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006137a26103e861379c613731612dd2565b6001600160a01b0316639a4ed1496040518163ffffffff1660e01b815260040160206040518083038186803b15801561376957600080fd5b505afa15801561377d573d6000803e3d6000fd5b505050506040513d602081101561379357600080fd5b5051879061393f565b90613998565b905060006138226103e861379c6137b7612dd2565b6001600160a01b0316638a2c0c476040518163ffffffff1660e01b815260040160206040518083038186803b1580156137ef57600080fd5b505afa158015613803573d6000803e3d6000fd5b505050506040513d602081101561381957600080fd5b5051889061393f565b905060006138a26103e861379c613837612dd2565b6001600160a01b0316638e69ba0e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561386f57600080fd5b505afa158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b5051899061393f565b905060006138b4826125908686613376565b90506138c18987866135c3565b6138cc8986846135c3565b6138de896138d8611c8a565b856135c3565b6138f289896138ed8a856138fd565b6135c3565b505050505050505050565b60006133d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e17565b60008261394e57506000610ed2565b8282028284828161395b57fe5b04146133d05760405162461bcd60e51b8152600401808060200182810382526021815260200180613c8e6021913960400191505060405180910390fd5b60006133d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183613a245760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612e6b578181015183820152602001612e53565b506000838581613a3057fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a7b57805160ff1916838001178555613aa8565b82800160010185558215613aa8579182015b82811115613aa8578251825591602001919060010190613a8d565b50613ab4929150613ab8565b5090565b5b80821115613ab45760008155600101613ab956fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636550726f706572746965733a20526f79616c74792070657263656e7461676520616c726561647920736574214f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636550726f706572746965733a205472616e73616374696f6e206d75737420636f6d652066726f6d2072656769737472792150726f70546f6b656e3a20417272617973206d757374206265206f662073616d65206c656e6774682150726f706572746965733a20436170206e6565647320746f20626520626967676572206f7220657175616c20746f20746f74616c20737570706c7950726f70546f6b656e3a205472616e73616374696f6e73206172652066726f7a656e50726f706572746965733a20596f75206e65656420746f2062652070726f7065727479206d616e6167657221536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7750726f70546f6b656e3a2057616c6c6574206973206e6f742077686974656c697374656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636550726f70546f6b656e3a204f6e6c79206275726e20636f6e74726163742063616e206275726e20746f6b656e732066726f6d2075736572732150726f706572746965733a205468652073756d206f6620746865206361706974616c20737461636b206e6565647320746f2062652073616d65206173206d6178696d756d20737570706c79206f66204253505450726f70546f6b656e3a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737350726f70546f6b656e3a204d696e74696e67206973206e6f7420656e61626c65642145524332303a207472616e736665722066726f6d20746865207a65726f206164647265737350726f70546f6b656e3a20436f6e7472616374206973206e6f742077686974656c697374656445524332303a20617070726f76652066726f6d20746865207a65726f206164647265737350726f70546f6b656e3a20796f7520646f6e27742068617665207065726d697373696f6e20746f206d696e7450726f70546f6b656e3a20796f7520646f6e27742068617665207065726d697373696f6e2150726f70546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164647265737350726f70546f6b656e3a20596f75206e65656420746f20686176652073797374656d2061646d696e207269676874732150726f706572746965733a20526f79616c74792070657263656e74616765206d757374206265206c657373206f7220657175616c20746f20313030303045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b02484519c7d2ceb3c983d1b5cff624f724c7534fa01b073450523cfe5abbf7d64736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000fb531d5602fc0953be047605c77a7d289729ea8a00000000000000000000000005325c1ab1440df7214db38f676f95999729267b