UNPKG

skill-wallet

Version:

The SkillWallet is a permissionless, open-source protocol for the creation of universal, self-sovereign Identities - based on Skills instead of personal data. <br/> It comes as an upgradable, Non-Transferable, Non-Fungible-Token (U-NT-NFT) - and it entile

442 lines (441 loc) 35.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Community", "sourceName": "contracts/main/community/Community.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "string", "name": "_url", "type": "string" }, { "internalType": "uint256", "name": "_template", "type": "uint256" }, { "internalType": "uint256", "name": "_totalMembersAllowed", "type": "uint256" }, { "internalType": "uint256", "name": "_coreTeamMembersCount", "type": "uint256" }, { "internalType": "uint256", "name": "_version", "type": "uint256" }, { "internalType": "address", "name": "_skillWalletAddress", "type": "address" }, { "internalType": "bool", "name": "_isPermissioned", "type": "bool" }, { "internalType": "address", "name": "_migrateFrom", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_member", "type": "address" } ], "name": "CoreTeamMemberAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_member", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_skillWalletTokenId", "type": "uint256" } ], "name": "MemberAdded", "type": "event" }, { "inputs": [], "name": "activeMembersCount", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member", "type": "address" } ], "name": "addNewCoreTeamMembers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "coreTeamMembersCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCoreTeamMembers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMemberAddresses", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMembers", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSkillWalletAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isCoreTeamMember", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isMember", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isPermissioned", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "role", "type": "uint256" } ], "name": "joinNewMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "memberAddresses", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadataUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratedFrom", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratedTo", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_permissionBadgeAddr", "type": "address" } ], "name": "setPermissionBadgeAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "skillWallet", "outputs": [ { "internalType": "contract ISkillWallet", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "skillWalletIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "template", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "testMapping", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMembersAllowed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b50604051620020c2380380620020c2833981016040819052620000349162000ad0565b6001600160a01b03811662000107578751620000589060049060208b019062000959565b50600a869055600f80546001600160a01b038086166001600160a01b0319928316179092556003899055600580548c841690831617808255600e805487151560ff1991821617909155600d8a90559084166000908152600b60205260408120805490921660019081179092559154600c805492830181559092527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7018054909216921691909117905562000947565b6000819050806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200014657600080fd5b505afa1580156200015b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000181919062000aab565b6001600160a01b0316336001600160a01b031614620001bd5760405162461bcd60e51b8152600401620001b49062000d5a565b60405180910390fd5b806001600160a01b03166377a4d5596040518163ffffffff1660e01b815260040160006040518083038186803b158015620001f757600080fd5b505afa1580156200020c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000236919081019062000cdf565b80516200024c9160049160209091019062000959565b50806001600160a01b031663926235186040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028757600080fd5b505afa1580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c2919062000d41565b600a81905550806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030257600080fd5b505afa15801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000aab565b600560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b0316636f2ddd936040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039d57600080fd5b505afa158015620003b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d8919062000d41565b600381905550806001600160a01b0316637c8da89d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041857600080fd5b505afa1580156200042d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000453919062000d1d565b600960006101000a81548161ffff021916908361ffff1602179055506060816001600160a01b031663e77056a16040518163ffffffff1660e01b815260040160006040518083038186803b158015620004ab57600080fd5b505afa158015620004c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ea919081019062000b86565b90506060826001600160a01b0316639eab52536040518163ffffffff1660e01b815260040160006040518083038186803b1580156200052857600080fd5b505afa1580156200053d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000567919081019062000c31565b905060005b82518110156200060f5760068382815181106200058557fe5b60209081029190910181015182546001808201855560009485529284200180546001600160a01b0319166001600160a01b0390921691909117905584519091600891869085908110620005d457fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016200056c565b5060005b8151811015620006585760078282815181106200062c57fe5b602090810291909101810151825460018181018555600094855292909320909201919091550162000613565b50826001600160a01b0316632d87fb7e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200069357600080fd5b505afa158015620006a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006ce919062000d41565b600d819055506060836001600160a01b031663efa657716040518163ffffffff1660e01b815260040160006040518083038186803b1580156200071057600080fd5b505afa15801562000725573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200074f919081019062000b86565b905060005b815181101562000805576001600b60008484815181106200077157fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600c828281518110620007bf57fe5b60209081029190910181015182546001808201855560009485529290932090920180546001600160a01b0319166001600160a01b03909316929092179091550162000754565b50836001600160a01b0316638bc48ddf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200084057600080fd5b505afa15801562000855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087b919062000aab565b600f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836001600160a01b031663e2a4157c6040518163ffffffff1660e01b815260040160206040518083038186803b158015620008db57600080fd5b505afa158015620008f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000916919062000cc0565b600e805460ff19169115159190911790555050600180546001600160a01b0319166001600160a01b03851617905550505b5050506000555062000dea9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200099c57805160ff1916838001178555620009cc565b82800160010185558215620009cc579182015b82811115620009cc578251825591602001919060010190620009af565b50620009da929150620009de565b5090565b620009fb91905b80821115620009da5760008155600101620009e5565b90565b80516001600160a01b038116811462000a1657600080fd5b92915050565b600082601f83011262000a2d578081fd5b81516001600160401b0381111562000a43578182fd5b602062000a59601f8301601f1916820162000d91565b9250818352848183860101111562000a7057600080fd5b60005b8281101562000a9057848101820151848201830152810162000a73565b8281111562000aa25760008284860101525b50505092915050565b60006020828403121562000abd578081fd5b62000ac98383620009fe565b9392505050565b60008060008060008060008060006101208a8c03121562000aef578485fd5b62000afb8b8b620009fe565b60208b01519099506001600160401b0381111562000b17578586fd5b62000b258c828d0162000a1c565b98505060408a0151965060608a0151955060808a0151945060a08a0151935062000b538b60c08c01620009fe565b925060e08a015162000b658162000dd8565b915062000b778b6101008c01620009fe565b90509295985092959850929598565b6000602080838503121562000b99578182fd5b82516001600160401b0381111562000baf578283fd5b80840185601f82011262000bc1578384fd5b8051915062000bda62000bd48362000db8565b62000d91565b828152838101908285018585028401860189101562000bf7578687fd5b8693505b8484101562000c255762000c108982620009fe565b83526001939093019291850191850162000bfb565b50979650505050505050565b6000602080838503121562000c44578182fd5b82516001600160401b0381111562000c5a578283fd5b80840185601f82011262000c6c578384fd5b8051915062000c7f62000bd48362000db8565b828152838101908285018585028401860189101562000c9c578687fd5b8693505b8484101562000c2557805183526001939093019291850191850162000ca0565b60006020828403121562000cd2578081fd5b815162000ac98162000dd8565b60006020828403121562000cf1578081fd5b81516001600160401b0381111562000d07578182fd5b62000d158482850162000a1c565b949350505050565b60006020828403121562000d2f578081fd5b815161ffff8116811462000ac9578182fd5b60006020828403121562000d53578081fd5b5051919050565b60208082526016908201527f4f6e6c79206f776e65722063616e206d69677261746500000000000000000000604082015260600190565b6040518181016001600160401b038111828210171562000db057600080fd5b604052919050565b60006001600160401b0382111562000dce578081fd5b5060209081020190565b801515811462000de757600080fd5b50565b6112c88062000dfa6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638f853115116100c3578063c3a8c1531161007c578063c3a8c15314610288578063cc4e62991461029b578063d51b2d60146102ae578063e2a4157c146102c1578063e77056a1146102c9578063efa65771146102de57610158565b80638f8531151461022a5780639030b12d1461023d57806392623518146102455780639b3874b11461024d5780639eab525314610260578063a230c5241461027557610158565b80636f2ddd93116101155780636f2ddd93146101c85780637040644c146101d057806377a4d559146101f05780637c8da89d146102055780638bc48ddf1461021a5780638da5cb5b1461022257610158565b80631130630c1461015d57806313548f9e146101725780632900e377146101905780632d87fb7e1461019857806354fd4d50146101ad57806357233185146101b5575b600080fd5b61017061016b366004610d20565b6102e6565b005b61017a6103cd565b6040516101879190610ea3565b60405180910390f35b61017a6103dc565b6101a06103eb565b6040516101879190611289565b6101a06103f1565b6101706101c3366004610cf2565b6103f7565b6101a06105bf565b6101e36101de366004610cf2565b6105c5565b6040516101879190610f83565b6101f86105da565b6040516101879190610f8e565b61020d610668565b604051610187919061127a565b61017a610672565b61017a610682565b6101a0610238366004610e28565b610691565b61017a6106af565b6101a06106be565b6101a061025b366004610e28565b6106c4565b6102686106d6565b6040516101879190610f4b565b6101e3610283366004610cf2565b61072e565b610170610296366004610cf2565b610743565b61017a6102a9366004610e28565b6107b7565b6101706102bc366004610d8a565b6107de565b6101e3610b90565b6102d1610b99565b6040516101879190610efe565b6102d1610bfa565b336000908152600b602052604090205460ff1661031e5760405162461bcd60e51b815260040161031590610fa1565b60405180910390fd5b600f546040516370a0823160e01b81526000916001600160a01b0316906370a082319061034f903390600401610ea3565b60206040518083038186803b15801561036757600080fd5b505afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610e40565b116103bc5760405162461bcd60e51b815260040161031590610ff3565b6103c860048383610c5a565b505050565b6002546001600160a01b031681565b6001546001600160a01b031681565b600d5481565b60005481565b336000908152600b602052604090205460ff166104265760405162461bcd60e51b815260040161031590610fa1565b600f546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610457903390600401610ea3565b60206040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a79190610e40565b116104c45760405162461bcd60e51b815260040161031590610ff3565b600c54600d54116104e75760405162461bcd60e51b815260040161031590611104565b6001600160a01b0381166000908152600b602052604090205460ff16156105205760405162461bcd60e51b8152600401610315906110d6565b600c805460018082019092557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0384169081179091556000908152600b602052604090819020805460ff1916909217909155517fc66d4d5359360d0e979307fb9dbd268e5ec73aeaf6923d29ad83af8d3903c305906105b4908390610ea3565b60405180910390a150565b60035481565b600b6020526000908152604090205460ff1681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106605780601f1061063557610100808354040283529160200191610660565b820191906000526020600020905b81548152906001019060200180831161064357829003601f168201915b505050505081565b60095461ffff1681565b600f546001600160a01b03165b90565b6005546001600160a01b031681565b6007818154811061069e57fe5b600091825260209091200154905081565b600f546001600160a01b031681565b600a5481565b60106020526000908152604090205481565b6060600780548060200260200160405190810160405280929190818152602001828054801561072457602002820191906000526020600020905b815481526020019060010190808311610710575b5050505050905090565b60086020526000908152604090205460ff1681565b600e5460ff166107655760405162461bcd60e51b81526004016103159061117d565b6005546001600160a01b0316331461078f5760405162461bcd60e51b815260040161031590611085565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600681815481106107c457fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600b602052604090205460ff16806108b45750600e5460ff1615806108b45750600e5460ff1680156108255750600e5461010090046001600160a01b031615155b80156108b45750600e546040516370a0823160e01b815260009161010090046001600160a01b0316906370a0823190610862903390600401610ea3565b60206040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190610e40565b115b6108d05760405162461bcd60e51b815260040161031590611044565b600a5460095461ffff1611156108f85760405162461bcd60e51b81526004016103159061124d565b3360009081526008602052604090205460ff16156109285760405162461bcd60e51b815260040161031590611223565b6001811015801561093a575060038111155b1561096f57600d54600a5460095491900361ffff909116111561096f5760405162461bcd60e51b815260040161031590611146565b60048110158015610981575060068111155b156109b557336000908152600b602052604090205460ff166109b55760405162461bcd60e51b8152600401610315906111da565b600f546001600160a01b0316632c18ee7333848460068111156109d457fe5b60006040518563ffffffff1660e01b81526004016109f59493929190610eb7565b600060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b5050600f546040516342ca962960e01b8152600093506001600160a01b0390911691506342ca962990610a5a903390600401610ea3565b60206040518083038186803b158015610a7257600080fd5b505afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190610e40565b6006805460018082019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018054336001600160a01b03199091168117909155600780548084019091557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880183905560008181526008602052604090819020805460ff1916841790556009805461ffff19811661ffff91821690950116939093179092559051919250907fede8eed4383e9241982619b94dd83e488b274cced0fd07b8c0092a393defd52f90610b83908490611289565b60405180910390a2505050565b600e5460ff1681565b6060600680548060200260200160405190810160405280929190818152602001828054801561072457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bd3575050505050905090565b6060600c805480602002602001604051908101604052809291908181526020018280548015610724576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bd3575050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c9b5782800160ff19823516178555610cc8565b82800160010185558215610cc8579182015b82811115610cc8578235825591602001919060010190610cad565b50610cd4929150610cd8565b5090565b61067f91905b80821115610cd45760008155600101610cde565b600060208284031215610d03578081fd5b81356001600160a01b0381168114610d19578182fd5b9392505050565b60008060208385031215610d32578081fd5b823567ffffffffffffffff80821115610d49578283fd5b81850186601f820112610d5a578384fd5b8035925081831115610d6a578384fd5b866020848301011115610d7b578384fd5b60200196919550909350505050565b60008060408385031215610d9c578182fd5b823567ffffffffffffffff80821115610db3578384fd5b81850186601f820112610dc4578485fd5b8035925081831115610dd4578485fd5b6040516020601f8501601f1916820181018481118382101715610df5578788fd5b6040528482528285018101891015610e0b578687fd5b848184018284013793810184019590955250929593013593505050565b600060208284031215610e39578081fd5b5035919050565b600060208284031215610e51578081fd5b5051919050565b60008151808452815b81811015610e7d57602081850181015186830182015201610e61565b81811115610e8e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0385168152608060208201819052600090610edb90830186610e58565b905060078410610ee757fe5b836040830152821515606083015295945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f3f5783516001600160a01b031683529284019291840191600101610f1a565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f3f57835183529284019291840191600101610f67565b901515815260200190565b600060208252610d196020830184610e58565b60208082526032908201527f546865207369676e6572206973206e6f742077686974656c697374656420617360408201527120636f7265207465616d206d656d6265722160701b606082015260800190565b60208082526031908201527f536b696c6c57616c6c6574206e6f7420637265617465642062792074686520776040820152703434ba32b634b9ba32b21036b2b6b132b960791b606082015260800190565b60208082526021908201527f546865207573657220686173206e6f207065726d697373696f6e2062616467656040820152601760f91b606082015260800190565b60208082526031908201527f4f6e6c7920746865206f776e65722063616e20736574207065726d697373696f6040820152706e7320626164676520616464726573732160781b606082015260800190565b60208082526014908201527313595b58995c88185b1c9958591e48185919195960621b604082015260600190565b60208082526022908201527f436f7265207465616d206d656d6265722073706f7473206172652066696c6c65604082015261321760f11b606082015260800190565b6020808252601f908201527f4e6f20667265652073706f747320666f72206d656d6265727320726f6c657300604082015260600190565b60208082526039908201527f4e6f6e207065726d697373696f6e6564205041732063616e277420686176652060408201527f7065726d697373696f6e73206261646765206164647265737300000000000000606082015260800190565b60208082526029908201527f55736572206e6f742077686974656c697374656420617320636f7265207465616040820152686d206d656d6265722160b81b606082015260800190565b60208082526010908201526f20b63932b0b23c90309036b2b6b132b960811b604082015260600190565b6020808252601390820152724e6f20667265652073706f7473206c6566742160681b604082015260600190565b61ffff91909116815260200190565b9081526020019056fea2646970667358221220dd66ab30caf50860aa2b17bdc8c3a47b21b3e24d31d19bd133a8e3f0d1b2e95464736f6c634300060a0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c80638f853115116100c3578063c3a8c1531161007c578063c3a8c15314610288578063cc4e62991461029b578063d51b2d60146102ae578063e2a4157c146102c1578063e77056a1146102c9578063efa65771146102de57610158565b80638f8531151461022a5780639030b12d1461023d57806392623518146102455780639b3874b11461024d5780639eab525314610260578063a230c5241461027557610158565b80636f2ddd93116101155780636f2ddd93146101c85780637040644c146101d057806377a4d559146101f05780637c8da89d146102055780638bc48ddf1461021a5780638da5cb5b1461022257610158565b80631130630c1461015d57806313548f9e146101725780632900e377146101905780632d87fb7e1461019857806354fd4d50146101ad57806357233185146101b5575b600080fd5b61017061016b366004610d20565b6102e6565b005b61017a6103cd565b6040516101879190610ea3565b60405180910390f35b61017a6103dc565b6101a06103eb565b6040516101879190611289565b6101a06103f1565b6101706101c3366004610cf2565b6103f7565b6101a06105bf565b6101e36101de366004610cf2565b6105c5565b6040516101879190610f83565b6101f86105da565b6040516101879190610f8e565b61020d610668565b604051610187919061127a565b61017a610672565b61017a610682565b6101a0610238366004610e28565b610691565b61017a6106af565b6101a06106be565b6101a061025b366004610e28565b6106c4565b6102686106d6565b6040516101879190610f4b565b6101e3610283366004610cf2565b61072e565b610170610296366004610cf2565b610743565b61017a6102a9366004610e28565b6107b7565b6101706102bc366004610d8a565b6107de565b6101e3610b90565b6102d1610b99565b6040516101879190610efe565b6102d1610bfa565b336000908152600b602052604090205460ff1661031e5760405162461bcd60e51b815260040161031590610fa1565b60405180910390fd5b600f546040516370a0823160e01b81526000916001600160a01b0316906370a082319061034f903390600401610ea3565b60206040518083038186803b15801561036757600080fd5b505afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610e40565b116103bc5760405162461bcd60e51b815260040161031590610ff3565b6103c860048383610c5a565b505050565b6002546001600160a01b031681565b6001546001600160a01b031681565b600d5481565b60005481565b336000908152600b602052604090205460ff166104265760405162461bcd60e51b815260040161031590610fa1565b600f546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610457903390600401610ea3565b60206040518083038186803b15801561046f57600080fd5b505afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a79190610e40565b116104c45760405162461bcd60e51b815260040161031590610ff3565b600c54600d54116104e75760405162461bcd60e51b815260040161031590611104565b6001600160a01b0381166000908152600b602052604090205460ff16156105205760405162461bcd60e51b8152600401610315906110d6565b600c805460018082019092557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319166001600160a01b0384169081179091556000908152600b602052604090819020805460ff1916909217909155517fc66d4d5359360d0e979307fb9dbd268e5ec73aeaf6923d29ad83af8d3903c305906105b4908390610ea3565b60405180910390a150565b60035481565b600b6020526000908152604090205460ff1681565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106605780601f1061063557610100808354040283529160200191610660565b820191906000526020600020905b81548152906001019060200180831161064357829003601f168201915b505050505081565b60095461ffff1681565b600f546001600160a01b03165b90565b6005546001600160a01b031681565b6007818154811061069e57fe5b600091825260209091200154905081565b600f546001600160a01b031681565b600a5481565b60106020526000908152604090205481565b6060600780548060200260200160405190810160405280929190818152602001828054801561072457602002820191906000526020600020905b815481526020019060010190808311610710575b5050505050905090565b60086020526000908152604090205460ff1681565b600e5460ff166107655760405162461bcd60e51b81526004016103159061117d565b6005546001600160a01b0316331461078f5760405162461bcd60e51b815260040161031590611085565b600e80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600681815481106107c457fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600b602052604090205460ff16806108b45750600e5460ff1615806108b45750600e5460ff1680156108255750600e5461010090046001600160a01b031615155b80156108b45750600e546040516370a0823160e01b815260009161010090046001600160a01b0316906370a0823190610862903390600401610ea3565b60206040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190610e40565b115b6108d05760405162461bcd60e51b815260040161031590611044565b600a5460095461ffff1611156108f85760405162461bcd60e51b81526004016103159061124d565b3360009081526008602052604090205460ff16156109285760405162461bcd60e51b815260040161031590611223565b6001811015801561093a575060038111155b1561096f57600d54600a5460095491900361ffff909116111561096f5760405162461bcd60e51b815260040161031590611146565b60048110158015610981575060068111155b156109b557336000908152600b602052604090205460ff166109b55760405162461bcd60e51b8152600401610315906111da565b600f546001600160a01b0316632c18ee7333848460068111156109d457fe5b60006040518563ffffffff1660e01b81526004016109f59493929190610eb7565b600060405180830381600087803b158015610a0f57600080fd5b505af1158015610a23573d6000803e3d6000fd5b5050600f546040516342ca962960e01b8152600093506001600160a01b0390911691506342ca962990610a5a903390600401610ea3565b60206040518083038186803b158015610a7257600080fd5b505afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190610e40565b6006805460018082019092557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018054336001600160a01b03199091168117909155600780548084019091557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880183905560008181526008602052604090819020805460ff1916841790556009805461ffff19811661ffff91821690950116939093179092559051919250907fede8eed4383e9241982619b94dd83e488b274cced0fd07b8c0092a393defd52f90610b83908490611289565b60405180910390a2505050565b600e5460ff1681565b6060600680548060200260200160405190810160405280929190818152602001828054801561072457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610bd3575050505050905090565b6060600c805480602002602001604051908101604052809291908181526020018280548015610724576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610bd3575050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c9b5782800160ff19823516178555610cc8565b82800160010185558215610cc8579182015b82811115610cc8578235825591602001919060010190610cad565b50610cd4929150610cd8565b5090565b61067f91905b80821115610cd45760008155600101610cde565b600060208284031215610d03578081fd5b81356001600160a01b0381168114610d19578182fd5b9392505050565b60008060208385031215610d32578081fd5b823567ffffffffffffffff80821115610d49578283fd5b81850186601f820112610d5a578384fd5b8035925081831115610d6a578384fd5b866020848301011115610d7b578384fd5b60200196919550909350505050565b60008060408385031215610d9c578182fd5b823567ffffffffffffffff80821115610db3578384fd5b81850186601f820112610dc4578485fd5b8035925081831115610dd4578485fd5b6040516020601f8501601f1916820181018481118382101715610df5578788fd5b6040528482528285018101891015610e0b578687fd5b848184018284013793810184019590955250929593013593505050565b600060208284031215610e39578081fd5b5035919050565b600060208284031215610e51578081fd5b5051919050565b60008151808452815b81811015610e7d57602081850181015186830182015201610e61565b81811115610e8e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0385168152608060208201819052600090610edb90830186610e58565b905060078410610ee757fe5b836040830152821515606083015295945050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f3f5783516001600160a01b031683529284019291840191600101610f1a565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015610f3f57835183529284019291840191600101610f67565b901515815260200190565b600060208252610d196020830184610e58565b60208082526032908201527f546865207369676e6572206973206e6f742077686974656c697374656420617360408201527120636f7265207465616d206d656d6265722160701b606082015260800190565b60208082526031908201527f536b696c6c57616c6c6574206e6f7420637265617465642062792074686520776040820152703434ba32b634b9ba32b21036b2b6b132b960791b606082015260800190565b60208082526021908201527f546865207573657220686173206e6f207065726d697373696f6e2062616467656040820152601760f91b606082015260800190565b60208082526031908201527f4f6e6c7920746865206f776e65722063616e20736574207065726d697373696f6040820152706e7320626164676520616464726573732160781b606082015260800190565b60208082526014908201527313595b58995c88185b1c9958591e48185919195960621b604082015260600190565b60208082526022908201527f436f7265207465616d206d656d6265722073706f7473206172652066696c6c65604082015261321760f11b606082015260800190565b6020808252601f908201527f4e6f20667265652073706f747320666f72206d656d6265727320726f6c657300604082015260600190565b60208082526039908201527f4e6f6e207065726d697373696f6e6564205041732063616e277420686176652060408201527f7065726d697373696f6e73206261646765206164647265737300000000000000606082015260800190565b60208082526029908201527f55736572206e6f742077686974656c697374656420617320636f7265207465616040820152686d206d656d6265722160b81b606082015260800190565b60208082526010908201526f20b63932b0b23c90309036b2b6b132b960811b604082015260600190565b6020808252601390820152724e6f20667265652073706f7473206c6566742160681b604082015260600190565b61ffff91909116815260200190565b9081526020019056fea2646970667358221220dd66ab30caf50860aa2b17bdc8c3a47b21b3e24d31d19bd133a8e3f0d1b2e95464736f6c634300060a0033", "linkReferences": {}, "deployedLinkReferences": {} }