@aztec/contract-artifacts
Version:
Smart contract compilation artifacts for the latest version of AZTEC.
1,059 lines • 105 kB
JSON
{
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "registryOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "registryAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "scalingFactor",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "linkedTokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "canAdjustSupply",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "canConvert",
"type": "bool"
}
],
"name": "CreateNoteRegistry",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "newLatestEpoch",
"type": "uint8"
}
],
"name": "IncrementLatestEpoch",
"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": false,
"internalType": "bytes32[6]",
"name": "_commonReferenceString",
"type": "bytes32[6]"
}
],
"name": "SetCommonReferenceString",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint8",
"name": "epoch",
"type": "uint8"
},
{
"indexed": true,
"internalType": "uint8",
"name": "cryptoSystem",
"type": "uint8"
},
{
"indexed": true,
"internalType": "uint8",
"name": "assetType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "address",
"name": "factoryAddress",
"type": "address"
}
],
"name": "SetFactory",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint8",
"name": "epoch",
"type": "uint8"
},
{
"indexed": true,
"internalType": "uint8",
"name": "category",
"type": "uint8"
},
{
"indexed": true,
"internalType": "uint8",
"name": "id",
"type": "uint8"
},
{
"indexed": false,
"internalType": "address",
"name": "validatorAddress",
"type": "address"
}
],
"name": "SetProof",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "registryOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "proxyAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newBehaviourAddress",
"type": "address"
}
],
"name": "UpgradeNoteRegistry",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BURN_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DIVIDEND_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "JOIN_SPLIT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MINT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PRIVATE_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PUBLIC_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_linkedTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_scalingFactor",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_canAdjustSupply",
"type": "bool"
},
{
"internalType": "bool",
"name": "_canConvert",
"type": "bool"
}
],
"name": "createNoteRegistry",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_linkedTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_scalingFactor",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_canAdjustSupply",
"type": "bool"
},
{
"internalType": "bool",
"name": "_canConvert",
"type": "bool"
},
{
"internalType": "uint24",
"name": "_factoryId",
"type": "uint24"
}
],
"name": "createNoteRegistry",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "defaultCryptoSystem",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "defaultRegistryEpoch",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "disabledValidators",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint24",
"name": "_factoryId",
"type": "uint24"
}
],
"name": "getFactoryAddress",
"outputs": [
{
"internalType": "address",
"name": "factoryAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_noteHash",
"type": "bytes32"
}
],
"name": "getNote",
"outputs": [
{
"internalType": "uint8",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint40",
"name": "createdOn",
"type": "uint40"
},
{
"internalType": "uint40",
"name": "destroyedOn",
"type": "uint40"
},
{
"internalType": "address",
"name": "noteOwner",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
}
],
"name": "getRegistry",
"outputs": [
{
"internalType": "address",
"name": "linkedToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "scalingFactor",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "confidentialTotalMinted",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "confidentialTotalBurned",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalSupplemented",
"type": "uint256"
},
{
"internalType": "bool",
"name": "canConvert",
"type": "bool"
},
{
"internalType": "bool",
"name": "canAdjustSupply",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "incrementDefaultRegistryEpoch",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "latestEpoch",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
}
],
"name": "makeAssetAvailable",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_registryOwner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proofHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "publicApprove",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "registries",
"outputs": [
{
"internalType": "contract NoteRegistryBehaviour",
"name": "behaviour",
"type": "address"
},
{
"internalType": "contract IERC20Mintable",
"name": "linkedToken",
"type": "address"
},
{
"internalType": "uint24",
"name": "latestFactory",
"type": "uint24"
},
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalSupplemented",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint8",
"name": "_defaultCryptoSystem",
"type": "uint8"
}
],
"name": "setDefaultCryptoSystem",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_factoryId",
"type": "uint24"
},
{
"internalType": "address",
"name": "_factoryAddress",
"type": "address"
}
],
"name": "setFactory",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "supplementTokens",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofOutput",
"type": "bytes"
},
{
"internalType": "address",
"name": "_proofSender",
"type": "address"
}
],
"name": "updateNoteRegistry",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_factoryId",
"type": "uint24"
}
],
"name": "upgradeNoteRegistry",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "validatedProofs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "validators",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "address",
"name": "_proofSender",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "address",
"name": "_proofSender",
"type": "address"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "address",
"name": "_sender",
"type": "address"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "validateProof",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes32[]",
"name": "_proofHashes",
"type": "bytes32[]"
}
],
"name": "clearProofByHashes",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes32[6]",
"name": "_commonReferenceString",
"type": "bytes32[6]"
}
],
"name": "setCommonReferenceString",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
}
],
"name": "invalidateProof",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes32",
"name": "_proofHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_sender",
"type": "address"
}
],
"name": "validateProofByHash",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "address",
"name": "_validatorAddress",
"type": "address"
}
],
"name": "setProof",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "incrementLatestEpoch",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getCommonReferenceString",
"outputs": [
{
"internalType": "bytes32[6]",
"name": "",
"type": "bytes32[6]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
}
],
"name": "getValidatorAddress",
"outputs": [
{
"internalType": "address",
"name": "validatorAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526401000000028054610100600160ff19928316811761ff0019169190911790925564020800000a805490911690911790553480156200004257600080fd5b506000620000586001600160e01b03620000a816565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000ac565b3390565b61481580620000bc6000396000f3fe60806040523480156200001157600080fd5b50600436106200028b5760003560e01c80638f19301b1162000165578063caaaa5d811620000d5578063e308d6ff1162000093578063e308d6ff1462000a1c578063edc6197c1462000a51578063f2fde38b1462000a76578063f625e8e71462000a9f578063f971d77c1462000ad3578063fedee2661462000b4b576200028b565b8063caaaa5d814620008bc578063caed80df14620008e1578063d19287a61462000945578063dd695b7214620009ce578063df9246251462000a12576200028b565b8063a5468ca21162000123578063a5468ca214620007ff578063a962b0cf146200083e578063b05dd1731462000848578063b21d10f81462000852578063b2aad218146200089c576200028b565b80638f19301b14620006625780638f32d59b146200069c578063977796d214620006a65780639cb118bf1462000767578063a2866ea31462000771576200028b565b806349518b28116200020157806380037eeb11620001bf57806380037eeb146200051e5780638500e1f8146200061f57806385b69d7c14620006295780638da5cb5b146200064e5780638e526d9b1462000658576200028b565b806349518b2814620004555780634d1d4dc6146200045f5780634e982ca7146200049357806356a0d47714620004bf578063715018a61462000514576200028b565b8063257926cd116200024f578063257926cd1462000332578063351d203214620003555780633b418280146200037557806343b5420814620003f5578063465903dd1462000415576200028b565b80625bf732146200029057806308ae900a14620002b25780630b4cc5d914620002bc5780631e13d93914620002fd578063244f818f1462000309575b600080fd5b6200029a62000bb6565b6040805162ffffff9092168252519081900360200190f35b6200029a62000bbd565b620002e160048036036020811015620002d457600080fd5b503562ffffff1662000bc4565b604080516001600160a01b039092168252519081900360200190f35b6200030762000c1f565b005b62000307600480360360208110156200032157600080fd5b50356001600160a01b031662000c86565b62000307600480360360208110156200034a57600080fd5b503560ff1662000d8d565b6200035f62000df8565b6040805160ff9092168252519081900360200190f35b62000307600480360360408110156200038d57600080fd5b62ffffff8235169190810190604081016020820135600160201b811115620003b457600080fd5b820183602082011115620003c757600080fd5b803590602001918460208302840111600160201b83111715620003e957600080fd5b50909250905062000e05565b62000307600480360360208110156200040d57600080fd5b503562000f3b565b62000441600480360360608110156200042d57600080fd5b5080359060208101359060400135620011b8565b604080519115158252519081900360200190f35b6200029a6200120d565b62000307600480360360408110156200047757600080fd5b50803562ffffff1690602001356001600160a01b031662001214565b620002e160048036036060811015620004ab57600080fd5b508035906020810135906040013562001457565b62000307600480360360c0811015620004d757600080fd5b810190808060c001906006806020026040519081016040528092919082600660200280828437600092019190915250919450620014a39350505050565b620003076200155f565b620005a7600480360360608110156200053657600080fd5b62ffffff8235169190810190604081016020820135600160201b8111156200055d57600080fd5b8201836020820111156200057057600080fd5b803590602001918460018302840111600160201b831117156200059257600080fd5b9193509150356001600160a01b0316620015f4565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620005e3578181015183820152602001620005c9565b50505050905090810190601f168015620006115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6200029a620019c5565b62000307600480360360208110156200064157600080fd5b503562ffffff16620019cc565b620002e162001c67565b6200029a62001c77565b62000441600480360360608110156200067a57600080fd5b50803562ffffff1690602081013590604001356001600160a01b031662001c7e565b6200044162001d22565b6200030760048036036060811015620006be57600080fd5b62ffffff8235169190810190604081016020820135600160201b811115620006e557600080fd5b820183602082011115620006f857600080fd5b803590602001918460018302840111600160201b831117156200071a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b0316915062001d489050565b6200035f62001fd6565b620005a7600480360360608110156200078957600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b811115620007be57600080fd5b820183602082011115620007d157600080fd5b803590602001918460018302840111600160201b83111715620007f357600080fd5b50909250905062001fe3565b62000307600480360360808110156200081757600080fd5b506001600160a01b03813516906020810135906040810135151590606001351515620021bd565b6200035f62002201565b6200030762002213565b62000307600480360360a08110156200086a57600080fd5b5080356001600160a01b031690602081013590604081013515159060608101351515906080013562ffffff16620022c6565b6200044160048036036020811015620008b457600080fd5b503562002763565b6200030760048036036020811015620008d457600080fd5b503562ffffff166200277c565b6200090a60048036036020811015620008f957600080fd5b50356001600160a01b0316620028d4565b604080516001600160a01b03968716815294909516602085015262ffffff909216838501526060830152608082015290519081900360a00190f35b620005a7600480360360608110156200095d57600080fd5b62ffffff8235169190810190604081016020820135600160201b8111156200098457600080fd5b8201836020820111156200099757600080fd5b803590602001918460018302840111600160201b83111715620009b957600080fd5b9193509150356001600160a01b031662002917565b620009d862002c72565b604051808260c080838360005b83811015620009ff578181015183820152602001620009e5565b5050505090500191505060405180910390f35b6200029a62002cb4565b620003076004803603606081101562000a3457600080fd5b506001600160a01b03813516906020810135906040013562002cbb565b620002e16004803603602081101562000a6957600080fd5b503562ffffff1662002d4e565b620003076004803603602081101562000a8e57600080fd5b50356001600160a01b031662002e05565b620003076004803603604081101562000ab757600080fd5b50803562ffffff1690602001356001600160a01b031662002e5e565b62000afc6004803603602081101562000aeb57600080fd5b50356001600160a01b031662003039565b604080516001600160a01b0390991689526020890197909752878701959095526060870193909352608086019190915260a0850152151560c0840152151560e083015251908190036101000190f35b62000b7a6004803603604081101562000b6357600080fd5b506001600160a01b0381351690602001356200317b565b6040805160ff909516855264ffffffffff938416602086015291909216838201526001600160a01b039091166060830152519081900360800190f35b6201010181565b6201040381565b60028101548015801562000c19576001600160a01b03821662000c195760405162461bcd60e51b81526004018080602001828103825260258152602001806200448e6025913960400191505060405180910390fd5b50919050565b62000c2962001d22565b62000c6a576040805162461bcd60e51b8152602060048201819052602482015260008051602062004638833981519152604482015290519081900360640190fd5b640100000002805460ff8082166001011660ff19909116179055565b62000c9062001d22565b62000cd1576040805162461bcd60e51b8152602060048201819052602482015260008051602062004638833981519152604482015290519081900360640190fd5b62000cdb620037aa565b506001600160a01b038181166000908152600160208181526040808420815160a081018352815487168082529482015496871693810193909352600160a01b90950462ffffff1682820152600285015460608301526003909401546080820152835163ad32f92560e01b815293519093919263ad32f925926004808201939182900301818387803b15801562000d7057600080fd5b505af115801562000d85573d6000803e3d6000fd5b505050505050565b62000d9762001d22565b62000dd8576040805162461bcd60e51b8152602060048201819052602482015260008051602062004638833981519152604482015290519081900360640190fd5b640100000002805460ff9092166101000261ff0019909216919091179055565b6401000000025460ff1681565b8060005b8181101562000f3457600084848381811062000e2157fe5b60200291909101359150508062000e7f576040805162461bcd60e51b815260206004820152601c60248201527f6578706563746564206e6f20656d7074792070726f6f66206861736800000000604482015290519081900360640190fd5b60408051602080820184905262ffffff89168284015233606080840191909152835180840390910181526080909201835281519181019190912060008181526401000000039092529190205460ff16151560011462000f105760405162461bcd60e51b815260040180806020018281038252602a81526020018062004464602a913960400191505060405180910390fd5b600090815264010000000360205260409020805460ff191690555060010162000e09565b5050505050565b33600090815260016020526040902080546001600160a01b031662000fa7576040805162461bcd60e51b815260206004820152601c60248201527f6e6f746520726567697374727920646f6573206e6f7420657869737400000000604482015290519081900360640190fd5b600281015462000fbe908363ffffffff6200327816565b6002820155600381015462000fda908363ffffffff6200327816565b6003820155805460408051635ab1bd5360e01b81529051600092839283926001600160a01b0390921691635ab1bd539160048082019260a092909190829003018186803b1580156200102b57600080fd5b505afa15801562001040573d6000803e3d6000fd5b505050506040513d60a08110156200105757600080fd5b50805160608201516080909201519094509092509050600182151514620010b05760405162461bcd60e51b815260040180806020018281038252602d815260200180620044ff602d913960400191505060405180910390fd5b600181151514620010f35760405162461bcd60e51b81526004018080602001828103825260308152602001806200431d6030913960400191505060405180910390fd5b60018401546001600160a01b03166323b872dd33306200111a898863ffffffff620032dc16565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156200118357600080fd5b505af115801562001198573d6000803e3d6000fd5b505050506040513d6020811015620011af57600080fd5b50505050505050565b64020000000a83620100008110620011cc57fe5b6108000201826101008110620011de57fe5b60080201816101008110620011ef57fe5b602081049091015460ff601f9092166101000a900416925083915050565b6201040281565b6200121e62001d22565b62001270576040805162461bcd60e51b815260206004820152601e60248201527f6f6e6c7920746865206f776e65722063616e2073657420612070726f6f660000604482015290519081900360640190fd5b6001600160a01b038116620012b75760405162461bcd60e51b81526004018080602001828103825260278152602001806200476e6027913960400191505060405180910390fd5b6000806000620012cc8562ffffff166200333a565b64020800000a54929550909350915060ff9081169084161115620013225760405162461bcd60e51b81526004018080602001828103825260368152602001806200439d6036913960400191505060405180910390fd5b600064010000000a60ff85166201000081106200133b57fe5b6201000002018360ff1661010081106200135157fe5b61010002018260ff1661010081106200136657fe5b01546001600160a01b031614620013af5760405162461bcd60e51b8152600401808060200182810382526022815260200180620043f96022913960400191505060405180910390fd5b8364010000000a8460ff16620100008110620013c757fe5b6201000002018360ff166101008110620013dd57fe5b61010002018260ff166101008110620013f257fe5b0180546001600160a01b0319166001600160a01b039283161790556040805191861682525160ff8381169285821692918716917f056d19b176848b2ba83ba7d1d83c9022e6c1bd37d5c648a143ccec369e53f3c9916020908290030190a45050505050565b64010000000a836201000081106200146b57fe5b6201000002018261010081106200147e57fe5b61010002018161010081106200149057fe5b01546001600160a01b0316925083915050565b620014ad62001d22565b620014ea5760405162461bcd60e51b81526004018080602001828103825260328152602001806200473c6032913960400191505060405180910390fd5b620014fd640100000004826006620037d8565b507f85adab12e45179738a96f914df934f3d0b656588ea13f75093bd4796dc3e2736816040518082600660200280838360005b838110156200154a57818101518382015260200162001530565b5050505090500191505060405180910390a150565b6200156962001d22565b620015aa576040805162461bcd60e51b8152602060048201819052602482015260008051602062004638833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606062001600620037aa565b5033600090815260016020818152604092839020835160a08101855281546001600160a01b039081168083529483015490811693820193909352600160a01b90920462ffffff1693820193909352600283015460608201526003909201546080830152620016a05760405162461bcd60e51b81526004018080602001828103825260328152602001806200452c6032913960400191505060405180910390fd5b6000620016b28762ffffff166200333a565b5091505060ff81166002146200170f576040805162461bcd60e51b815260206004820152601860248201527f74686973206973206e6f742061206d696e742070726f6f660000000000000000604482015290519081900360640190fd5b60405163a2866ea360e01b815262ffffff8816600482019081526001600160a01b0386166024830152606060448301818152606484018990529092309263a2866ea3928c928a928d928d92608401848480828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156200179c57600080fd5b505af1158015620017b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620017db57600080fd5b8101908080516040519392919084600160201b821115620017fb57600080fd5b9083019060208201858111156200181157600080fd5b8251600160201b8111828201881017156200182b57600080fd5b82525081516020918201929091019080838360005b838110156200185a57818101518382015260200162001840565b50505050905090810190601f168015620018885780820380516001836020036101000a031916815260200191505b50604052505050905060006200189e8262003354565b11620018f1576040805162461bcd60e51b815260206004820152601c60248201527f63616c6c20746f2076616c696461746550726f6f66206661696c656400000000604482015290519081900360640190fd5b8251604051637ba0e2e760e01b81526020600482018181528451602484015284516001600160a01b0390941693637ba0e2e793869383926044909201919085019080838360005b838110156200195257818101518382015260200162001938565b50505050905090810190601f168015620019805780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b158015620019a057600080fd5b505af1158015620019b5573d6000803e3d6000fd5b50929a9950505050505050505050565b6201040181565b33600090815260016020526040902080546001600160a01b031662001a235760405162461bcd60e51b8152600401808060200182810382526026815260200180620043d36026913960400191505060405180910390fd5b60008062001a368462ffffff166200333a565b6001860154929450925050600160a01b900462ffffff1660008062001a5b836200333a565b92505091508160ff168560ff16101562001aa75760405162461bcd60e51b815260040180806020018281038252604c8152602001806200455e604c913960600191505060405180910390fd5b8060ff168460ff161462001aed5760405162461bcd60e51b815260040180806020018281038252603a815260200180620045aa603a913960400191505060405180910390fd5b600062001afa8862000bc4565b90506000816001600160a01b0316630f5d1a396040518163ffffffff1660e01b8152600401602060405180830381600087803b15801562001b3a57600080fd5b505af115801562001b4f573d6000803e3d6000fd5b505050506040513d602081101562001b6657600080fd5b50519050600062001b778662000bc4565b60018a01805462ffffff60a01b1916600160a01b62ffffff8e1602179055895460408051630b5ee31f60e41b81526001600160a01b0392831660048201528583166024820152868316604482015290519293509083169163b5ee31f09160648082019260009290919082900301818387803b15801562001bf657600080fd5b505af115801562001c0b573d6000803e3d6000fd5b50508a54604080513381526001600160a01b03928316602082015291861682820152517f42d58b58975590b8c8025b2176eac714ec611e69ee7cc1bbc562f2e0f70694489350908190036060019150a150505050505050505050565b6000546001600160a01b03165b90565b6201020181565b600583901c64020000000a015460408051600085815260208790528483526060812091909252909160f8600387901b161c801562001d03576040805162461bcd60e51b815260206004820152601d60248201527f70726f6f6620696420686173206265656e20696e76616c696461746564000000604482015290519081900360640190fd5b506000908152640100000003602052604090205460ff16949350505050565b600080546001600160a01b031662001d396200335b565b6001600160a01b031614905090565b62001d52620037aa565b5033600090815260016020818152604092839020835160a08101855281546001600160a01b039081168083529483015490811693820193909352600160a01b90920462ffffff169382019390935260028301546060820152600390920154608083015262001e07576040805162461bcd60e51b815260206004820152601c60248201527f6e6f746520726567697374727920646f6573206e6f7420657869737400000000604482015290519081900360640190fd5b82516020808501919091206040805180840183905262ffffff88168183015233606080830191909152825180830390910181526080909101909152805192019190912062001e5786838662001c7e565b151560011462001e995760405162461bcd60e51b8152600401808060200182810382526026815260200180620044b36026913960400191505060405180910390fd5b600081815264010000000360209081526040808320805460ff191690558551815163070cc24760e31b815262ffffff8b1660048201908152602482019384528a5160448301528a51869586956001600160a01b03909516946338661238948f948f9490936064909201918501908083838c5b8381101562001f2557818101518382015260200162001f0b565b50505050905090810190601f16801562001f535780820380516001836020036101000a031916815260200191505b509350505050606060405180830381600087803b15801562001f7457600080fd5b505af115801562001f89573d6000803e3d6000fd5b505050506040513d606081101562001fa057600080fd5b50805160208201516040909201519094509092509050801562001fcb5762001fcb838383886200335f565b505050505050505050565b64020800000a5460ff1681565b606062ffffff85166200203d576040805162461bcd60e51b815260206004820152601e60248201527f6578706563746564207468652070726f6f6620746f2062652076616c69640000604482015290519081900360640190fd5b60006200204a8662002d4e565b9050606060443560040160405161010060048201528760248201526401000000045460448201526401000000046001015460648201526401000000046002015460848201526401000000046003015460a48201526401000000046004015460c48201526401000000046005015460e48201526101048101602083350180848337610104810160008082868a5afa8015620020e457620020f0565b61019060005260206000fd5b503d6000853e5050503d810160405280510191505060ff600888901c1660011415620021b3576000620021238262003354565b905060005b81811015620021b057600062002145848363ffffffff6200354116565b8051602091820120604080518084019290925262ffffff8d168282015233606080840191909152815180840390910181526080909201815281519183019190912060009081526401000000039092529020805460ff1916600190811790915591909101905062002128565b50505b9695505050505050565b6000620021cb82846200359a565b64010000000254909150600090620021f09060ff8082169161010090041684620035cf565b905062000d858686868685620022c6565b64010000000254610100900460ff1681565b6200221d62001d22565b6200225a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806200434d602a913960400191505060405180910390fd5b64020800000a54620022779060ff16600163ffffffff620035e316565b64020800000a805460ff191660ff92831617908190556040805191909216815290517f9a76c82938224c049c704b5f4bfdbe9ef61749be7b65291103b97274b874665d916020908290030190a1565b336000908152600160205260409020546001600160a01b0316156200231d5760405162461bcd60e51b815260040180806020018281038252602a81526020018062004795602a913960400191505060405180910390fd5b81156200236b576001600160a01b0385166200236b5760405162461bcd60e51b815260040180806020018281038252602a815260200180620046c8602a913960400191505060405180910390fd5b60006200237d8262ffffff166200333a565b9250505060006200238f84866200359a565b905060ff8116620023d25760405162461bcd60e51b815260040180806020018281038252603f81526020018062004658603f913960400191505060405180910390fd5b8160ff168160ff1614620024185760405162461bcd60e51b8152600401808060200182810382526025815260200180620047176025913960400191505060405180910390fd5b6000620024258462000bc4565b90506000816001600160a01b0316630f5d1a396040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200246557600080fd5b505af11580156200247a573d6000803e3d6000fd5b505050506040513d6020811