[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Down", "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": "hand", "type": "address" }, { "indexed": true, "internalType": "address", "name": "raiser", "type": "address" } ], "name": "Raised", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "hand", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "solutionIndex", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "story", "type": "string" } ], "name": "SuccessStory", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "hand", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "solutionIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "comment", "type": "string" } ], "name": "Thanked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Up", "type": "event" }, { "inputs": [], "name": "MINIMUM_REWARD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "charityAddress", "type": "address" } ], "name": "addCharity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "charities", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "hand", "type": "address" }, { "internalType": "address", "name": "ref", "type": "address" }, { "internalType": "address", "name": "newRef", "type": "address" }, { "internalType": "string", "name": "solution", "type": "string" } ], "name": "give", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "givesNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "hands", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [ { "internalType": "string", "name": "problem", "type": "string" }, { "internalType": "string", "name": "link", "type": "string" }, { "internalType": "address", "name": "ref", "type": "address" } ], "name": "raise", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "raisedHandsNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "charityAddress", "type": "address" } ], "name": "removeCharity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardsDistributed", "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "hand", "type": "address" }, { "internalType": "address", "name": "ref", "type": "address" }, { "internalType": "address", "name": "newRef", "type": "address" }, { "internalType": "string", "name": "comment", "type": "string" } ], "name": "shake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shakesNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "solvedHandsNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "hand", "type": "address" }, { "internalType": "uint256", "name": "solutionIndex", "type": "uint256" }, { "internalType": "uint256", "name": "thankRate", "type": "uint256" }, { "internalType": "address", "name": "charity", "type": "address" }, { "internalType": "uint256", "name": "charityRate", "type": "uint256" }, { "internalType": "address", "name": "maint", "type": "address" }, { "internalType": "uint256", "name": "maintRate", "type": "uint256" }, { "internalType": "string", "name": "comment", "type": "string" } ], "name": "thank", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "thanksNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "thumbDown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "thumbUp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "trust", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "data", "type": "string" } ], "stateMutability": "pure", "type": "function" } ]
60c060405260056080908152641852185b9960da1b60a0526004906200002690826200019c565b503480156200003457600080fd5b506040805160208101909152600081523390620000518162000093565b506001600160a01b0381166200008157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200008c81620000a5565b5062000268565b6002620000a182826200019c565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200012257607f821691505b6020821081036200014357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019757600081815260208120601f850160051c81016020861015620001725750805b601f850160051c820191505b8181101562000193578281556001016200017e565b5050505b505050565b81516001600160401b03811115620001b857620001b8620000f7565b620001d081620001c984546200010d565b8462000149565b602080601f831160018114620002085760008415620001ef5750858301515b600019600386901b1c1916600185901b17855562000193565b600085815260208120601f198616915b82811015620002395788860151825594840194600190910190840162000218565b5085821015620002585787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6153bc80620002786000396000f3fe608060405260043610620001f25760003560e01c80636a6cc84c116200010b578063abefe59111620000a1578063e2bf9bbc116200006c578063e2bf9bbc14620005ca578063e985e9c514620005e2578063f242432a146200062f578063f2fde38b146200065457600080fd5b8063abefe5911462000551578063bceff29d1462000576578063c250ba38146200059b578063d42e6b3914620005b257600080fd5b80638da5cb5b11620000e25780638da5cb5b14620004a65780638e6afff914620004da5780639c1454d41462000514578063a22cb465146200052c57600080fd5b80636a6cc84c1462000451578063715018a6146200046957806378b14f0a146200048157600080fd5b8063267ed5bf116200018d5780634637d82711620001585780634637d82714620003b8578063483fb4bf14620003e95780634e1273f4146200040557806352f4b45d146200043957600080fd5b8063267ed5bf14620003315780632eb2c2d6146200035657806332c791dc146200037b57806333153f7e146200039357600080fd5b80630e89341c11620001ce5780630e89341c146200028c5780631f81c89c14620002b15780632478239a14620002d85780632544bcca146200030c57600080fd5b8062fdd58e14620001f757806301ffc9a7146200022f57806306fdde031462000265575b600080fd5b3480156200020457600080fd5b506200021c6200021636600462002631565b62000679565b6040519081526020015b60405180910390f35b3480156200023c57600080fd5b50620002546200024e3660046200268f565b620006a1565b604051901515815260200162000226565b3480156200027257600080fd5b506200027d62000787565b6040516200022691906200270a565b3480156200029957600080fd5b506200027d620002ab3660046200271f565b6200081d565b348015620002be57600080fd5b50620002d6620002d036600462002785565b620008a6565b005b348015620002e557600080fd5b5062000254620002f73660046200280b565b60076020526000908152604090205460ff1681565b3480156200031957600080fd5b50620002d66200032b36600462002785565b62000965565b3480156200033e57600080fd5b50620002d6620003503660046200280b565b62000a19565b3480156200036357600080fd5b50620002d662000375366004620029a9565b62000afc565b3480156200038857600080fd5b506200021c600a5481565b348015620003a057600080fd5b50620002d6620003b236600462002a65565b62000b98565b348015620003c557600080fd5b506200021c620003d73660046200280b565b60066020526000908152604090205481565b348015620003f657600080fd5b506200021c6509184e72a00081565b3480156200041257600080fd5b506200042a6200042436600462002b14565b62000ee1565b60405162000226919062002c21565b3480156200044657600080fd5b506200021c600b5481565b3480156200045e57600080fd5b506200021c60085481565b3480156200047657600080fd5b50620002d662000fde565b3480156200048e57600080fd5b50620002d6620004a03660046200280b565b62000ff6565b348015620004b357600080fd5b506003546001600160a01b03165b6040516001600160a01b03909116815260200162000226565b348015620004e757600080fd5b50620004c1620004f93660046200271f565b6005602052600090815260409020546001600160a01b031681565b3480156200052157600080fd5b506200021c600d5481565b3480156200053957600080fd5b50620002d66200054b36600462002c36565b62001042565b3480156200055e57600080fd5b50620002d6620005703660046200280b565b62001053565b3480156200058357600080fd5b50620002d6620005953660046200280b565b6200109c565b620002d6620005ac36600462002c78565b620011a0565b348015620005bf57600080fd5b506200021c600c5481565b348015620005d757600080fd5b506200021c60095481565b348015620005ef57600080fd5b50620002546200060136600462002d05565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b3480156200063c57600080fd5b50620002d66200064e36600462002d38565b62001311565b3480156200066157600080fd5b50620002d6620006733660046200280b565b620013a6565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806200073557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806200069b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146200069b565b60048054620007969062002da9565b80601f0160208091040260200160405190810160405280929190818152602001828054620007c49062002da9565b8015620008155780601f10620007e95761010080835404028352916020019162000815565b820191906000526020600020905b815481529060010190602001808311620007f757829003601f168201915b505050505081565b606060006200082c8362001403565b915050600081511115620008a0576200087c81620008546200084e866200171a565b62001764565b6040516020016200086792919062002df8565b60405160208183030381529060405262001764565b6040516020016200088e919062002f6a565b60405160208183030381529060405291505b50919050565b6040517f1f81c89c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861690631f81c89c90620008f5908790879033908890889060040162002fdc565b600060405180830381600087803b1580156200091057600080fd5b505af115801562000925573d6000803e3d6000fd5b50505050620009473360018060405180602001604052806000815250620018d6565b600a805490600062000959836200304d565b91905055505050505050565b6040517f2544bcca0000000000000000000000000000000000000000000000000000000081526001600160a01b03861690632544bcca90620009b4908790879033908890889060040162002fdc565b600060405180830381600087803b158015620009cf57600080fd5b505af1158015620009e4573d6000803e3d6000fd5b5050505062000a07336002600160405180602001604052806000815250620018d6565b600b805490600062000959836200304d565b600062000a2833600462000679565b1162000a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e7420555020746f6b656e000000000000000000000060448201526064015b60405180910390fd5b62000aa4336004600162001958565b62000ac3816004600160405180602001604052806000815250620019de565b6040516001600160a01b0382169033907f230d68fc383f6b7b814a0072f261d7f83c85006329a5172ab6dec58ab0f8459490600090a350565b6001600160a01b038516158062000b1a57506001600160a01b038416155b62000b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f6e2d7472616e7366657261626c6520746f6b656e00000000000000000000604482015260640162000a8c565b62000b91858585858562001a85565b5050505050565b6001600160a01b03861660009081526007602052604090205460ff1662000c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f43686172697479206973206e6f742076616c6964000000000000000000000000604482015260640162000a8c565b6000896040517f67e2d0b2000000000000000000000000000000000000000000000000000000008152336004820152602481018b9052604481018a90526001600160a01b0389811660648301526084820189905287811660a483015260c482018790529192506000918316906367e2d0b29060e4016020604051808303816000875af115801562000cb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd7919062003088565b6040517fb71698c7000000000000000000000000000000000000000000000000000000008152600481018c90529091506000906001600160a01b0384169063b71698c790602401600060405180830381865afa15801562000d3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d669190810190620030a2565b50905062000d88336003600160405180602001604052806000815250620018d6565b60016000606486111562000d9e57506002905060015b62000dbc3360048460405180602001604052806000815250620019de565b62000ddb836004600160405180602001604052806000815250620019de565b8d6001600160a01b03167ffd5dc89944aab45ed05b544f85bbb85314eea8ac16a3c73ba31924e29363b4ad8e868a8a60405162000e1c94939291906200313a565b60405180910390a2801562000e73578d6001600160a01b03167f278e7539f8dd910b4128a310a5e749814e451bc596e8ebe8bab21160474eb7e18e898960405162000e6a9392919062003166565b60405180910390a25b83600d600082825462000e8791906200318b565b90915550506001600160a01b038e163160000362000eba5760016009600082825462000eb491906200318b565b90915550505b600c805490600062000ecc836200304d565b91905055505050505050505050505050505050565b6060815183511462000f2d57815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440162000a8c565b6000835167ffffffffffffffff81111562000f4c5762000f4c6200282b565b60405190808252806020026020018201604052801562000f76578160200160208202803683370190505b50905060005b845181101562000fd65760208082028601015162000fa39060208084028701015162000679565b82828151811062000fb85762000fb8620031a1565b602090810291909101015262000fce816200304d565b905062000f7c565b509392505050565b62000fe862001b21565b62000ff4600062001b69565b565b6200100062001b21565b6001600160a01b0316600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6200104f33838362001bd3565b5050565b6200105d62001b21565b6001600160a01b0316600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000620010ab33600462000679565b1162001114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e73756666696369656e7420555020746f6b656e0000000000000000000000604482015260640162000a8c565b62001123336004600162001958565b62001142816005600160405180602001604052806000815250620019de565b60006200115182600462000679565b1115620011675762001167816004600162001958565b6040516001600160a01b0382169033907fc3b0b1f3a13dcda569c044b6409fc94488d1b1022109f0390e232041deb96cc890600090a350565b6509184e72a00034101562001212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f52657761726420697320746f6f206c6f77000000000000000000000000000000604482015260640162000a8c565b60003433878787878760405162001229906200260d565b6200123a96959493929190620031d0565b6040518091039082f090508015801562001258573d6000803e3d6000fd5b50600854600090815260056020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861617905580519182019052818152919250620012bc91339190600190620018d6565b60405133906001600160a01b038316907f846f5d08218b80eb4cdee178bc5a021148c2c4072119bd28ee2901b55fab39b990600090a36008805490600062001304836200304d565b9190505550505050505050565b6001600160a01b03851615806200132f57506001600160a01b038416155b62001397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f6e2d7472616e7366657261626c6520746f6b656e00000000000000000000604482015260640162000a8c565b62000b91858585858562001ca3565b620013b062001b21565b6001600160a01b038116620013f5576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b620014008162001b69565b50565b6060808262001481576040518060400160405280600381526020017fe29c8b00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f526169736564000000000000000000000000000000000000000000000000000081525091509150915091565b60018303620014ff576040518060400160405280600481526020017ff09fa49d000000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5368616b656e000000000000000000000000000000000000000000000000000081525091509150915091565b600283036200157d576040518060400160405280600481526020017ff09f998c000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f476976656e00000000000000000000000000000000000000000000000000000081525091509150915091565b60038303620015fb576040518060400160405280600481526020017ff09f998f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5468616e6b65640000000000000000000000000000000000000000000000000081525091509150915091565b6004830362001679576040518060400160405280600481526020017ff09f918d000000000000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f5468756d6220557000000000000000000000000000000000000000000000000081525091509150915091565b60058303620016f7576040518060400160405280600481526020017ff09f918e000000000000000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f5468756d6220446f776e0000000000000000000000000000000000000000000081525091509150915091565b505060408051602080820183526000808352835191820190935291825292909150565b60606000620017298362001403565b50805190915015620008a0576200174261010062001d3f565b6200174f61010062001d3f565b826040516020016200088e9392919062003222565b606081516000036200178457505060408051602081019091526000815290565b6000604051806060016040528060408152602001620053476040913990506000600384516002620017b691906200318b565b620017c29190620033aa565b620017cf906004620033e6565b67ffffffffffffffff811115620017ea57620017ea6200282b565b6040519080825280601f01601f19166020018201604052801562001815576020820181803683370190505b50905060018201602082018586518701602081018051600082525b828410156200188d576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945062001830565b9052505085516003900660018114620018af5760028114620018c357620018cb565b603d6001830353603d6002830353620018cb565b603d60018303535b509195945050505050565b6001600160a01b0384166200191b576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b604080516001808252602082018690528183019081526060820185905260808201909252906200195060008784848762001e04565b505050505050565b6001600160a01b0383166200199d576040517f01a835140000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929162000b919187918590859062001e04565b620019ec84848484620018d6565b6004830362001a4657600062001a0485600462000679565b6001600160a01b03861660009081526006602052604090205490915081111562001a44576001600160a01b03851660009081526006602052604090208190555b505b6005830362001a7f576001600160a01b0384166000908152600660205260408120805484929062001a7990849062003400565b90915550505b50505050565b336001600160a01b038616811480159062001ac657506001600160a01b0380871660009081526001602090815260408083209385168352929052205460ff16155b1562001b12576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528716602482015260440162000a8c565b62001950868686868662001e60565b6003546001600160a01b0316331462000ff4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000a8c565b600380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821662001c18576040517fced3e1000000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b336001600160a01b038616811480159062001ce457506001600160a01b0380871660009081526001602090815260408083209385168352929052205460ff16155b1562001d30576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528716602482015260440162000a8c565b62001950868686868662001ef9565b6060600062001d4e8362001fc0565b600101905060008167ffffffffffffffff81111562001d715762001d716200282b565b6040519080825280601f01601f19166020018201604052801562001d9c576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508462001da657509392505050565b62001e1285858585620020a9565b6001600160a01b0384161562000b91578251339060010362001e50576020848101519084015162001e4883898985858962002309565b505062001950565b62001950818787878787620024b6565b6001600160a01b03841662001ea5576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b6001600160a01b03851662001eea576040517f01a835140000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b62000b91858585858562001e04565b6001600160a01b03841662001f3e576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b6001600160a01b03851662001f83576040517f01a835140000000000000000000000000000000000000000000000000000000081526000600482015260240162000a8c565b6040805160018082526020820186905281830190815260608201859052608082019092529062001fb7878784848762001e04565b50505050505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200200a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062002037576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200205657662386f26fc10000830492506010015b6305f5e10083106200206f576305f5e100830492506008015b61271083106200208457612710830492506004015b6064831062002097576064830492506002015b600a83106200069b5760010192915050565b8051825114620020f357815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440162000a8c565b3360005b835181101562002225576020818102858101820151908501909101516001600160a01b03881615620021c7576000828152602081815260408083206001600160a01b038c16845290915290205481811015620021a0576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038a16600482015260248101829052604481018390526064810184905260840162000a8c565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b038716156200220f576000828152602081815260408083206001600160a01b038b16845290915281208054839290620022099084906200318b565b90915550505b5050806200221d906200304d565b9050620020f7565b508251600103620022a95760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405162002299929190918252602082015260400190565b60405180910390a4505062000b91565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051620022fa9291906200342a565b60405180910390a45050505050565b6001600160a01b0384163b1562001950576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e619062002369908990899088908890889060040162003453565b6020604051808303816000875af1925050508015620023a7575060408051601f3d908101601f19168201909252620023a4918101906200348d565b60015b6200242e573d808015620023d8576040519150601f19603f3d011682016040523d82523d6000602084013e620023dd565b606091505b50805160000362002426576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000a8c565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001462001fb7576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000a8c565b6001600160a01b0384163b1562001950576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c8190620025169089908990889088908890600401620034ad565b6020604051808303816000875af192505050801562002554575060408051601f3d908101601f1916820190925262002551918101906200348d565b60015b62002585573d808015620023d8576040519150601f19603f3d011682016040523d82523d6000602084013e620023dd565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001462001fb7576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240162000a8c565b611e35806200351283390190565b6001600160a01b03811681146200140057600080fd5b600080604083850312156200264557600080fd5b823562002652816200261b565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146200140057600080fd5b600060208284031215620026a257600080fd5b8135620026af8162002660565b9392505050565b60005b83811015620026d3578181015183820152602001620026b9565b50506000910152565b60008151808452620026f6816020860160208601620026b6565b601f01601f19169290920160200192915050565b602081526000620026af6020830184620026dc565b6000602082840312156200273257600080fd5b5035919050565b60008083601f8401126200274c57600080fd5b50813567ffffffffffffffff8111156200276557600080fd5b6020830191508360208285010111156200277e57600080fd5b9250929050565b6000806000806000608086880312156200279e57600080fd5b8535620027ab816200261b565b94506020860135620027bd816200261b565b93506040860135620027cf816200261b565b9250606086013567ffffffffffffffff811115620027ec57600080fd5b620027fa8882890162002739565b969995985093965092949392505050565b6000602082840312156200281e57600080fd5b8135620026af816200261b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200288657620028866200282b565b604052919050565b600067ffffffffffffffff821115620028ab57620028ab6200282b565b5060051b60200190565b600082601f830112620028c757600080fd5b81356020620028e0620028da836200288e565b6200285a565b82815260059290921b840181019181810190868411156200290057600080fd5b8286015b848110156200291d578035835291830191830162002904565b509695505050505050565b600067ffffffffffffffff8211156200294557620029456200282b565b50601f01601f191660200190565b600082601f8301126200296557600080fd5b813562002976620028da8262002928565b8181528460208386010111156200298c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215620029c257600080fd5b8535620029cf816200261b565b94506020860135620029e1816200261b565b9350604086013567ffffffffffffffff80821115620029ff57600080fd5b62002a0d89838a01620028b5565b9450606088013591508082111562002a2457600080fd5b62002a3289838a01620028b5565b9350608088013591508082111562002a4957600080fd5b5062002a588882890162002953565b9150509295509295909350565b60008060008060008060008060006101008a8c03121562002a8557600080fd5b893562002a92816200261b565b985060208a0135975060408a0135965060608a013562002ab2816200261b565b955060808a0135945060a08a013562002acb816200261b565b935060c08a0135925060e08a013567ffffffffffffffff81111562002aef57600080fd5b62002afd8c828d0162002739565b915080935050809150509295985092959850929598565b6000806040838503121562002b2857600080fd5b823567ffffffffffffffff8082111562002b4157600080fd5b818501915085601f83011262002b5657600080fd5b8135602062002b69620028da836200288e565b82815260059290921b8401810191818101908984111562002b8957600080fd5b948201945b8386101562002bb457853562002ba4816200261b565b8252948201949082019062002b8e565b9650508601359250508082111562002bcb57600080fd5b5062002bda85828601620028b5565b9150509250929050565b600081518084526020808501945080840160005b8381101562002c165781518752958201959082019060010162002bf8565b509495945050505050565b602081526000620026af602083018462002be4565b6000806040838503121562002c4a57600080fd5b823562002c57816200261b565b91506020830135801515811462002c6d57600080fd5b809150509250929050565b60008060008060006060868803121562002c9157600080fd5b853567ffffffffffffffff8082111562002caa57600080fd5b62002cb889838a0162002739565b9097509550602088013591508082111562002cd257600080fd5b5062002ce18882890162002739565b909450925050604086013562002cf7816200261b565b809150509295509295909350565b6000806040838503121562002d1957600080fd5b823562002d26816200261b565b9150602083013562002c6d816200261b565b600080600080600060a0868803121562002d5157600080fd5b853562002d5e816200261b565b9450602086013562002d70816200261b565b93506040860135925060608601359150608086013567ffffffffffffffff81111562002d9b57600080fd5b62002a588882890162002953565b600181811c9082168062002dbe57607f821691505b602082108103620008a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f7b0000000000000000000000000000000000000000000000000000000000000081527f2020226e616d65223a202200000000000000000000000000000000000000000060018201526000835162002e5881600c850160208801620026b6565b80830190507f220000000000000000000000000000000000000000000000000000000000000080600c8301527f2c20226465736372697074696f6e223a2022687474703a2f2f6168616e642e69600d8301527f6e22000000000000000000000000000000000000000000000000000000000000602d8301527f2c2022696d616765223a2022646174613a696d6167652f7376672b786d6c3b62602f8301527f61736536342c0000000000000000000000000000000000000000000000000000604f830152845162002f31816055850160208901620026b6565b60559201918201527f7d000000000000000000000000000000000000000000000000000000000000006056820152605701949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825162002fa481601d850160208701620026b6565b91909101601d0192915050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60006001600160a01b0380881683528087166020840152808616604084015250608060608301526200301360808301848662002fb1565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200308157620030816200301e565b5060010190565b6000602082840312156200309b57600080fd5b5051919050565b60008060408385031215620030b657600080fd5b8251620030c3816200261b565b602084015190925067ffffffffffffffff811115620030e157600080fd5b8301601f81018513620030f357600080fd5b805162003104620028da8262002928565b8181528660208385010111156200311a57600080fd5b6200312d826020830160208601620026b6565b8093505050509250929050565b8481528360208201526060604082015260006200315c60608301848662002fb1565b9695505050505050565b8381526040602082015260006200318260408301848662002fb1565b95945050505050565b808201808211156200069b576200069b6200301e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006001600160a01b03808916835260806020840152620031f660808401888a62002fb1565b83810360408501526200320b81878962002fb1565b925050808416606084015250979650505050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f737667222077696474683d2200000000000000000000000000000000006020820152600084516200328281602f850160208901620026b6565b7f22206865696768743d2200000000000000000000000000000000000000000000602f918401918201528451620032c1816039840160208901620026b6565b7f223e000000000000000000000000000000000000000000000000000000000000603992909101918201527f3c7465787420783d223530252220793d223630252220746578742d616e63686f603b8201527f723d226d6964646c652220666f6e742d73697a653d2236342220666f6e742d66605b8201527f616d696c793d22456d6f6a69466f6e742c2073616e732d7365726966223e0000607b820152835162003373816099840160208801620026b6565b7f3c2f746578743e3c2f7376673e000000000000000000000000000000000000006099929091019182015260a60195945050505050565b600082620033e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176200069b576200069b6200301e565b81810360008312801583831316838312821617156200342357620034236200301e565b5092915050565b6040815260006200343f604083018562002be4565b828103602084015262003182818562002be4565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a060808301526200301360a0830184620026dc565b600060208284031215620034a057600080fd5b8151620026af8162002660565b60006001600160a01b03808816835280871660208401525060a06040830152620034db60a083018662002be4565b8281036060840152620034ef818662002be4565b90508281036080840152620035058185620026dc565b9897505050505050505056fe60c060405260405162001e3538038062001e358339810160408190526200002691620001c0565b6001600160a01b038416620000815760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420726169736572206164647265737300000000000000000000604482015260640160405180910390fd5b336080526001600160a01b0384811660a0819052908216600090815260046020526040812080546001600160a01b031916909217909155620000c48482620002df565b506001620000d38382620002df565b5050505050620003ab565b80516001600160a01b0381168114620000f657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200012357600080fd5b81516001600160401b0380821115620001405762000140620000fb565b604051601f8301601f19908116603f011681019082821181831017156200016b576200016b620000fb565b816040528381526020925086838588010111156200018857600080fd5b600091505b83821015620001ac57858201830151818301840152908201906200018d565b600093810190920192909252949350505050565b60008060008060808587031215620001d757600080fd5b620001e285620000de565b60208601519094506001600160401b03808211156200020057600080fd5b6200020e8883890162000111565b945060408701519150808211156200022557600080fd5b50620002348782880162000111565b9250506200024560608601620000de565b905092959194509250565b600181811c908216806200026557607f821691505b6020821081036200028657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002da57600081815260208120601f850160051c81016020861015620002b55750805b601f850160051c820191505b81811015620002d657828155600101620002c1565b5050505b505050565b81516001600160401b03811115620002fb57620002fb620000fb565b62000313816200030c845462000250565b846200028c565b602080601f8311600181146200034b5760008415620003325750858301515b600019600386901b1c1916600185901b178555620002d6565b600085815260208120601f198616915b828110156200037c578886015182559484019460019091019084016200035b565b50858210156200039b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611a33620004026000396000818161030b015281816109bf01528181610c1b015281816110e00152611218015260008181610237015281816103fe0152818161066201526108d70152611a336000f3fe6080604052600436106101035760003560e01c80638fb5f4661161009c578063b71698c71161006e578063c24dbebd11610056578063c24dbebd1461032d578063c4444b061461020f578063ede8fd851461034357005b8063b71698c7146102cb578063be4f3b0b146102f957005b80638fb5f4661461020f578063938b5f32146102255780639a2ebf631461027e578063a773adcb1461029e57005b806345324688116100d5578063453246881461019a578063561bb7f9146101af57806367e2d0b2146101c5578063799320bb146101e557005b80631c4695f41461010c5780631f81c89c1461013757806322270292146101575780632544bcca1461017a57005b3661010a57005b005b34801561011857600080fd5b50610121610358565b60405161012e91906114c6565b60405180910390f35b34801561014357600080fd5b5061010a610152366004611502565b6103e6565b34801561016357600080fd5b5061016c600a81565b60405190815260200161012e565b34801561018657600080fd5b5061010a610195366004611502565b61064a565b3480156101a657600080fd5b506101216108b0565b3480156101bb57600080fd5b5061016c60025481565b3480156101d157600080fd5b5061016c6101e03660046115a4565b6108bd565b3480156101f157600080fd5b506003546101ff9060ff1681565b604051901515815260200161012e565b34801561021b57600080fd5b5061016c610d0581565b34801561023157600080fd5b506102597f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012e565b34801561028a57600080fd5b5061016c61029936600461160e565b610d41565b3480156102aa57600080fd5b506102be6102b936600461160e565b610de4565b60405161012e9190611629565b3480156102d757600080fd5b506102eb6102e6366004611683565b610f5a565b60405161012e92919061169c565b34801561030557600080fd5b506102597f000000000000000000000000000000000000000000000000000000000000000081565b34801561033957600080fd5b5061016c61271081565b34801561034f57600080fd5b5061016c606481565b60018054610365906116d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610391906116d3565b80156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b505050505081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104965760405162461bcd60e51b815260206004820152602760248201527f43616e2062652063616c6c65642066726f6d206f726967696e20636f6e74726160448201527f6374206f6e6c790000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff858116600090815260046020526040902054168061050b5760405162461bcd60e51b815260206004820152600b60248201527f4e6f207375636820726566000000000000000000000000000000000000000000604482015260640161048d565b600a61051682610d41565b106105635760405162461bcd60e51b815260206004820152601560248201527f5368616b657320636861696e20746f6f206c6f6e670000000000000000000000604482015260640161048d565b61056d8185611016565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526004602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016888516908117909155905190928416917f4632efe482788c25188d4f7ce36e4c97bb2e0d84c9727a62168a202b94bb028c91a38115610642578373ffffffffffffffffffffffffffffffffffffffff167f2875f670dc64474300d367b3c3d5871bc023d32a02d044b8c8fd2c1b01f5cdd78484604051610639929190611720565b60405180910390a25b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106f55760405162461bcd60e51b815260206004820152602760248201527f43616e2062652063616c6c65642066726f6d206f726967696e20636f6e74726160448201527f6374206f6e6c7900000000000000000000000000000000000000000000000000606482015260840161048d565b73ffffffffffffffffffffffffffffffffffffffff858116600090815260046020526040902054166107278185611016565b73ffffffffffffffffffffffffffffffffffffffff85811660009081526004602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169388169384179055815180830183526060818301529283528151601f860182900482028101820190925284825285908590819084018382808284376000920182905250602086810195865260025482526006905260409020855181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161781559351859493506001840192506108259150826117e2565b509050508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f0e29f32fc1fae7760283500fb0de9eb57a6408e7ed5c093383f6fe1485875bb760025460405161088a91815260200190565b60405180910390a3600280549060006108a28361192b565b919050555050505050505050565b60008054610365906116d3565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096a5760405162461bcd60e51b815260206004820152602760248201527f43616e2062652063616c6c65642066726f6d206f726967696e20636f6e74726160448201527f6374206f6e6c7900000000000000000000000000000000000000000000000000606482015260840161048d565b60035460ff16156109bd5760405162461bcd60e51b815260206004820152600e60248201527f416c726561647920736f6c766564000000000000000000000000000000000000604482015260640161048d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610a585760405162461bcd60e51b815260206004820152601560248201527f4f6e6c79207261697365722063616e207468616e6b0000000000000000000000604482015260640161048d565b612710861115610aaa5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964207468616e6b20726174650000000000000000000000000000604482015260640161048d565b610d05841115610afc5760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420636861726974792072617465000000000000000000000000604482015260640161048d565b610d05821115610b4e5760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206d61696e74656e616e636520726174650000000000000000604482015260640161048d565b60008781526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610bc05760405162461bcd60e51b815260206004820152601660248201527f536f6c7574696f6e20646f65736e277420657869737400000000000000000000604482015260640161048d565b612710610bcd8847611963565b610bd79190611980565b915081610be5878783611337565b610bef90826119bb565b9050610bfc858585611374565b610c0690826119bb565b9050816000610c16600284611980565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015610c755750600081115b8015610c815750600083115b15610cee576000838211610c955781610c97565b835b9050610ca383826113ad565b610cad81856119bb565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526005602052604090205490945090921691610ce6600283611980565b915050610c19565b8215610cfe57610cfe84846113ad565b47600003610d3257600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b50505050979650505050505050565b600080610d738373ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b9050600091505b73ffffffffffffffffffffffffffffffffffffffff811615801590610d9f5750600a82105b15610dde5773ffffffffffffffffffffffffffffffffffffffff9081166000908152600560205260409020541681610dd68161192b565b925050610d7a565b50919050565b73ffffffffffffffffffffffffffffffffffffffff8181166000908152600460205260409020546060911680610e5c5760405162461bcd60e51b815260206004820152600b60248201527f4e6f207375636820726566000000000000000000000000000000000000000000604482015260640161048d565b60408051600a808252610160820190925290602082016101408036833750505073ffffffffffffffffffffffffffffffffffffffff82811660009081526005602052604090205491935016610ec1575050604080516000815260208101909152919050565b60005b73ffffffffffffffffffffffffffffffffffffffff821615801590610eea5750600a8111155b15610f525781838281518110610f0257610f026119ce565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152928116600090815260059093526040909220549091169080610f4a8161192b565b915050610ec4565b825250919050565b6006602052600090815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff9092169291610f93906116d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf906116d3565b801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b5050505050905082565b60035460ff16156110695760405162461bcd60e51b815260206004820152600e60248201527f416c726561647920736f6c766564000000000000000000000000000000000000604482015260640161048d565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526005602052604090205416156110de5760405162461bcd60e51b815260206004820152600e60248201527f416c7265616479207368616b656e000000000000000000000000000000000000604482015260640161048d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111795760405162461bcd60e51b815260206004820152601e60248201527f5261697365722063616e277420736f6c7665206f776e2070726f626c656d0000604482015260640161048d565b73ffffffffffffffffffffffffffffffffffffffff8216158015906111ca57508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6112165760405162461bcd60e51b815260206004820152600b60248201527f496e76616c696420726566000000000000000000000000000000000000000000604482015260640161048d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611296575073ffffffffffffffffffffffffffffffffffffffff8281166000908152600560205260409020541615155b6112e25760405162461bcd60e51b815260206004820152600b60248201527f496e76616c696420726566000000000000000000000000000000000000000000604482015260640161048d565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526005602052604090208054919092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055565b60006127106064841161134b57606461134d565b835b6113579084611963565b6113619190611980565b905061136d84826113ad565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff84161580159061139b5750600083115b1561136d576127106113578484611963565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611407576040519150601f19603f3d011682016040523d82523d6000602084013e61140c565b606091505b505090508061145d5760405162461bcd60e51b815260206004820152601360248201527f5472616e7366657272696e67206661696c656400000000000000000000000000604482015260640161048d565b505050565b6000815180845260005b818110156114885760208185018101518683018201520161146c565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061136d6020830184611462565b803573ffffffffffffffffffffffffffffffffffffffff811681146114fd57600080fd5b919050565b60008060008060006080868803121561151a57600080fd5b611523866114d9565b9450611531602087016114d9565b935061153f604087016114d9565b9250606086013567ffffffffffffffff8082111561155c57600080fd5b818801915088601f83011261157057600080fd5b81358181111561157f57600080fd5b89602082850101111561159157600080fd5b9699959850939650602001949392505050565b600080600080600080600060e0888a0312156115bf57600080fd5b6115c8886114d9565b965060208801359550604088013594506115e4606089016114d9565b9350608088013592506115f960a089016114d9565b915060c0880135905092959891949750929550565b60006020828403121561162057600080fd5b61136d826114d9565b6020808252825182820181905260009190848201906040850190845b8181101561167757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611645565b50909695505050505050565b60006020828403121561169557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006116cb6040830184611462565b949350505050565b600181811c908216806116e757607f821691505b602082108103610dde577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561145d57600081815260208120601f850160051c810160208610156117c35750805b601f850160051c820191505b81811015610642578281556001016117cf565b815167ffffffffffffffff8111156117fc576117fc61176d565b6118108161180a84546116d3565b8461179c565b602080601f831160018114611863576000841561182d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610642565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156118b057888601518255948401946001909101908401611891565b50858210156118ec57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361195c5761195c6118fc565b5060010190565b808202811582820484141761197a5761197a6118fc565b92915050565b6000826119b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561197a5761197a6118fc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212208c4ce0e54bca6ff6913abf321764db51c6ad0eaee5bf2cc4ebd30fc48cbfea4f64736f6c634300081400334142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220020db2455403929e50bd0b5c0ed16cae04a671ec9bbbc57c94870e1df3db9db164736f6c63430008140033