@secure-ci/core
Version:
Smart contracts for the Secure Contract Interaction protocol
510 lines (509 loc) • 37.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "SuperChainAccessControlDefaultAdminRules",
"sourceName": "contracts/Op/SuperChainAccessControlDefaultAdminRules.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_crossDomainMessanger",
"type": "address"
},
{
"internalType": "uint48",
"name": "initialDelay",
"type": "uint48"
},
{
"internalType": "address",
"name": "initialDefaultAdmin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"name": "AccessControlEnforcedDefaultAdminDelay",
"type": "error"
},
{
"inputs": [],
"name": "AccessControlEnforcedDefaultAdminRules",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "defaultAdmin",
"type": "address"
}
],
"name": "AccessControlInvalidDefaultAdmin",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "InvalidMessageSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "DefaultAdminDelayChangeCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
},
{
"indexed": false,
"internalType": "uint48",
"name": "effectSchedule",
"type": "uint48"
}
],
"name": "DefaultAdminDelayChangeScheduled",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "DefaultAdminTransferCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "uint48",
"name": "acceptSchedule",
"type": "uint48"
}
],
"name": "DefaultAdminTransferScheduled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "beginDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "cancelDefaultAdminTransfer",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
}
],
"name": "changeDefaultAdminDelay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "crossDomainMessanger",
"outputs": [
{
"internalType": "contract ICrossDomainMessanger",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdminDelay",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdminDelayIncreaseWait",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingDefaultAdmin",
"outputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
},
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingDefaultAdminDelay",
"outputs": [
{
"internalType": "uint48",
"name": "newDelay",
"type": "uint48"
},
{
"internalType": "uint48",
"name": "schedule",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "rollbackDefaultAdminDelay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a060405234801561001057600080fd5b50604051611c3f380380611c3f83398181016040528101906100329190610430565b8181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a65760006040517fc22c802200000000000000000000000000000000000000000000000000000000815260040161009d9190610492565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506100de6000801b8261011d60201b60201c565b5050508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050506104ad565b60008060001b83036101de57600073ffffffffffffffffffffffffffffffffffffffff1661014f6101f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461019c576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6101ee838361022060201b60201c565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610232838361031d60201b60201c565b61031257600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506102af61038760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610317565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103bf82610394565b9050919050565b6103cf816103b4565b81146103da57600080fd5b50565b6000815190506103ec816103c6565b92915050565b600065ffffffffffff82169050919050565b61040d816103f2565b811461041857600080fd5b50565b60008151905061042a81610404565b92915050565b6000806000606084860312156104495761044861038f565b5b6000610457868287016103dd565b93505060206104688682870161041b565b9250506040610479868287016103dd565b9150509250925092565b61048c816103b4565b82525050565b60006020820190506104a76000830184610483565b92915050565b6080516117776104c860003960006103d901526117776000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806384ef8ffc116100ad578063cc8463c811610071578063cc8463c8146102e5578063cefc142914610303578063cf6eefb71461030d578063d547741f1461032c578063d602b9fd1461034857610121565b806384ef8ffc1461023c5780638da5cb5b1461025a57806391d1485414610278578063a1eda53c146102a8578063a217fddf146102c757610121565b8063248a9ca3116100f4578063248a9ca31461019c5780632f2ff15d146101cc57806336568abe146101e8578063634e93da14610204578063649a5ec71461022057610121565b806301ffc9a714610126578063022d63fb14610156578063095f025e146101745780630aa6220b14610192575b600080fd5b610140600480360381019061013b91906112a5565b610352565b60405161014d91906112ed565b60405180910390f35b61015e6103cc565b60405161016b9190611329565b60405180910390f35b61017c6103d7565b60405161018991906113c3565b60405180910390f35b61019a6103fb565b005b6101b660048036038101906101b19190611414565b610413565b6040516101c39190611450565b60405180910390f35b6101e660048036038101906101e191906114a9565b610432565b005b61020260048036038101906101fd91906114a9565b61047c565b005b61021e600480360381019061021991906114e9565b610591565b005b61023a60048036038101906102359190611542565b6105ab565b005b6102446105c5565b604051610251919061157e565b60405180910390f35b6102626105ef565b60405161026f919061157e565b60405180910390f35b610292600480360381019061028d91906114a9565b6105fe565b60405161029f91906112ed565b60405180910390f35b6102b0610668565b6040516102be929190611599565b60405180910390f35b6102cf6106c8565b6040516102dc9190611450565b60405180910390f35b6102ed6106cf565b6040516102fa9190611329565b60405180910390f35b61030b61073d565b005b6103156107d3565b6040516103239291906115c2565b60405180910390f35b610346600480360381019061034191906114a9565b610816565b005b610350610860565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103c557506103c482610878565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b610408816108f2565b610410610906565b50565b6000806000838152602001908152602001600020600101549050919050565b6000801b820361046e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104788282610913565b5050565b6000801b821480156104c057506104916105c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610583576000806104d06107d3565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610516575061051481610935565b155b8061052757506105258161094a565b155b1561056957806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105609190611329565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b61058d828261095e565b5050565b6000801b61059e816108f2565b6105a7826109d9565b5050565b6000801b6105b8816108f2565b6105c182610a54565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105f96105c5565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061068b81610935565b801561069d575061069b8161094a565b155b6106a9576000806106c0565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b6000806002601a9054906101000a900465ffffffffffff1690506106f281610935565b801561070357506107028161094a565b5b610721576001601a9054906101000a900465ffffffffffff16610737565b600260149054906101000a900465ffffffffffff165b91505090565b60006107476107d3565b5090508073ffffffffffffffffffffffffffffffffffffffff16610769610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107c85761078c610abb565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016107bf919061157e565b60405180910390fd5b6107d0610ac3565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610852576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085c8282610b92565b5050565b6000801b61086d816108f2565b610875610bb4565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108eb57506108ea82610bc1565b5b9050919050565b610903816108fe610abb565b610c2b565b50565b610911600080610c7c565b565b61091c82610413565b610925816108f2565b61092f8383610d6c565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610966610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ca576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d48282610e39565b505050565b60006109e36106cf565b6109ec42610ebc565b6109f6919061161a565b9050610a028282610f16565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610a489190611329565b60405180910390a25050565b6000610a5f82610fc9565b610a6842610ebc565b610a72919061161a565b9050610a7e8282610c7c565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610aaf929190611599565b60405180910390a15050565b600033905090565b600080610ace6107d3565b91509150610adb81610935565b1580610aed5750610aeb8161094a565b155b15610b2f57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610b269190611329565b60405180910390fd5b610b436000801b610b3e6105c5565b610e39565b50610b516000801b83610d6c565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610b9b82610413565b610ba4816108f2565b610bae8383610e39565b50505050565b610bbf600080610f16565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c3582826105fe565b610c785780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610c6f929190611654565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610c9e81610935565b15610d1d57610cac8161094a565b15610cef57600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d1c565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b8303610e2757600073ffffffffffffffffffffffffffffffffffffffff16610d986105c5565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610e318383611028565b905092915050565b60008060001b83148015610e7f5750610e506105c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610eaa57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b610eb48383611119565b905092915050565b600065ffffffffffff8016821115610f0e576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610f059291906116de565b60405180910390fd5b819050919050565b6000610f206107d3565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f9281610935565b15610fc4577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b600080610fd46106cf565b90508065ffffffffffff168365ffffffffffff1611610ffe578281610ff99190611707565b611020565b61101f8365ffffffffffff166110126103cc565b65ffffffffffff1661120b565b5b915050919050565b600061103483836105fe565b61110e57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110ab610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611113565b600090505b92915050565b600061112583836105fe565b1561120057600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061119d610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611205565b600090505b92915050565b600061121a8284108484611222565b905092915050565b600061122d8461123c565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112828161124d565b811461128d57600080fd5b50565b60008135905061129f81611279565b92915050565b6000602082840312156112bb576112ba611248565b5b60006112c984828501611290565b91505092915050565b60008115159050919050565b6112e7816112d2565b82525050565b600060208201905061130260008301846112de565b92915050565b600065ffffffffffff82169050919050565b61132381611308565b82525050565b600060208201905061133e600083018461131a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061138961138461137f84611344565b611364565b611344565b9050919050565b600061139b8261136e565b9050919050565b60006113ad82611390565b9050919050565b6113bd816113a2565b82525050565b60006020820190506113d860008301846113b4565b92915050565b6000819050919050565b6113f1816113de565b81146113fc57600080fd5b50565b60008135905061140e816113e8565b92915050565b60006020828403121561142a57611429611248565b5b6000611438848285016113ff565b91505092915050565b61144a816113de565b82525050565b60006020820190506114656000830184611441565b92915050565b600061147682611344565b9050919050565b6114868161146b565b811461149157600080fd5b50565b6000813590506114a38161147d565b92915050565b600080604083850312156114c0576114bf611248565b5b60006114ce858286016113ff565b92505060206114df85828601611494565b9150509250929050565b6000602082840312156114ff576114fe611248565b5b600061150d84828501611494565b91505092915050565b61151f81611308565b811461152a57600080fd5b50565b60008135905061153c81611516565b92915050565b60006020828403121561155857611557611248565b5b60006115668482850161152d565b91505092915050565b6115788161146b565b82525050565b6000602082019050611593600083018461156f565b92915050565b60006040820190506115ae600083018561131a565b6115bb602083018461131a565b9392505050565b60006040820190506115d7600083018561156f565b6115e4602083018461131a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061162582611308565b915061163083611308565b9250828201905065ffffffffffff81111561164e5761164d6115eb565b5b92915050565b6000604082019050611669600083018561156f565b6116766020830184611441565b9392505050565b6000819050919050565b600060ff82169050919050565b60006116af6116aa6116a58461167d565b611364565b611687565b9050919050565b6116bf81611694565b82525050565b6000819050919050565b6116d8816116c5565b82525050565b60006040820190506116f360008301856116b6565b61170060208301846116cf565b9392505050565b600061171282611308565b915061171d83611308565b9250828203905065ffffffffffff81111561173b5761173a6115eb565b5b9291505056fea2646970667358221220d08dc27d37232bd451d6a0db84bf9e7c89d75fd4721f17fc992d67d97c2d740a64736f6c634300081c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806384ef8ffc116100ad578063cc8463c811610071578063cc8463c8146102e5578063cefc142914610303578063cf6eefb71461030d578063d547741f1461032c578063d602b9fd1461034857610121565b806384ef8ffc1461023c5780638da5cb5b1461025a57806391d1485414610278578063a1eda53c146102a8578063a217fddf146102c757610121565b8063248a9ca3116100f4578063248a9ca31461019c5780632f2ff15d146101cc57806336568abe146101e8578063634e93da14610204578063649a5ec71461022057610121565b806301ffc9a714610126578063022d63fb14610156578063095f025e146101745780630aa6220b14610192575b600080fd5b610140600480360381019061013b91906112a5565b610352565b60405161014d91906112ed565b60405180910390f35b61015e6103cc565b60405161016b9190611329565b60405180910390f35b61017c6103d7565b60405161018991906113c3565b60405180910390f35b61019a6103fb565b005b6101b660048036038101906101b19190611414565b610413565b6040516101c39190611450565b60405180910390f35b6101e660048036038101906101e191906114a9565b610432565b005b61020260048036038101906101fd91906114a9565b61047c565b005b61021e600480360381019061021991906114e9565b610591565b005b61023a60048036038101906102359190611542565b6105ab565b005b6102446105c5565b604051610251919061157e565b60405180910390f35b6102626105ef565b60405161026f919061157e565b60405180910390f35b610292600480360381019061028d91906114a9565b6105fe565b60405161029f91906112ed565b60405180910390f35b6102b0610668565b6040516102be929190611599565b60405180910390f35b6102cf6106c8565b6040516102dc9190611450565b60405180910390f35b6102ed6106cf565b6040516102fa9190611329565b60405180910390f35b61030b61073d565b005b6103156107d3565b6040516103239291906115c2565b60405180910390f35b610346600480360381019061034191906114a9565b610816565b005b610350610860565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103c557506103c482610878565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b610408816108f2565b610410610906565b50565b6000806000838152602001908152602001600020600101549050919050565b6000801b820361046e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104788282610913565b5050565b6000801b821480156104c057506104916105c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610583576000806104d06107d3565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580610516575061051481610935565b155b8061052757506105258161094a565b155b1561056957806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105609190611329565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b61058d828261095e565b5050565b6000801b61059e816108f2565b6105a7826109d9565b5050565b6000801b6105b8816108f2565b6105c182610a54565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006105f96105c5565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061068b81610935565b801561069d575061069b8161094a565b155b6106a9576000806106c0565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b6000806002601a9054906101000a900465ffffffffffff1690506106f281610935565b801561070357506107028161094a565b5b610721576001601a9054906101000a900465ffffffffffff16610737565b600260149054906101000a900465ffffffffffff165b91505090565b60006107476107d3565b5090508073ffffffffffffffffffffffffffffffffffffffff16610769610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107c85761078c610abb565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016107bf919061157e565b60405180910390fd5b6107d0610ac3565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610852576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085c8282610b92565b5050565b6000801b61086d816108f2565b610875610bb4565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108eb57506108ea82610bc1565b5b9050919050565b610903816108fe610abb565b610c2b565b50565b610911600080610c7c565b565b61091c82610413565b610925816108f2565b61092f8383610d6c565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610966610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ca576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d48282610e39565b505050565b60006109e36106cf565b6109ec42610ebc565b6109f6919061161a565b9050610a028282610f16565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610a489190611329565b60405180910390a25050565b6000610a5f82610fc9565b610a6842610ebc565b610a72919061161a565b9050610a7e8282610c7c565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610aaf929190611599565b60405180910390a15050565b600033905090565b600080610ace6107d3565b91509150610adb81610935565b1580610aed5750610aeb8161094a565b155b15610b2f57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610b269190611329565b60405180910390fd5b610b436000801b610b3e6105c5565b610e39565b50610b516000801b83610d6c565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610b9b82610413565b610ba4816108f2565b610bae8383610e39565b50505050565b610bbf600080610f16565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c3582826105fe565b610c785780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610c6f929190611654565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610c9e81610935565b15610d1d57610cac8161094a565b15610cef57600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610d1c565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b8303610e2757600073ffffffffffffffffffffffffffffffffffffffff16610d986105c5565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610e318383611028565b905092915050565b60008060001b83148015610e7f5750610e506105c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610eaa57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b610eb48383611119565b905092915050565b600065ffffffffffff8016821115610f0e576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401610f059291906116de565b60405180910390fd5b819050919050565b6000610f206107d3565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f9281610935565b15610fc4577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b600080610fd46106cf565b90508065ffffffffffff168365ffffffffffff1611610ffe578281610ff99190611707565b611020565b61101f8365ffffffffffff166110126103cc565b65ffffffffffff1661120b565b5b915050919050565b600061103483836105fe565b61110e57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110ab610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611113565b600090505b92915050565b600061112583836105fe565b1561120057600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061119d610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611205565b600090505b92915050565b600061121a8284108484611222565b905092915050565b600061122d8461123c565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112828161124d565b811461128d57600080fd5b50565b60008135905061129f81611279565b92915050565b6000602082840312156112bb576112ba611248565b5b60006112c984828501611290565b91505092915050565b60008115159050919050565b6112e7816112d2565b82525050565b600060208201905061130260008301846112de565b92915050565b600065ffffffffffff82169050919050565b61132381611308565b82525050565b600060208201905061133e600083018461131a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061138961138461137f84611344565b611364565b611344565b9050919050565b600061139b8261136e565b9050919050565b60006113ad82611390565b9050919050565b6113bd816113a2565b82525050565b60006020820190506113d860008301846113b4565b92915050565b6000819050919050565b6113f1816113de565b81146113fc57600080fd5b50565b60008135905061140e816113e8565b92915050565b60006020828403121561142a57611429611248565b5b6000611438848285016113ff565b91505092915050565b61144a816113de565b82525050565b60006020820190506114656000830184611441565b92915050565b600061147682611344565b9050919050565b6114868161146b565b811461149157600080fd5b50565b6000813590506114a38161147d565b92915050565b600080604083850312156114c0576114bf611248565b5b60006114ce858286016113ff565b92505060206114df85828601611494565b9150509250929050565b6000602082840312156114ff576114fe611248565b5b600061150d84828501611494565b91505092915050565b61151f81611308565b811461152a57600080fd5b50565b60008135905061153c81611516565b92915050565b60006020828403121561155857611557611248565b5b60006115668482850161152d565b91505092915050565b6115788161146b565b82525050565b6000602082019050611593600083018461156f565b92915050565b60006040820190506115ae600083018561131a565b6115bb602083018461131a565b9392505050565b60006040820190506115d7600083018561156f565b6115e4602083018461131a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061162582611308565b915061163083611308565b9250828201905065ffffffffffff81111561164e5761164d6115eb565b5b92915050565b6000604082019050611669600083018561156f565b6116766020830184611441565b9392505050565b6000819050919050565b600060ff82169050919050565b60006116af6116aa6116a58461167d565b611364565b611687565b9050919050565b6116bf81611694565b82525050565b6000819050919050565b6116d8816116c5565b82525050565b60006040820190506116f360008301856116b6565b61170060208301846116cf565b9392505050565b600061171282611308565b915061171d83611308565b9250828203905065ffffffffffff81111561173b5761173a6115eb565b5b9291505056fea2646970667358221220d08dc27d37232bd451d6a0db84bf9e7c89d75fd4721f17fc992d67d97c2d740a64736f6c634300081c0033",
"linkReferences": {},
"deployedLinkReferences": {}
}