0 txs
13 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
contractURI
viewfunction contractURI() view returns (string)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
emojis
viewfunction emojis(uint256) view returns (string name, string code, string svg, bool publicMint)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
uri
viewfunction uri(uint256 tokenId) view returns (string)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin)
mint
nonpayablefunction mint(address to, uint256 tokenId, uint256 amount, bytes data)
pause
nonpayablefunction pause()
registerEmoji
nonpayablefunction registerEmoji(string name, string code, string svg, bool publicMint) returns (uint256 tokenId)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setMintType
nonpayablefunction setMintType(uint256 tokenId, bool publicMint)
unpause
nonpayablefunction unpause()
updateEmoji
nonpayablefunction updateEmoji(uint256 tokenId, string name, string code, string svg)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
EmojiRegistered
event EmojiRegistered(uint256 indexed tokenId, string name, string code)
EmojiUpdated
event EmojiUpdated(uint256 indexed tokenId, string name, string code)
Initialized
event Initialized(uint64 version)
MintTypeUpdated
event MintTypeUpdated(uint256 indexed tokenId, bool publicMint)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
URI
event URI(string value, uint256 indexed id)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f80fd5b5061005161005660201b60201c565b6101b6565b5f61006561015460201b60201c565b9050805f0160089054906101000a900460ff16156100af576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101515767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051610148919061019d565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b6101978161017b565b82525050565b5f6020820190506101b05f83018461018e565b92915050565b6080516157da6101dc5f395f8181611f8901528181611fde01526121bb01526157da5ff3fe6080604052600436106101c0575f3560e01c80638456cb59116100f6578063d539139311610094578063f125140511610063578063f125140514610628578063f242432a14610650578063f3c2f32714610678578063f72c0d8b146106b7576101c0565b8063d539139314610570578063d547741f1461059a578063e8a3d485146105c2578063e985e9c5146105ec576101c0565b8063a22cb465116100d0578063a22cb465146104ce578063ad3cb1cc146104f6578063b99ea7c314610520578063c4d66de814610548576101c0565b80638456cb591461045257806391d1485414610468578063a217fddf146104a4576101c0565b80633f4ba83a1161016357806352d1902d1161013d57806352d1902d1461039a5780635c975abb146103c4578063731133e9146103ee5780637f101c2c14610416576101c0565b80633f4ba83a1461032c5780634e1273f4146103425780634f1ef2861461037e576101c0565b8063248a9ca31161019f578063248a9ca3146102785780632eb2c2d6146102b45780632f2ff15d146102dc57806336568abe14610304576101c0565b8062fdd58e146101c457806301ffc9a7146102005780630e89341c1461023c575b5f80fd5b3480156101cf575f80fd5b506101ea60048036038101906101e5919061377e565b6106e1565b6040516101f791906137cb565b60405180910390f35b34801561020b575f80fd5b5061022660048036038101906102219190613839565b610744565b604051610233919061387e565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190613897565b610755565b60405161026f9190613932565b60405180910390f35b348015610283575f80fd5b5061029e60048036038101906102999190613985565b6107ce565b6040516102ab91906139bf565b60405180910390f35b3480156102bf575f80fd5b506102da60048036038101906102d59190613bc8565b6107f8565b005b3480156102e7575f80fd5b5061030260048036038101906102fd9190613c93565b61089f565b005b34801561030f575f80fd5b5061032a60048036038101906103259190613c93565b6108c1565b005b348015610337575f80fd5b5061034061093c565b005b34801561034d575f80fd5b5061036860048036038101906103639190613d91565b610953565b6040516103759190613ebe565b60405180910390f35b61039860048036038101906103939190613ede565b610a5a565b005b3480156103a5575f80fd5b506103ae610a79565b6040516103bb91906139bf565b60405180910390f35b3480156103cf575f80fd5b506103d8610aaa565b6040516103e5919061387e565b60405180910390f35b3480156103f9575f80fd5b50610414600480360381019061040f9190613f38565b610acc565b005b348015610421575f80fd5b5061043c60048036038101906104379190614080565b610bbe565b60405161044991906137cb565b60405180910390f35b34801561045d575f80fd5b50610466610db7565b005b348015610473575f80fd5b5061048e60048036038101906104899190613c93565b610dce565b60405161049b919061387e565b60405180910390f35b3480156104af575f80fd5b506104b8610e3f565b6040516104c591906139bf565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190614138565b610e45565b005b348015610501575f80fd5b5061050a610e5b565b6040516105179190613932565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190614176565b610e94565b005b348015610553575f80fd5b5061056e6004803603810190610569919061422e565b611126565b005b34801561057b575f80fd5b50610584611330565b60405161059191906139bf565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb9190613c93565b611354565b005b3480156105cd575f80fd5b506105d6611376565b6040516105e39190613932565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d9190614259565b6114de565b60405161061f919061387e565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190614297565b61157a565b005b34801561065b575f80fd5b50610676600480360381019061067191906142d5565b611635565b005b348015610683575f80fd5b5061069e60048036038101906106999190613897565b6116dc565b6040516106ae9493929190614368565b60405180910390f35b3480156106c2575f80fd5b506106cb6118a5565b6040516106d891906139bf565b60405180910390f35b5f806106eb6118c9565b9050805f015f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f61074e826118f0565b9050919050565b606061076082611969565b61079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690614430565b60405180910390fd5b6107a882611993565b6040516020016107b891906144d2565b6040516020818303038152906040529050919050565b5f806107d8611bcd565b9050805f015f8481526020019081526020015f2060010154915050919050565b5f610801611bf4565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610846575061084486826114de565b155b1561088a5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610881929190614502565b60405180910390fd5b6108978686868686611bfb565b505050505050565b6108a8826107ce565b6108b181611cef565b6108bb8383611d03565b50505050565b6108c9611bf4565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461092d576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109378282611dfb565b505050565b5f801b61094881611cef565b610950611ef3565b50565b6060815183511461099f57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610996929190614529565b60405180910390fd5b5f835167ffffffffffffffff8111156109bb576109ba6139dc565b5b6040519080825280602002602001820160405280156109e95781602001602082028036833780820191505090505b5090505f5b8451811015610a4f57610a25610a0d8287611f6190919063ffffffff16565b610a208387611f7490919063ffffffff16565b6106e1565b828281518110610a3857610a37614550565b5b6020026020010181815250508060010190506109ee565b508091505092915050565b610a62611f87565b610a6b8261206d565b610a75828261209b565b5050565b5f610a826121b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f80610ab4612240565b9050805f015f9054906101000a900460ff1691505090565b610ad4612267565b610add83611969565b610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906145c7565b60405180910390fd5b5f808481526020019081526020015f206003015f9054906101000a900460ff1680610b6d5750610b6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610dce565b5b610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390614655565b60405180910390fd5b610bb8848484846122a8565b50505050565b5f805f1b610bcb81611cef565b5f600186604051610bdc9190614673565b90815260200160405180910390205414610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c22906146f9565b60405180910390fd5b5f845111610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590614761565b60405180910390fd5b60025f8154610c7c906147ac565b919050819055915060405180608001604052808781526020018681526020018581526020018415158152505f808481526020019081526020015f205f820151815f019081610cca91906149ed565b506020820151816001019081610ce091906149ed565b506040820151816002019081610cf691906149ed565b506060820151816003015f6101000a81548160ff02191690831515021790555090505081600186604051610d2a9190614673565b908152602001604051809103902081905550817f450e2d59eff45eb9866a4903d5bcdefca3c8a667f4fe12f67009c4e7063b35b08787604051610d6e929190614abc565b60405180910390a2817f49287ffa8069e5968f467c3a0f38657626aa7ea0fc339aaeb7b0842b9ba66a9e84604051610da6919061387e565b60405180910390a250949350505050565b5f801b610dc381611cef565b610dcb61233d565b50565b5f80610dd8611bcd565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f801b81565b610e57610e50611bf4565b83836123ac565b5050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f801b610ea081611cef565b610ea985611969565b610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf906145c7565b60405180910390fd5b5f825111610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290614761565b60405180910390fd5b5f805f8781526020019081526020015f206001018054610f4a90614820565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7690614820565b8015610fc15780601f10610f9857610100808354040283529160200191610fc1565b820191905f5260205f20905b815481529060010190602001808311610fa457829003601f168201915b505050505090508380519060200120818051906020012014611082575f600185604051610fee9190614673565b9081526020016040518091039020541461103d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611034906146f9565b60405180910390fd5b60018160405161104d9190614673565b90815260200160405180910390205f90558560018560405161106f9190614673565b9081526020016040518091039020819055505b845f808881526020019081526020015f205f0190816110a191906149ed565b50835f808881526020019081526020015f2060010190816110c291906149ed565b50825f808881526020019081526020015f2060020190816110e391906149ed565b50857f4c65e9e7795a6c71f1e2f7f6f098918963137a3c1a0d5b8671d9de6796c85ee28686604051611116929190614abc565b60405180910390a2505050505050565b5f61112f612523565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156111775750825b90505f60018367ffffffffffffffff161480156111aa57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b9050811580156111b8575080155b156111ef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550831561123c576001855f0160086101000a81548160ff0219169083151502179055505b61125360405180602001604052805f81525061254a565b61125b61255e565b611263612568565b61126b61257a565b6112775f801b87611d03565b506112a27f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e387611d03565b506112cd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a687611d03565b508315611328575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161131f9190614b3d565b60405180910390a15b505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61135d826107ce565b61136681611cef565b6113708383611dfb565b50505050565b6060805f600160405161138890614ba0565b90815260200160405180910390205490505f8114611441575f808281526020019081526020015f2060020180546113be90614820565b80601f01602080910402602001604051908101604052809291908181526020018280546113ea90614820565b80156114355780601f1061140c57610100808354040283529160200191611435565b820191905f5260205f20905b81548152906001019060200180831161141857829003601f168201915b50505050509150611460565b60405180610240016040528061021a815260200161558b61021a913991505b5f61146a83612584565b60405160200161147a9190614bfe565b60405160208183030381529060405290506114b78182836040516020016114a393929190614e95565b604051602081830303815290604052612584565b6040516020016114c791906144d2565b604051602081830303815290604052935050505090565b5f806114e86118c9565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f801b61158681611cef565b61158f83611969565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c5906145c7565b60405180910390fd5b815f808581526020019081526020015f206003015f6101000a81548160ff021916908315150217905550827f49287ffa8069e5968f467c3a0f38657626aa7ea0fc339aaeb7b0842b9ba66a9e83604051611628919061387e565b60405180910390a2505050565b5f61163e611bf4565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611683575061168186826114de565b155b156116c75780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016116be929190614502565b60405180910390fd5b6116d486868686866126e3565b505050505050565b5f602052805f5260405f205f91509050805f0180546116fa90614820565b80601f016020809104026020016040519081016040528092919081815260200182805461172690614820565b80156117715780601f1061174857610100808354040283529160200191611771565b820191905f5260205f20905b81548152906001019060200180831161175457829003601f168201915b50505050509080600101805461178690614820565b80601f01602080910402602001604051908101604052809291908181526020018280546117b290614820565b80156117fd5780601f106117d4576101008083540402835291602001916117fd565b820191905f5260205f20905b8154815290600101906020018083116117e057829003601f168201915b50505050509080600201805461181290614820565b80601f016020809104026020016040519081016040528092919081815260200182805461183e90614820565b80156118895780601f1061186057610100808354040283529160200191611889565b820191905f5260205f20905b81548152906001019060200180831161186c57829003601f168201915b505050505090806003015f9054906101000a900460ff16905084565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b5f7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500905090565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119625750611961826127e9565b5b9050919050565b5f805f808481526020019081526020015f20600101805461198990614820565b9050119050919050565b60605f805f8481526020019081526020015f206040518060800160405290815f820180546119c090614820565b80601f01602080910402602001604051908101604052809291908181526020018280546119ec90614820565b8015611a375780601f10611a0e57610100808354040283529160200191611a37565b820191905f5260205f20905b815481529060010190602001808311611a1a57829003601f168201915b50505050508152602001600182018054611a5090614820565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7c90614820565b8015611ac75780601f10611a9e57610100808354040283529160200191611ac7565b820191905f5260205f20905b815481529060010190602001808311611aaa57829003601f168201915b50505050508152602001600282018054611ae090614820565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0c90614820565b8015611b575780601f10611b2e57610100808354040283529160200191611b57565b820191905f5260205f20905b815481529060010190602001808311611b3a57829003601f168201915b50505050508152602001600382015f9054906101000a900460ff1615151515815250509050611bc5815f0151611b8c856128ca565b611b998460400151612584565b8460200151604051602001611bb1949392919061510c565b604051602081830303815290604052612584565b915050919050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c6b575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c629190615180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611cdb575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611cd29190615180565b60405180910390fd5b611ce88585858585612a23565b5050505050565b611d0081611cfb611bf4565b612acf565b50565b5f80611d0d611bcd565b9050611d198484610dce565b611df0576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611d8c611bf4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611df5565b5f9150505b92915050565b5f80611e05611bcd565b9050611e118484610dce565b15611ee8575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611e84611bf4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611eed565b5f9150505b92915050565b611efb612b20565b5f611f04612240565b90505f815f015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611f49611bf4565b604051611f569190615180565b60405180910390a150565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061203457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661201b612b60565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561206b576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361209781611cef565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561210357506040513d601f19601f8201168201806040525081019061210091906151ad565b60015b61214457816040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161213b9190615180565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b81146121aa57806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016121a191906139bf565b60405180910390fd5b6121b48383612bb3565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461223e576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b61226f610aaa565b156122a6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612318575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161230f9190615180565b60405180910390fd5b5f806123248585612c25565b915091506123355f87848487612a23565b505050505050565b612345612267565b5f61234e612240565b90506001815f015f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612394611bf4565b6040516123a19190615180565b60405180910390a150565b5f6123b56118c9565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612427575f6040517fced3e10000000000000000000000000000000000000000000000000000000000815260040161241e9190615180565b60405180910390fd5b81816001015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051612515919061387e565b60405180910390a350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b612552612c55565b61255b81612c95565b50565b612566612c55565b565b612570612c55565b612578612ca9565b565b612582612c55565b565b60605f8251036125a45760405180602001604052805f81525090506126de565b5f60405180606001604052806040815260200161554b6040913990505f6003600285516125d191906151d8565b6125db9190615238565b60046125e79190615268565b67ffffffffffffffff811115612600576125ff6139dc565b5b6040519080825280601f01601f1916602001820160405280156126325781602001600182028036833780820191505090505b509050600182016020820185865187015b8082101561269e576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845360018401935050612643565b50506003865106600181146126ba57600281146126cd576126d5565b603d6001830353603d60028303536126d5565b603d60018303535b50505080925050505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612753575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161274a9190615180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036127c3575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016127ba9190615180565b60405180910390fd5b5f806127cf8585612c25565b915091506127e08787848487612a23565b50505050505050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806128b357507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806128c357506128c282612cd9565b5b9050919050565b60605f8203612910576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a1e565b5f8290505f5b5f821461293f578080612928906147ac565b915050600a826129389190615238565b9150612916565b5f8167ffffffffffffffff81111561295a576129596139dc565b5b6040519080825280601f01601f19166020018201604052801561298c5781602001600182028036833780820191505090505b5090505b5f8514612a17576001826129a491906152a9565b9150600a856129b391906152dc565b60306129bf91906151d8565b60f81b8183815181106129d5576129d4614550565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85612a109190615238565b9450612990565b8093505050505b919050565b612a2f85858585612d42565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612ac8575f612a6b611bf4565b90506001845103612ab7575f612a8a5f86611f7490919063ffffffff16565b90505f612aa05f86611f7490919063ffffffff16565b9050612ab08389898585896130e4565b5050612ac6565b612ac5818787878787613293565b5b505b5050505050565b612ad98282610dce565b612b1c5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401612b1392919061530c565b60405180910390fd5b5050565b612b28610aaa565b612b5e576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f612b8c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b613442565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612bbc8261344b565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115612c1857612c128282613514565b50612c21565b612c20613594565b5b5050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b612c5d6135d0565b612c93576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612c9d612c55565b612ca6816135ee565b50565b612cb1612c55565b5f612cba612240565b90505f815f015f6101000a81548160ff02191690831515021790555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f612d4b6118c9565b90508151835114612d9757825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401612d8e929190614529565b60405180910390fd5b5f612da0611bf4565b90505f5b8451811015612fa2575f612dc18287611f7490919063ffffffff16565b90505f612dd78387611f7490919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612efe575f855f015f8481526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ea857898183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401612e9f9493929190615333565b60405180910390fd5b818103865f015f8581526020019081526020015f205f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612f955780855f015f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612f8d91906151d8565b925050819055505b5050806001019050612da4565b50600184510361305d575f612fc05f86611f7490919063ffffffff16565b90505f612fd65f86611f7490919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161304e929190614529565b60405180910390a450506130dc565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516130d3929190615376565b60405180910390a45b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561328b578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016131449594939291906153fd565b6020604051808303815f875af192505050801561317f57506040513d601f19601f8201168201806040525081019061317c9190615469565b60015b613200573d805f81146131ad576040519150601f19603f3d011682016040523d82523d5f602084013e6131b2565b606091505b505f8151036131f857846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016131ef9190615180565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461328957846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016132809190615180565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561343a578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016132f3959493929190615494565b6020604051808303815f875af192505050801561332e57506040513d601f19601f8201168201806040525081019061332b9190615469565b60015b6133af573d805f811461335c576040519150601f19603f3d011682016040523d82523d5f602084013e613361565b606091505b505f8151036133a757846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161339e9190615180565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461343857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161342f9190615180565b60405180910390fd5b505b505050505050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036134a657806040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161349d9190615180565b60405180910390fd5b806134d27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b613442565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405161353d9190615534565b5f60405180830381855af49150503d805f8114613575576040519150601f19603f3d011682016040523d82523d5f602084013e61357a565b606091505b509150915061358a85838361360f565b9250505092915050565b5f3411156135ce576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6135d9612523565b5f0160089054906101000a900460ff16905090565b5f6135f76118c9565b90508181600201908161360a91906149ed565b505050565b6060826136245761361f8261369c565b613694565b5f825114801561364a57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561368c57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016136839190615180565b60405180910390fd5b819050613695565b5b9392505050565b5f815111156136ae5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61371a826136f1565b9050919050565b61372a81613710565b8114613734575f80fd5b50565b5f8135905061374581613721565b92915050565b5f819050919050565b61375d8161374b565b8114613767575f80fd5b50565b5f8135905061377881613754565b92915050565b5f8060408385031215613794576137936136e9565b5b5f6137a185828601613737565b92505060206137b28582860161376a565b9150509250929050565b6137c58161374b565b82525050565b5f6020820190506137de5f8301846137bc565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613818816137e4565b8114613822575f80fd5b50565b5f813590506138338161380f565b92915050565b5f6020828403121561384e5761384d6136e9565b5b5f61385b84828501613825565b91505092915050565b5f8115159050919050565b61387881613864565b82525050565b5f6020820190506138915f83018461386f565b92915050565b5f602082840312156138ac576138ab6136e9565b5b5f6138b98482850161376a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613904826138c2565b61390e81856138cc565b935061391e8185602086016138dc565b613927816138ea565b840191505092915050565b5f6020820190508181035f83015261394a81846138fa565b905092915050565b5f819050919050565b61396481613952565b811461396e575f80fd5b50565b5f8135905061397f8161395b565b92915050565b5f6020828403121561399a576139996136e9565b5b5f6139a784828501613971565b91505092915050565b6139b981613952565b82525050565b5f6020820190506139d25f8301846139b0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613a12826138ea565b810181811067ffffffffffffffff82111715613a3157613a306139dc565b5b80604052505050565b5f613a436136e0565b9050613a4f8282613a09565b919050565b5f67ffffffffffffffff821115613a6e57613a6d6139dc565b5b602082029050602081019050919050565b5f80fd5b5f613a95613a9084613a54565b613a3a565b90508083825260208201905060208402830185811115613ab857613ab7613a7f565b5b835b81811015613ae15780613acd888261376a565b845260208401935050602081019050613aba565b5050509392505050565b5f82601f830112613aff57613afe6139d8565b5b8135613b0f848260208601613a83565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115613b3657613b356139dc565b5b613b3f826138ea565b9050602081019050919050565b828183375f83830152505050565b5f613b6c613b6784613b1c565b613a3a565b905082815260208101848484011115613b8857613b87613b18565b5b613b93848285613b4c565b509392505050565b5f82601f830112613baf57613bae6139d8565b5b8135613bbf848260208601613b5a565b91505092915050565b5f805f805f60a08688031215613be157613be06136e9565b5b5f613bee88828901613737565b9550506020613bff88828901613737565b945050604086013567ffffffffffffffff811115613c2057613c1f6136ed565b5b613c2c88828901613aeb565b935050606086013567ffffffffffffffff811115613c4d57613c4c6136ed565b5b613c5988828901613aeb565b925050608086013567ffffffffffffffff811115613c7a57613c796136ed565b5b613c8688828901613b9b565b9150509295509295909350565b5f8060408385031215613ca957613ca86136e9565b5b5f613cb685828601613971565b9250506020613cc785828601613737565b9150509250929050565b5f67ffffffffffffffff821115613ceb57613cea6139dc565b5b602082029050602081019050919050565b5f613d0e613d0984613cd1565b613a3a565b90508083825260208201905060208402830185811115613d3157613d30613a7f565b5b835b81811015613d5a5780613d468882613737565b845260208401935050602081019050613d33565b5050509392505050565b5f82601f830112613d7857613d776139d8565b5b8135613d88848260208601613cfc565b91505092915050565b5f8060408385031215613da757613da66136e9565b5b5f83013567ffffffffffffffff811115613dc457613dc36136ed565b5b613dd085828601613d64565b925050602083013567ffffffffffffffff811115613df157613df06136ed565b5b613dfd85828601613aeb565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e398161374b565b82525050565b5f613e4a8383613e30565b60208301905092915050565b5f602082019050919050565b5f613e6c82613e07565b613e768185613e11565b9350613e8183613e21565b805f5b83811015613eb1578151613e988882613e3f565b9750613ea383613e56565b925050600181019050613e84565b5085935050505092915050565b5f6020820190508181035f830152613ed68184613e62565b905092915050565b5f8060408385031215613ef457613ef36136e9565b5b5f613f0185828601613737565b925050602083013567ffffffffffffffff811115613f2257613f216136ed565b5b613f2e85828601613b9b565b9150509250929050565b5f805f8060808587031215613f5057613f4f6136e9565b5b5f613f5d87828801613737565b9450506020613f6e8782880161376a565b9350506040613f7f8782880161376a565b925050606085013567ffffffffffffffff811115613fa057613f9f6136ed565b5b613fac87828801613b9b565b91505092959194509250565b5f67ffffffffffffffff821115613fd257613fd16139dc565b5b613fdb826138ea565b9050602081019050919050565b5f613ffa613ff584613fb8565b613a3a565b90508281526020810184848401111561401657614015613b18565b5b614021848285613b4c565b509392505050565b5f82601f83011261403d5761403c6139d8565b5b813561404d848260208601613fe8565b91505092915050565b61405f81613864565b8114614069575f80fd5b50565b5f8135905061407a81614056565b92915050565b5f805f8060808587031215614098576140976136e9565b5b5f85013567ffffffffffffffff8111156140b5576140b46136ed565b5b6140c187828801614029565b945050602085013567ffffffffffffffff8111156140e2576140e16136ed565b5b6140ee87828801614029565b935050604085013567ffffffffffffffff81111561410f5761410e6136ed565b5b61411b87828801614029565b925050606061412c8782880161406c565b91505092959194509250565b5f806040838503121561414e5761414d6136e9565b5b5f61415b85828601613737565b925050602061416c8582860161406c565b9150509250929050565b5f805f806080858703121561418e5761418d6136e9565b5b5f61419b8782880161376a565b945050602085013567ffffffffffffffff8111156141bc576141bb6136ed565b5b6141c887828801614029565b935050604085013567ffffffffffffffff8111156141e9576141e86136ed565b5b6141f587828801614029565b925050606085013567ffffffffffffffff811115614216576142156136ed565b5b61422287828801614029565b91505092959194509250565b5f60208284031215614243576142426136e9565b5b5f61425084828501613737565b91505092915050565b5f806040838503121561426f5761426e6136e9565b5b5f61427c85828601613737565b925050602061428d85828601613737565b9150509250929050565b5f80604083850312156142ad576142ac6136e9565b5b5f6142ba8582860161376a565b92505060206142cb8582860161406c565b9150509250929050565b5f805f805f60a086880312156142ee576142ed6136e9565b5b5f6142fb88828901613737565b955050602061430c88828901613737565b945050604061431d8882890161376a565b935050606061432e8882890161376a565b925050608086013567ffffffffffffffff81111561434f5761434e6136ed565b5b61435b88828901613b9b565b9150509295509295909350565b5f6080820190508181035f83015261438081876138fa565b9050818103602083015261439481866138fa565b905081810360408301526143a881856138fa565b90506143b7606083018461386f565b95945050505050565b7f456d6f6a69506f703a2055524920717565727920666f72206e6f6e65786973745f8201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b5f61441a6029836138cc565b9150614425826143c0565b604082019050919050565b5f6020820190508181035f8301526144478161440e565b9050919050565b5f81905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f61448c601d8361444e565b915061449782614458565b601d82019050919050565b5f6144ac826138c2565b6144b6818561444e565b93506144c68185602086016138dc565b80840191505092915050565b5f6144dc82614480565b91506144e882846144a2565b915081905092915050565b6144fc81613710565b82525050565b5f6040820190506145155f8301856144f3565b61452260208301846144f3565b9392505050565b5f60408201905061453c5f8301856137bc565b61454960208301846137bc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f456d6f6a69506f703a20746f6b656e20646f6573206e6f7420657869737400005f82015250565b5f6145b1601e836138cc565b91506145bc8261457d565b602082019050919050565b5f6020820190508181035f8301526145de816145a5565b9050919050565b7f456d6f6a69506f703a2063616c6c6572206973206e6f7420617574686f72697a5f8201527f656420746f206d696e7400000000000000000000000000000000000000000000602082015250565b5f61463f602a836138cc565b915061464a826145e5565b604082019050919050565b5f6020820190508181035f83015261466c81614633565b9050919050565b5f61467e82846144a2565b915081905092915050565b7f456d6f6a69506f703a20636f646520616c7265616479207265676973746572655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146e36021836138cc565b91506146ee82614689565b604082019050919050565b5f6020820190508181035f830152614710816146d7565b9050919050565b7f456d6f6a69506f703a207376672063616e6e6f7420626520656d7074790000005f82015250565b5f61474b601d836138cc565b915061475682614717565b602082019050919050565b5f6020820190508181035f8301526147788161473f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6147b68261374b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147e8576147e761477f565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061483757607f821691505b60208210810361484a576148496147f3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026148ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614871565b6148b68683614871565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6148f16148ec6148e78461374b565b6148ce565b61374b565b9050919050565b5f819050919050565b61490a836148d7565b61491e614916826148f8565b84845461487d565b825550505050565b5f90565b614932614926565b61493d818484614901565b505050565b5b81811015614960576149555f8261492a565b600181019050614943565b5050565b601f8211156149a55761497681614850565b61497f84614862565b8101602085101561498e578190505b6149a261499a85614862565b830182614942565b50505b505050565b5f82821c905092915050565b5f6149c55f19846008026149aa565b1980831691505092915050565b5f6149dd83836149b6565b9150826002028217905092915050565b6149f6826138c2565b67ffffffffffffffff811115614a0f57614a0e6139dc565b5b614a198254614820565b614a24828285614964565b5f60209050601f831160018114614a55575f8415614a43578287015190505b614a4d85826149d2565b865550614ab4565b601f198416614a6386614850565b5f5b82811015614a8a57848901518255600182019150602085019450602081019050614a65565b86831015614aa75784890151614aa3601f8916826149b6565b8355505b6001600288020188555050505b505050505050565b5f6040820190508181035f830152614ad481856138fa565b90508181036020830152614ae881846138fa565b90509392505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f614b27614b22614b1d84614af1565b6148ce565b614afa565b9050919050565b614b3781614b0d565b82525050565b5f602082019050614b505f830184614b2e565b92915050565b7f31463338380000000000000000000000000000000000000000000000000000005f82015250565b5f614b8a60058361444e565b9150614b9582614b56565b600582019050919050565b5f614baa82614b7e565b9150819050919050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000005f82015250565b5f614be8601a8361444e565b9150614bf382614bb4565b601a82019050919050565b5f614c0882614bdc565b9150614c1482846144a2565b915081905092915050565b7f7b226e616d65223a22456d6f6a69506f70222c000000000000000000000000005f82015250565b5f614c5360138361444e565b9150614c5e82614c1f565b601382019050919050565b7f226465736372697074696f6e223a224f6e636861696e20656d6f6a6973206f6e5f8201527f2042617365222c00000000000000000000000000000000000000000000000000602082015250565b5f614cc360278361444e565b9150614cce82614c69565b602782019050919050565b7f22696d616765223a2200000000000000000000000000000000000000000000005f82015250565b5f614d0d60098361444e565b9150614d1882614cd9565b600982019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f614d5760028361444e565b9150614d6282614d23565b600282019050919050565b7f2262616e6e65725f696d616765223a22000000000000000000000000000000005f82015250565b5f614da160108361444e565b9150614dac82614d6d565b601082019050919050565b7f2266656174757265645f696d616765223a2200000000000000000000000000005f82015250565b5f614deb60128361444e565b9150614df682614db7565b601282019050919050565b7f22000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614e3560018361444e565b9150614e4082614e01565b600182019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614e7f60018361444e565b9150614e8a82614e4b565b600182019050919050565b5f614e9f82614c47565b9150614eaa82614cb7565b9150614eb582614d01565b9150614ec182866144a2565b9150614ecc82614d4b565b9150614ed782614d95565b9150614ee382856144a2565b9150614eee82614d4b565b9150614ef982614ddf565b9150614f0582846144a2565b9150614f1082614e29565b9150614f1b82614e73565b9150819050949350505050565b7f7b226e616d65223a2200000000000000000000000000000000000000000000005f82015250565b5f614f5c60098361444e565b9150614f6782614f28565b600982019050919050565b7f222c226465736372697074696f6e223a224f6e636861696e20456d6f6a6920545f8201527f6f6b656e20230000000000000000000000000000000000000000000000000000602082015250565b5f614fcc60268361444e565b9150614fd782614f72565b602682019050919050565b7f222c22696d616765223a22646174613a696d6167652f7376672b786d6c3b62615f8201527f736536342c000000000000000000000000000000000000000000000000000000602082015250565b5f61503c60258361444e565b915061504782614fe2565b602582019050919050565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a22435f8201527f6f6465222c2276616c7565223a22000000000000000000000000000000000000602082015250565b5f6150ac602e8361444e565b91506150b782615052565b602e82019050919050565b7f227d5d7d000000000000000000000000000000000000000000000000000000005f82015250565b5f6150f660048361444e565b9150615101826150c2565b600482019050919050565b5f61511682614f50565b915061512282876144a2565b915061512d82614fc0565b915061513982866144a2565b915061514482615030565b915061515082856144a2565b915061515b826150a0565b915061516782846144a2565b9150615172826150ea565b915081905095945050505050565b5f6020820190506151935f8301846144f3565b92915050565b5f815190506151a78161395b565b92915050565b5f602082840312156151c2576151c16136e9565b5b5f6151cf84828501615199565b91505092915050565b5f6151e28261374b565b91506151ed8361374b565b92508282019050808211156152055761520461477f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6152428261374b565b915061524d8361374b565b92508261525d5761525c61520b565b5b828204905092915050565b5f6152728261374b565b915061527d8361374b565b925082820261528b8161374b565b915082820484148315176152a2576152a161477f565b5b5092915050565b5f6152b38261374b565b91506152be8361374b565b92508282039050818111156152d6576152d561477f565b5b92915050565b5f6152e68261374b565b91506152f18361374b565b9250826153015761530061520b565b5b828206905092915050565b5f60408201905061531f5f8301856144f3565b61532c60208301846139b0565b9392505050565b5f6080820190506153465f8301876144f3565b61535360208301866137bc565b61536060408301856137bc565b61536d60608301846137bc565b95945050505050565b5f6040820190508181035f83015261538e8185613e62565b905081810360208301526153a28184613e62565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6153cf826153ab565b6153d981856153b5565b93506153e98185602086016138dc565b6153f2816138ea565b840191505092915050565b5f60a0820190506154105f8301886144f3565b61541d60208301876144f3565b61542a60408301866137bc565b61543760608301856137bc565b818103608083015261544981846153c5565b90509695505050505050565b5f815190506154638161380f565b92915050565b5f6020828403121561547e5761547d6136e9565b5b5f61548b84828501615455565b91505092915050565b5f60a0820190506154a75f8301886144f3565b6154b460208301876144f3565b81810360408301526154c68186613e62565b905081810360608301526154da8185613e62565b905081810360808301526154ee81846153c5565b90509695505050505050565b5f81905092915050565b5f61550e826153ab565b61551881856154fa565b93506155288185602086016138dc565b80840191505092915050565b5f61553f8284615504565b91508190509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076696577426f783d22302030203336203336223e3c706174682066696c6c3d22234444324534342220643d224d313820322e354331312e36343920322e3520362e3520372e36343920362e35203134633020342e39343920332e30393720382e35303920332e30393720382e3530392e3538362e3631342e34383420312e3837352e343120322e39392d2e30373420312e3131352e38363520322032203268313263312e313335203020322e3037342d2e38383520322d322d2e3037342d312e3131352d2e3137362d322e3337362e34312d322e39392030203020332e3038332d332e34363820332e3038332d382e35303920302d362e3335312d352e3134392d31312e352d31312e352d31312e357a222f3e3c706174682066696c6c3d22233939414142352220643d224d32312032382e356330202e3832392d2e36373120312e352d312e3520312e35682d33632d2e38323920302d312e352d2e3637312d312e352d312e35762d3163302d2e3832392e3637312d312e3520312e352d312e356833632e383239203020312e352e36373120312e3520312e3576317a222f3e3c706174682066696c6c3d22233939414142352220643d224d3138203332632d312e313420302d32202e38362d32203276326834762d3263302d312e31342d2e38362d322d322d327a222f3e3c2f7376673ea26469706673582212206c4aa78d90b3ce3d7c21261ee287c597c12d87a0e963311635434c5901583a0c64736f6c63430008190033