{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC3525SlotApprovableUpgradeableWithInit",
  "sourceName": "contracts/mocks/ERC3525BaseMockUpgradeableWithInit.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_slot",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForSlot",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ApprovalValue",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "metadataDescriptor",
          "type": "address"
        }
      ],
      "name": "SetMetadataDescriptor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_oldSlot",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_newSlot",
          "type": "uint256"
        }
      ],
      "name": "SlotChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "TransferValue",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        }
      ],
      "name": "isApprovedForSlot",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataDescriptor",
      "outputs": [
        {
          "internalType": "contract IERC3525MetadataDescriptorUpgradeable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data_",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "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": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved_",
          "type": "bool"
        }
      ],
      "name": "setApprovalForSlot",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "slotByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "slotCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "slotOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        }
      ],
      "name": "slotURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenInSlotByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index_",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "slot_",
          "type": "uint256"
        }
      ],
      "name": "tokenSupplyInSlot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newTokenId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "fromTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toTokenId_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value_",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "valueDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260405162003c1f38038062003c1f8339810160408190526200002691620003ac565b600054610100900460ff1615808015620000475750600054600160ff909116105b8062000077575062000064306200016260201b620011911760201c565b15801562000077575060005460ff166001145b620000e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000104576000805461ff0019166101001790555b6200011184848462000171565b801562000158576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050506200058b565b6001600160a01b03163b151590565b600054610100900460ff16620001cd5760405162461bcd60e51b815260206004820152602b602482015260008051602062003bff83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d7565b620001da838383620001ec565b620001e783838362000283565b505050565b600054610100900460ff16620002485760405162461bcd60e51b815260206004820152602b602482015260008051602062003bff83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d7565b600160365560336200025b8482620004bf565b5060346200026a8382620004bf565b506035805460ff191660ff929092169190911790555050565b600054610100900460ff16620001e75760405162461bcd60e51b815260206004820152602b602482015260008051602062003bff83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d7565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200030757600080fd5b81516001600160401b0380821115620003245762000324620002df565b604051601f8301601f19908116603f011681019082821181831017156200034f576200034f620002df565b816040528381526020925086838588010111156200036c57600080fd5b600091505b8382101562000390578582018301518183018401529082019062000371565b83821115620003a25760008385830101525b9695505050505050565b600080600060608486031215620003c257600080fd5b83516001600160401b0380821115620003da57600080fd5b620003e887838801620002f5565b94506020860151915080821115620003ff57600080fd5b506200040e86828701620002f5565b925050604084015160ff811681146200042657600080fd5b809150509250925092565b600181811c908216806200044657607f821691505b6020821081036200046757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001e757600081815260208120601f850160051c81016020861015620004965750805b601f850160051c820191505b81811015620004b757828155600101620004a2565b505050505050565b81516001600160401b03811115620004db57620004db620002df565b620004f381620004ec845462000431565b846200046d565b602080601f8311600181146200052b5760008415620005125750858301515b600019600386901b1c1916600185901b178555620004b7565b600085815260208120601f198616915b828110156200055c578886015182559484019460019091019084016200053b565b50858210156200057b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613664806200059b6000396000f3fe6080604052600436106101e25760003560e01c806355cd4e0611610102578063a22cb46511610095578063e345f05e11610064578063e345f05e1461052a578063e8a3d4851461057b578063e985e9c514610590578063ed08fa80146105dd57600080fd5b8063a22cb465146104b7578063b88d4fde146104d7578063c87b56dd146104ea578063e345e0bc1461050a57600080fd5b80638cb0a511116100d15780638cb0a5111461044f57806395d89b4114610462578063993bef8d146104775780639cc7f7081461049757600080fd5b806355cd4e06146103dc5780636352211e146103ef57806370a082311461040f578063840f71131461042f57600080fd5b806323b872dd1161017a5780633e7e8669116101495780633e7e86691461036757806342842e0e146103895780634f6ccce71461039c5780634f8a0f83146103bc57600080fd5b806323b872dd14610301578063263f3e7e146103145780632f745c5914610334578063310ed7f01461035457600080fd5b8063095ea7b3116101b6578063095ea7b3146102a457806309c3dd87146102b95780630f485c02146102d957806318160ddd146102ec57600080fd5b8062cd0110146101e757806301ffc9a71461021a57806306fdde031461024a578063081812fc1461026c575b600080fd5b3480156101f357600080fd5b50610207610202366004612e8a565b6105f2565b6040519081526020015b60405180910390f35b34801561022657600080fd5b5061023a610235366004612ec2565b6106c8565b6040519015158152602001610211565b34801561025657600080fd5b5061025f6106ed565b6040516102119190612f37565b34801561027857600080fd5b5061028c610287366004612f4a565b61077f565b6040516001600160a01b039091168152602001610211565b6102b76102b2366004612f7a565b6107d1565b005b3480156102c557600080fd5b5061025f6102d4366004612f4a565b6108cb565b6102076102e7366004612fa4565b6109bd565b3480156102f857600080fd5b50603854610207565b6102b761030f366004612fd9565b6109f5565b34801561032057600080fd5b5061020761032f366004612f4a565b610a2b565b34801561034057600080fd5b5061020761034f366004612f7a565b610a73565b6102b7610362366004613005565b610b01565b34801561037357600080fd5b5060355460405160ff9091168152602001610211565b6102b7610397366004612fd9565b610b17565b3480156103a857600080fd5b506102076103b7366004612f4a565b610b32565b3480156103c857600080fd5b506102076103d7366004612f4a565b610bc3565b6102b76103ea36600461303f565b610c18565b3480156103fb57600080fd5b5061028c61040a366004612f4a565b610cb2565b34801561041b57600080fd5b5061020761042a36600461308e565b610d4e565b34801561043b57600080fd5b50603b5461028c906001600160a01b031681565b6102b761045d366004612fa4565b610dd6565b34801561046e57600080fd5b5061025f610e8f565b34801561048357600080fd5b50610207610492366004612f4a565b610e9e565b3480156104a357600080fd5b506102076104b2366004612f4a565b610f3b565b3480156104c357600080fd5b506102b76104d23660046130a9565b610f83565b6102b76104e536600461314f565b610f92565b3480156104f657600080fd5b5061025f610505366004612f4a565b610fc4565b34801561051657600080fd5b506102076105253660046131fa565b611063565b34801561053657600080fd5b5061023a610545366004613226565b6001600160a01b039283166000908152609760209081526040808320948352938152838220929094168152925290205460ff1690565b34801561058757600080fd5b5061025f611097565b34801561059c57600080fd5b5061023a6105ab366004613262565b6001600160a01b039182166000908152603a602090815260408083209390941682526002909201909152205460ff1690565b3480156105e957600080fd5b50606654610207565b60006105fd83610bc3565b821061066e5760405162461bcd60e51b815260206004820152603560248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420746f6b656044820152746e20696e646578206f7574206f6620626f756e647360581b60648201526084015b60405180910390fd5b6000838152606760205260409020546066805490919081106106925761069261328c565b906000526020600020906002020160010182815481106106b4576106b461328c565b906000526020600020015490505b92915050565b60006001600160e01b031982166316d117cb60e31b14806106c257506106c2826111a0565b6060603380546106fc906132a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610728906132a2565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b600061078a826111c5565b6000828152603960205260409020546038805490919081106107ae576107ae61328c565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006107dc82610cb2565b905060006107e983610a2b565b9050816001600160a01b0316846001600160a01b03160361081c5760405162461bcd60e51b8152600401610665906132dc565b336001600160a01b0383161480610838575061083882336105ab565b806108495750610849828233610545565b6108bb5760405162461bcd60e51b815260206004820152603e60248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c2f736c6f7400006064820152608401610665565b6108c58484611219565b50505050565b606060006108e460408051602081019091526000815290565b603b549091506001600160a01b031661094457600081511161091557604051806020016040528060008152506109b6565b8061091f846112b0565b60405160200161093092919061331e565b6040516020818303038152906040526109b6565b603b54604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561098e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b6919081019061335e565b9392505050565b60006109ca3385846113b9565b6109d384611449565b90506109ea83826109e387610a2b565b6000611453565b6109b6848284611598565b6109ff33826118e6565b610a1b5760405162461bcd60e51b8152600401610665906133cc565b610a26838383611995565b505050565b6000610a36826111c5565b600082815260396020526040902054603880549091908110610a5a57610a5a61328c565b9060005260206000209060060201600101549050919050565b6000610a7e83610d4e565b8210610ad75760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610665565b6001600160a01b0383166000908152603a602052604090208054839081106106b4576106b461328c565b610b0c3384836113b9565b610a26838383611598565b610a2683838360405180602001604052806000815250610f92565b6000610b3d60385490565b8210610b975760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610665565b60388281548110610baa57610baa61328c565b9060005260206000209060060201600001549050919050565b6000610bce82611b0d565b610bda57506000919050565b600082815260676020526040902054606680549091908110610bfe57610bfe61328c565b600091825260209091206001600290920201015492915050565b336001600160a01b0385161480610c345750610c3484336105ab565b610ca65760405162461bcd60e51b815260206004820152603f60248201527f45524333353235536c6f74417070726f7661626c653a2063616c6c657220697360448201527f206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c006064820152608401610665565b6108c584848484611b59565b6000610cbd826111c5565b600082815260396020526040902054603880549091908110610ce157610ce161328c565b60009182526020909120600360069092020101546001600160a01b0316905080610d495760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b919050565b60006001600160a01b038216610dba5760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610665565b506001600160a01b03166000908152603a602052604090205490565b6000610de184610cb2565b9050806001600160a01b0316836001600160a01b031603610e145760405162461bcd60e51b8152600401610665906132dc565b610e1e33856118e6565b610e845760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610665565b6108c5848484611c43565b6060603480546106fc906132a2565b6000610ea960665490565b8210610f0f5760405162461bcd60e51b815260206004820152602f60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420696e646560448201526e78206f7574206f6620626f756e647360881b6064820152608401610665565b60668281548110610f2257610f2261328c565b9060005260206000209060020201600001549050919050565b6000610f46826111c5565b600082815260396020526040902054603880549091908110610f6a57610f6a61328c565b9060005260206000209060060201600201549050919050565b610f8e338383611d7b565b5050565b610f9c33836118e6565b610fb85760405162461bcd60e51b8152600401610665906133cc565b6108c584848484611e45565b6060610fcf826111c5565b6000610fe660408051602081019091526000815290565b603b549091506001600160a01b031661103257600081511161101757604051806020016040528060008152506109b6565b80611021846112b0565b60405160200161093092919061341e565b603b546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610971565b600061106e836111c5565b5060009182526037602090815260408084206001600160a01b0393909316845291905290205490565b606060006110b060408051602081019091526000815290565b603b549091506001600160a01b03166111105760008151116110e1576040518060200160405280600081525061118b565b806110eb30611eb8565b6040516020016110fc92919061344d565b60405160208183030381529060405261118b565b603b60009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118b919081019061335e565b91505090565b6001600160a01b03163b151590565b60006001600160e01b03198216631dba0dcf60e11b14806106c257506106c282611ece565b6111ce81611f70565b6112165760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b50565b60008181526039602052604090205460388054849290811061123d5761123d61328c565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b039283161790558190831661127782610cb2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6060816000036112d75750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130157806112eb816134a7565b91506112fa9050600a836134d6565b91506112db565b60008167ffffffffffffffff81111561131c5761131c6130e0565b6040519080825280601f01601f191660200182016040528015611346576020820181803683370190505b5090505b84156113b15761135b6001836134ea565b9150611368600a86613501565b611373906030613515565b60f81b8183815181106113885761138861328c565b60200101906001600160f81b031916908160001a9053506113aa600a866134d6565b945061134a565b949350505050565b60006113c58385611063565b90506113d184846118e6565b1580156113e057506000198114155b156108c557818110156114355760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401610665565b6108c5838561144485856134ea565b611c43565b60006106c2611fbc565b6001600160a01b0384166114b35760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610665565b8260000361150d5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401610665565b61151683611f70565b156115635760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610665565b6115736000856000868686611fd6565b61157e848484612013565b61158883826120d9565b6108c5600085600086868661215e565b6115a183611f70565b6115fd5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401610665565b61160682611f70565b6116605760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401610665565b6000838152603960205260408120546038805490919081106116845761168461328c565b90600052602060002090600602019050600060386039600086815260200190815260200160002054815481106116bc576116bc61328c565b9060005260206000209060060201905082826002015410156117335760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610665565b80600101548260010154146117a15760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401610665565b6003808301549082015460018401546117cc926001600160a01b039081169216908890889088611fd6565b828260020160008282546117e091906134ea565b92505081905550828160020160008282546117fb9190613515565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a3600380830154908201546001840154611862926001600160a01b03908116921690889088908861215e565b61187d858585604051806020016040528060008152506121cf565b6118df5760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401610665565b5050505050565b60006118f1826111c5565b60006118fc83610cb2565b9050600061190984610a2b565b9050816001600160a01b0316856001600160a01b031614806119445750846001600160a01b03166119398561077f565b6001600160a01b0316145b80611954575061195482866105ab565b8061198c57506001600160a01b03808316600090815260976020908152604080832085845282528083209389168352929052205460ff165b95945050505050565b826001600160a01b03166119a882610cb2565b6001600160a01b031614611a0a5760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401610665565b6001600160a01b038216611a6e5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6000611a7982610a2b565b90506000611a8683610f3b565b9050611a96858585868686611fd6565b611aa1600084611219565b611aaa8361233f565b611ab485846123ea565b611abe848461250b565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118df85858586868661215e565b606654600090158015906106c25750600082815260676020526040902054606680548492908110611b4057611b4061328c565b9060005260206000209060020201600001541492915050565b816001600160a01b0316846001600160a01b031603611bca5760405162461bcd60e51b815260206004820152602760248201527f45524333353235536c6f74417070726f7661626c653a20617070726f76652074604482015266379037bbb732b960c91b6064820152608401610665565b6001600160a01b038481166000818152609760209081526040808320888452825280832094871680845294825291829020805460ff191686151590811790915591519182528692917f7bdf71e6625aa496095bf08b60c677cf81c963f402cf258981e3bd7507d3480c910160405180910390a450505050565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610665565b611cb68284612594565b611d1c57600083815260396020526040902054603880549091908110611cde57611cde61328c565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526037602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b031603611ddc5760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401610665565b6001600160a01b038381166000818152603a602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d6e565b611e50848484611995565b611e5c84848484612667565b6108c55760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401610665565b60606106c26001600160a01b03831660146127ad565b60006001600160e01b031982166301ffc9a760e01b1480611eff57506001600160e01b03198216630354d60560e61b145b80611f1a57506001600160e01b031982166380ac58cd60e01b145b80611f3557506001600160e01b031982166370b0048160e11b145b80611f5057506001600160e01b0319821663780e9d6360e01b145b806106c257506001600160e01b03198216635b5e139f60e01b1492915050565b603854600090158015906106c25750600082815260396020526040902054603880548492908110611fa357611fa361328c565b9060005260206000209060060201600001541492915050565b6036805460009182611fcd836134a7565b91905055905090565b6001600160a01b038616158015611feb575083155b8015611ffd5750611ffb82611b0d565b155b1561200b5761200b82612949565b505050505050565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a0820152905061206181612a10565b61206b848461250b565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152603960205260409020546038805483929081106120fd576120fd61328c565b9060005260206000209060060201600201600082825461211d9190613515565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b6001600160a01b038616158015612173575083155b801561218657506121848284612b62565b155b1561219a576121958284612bed565b61200b565b6001600160a01b0385161580156121af575082155b80156121c057506121c08285612b62565b15612195576121958285612c4e565b6000806121db85610cb2565b9050803b63ffffffff1615612335576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015612250575060408051601f3d908101601f1916820190925261224d9181019061352d565b60015b61228f573d80801561227e576040519150601f19603f3d011682016040523d82523d6000602084013e612283565b606091505b506001925050506113b1565b801561232a57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b906122ca9033908c908c908c908c9060040161354a565b6020604051808303816000875af11580156122e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230d9190613588565b6001600160e01b031916629ce20b60e01b1493506113b192505050565b6001925050506113b1565b60019150506113b1565b6000818152603960205260408120546038805490919081106123635761236361328c565b600091825260208220600560069092020190810154909250905b818110156123db57600083600501828154811061239c5761239c61328c565b60009182526020808320909101548783526037825260408084206001600160a01b039092168452915281205550806123d3816134a7565b91505061237d565b50610a26600583016000612db7565b60008181526039602052604081205460388054909190811061240e5761240e61328c565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152603a90915260408120805490919061245d906001906134ea565b905060008260000182815481106124765761247661328c565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106124b3576124b361328c565b600091825260208083209091019290925583815260018601909152604080822083905586825281205583548490806124ed576124ed6135a5565b60019003818190600052602060002001600090559055505050505050565b60008181526039602052604090205460388054849290811061252f5761252f61328c565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152603a80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b6000818152603960205260408120546038805483929081106125b8576125b861328c565b6000918252602082206005600690920201015491505b8181101561265c57600084815260396020526040902054603880546001600160a01b038816929081106126035761260361328c565b906000526020600020906006020160050182815481106126255761262561328c565b6000918252602090912001546001600160a01b03160361264a576001925050506106c2565b80612654816134a7565b9150506125ce565b506000949350505050565b6000833b63ffffffff16156127a557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906126a89033908990889088906004016135bb565b6020604051808303816000875af19250505080156126e3575060408051601f3d908101601f191682019092526126e091810190613588565b60015b61278b573d808015612711576040519150601f19603f3d011682016040523d82523d6000602084013e612716565b606091505b5080516000036127835760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610665565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113b1565b5060016113b1565b606060006127bc8360026135f8565b6127c7906002613515565b67ffffffffffffffff8111156127df576127df6130e0565b6040519080825280601f01601f191660200182016040528015612809576020820181803683370190505b509050600360fc1b816000815181106128245761282461328c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128535761285361328c565b60200101906001600160f81b031916908160001a90535060006128778460026135f8565b612882906001613515565b90505b60018111156128fa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128b6576128b661328c565b1a60f81b8282815181106128cc576128cc61328c565b60200101906001600160f81b031916908160001a90535060049490941c936128f381613617565b9050612885565b5083156109b65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610665565b61295281611b0d565b156129b25760405162461bcd60e51b815260206004820152602a60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420616c72656044820152696164792065786973747360b01b6064820152608401610665565b6040805180820182528281528151600080825260208281019094529282015290506129dc81612d32565b816000807fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a45050565b603880548251600090815260396020908152604080832084905560018401855593909152835160069092027f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561998101928355818501517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619a820155928401517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619b84015560608401517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619c840180546001600160a01b039283166001600160a01b03199182161790915560808601517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619d8601805491909316911617905560a0840151805185946108c5937f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619e909101920190612dd5565b600082815260676020526040812054606680548392908110612b8657612b8661328c565b90600052602060002090600202019050600081600101805490501180156113b1575060008481526065602090815260408083208684529091529020546001820180548592908110612bd957612bd961328c565b906000526020600020015414949350505050565b600082815260676020526040812054606680549091908110612c1157612c1161328c565b6000918252602080832060016002909302018201805496845260658252604080852087865283528420879055918601825590825290209092015550565b600082815260676020526040812054606680549091908110612c7257612c7261328c565b600091825260208220600160029092020181810154909350612c9491906134ea565b90506000826001018281548110612cad57612cad61328c565b6000918252602080832090910154878352606582526040808420888552909252912054600185018054929350909183919083908110612cee57612cee61328c565b60009182526020808320919091019290925587815260658252604080822085835290925281812083905586815290812055600184018054806124ed576124ed6135a5565b60668054825160009081526067602090815260408220839055600183018455929052825160029091027f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354810191825582840151805185946108c5937f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435501920190612e3a565b50805460008255906000526020600020908101906112169190612e75565b828054828255906000526020600020908101928215612e2a579160200282015b82811115612e2a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612df5565b50612e36929150612e75565b5090565b828054828255906000526020600020908101928215612e2a579160200282015b82811115612e2a578251825591602001919060010190612e5a565b5b80821115612e365760008155600101612e76565b60008060408385031215612e9d57600080fd5b50508035926020909101359150565b6001600160e01b03198116811461121657600080fd5b600060208284031215612ed457600080fd5b81356109b681612eac565b60005b83811015612efa578181015183820152602001612ee2565b838111156108c55750506000910152565b60008151808452612f23816020860160208601612edf565b601f01601f19169290920160200192915050565b6020815260006109b66020830184612f0b565b600060208284031215612f5c57600080fd5b5035919050565b80356001600160a01b0381168114610d4957600080fd5b60008060408385031215612f8d57600080fd5b612f9683612f63565b946020939093013593505050565b600080600060608486031215612fb957600080fd5b83359250612fc960208501612f63565b9150604084013590509250925092565b600080600060608486031215612fee57600080fd5b612ff784612f63565b9250612fc960208501612f63565b60008060006060848603121561301a57600080fd5b505081359360208301359350604090920135919050565b801515811461121657600080fd5b6000806000806080858703121561305557600080fd5b61305e85612f63565b93506020850135925061307360408601612f63565b9150606085013561308381613031565b939692955090935050565b6000602082840312156130a057600080fd5b6109b682612f63565b600080604083850312156130bc57600080fd5b6130c583612f63565b915060208301356130d581613031565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561311f5761311f6130e0565b604052919050565b600067ffffffffffffffff821115613141576131416130e0565b50601f01601f191660200190565b6000806000806080858703121561316557600080fd5b61316e85612f63565b935061317c60208601612f63565b925060408501359150606085013567ffffffffffffffff81111561319f57600080fd5b8501601f810187136131b057600080fd5b80356131c36131be82613127565b6130f6565b8181528860208385010111156131d857600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561320d57600080fd5b8235915061321d60208401612f63565b90509250929050565b60008060006060848603121561323b57600080fd5b61324484612f63565b92506020840135915061325960408501612f63565b90509250925092565b6000806040838503121561327557600080fd5b61327e83612f63565b915061321d60208401612f63565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806132b657607f821691505b6020821081036132d657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b60008351613330818460208801612edf565b64736c6f742f60d81b9083019081528351613352816005840160208801612edf565b01600501949350505050565b60006020828403121561337057600080fd5b815167ffffffffffffffff81111561338757600080fd5b8201601f8101841361339857600080fd5b80516133a66131be82613127565b8181528560208385010111156133bb57600080fd5b61198c826020830160208601612edf565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b60008351613430818460208801612edf565b835190830190613444818360208801612edf565b01949350505050565b6000835161345f818460208801612edf565b68636f6e74726163742f60b81b9083019081528351613485816009840160208801612edf565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134b9576134b9613491565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826134e5576134e56134c0565b500490565b6000828210156134fc576134fc613491565b500390565b600082613510576135106134c0565b500690565b6000821982111561352857613528613491565b500190565b60006020828403121561353f57600080fd5b81516109b681613031565b60018060a01b038616815284602082015283604082015282606082015260a06080820152600061357d60a0830184612f0b565b979650505050505050565b60006020828403121561359a57600080fd5b81516109b681612eac565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135ee90830184612f0b565b9695505050505050565b600081600019048311821515161561361257613612613491565b500290565b60008161362657613626613491565b50600019019056fea264697066735822122061d3da0bb6a2bf52bb6fe9eca01bee61489238b517a526122e710a15479da63464736f6c634300080f0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069",
  "deployedBytecode": "0x6080604052600436106101e25760003560e01c806355cd4e0611610102578063a22cb46511610095578063e345f05e11610064578063e345f05e1461052a578063e8a3d4851461057b578063e985e9c514610590578063ed08fa80146105dd57600080fd5b8063a22cb465146104b7578063b88d4fde146104d7578063c87b56dd146104ea578063e345e0bc1461050a57600080fd5b80638cb0a511116100d15780638cb0a5111461044f57806395d89b4114610462578063993bef8d146104775780639cc7f7081461049757600080fd5b806355cd4e06146103dc5780636352211e146103ef57806370a082311461040f578063840f71131461042f57600080fd5b806323b872dd1161017a5780633e7e8669116101495780633e7e86691461036757806342842e0e146103895780634f6ccce71461039c5780634f8a0f83146103bc57600080fd5b806323b872dd14610301578063263f3e7e146103145780632f745c5914610334578063310ed7f01461035457600080fd5b8063095ea7b3116101b6578063095ea7b3146102a457806309c3dd87146102b95780630f485c02146102d957806318160ddd146102ec57600080fd5b8062cd0110146101e757806301ffc9a71461021a57806306fdde031461024a578063081812fc1461026c575b600080fd5b3480156101f357600080fd5b50610207610202366004612e8a565b6105f2565b6040519081526020015b60405180910390f35b34801561022657600080fd5b5061023a610235366004612ec2565b6106c8565b6040519015158152602001610211565b34801561025657600080fd5b5061025f6106ed565b6040516102119190612f37565b34801561027857600080fd5b5061028c610287366004612f4a565b61077f565b6040516001600160a01b039091168152602001610211565b6102b76102b2366004612f7a565b6107d1565b005b3480156102c557600080fd5b5061025f6102d4366004612f4a565b6108cb565b6102076102e7366004612fa4565b6109bd565b3480156102f857600080fd5b50603854610207565b6102b761030f366004612fd9565b6109f5565b34801561032057600080fd5b5061020761032f366004612f4a565b610a2b565b34801561034057600080fd5b5061020761034f366004612f7a565b610a73565b6102b7610362366004613005565b610b01565b34801561037357600080fd5b5060355460405160ff9091168152602001610211565b6102b7610397366004612fd9565b610b17565b3480156103a857600080fd5b506102076103b7366004612f4a565b610b32565b3480156103c857600080fd5b506102076103d7366004612f4a565b610bc3565b6102b76103ea36600461303f565b610c18565b3480156103fb57600080fd5b5061028c61040a366004612f4a565b610cb2565b34801561041b57600080fd5b5061020761042a36600461308e565b610d4e565b34801561043b57600080fd5b50603b5461028c906001600160a01b031681565b6102b761045d366004612fa4565b610dd6565b34801561046e57600080fd5b5061025f610e8f565b34801561048357600080fd5b50610207610492366004612f4a565b610e9e565b3480156104a357600080fd5b506102076104b2366004612f4a565b610f3b565b3480156104c357600080fd5b506102b76104d23660046130a9565b610f83565b6102b76104e536600461314f565b610f92565b3480156104f657600080fd5b5061025f610505366004612f4a565b610fc4565b34801561051657600080fd5b506102076105253660046131fa565b611063565b34801561053657600080fd5b5061023a610545366004613226565b6001600160a01b039283166000908152609760209081526040808320948352938152838220929094168152925290205460ff1690565b34801561058757600080fd5b5061025f611097565b34801561059c57600080fd5b5061023a6105ab366004613262565b6001600160a01b039182166000908152603a602090815260408083209390941682526002909201909152205460ff1690565b3480156105e957600080fd5b50606654610207565b60006105fd83610bc3565b821061066e5760405162461bcd60e51b815260206004820152603560248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420746f6b656044820152746e20696e646578206f7574206f6620626f756e647360581b60648201526084015b60405180910390fd5b6000838152606760205260409020546066805490919081106106925761069261328c565b906000526020600020906002020160010182815481106106b4576106b461328c565b906000526020600020015490505b92915050565b60006001600160e01b031982166316d117cb60e31b14806106c257506106c2826111a0565b6060603380546106fc906132a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610728906132a2565b80156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b600061078a826111c5565b6000828152603960205260409020546038805490919081106107ae576107ae61328c565b60009182526020909120600460069092020101546001600160a01b031692915050565b60006107dc82610cb2565b905060006107e983610a2b565b9050816001600160a01b0316846001600160a01b03160361081c5760405162461bcd60e51b8152600401610665906132dc565b336001600160a01b0383161480610838575061083882336105ab565b806108495750610849828233610545565b6108bb5760405162461bcd60e51b815260206004820152603e60248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c2f736c6f7400006064820152608401610665565b6108c58484611219565b50505050565b606060006108e460408051602081019091526000815290565b603b549091506001600160a01b031661094457600081511161091557604051806020016040528060008152506109b6565b8061091f846112b0565b60405160200161093092919061331e565b6040516020818303038152906040526109b6565b603b54604051633601bfc560e11b8152600481018590526001600160a01b0390911690636c037f8a906024015b600060405180830381865afa15801561098e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b6919081019061335e565b9392505050565b60006109ca3385846113b9565b6109d384611449565b90506109ea83826109e387610a2b565b6000611453565b6109b6848284611598565b6109ff33826118e6565b610a1b5760405162461bcd60e51b8152600401610665906133cc565b610a26838383611995565b505050565b6000610a36826111c5565b600082815260396020526040902054603880549091908110610a5a57610a5a61328c565b9060005260206000209060060201600101549050919050565b6000610a7e83610d4e565b8210610ad75760405162461bcd60e51b815260206004820152602260248201527f455243333532353a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610665565b6001600160a01b0383166000908152603a602052604090208054839081106106b4576106b461328c565b610b0c3384836113b9565b610a26838383611598565b610a2683838360405180602001604052806000815250610f92565b6000610b3d60385490565b8210610b975760405162461bcd60e51b815260206004820152602360248201527f455243333532353a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b6064820152608401610665565b60388281548110610baa57610baa61328c565b9060005260206000209060060201600001549050919050565b6000610bce82611b0d565b610bda57506000919050565b600082815260676020526040902054606680549091908110610bfe57610bfe61328c565b600091825260209091206001600290920201015492915050565b336001600160a01b0385161480610c345750610c3484336105ab565b610ca65760405162461bcd60e51b815260206004820152603f60248201527f45524333353235536c6f74417070726f7661626c653a2063616c6c657220697360448201527f206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c006064820152608401610665565b6108c584848484611b59565b6000610cbd826111c5565b600082815260396020526040902054603880549091908110610ce157610ce161328c565b60009182526020909120600360069092020101546001600160a01b0316905080610d495760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b919050565b60006001600160a01b038216610dba5760405162461bcd60e51b815260206004820152602b60248201527f455243333532353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b6064820152608401610665565b506001600160a01b03166000908152603a602052604090205490565b6000610de184610cb2565b9050806001600160a01b0316836001600160a01b031603610e145760405162461bcd60e51b8152600401610665906132dc565b610e1e33856118e6565b610e845760405162461bcd60e51b815260206004820152603160248201527f455243333532353a20617070726f76652063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610665565b6108c5848484611c43565b6060603480546106fc906132a2565b6000610ea960665490565b8210610f0f5760405162461bcd60e51b815260206004820152602f60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420696e646560448201526e78206f7574206f6620626f756e647360881b6064820152608401610665565b60668281548110610f2257610f2261328c565b9060005260206000209060020201600001549050919050565b6000610f46826111c5565b600082815260396020526040902054603880549091908110610f6a57610f6a61328c565b9060005260206000209060060201600201549050919050565b610f8e338383611d7b565b5050565b610f9c33836118e6565b610fb85760405162461bcd60e51b8152600401610665906133cc565b6108c584848484611e45565b6060610fcf826111c5565b6000610fe660408051602081019091526000815290565b603b549091506001600160a01b031661103257600081511161101757604051806020016040528060008152506109b6565b80611021846112b0565b60405160200161093092919061341e565b603b546040516344a5a61760e11b8152600481018590526001600160a01b039091169063894b4c2e90602401610971565b600061106e836111c5565b5060009182526037602090815260408084206001600160a01b0393909316845291905290205490565b606060006110b060408051602081019091526000815290565b603b549091506001600160a01b03166111105760008151116110e1576040518060200160405280600081525061118b565b806110eb30611eb8565b6040516020016110fc92919061344d565b60405160208183030381529060405261118b565b603b60009054906101000a90046001600160a01b03166001600160a01b031663725fa09c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118b919081019061335e565b91505090565b6001600160a01b03163b151590565b60006001600160e01b03198216631dba0dcf60e11b14806106c257506106c282611ece565b6111ce81611f70565b6112165760405162461bcd60e51b8152602060048201526019602482015278115490cccd4c8d4e881a5b9d985b1a59081d1bdad95b881251603a1b6044820152606401610665565b50565b60008181526039602052604090205460388054849290811061123d5761123d61328c565b6000918252602090912060069091020160040180546001600160a01b0319166001600160a01b039283161790558190831661127782610cb2565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6060816000036112d75750506040805180820190915260018152600360fc1b602082015290565b8160005b811561130157806112eb816134a7565b91506112fa9050600a836134d6565b91506112db565b60008167ffffffffffffffff81111561131c5761131c6130e0565b6040519080825280601f01601f191660200182016040528015611346576020820181803683370190505b5090505b84156113b15761135b6001836134ea565b9150611368600a86613501565b611373906030613515565b60f81b8183815181106113885761138861328c565b60200101906001600160f81b031916908160001a9053506113aa600a866134d6565b945061134a565b949350505050565b60006113c58385611063565b90506113d184846118e6565b1580156113e057506000198114155b156108c557818110156114355760405162461bcd60e51b815260206004820152601f60248201527f455243333532353a20696e73756666696369656e7420616c6c6f77616e6365006044820152606401610665565b6108c5838561144485856134ea565b611c43565b60006106c2611fbc565b6001600160a01b0384166114b35760405162461bcd60e51b815260206004820152602160248201527f455243333532353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610665565b8260000361150d5760405162461bcd60e51b815260206004820152602160248201527f455243333532353a2063616e6e6f74206d696e74207a65726f20746f6b656e496044820152601960fa1b6064820152608401610665565b61151683611f70565b156115635760405162461bcd60e51b815260206004820152601d60248201527f455243333532353a20746f6b656e20616c7265616479206d696e7465640000006044820152606401610665565b6115736000856000868686611fd6565b61157e848484612013565b61158883826120d9565b6108c5600085600086868661215e565b6115a183611f70565b6115fd5760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e736665722066726f6d20696e76616c696420746044820152661bdad95b88125160ca1b6064820152608401610665565b61160682611f70565b6116605760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20696e76616c696420746f6b604482015264195b88125160da1b6064820152608401610665565b6000838152603960205260408120546038805490919081106116845761168461328c565b90600052602060002090600602019050600060386039600086815260200190815260200160002054815481106116bc576116bc61328c565b9060005260206000209060060201905082826002015410156117335760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610665565b80600101548260010154146117a15760405162461bcd60e51b815260206004820152602e60248201527f455243333532353a207472616e7366657220746f20746f6b656e20776974682060448201526d191a5999995c995b9d081cdb1bdd60921b6064820152608401610665565b6003808301549082015460018401546117cc926001600160a01b039081169216908890889088611fd6565b828260020160008282546117e091906134ea565b92505081905550828160020160008282546117fb9190613515565b9091555050604051838152849086907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a3600380830154908201546001840154611862926001600160a01b03908116921690889088908861215e565b61187d858585604051806020016040528060008152506121cf565b6118df5760405162461bcd60e51b815260206004820152602d60248201527f455243333532353a207472616e736665722072656a656374656420627920455260448201526c21999a991aa932b1b2b4bb32b960991b6064820152608401610665565b5050505050565b60006118f1826111c5565b60006118fc83610cb2565b9050600061190984610a2b565b9050816001600160a01b0316856001600160a01b031614806119445750846001600160a01b03166119398561077f565b6001600160a01b0316145b80611954575061195482866105ab565b8061198c57506001600160a01b03808316600090815260976020908152604080832085845282528083209389168352929052205460ff165b95945050505050565b826001600160a01b03166119a882610cb2565b6001600160a01b031614611a0a5760405162461bcd60e51b8152602060048201526024808201527f455243333532353a207472616e736665722066726f6d20696e76616c6964206f6044820152633bb732b960e11b6064820152608401610665565b6001600160a01b038216611a6e5760405162461bcd60e51b815260206004820152602560248201527f455243333532353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610665565b6000611a7982610a2b565b90506000611a8683610f3b565b9050611a96858585868686611fd6565b611aa1600084611219565b611aaa8361233f565b611ab485846123ea565b611abe848461250b565b82846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118df85858586868661215e565b606654600090158015906106c25750600082815260676020526040902054606680548492908110611b4057611b4061328c565b9060005260206000209060020201600001541492915050565b816001600160a01b0316846001600160a01b031603611bca5760405162461bcd60e51b815260206004820152602760248201527f45524333353235536c6f74417070726f7661626c653a20617070726f76652074604482015266379037bbb732b960c91b6064820152608401610665565b6001600160a01b038481166000818152609760209081526040808320888452825280832094871680845294825291829020805460ff191686151590811790915591519182528692917f7bdf71e6625aa496095bf08b60c677cf81c963f402cf258981e3bd7507d3480c910160405180910390a450505050565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602a60248201527f455243333532353a20617070726f76652076616c756520746f20746865207a65604482015269726f206164647265737360b01b6064820152608401610665565b611cb68284612594565b611d1c57600083815260396020526040902054603880549091908110611cde57611cde61328c565b60009182526020808320600692909202909101600501805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b60008381526037602090815260408083206001600160a01b038616808552908352928190208490555183815285917f621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1b91015b60405180910390a3505050565b816001600160a01b0316836001600160a01b031603611ddc5760405162461bcd60e51b815260206004820152601a60248201527f455243333532353a20617070726f766520746f2063616c6c65720000000000006044820152606401610665565b6001600160a01b038381166000818152603a602090815260408083209487168084526002909501825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101611d6e565b611e50848484611995565b611e5c84848484612667565b6108c55760405162461bcd60e51b815260206004820152602760248201527f455243333532353a207472616e7366657220746f206e6f6e204552433732315260448201526632b1b2b4bb32b960c91b6064820152608401610665565b60606106c26001600160a01b03831660146127ad565b60006001600160e01b031982166301ffc9a760e01b1480611eff57506001600160e01b03198216630354d60560e61b145b80611f1a57506001600160e01b031982166380ac58cd60e01b145b80611f3557506001600160e01b031982166370b0048160e11b145b80611f5057506001600160e01b0319821663780e9d6360e01b145b806106c257506001600160e01b03198216635b5e139f60e01b1492915050565b603854600090158015906106c25750600082815260396020526040902054603880548492908110611fa357611fa361328c565b9060005260206000209060060201600001541492915050565b6036805460009182611fcd836134a7565b91905055905090565b6001600160a01b038616158015611feb575083155b8015611ffd5750611ffb82611b0d565b155b1561200b5761200b82612949565b505050505050565b6040805160c081018252838152602080820184905260008284018190526001600160a01b038716606084015260808301819052835181815291820190935260a0820152905061206181612a10565b61206b848461250b565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4816000847fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a450505050565b6000828152603960205260409020546038805483929081106120fd576120fd61328c565b9060005260206000209060060201600201600082825461211d9190613515565b909155505060405181815282906000907f0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc69060200160405180910390a35050565b6001600160a01b038616158015612173575083155b801561218657506121848284612b62565b155b1561219a576121958284612bed565b61200b565b6001600160a01b0385161580156121af575082155b80156121c057506121c08285612b62565b15612195576121958285612c4e565b6000806121db85610cb2565b9050803b63ffffffff1615612335576040516301ffc9a760e01b8152629ce20b60e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa925050508015612250575060408051601f3d908101601f1916820190925261224d9181019061352d565b60015b61228f573d80801561227e576040519150601f19603f3d011682016040523d82523d6000602084013e612283565b606091505b506001925050506113b1565b801561232a57604051629ce20b60e01b81526000906001600160a01b03841690629ce20b906122ca9033908c908c908c908c9060040161354a565b6020604051808303816000875af11580156122e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230d9190613588565b6001600160e01b031916629ce20b60e01b1493506113b192505050565b6001925050506113b1565b60019150506113b1565b6000818152603960205260408120546038805490919081106123635761236361328c565b600091825260208220600560069092020190810154909250905b818110156123db57600083600501828154811061239c5761239c61328c565b60009182526020808320909101548783526037825260408084206001600160a01b039092168452915281205550806123d3816134a7565b91505061237d565b50610a26600583016000612db7565b60008181526039602052604081205460388054909190811061240e5761240e61328c565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b039485161790559184168152603a90915260408120805490919061245d906001906134ea565b905060008260000182815481106124765761247661328c565b906000526020600020015490506000836001016000868152602001908152602001600020549050818460000182815481106124b3576124b361328c565b600091825260208083209091019290925583815260018601909152604080822083905586825281205583548490806124ed576124ed6135a5565b60019003818190600052602060002001600090559055505050505050565b60008181526039602052604090205460388054849290811061252f5761252f61328c565b6000918252602080832060069290920290910160030180546001600160a01b0319166001600160a01b03948516179055939091168152603a80845260408083208054858552600182810188529285208190559286529082018155825292902090910155565b6000818152603960205260408120546038805483929081106125b8576125b861328c565b6000918252602082206005600690920201015491505b8181101561265c57600084815260396020526040902054603880546001600160a01b038816929081106126035761260361328c565b906000526020600020906006020160050182815481106126255761262561328c565b6000918252602090912001546001600160a01b03160361264a576001925050506106c2565b80612654816134a7565b9150506125ce565b506000949350505050565b6000833b63ffffffff16156127a557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906126a89033908990889088906004016135bb565b6020604051808303816000875af19250505080156126e3575060408051601f3d908101601f191682019092526126e091810190613588565b60015b61278b573d808015612711576040519150601f19603f3d011682016040523d82523d6000602084013e612716565b606091505b5080516000036127835760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610665565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506113b1565b5060016113b1565b606060006127bc8360026135f8565b6127c7906002613515565b67ffffffffffffffff8111156127df576127df6130e0565b6040519080825280601f01601f191660200182016040528015612809576020820181803683370190505b509050600360fc1b816000815181106128245761282461328c565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106128535761285361328c565b60200101906001600160f81b031916908160001a90535060006128778460026135f8565b612882906001613515565b90505b60018111156128fa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106128b6576128b661328c565b1a60f81b8282815181106128cc576128cc61328c565b60200101906001600160f81b031916908160001a90535060049490941c936128f381613617565b9050612885565b5083156109b65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610665565b61295281611b0d565b156129b25760405162461bcd60e51b815260206004820152602a60248201527f45524333353235536c6f74456e756d657261626c653a20736c6f7420616c72656044820152696164792065786973747360b01b6064820152608401610665565b6040805180820182528281528151600080825260208281019094529282015290506129dc81612d32565b816000807fe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb6560405160405180910390a45050565b603880548251600090815260396020908152604080832084905560018401855593909152835160069092027f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561998101928355818501517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619a820155928401517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619b84015560608401517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619c840180546001600160a01b039283166001600160a01b03199182161790915560808601517f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619d8601805491909316911617905560a0840151805185946108c5937f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f45619e909101920190612dd5565b600082815260676020526040812054606680548392908110612b8657612b8661328c565b90600052602060002090600202019050600081600101805490501180156113b1575060008481526065602090815260408083208684529091529020546001820180548592908110612bd957612bd961328c565b906000526020600020015414949350505050565b600082815260676020526040812054606680549091908110612c1157612c1161328c565b6000918252602080832060016002909302018201805496845260658252604080852087865283528420879055918601825590825290209092015550565b600082815260676020526040812054606680549091908110612c7257612c7261328c565b600091825260208220600160029092020181810154909350612c9491906134ea565b90506000826001018281548110612cad57612cad61328c565b6000918252602080832090910154878352606582526040808420888552909252912054600185018054929350909183919083908110612cee57612cee61328c565b60009182526020808320919091019290925587815260658252604080822085835290925281812083905586815290812055600184018054806124ed576124ed6135a5565b60668054825160009081526067602090815260408220839055600183018455929052825160029091027f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354810191825582840151805185946108c5937f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435501920190612e3a565b50805460008255906000526020600020908101906112169190612e75565b828054828255906000526020600020908101928215612e2a579160200282015b82811115612e2a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612df5565b50612e36929150612e75565b5090565b828054828255906000526020600020908101928215612e2a579160200282015b82811115612e2a578251825591602001919060010190612e5a565b5b80821115612e365760008155600101612e76565b60008060408385031215612e9d57600080fd5b50508035926020909101359150565b6001600160e01b03198116811461121657600080fd5b600060208284031215612ed457600080fd5b81356109b681612eac565b60005b83811015612efa578181015183820152602001612ee2565b838111156108c55750506000910152565b60008151808452612f23816020860160208601612edf565b601f01601f19169290920160200192915050565b6020815260006109b66020830184612f0b565b600060208284031215612f5c57600080fd5b5035919050565b80356001600160a01b0381168114610d4957600080fd5b60008060408385031215612f8d57600080fd5b612f9683612f63565b946020939093013593505050565b600080600060608486031215612fb957600080fd5b83359250612fc960208501612f63565b9150604084013590509250925092565b600080600060608486031215612fee57600080fd5b612ff784612f63565b9250612fc960208501612f63565b60008060006060848603121561301a57600080fd5b505081359360208301359350604090920135919050565b801515811461121657600080fd5b6000806000806080858703121561305557600080fd5b61305e85612f63565b93506020850135925061307360408601612f63565b9150606085013561308381613031565b939692955090935050565b6000602082840312156130a057600080fd5b6109b682612f63565b600080604083850312156130bc57600080fd5b6130c583612f63565b915060208301356130d581613031565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561311f5761311f6130e0565b604052919050565b600067ffffffffffffffff821115613141576131416130e0565b50601f01601f191660200190565b6000806000806080858703121561316557600080fd5b61316e85612f63565b935061317c60208601612f63565b925060408501359150606085013567ffffffffffffffff81111561319f57600080fd5b8501601f810187136131b057600080fd5b80356131c36131be82613127565b6130f6565b8181528860208385010111156131d857600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806040838503121561320d57600080fd5b8235915061321d60208401612f63565b90509250929050565b60008060006060848603121561323b57600080fd5b61324484612f63565b92506020840135915061325960408501612f63565b90509250925092565b6000806040838503121561327557600080fd5b61327e83612f63565b915061321d60208401612f63565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806132b657607f821691505b6020821081036132d657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f455243333532353a20617070726f76616c20746f2063757272656e74206f776e60408201526132b960f11b606082015260800190565b60008351613330818460208801612edf565b64736c6f742f60d81b9083019081528351613352816005840160208801612edf565b01600501949350505050565b60006020828403121561337057600080fd5b815167ffffffffffffffff81111561338757600080fd5b8201601f8101841361339857600080fd5b80516133a66131be82613127565b8181528560208385010111156133bb57600080fd5b61198c826020830160208601612edf565b60208082526032908201527f455243333532353a207472616e736665722063616c6c6572206973206e6f74206040820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b606082015260800190565b60008351613430818460208801612edf565b835190830190613444818360208801612edf565b01949350505050565b6000835161345f818460208801612edf565b68636f6e74726163742f60b81b9083019081528351613485816009840160208801612edf565b01600901949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016134b9576134b9613491565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826134e5576134e56134c0565b500490565b6000828210156134fc576134fc613491565b500390565b600082613510576135106134c0565b500690565b6000821982111561352857613528613491565b500190565b60006020828403121561353f57600080fd5b81516109b681613031565b60018060a01b038616815284602082015283604082015282606082015260a06080820152600061357d60a0830184612f0b565b979650505050505050565b60006020828403121561359a57600080fd5b81516109b681612eac565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906135ee90830184612f0b565b9695505050505050565b600081600019048311821515161561361257613612613491565b500290565b60008161362657613626613491565b50600019019056fea264697066735822122061d3da0bb6a2bf52bb6fe9eca01bee61489238b517a526122e710a15479da63464736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
