608060405260405162002bf038038062002bf0833981016040819052620000269162000c00565b8383600362000036838262000d1f565b50600462000045828262000d1f565b5050600160055550600780546001600160a01b0319166001600160a01b03841617905562000080306b033b2e3c9fd0803ce8000000620000af565b600880546001600160a01b031916331790553415620000a557620000a58134620000f7565b5050505062000ee1565b6001600160a01b038216620000e557600060405163ec442f0560e01b8152600401620000dc919062000deb565b60405180910390fd5b620000f360008383620005a4565b5050565b600754600160a81b900460ff1615620001535760405162461bcd60e51b815260206004820152601b60248201527f50756d7046756e20616c726561647920696e697469616c697a656400000000006044820152606401620000dc565b600754600160a01b900460ff1615620001af5760405162461bcd60e51b815260206004820152601960248201527f426f6e64696e6720637572766520706861736520656e646564000000000000006044820152606401620000dc565b60006064620001c060018462000e15565b620001cc919062000e45565b90506000600860009054906101000a90046001600160a01b03166001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024a919062000e68565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811462000296576040519150601f19603f3d011682016040523d82523d6000602084013e6200029b565b606091505b5050905080620002f95760405162461bcd60e51b815260206004820152602260248201527f466565207472616e7366657220746f206665655265636569766572206661696c604482015261195960f21b6064820152608401620000dc565b600062000307838562000e86565b90506000620003168262000626565b905081600a60008282546200032c919062000e9c565b909155505080620003805760405162461bcd60e51b815260206004820152601360248201527f4e6f7420656e6f756768204554482073656e74000000000000000000000000006044820152606401620000dc565b6200038d3087836200067f565b8060096000828254620003a1919062000e9c565b9091555050600754600a546009546001600160a01b039092169163315dc1ff9189916001918791879190620003d5620006eb565b6040516001600160e01b031960e08a901b1681526001600160a01b039097166004880152941515602487015260448601939093526064850191909152608484015260a483015260c482015260e401600060405180830381600087803b1580156200043e57600080fd5b505af115801562000453573d6000803e3d6000fd5b5050505067d02ab486cedc0000600a541062000589576007805460ff60a01b1916600160a01b179055620004bc30734752ba5dbc23f44d87826276bf6fd6b1c372ad24620004b6826001600160a01b031660009081526020819052604090205490565b6200073a565b734752ba5dbc23f44d87826276bf6fd6b1c372ad2463f305d7194730620004f8816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201526000604482018190526064820181905260848201524260a482015260c40160606040518083038185885af11580156200055e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000585919062000eb2565b5050505b50506007805460ff60a81b1916600160a81b17905550505050565b620005b183838362000749565b600754604051634f2b0cbf60e11b81526001600160a01b03858116600483015284811660248301526044820184905290911690639e56197e90606401600060405180830381600087803b1580156200060857600080fd5b505af11580156200061d573d6000803e3d6000fd5b50505050505050565b600954600a546000919082906200063d906200087c565b62000657600a548662000651919062000e9c565b6200087c565b62000663919062000e86565b62000677906702ddd87149349e0062000e15565b949350505050565b6001600160a01b038316620006ac576000604051634b637e8f60e11b8152600401620000dc919062000deb565b6001600160a01b038216620006d957600060405163ec442f0560e01b8152600401620000dc919062000deb565b620006e6838383620005a4565b505050565b600a546000906702ddd87149349e0090829062000708906200087c565b90506000826200071a83600262000e15565b6200072e90670de0b6b3a764000062000e15565b62000677919062000e45565b620006e6838383600162000988565b6001600160a01b038316620007785780600260008282546200076c919062000e9c565b90915550620007ec9050565b6001600160a01b03831660009081526020819052604090205481811015620007cd5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000dc565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166200080a5760028054829003905562000829565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200086f91815260200190565b60405180910390a3505050565b6000816000036200088f57506000919050565b600060016200089e8462000a66565b901c6001901b90506001818481620008ba57620008ba62000e2f565b048201901c90506001818481620008d557620008d562000e2f565b048201901c90506001818481620008f057620008f062000e2f565b048201901c905060018184816200090b576200090b62000e2f565b048201901c9050600181848162000926576200092662000e2f565b048201901c9050600181848162000941576200094162000e2f565b048201901c905060018184816200095c576200095c62000e2f565b048201901c905062000981818285816200097a576200097a62000e2f565b0462000b03565b9392505050565b6001600160a01b038416620009b557600060405163e602df0560e01b8152600401620000dc919062000deb565b6001600160a01b038316620009e2576000604051634a1406b160e11b8152600401620000dc919062000deb565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801562000a6057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000a5791815260200190565b60405180910390a35b50505050565b600080608083901c1562000a7c57608092831c92015b604083901c1562000a8f57604092831c92015b602083901c1562000aa257602092831c92015b601083901c1562000ab557601092831c92015b600883901c1562000ac857600892831c92015b600483901c1562000adb57600492831c92015b600283901c1562000aee57600292831c92015b600183901c1562000afd576001015b92915050565b600081831062000b14578162000981565b5090919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262000b4357600080fd5b81516001600160401b038082111562000b605762000b6062000b1b565b604051601f8301601f19908116603f0116810190828211818310171562000b8b5762000b8b62000b1b565b816040528381526020925086602085880101111562000ba957600080fd5b600091505b8382101562000bcd578582018301518183018401529082019062000bae565b6000602085830101528094505050505092915050565b80516001600160a01b038116811462000bfb57600080fd5b919050565b6000806000806080858703121562000c1757600080fd5b84516001600160401b038082111562000c2f57600080fd5b62000c3d8883890162000b31565b9550602087015191508082111562000c5457600080fd5b5062000c638782880162000b31565b93505062000c746040860162000be3565b915062000c846060860162000be3565b905092959194509250565b600181811c9082168062000ca457607f821691505b60208210810362000cc557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006e6576000816000526020600020601f850160051c8101602086101562000cf65750805b601f850160051c820191505b8181101562000d175782815560010162000d02565b505050505050565b81516001600160401b0381111562000d3b5762000d3b62000b1b565b62000d538162000d4c845462000c8f565b8462000ccb565b602080601f83116001811462000d8b576000841562000d725750858301515b600019600386901b1c1916600185901b17855562000d17565b600085815260208120601f198616915b8281101562000dbc5788860151825594840194600190910190840162000d9b565b508582101562000ddb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000afd5762000afd62000dff565b634e487b7160e01b600052601260045260246000fd5b60008262000e6357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121562000e7b57600080fd5b620009818262000be3565b8181038181111562000afd5762000afd62000dff565b8082018082111562000afd5762000afd62000dff565b60008060006060848603121562000ec857600080fd5b8351925060208401519150604084015190509250925092565b611cff8062000ef16000396000f3fe6080604052600436106101465760003560e01c80620b46f81461014b5780630145c3571461017357806306fdde0314610188578063095ea7b3146101aa578063158ef93e146101da57806318160ddd146101fb57806323b872dd14610210578063289692e814610230578063313ce5671461024c57806332cb6b0c14610268578063518ab2a81461028757806370a082311461029d5780638542bdff146102bd5780638da5cb5b146102dd57806395d89b411461030a57806399d8fae31461031f578063a24bcf4614610347578063a82ed9ec14610367578063a9059cbb1461038f578063b187bd26146103af578063b5f8558c146103d0578063c31fd9de146103f0578063c45a015514610412578063c98166c014610432578063d79875eb14610448578063d96a094a14610468578063dd62ed3e1461047b578063f751758b1461049b575b600080fd5b34801561015757600080fd5b50610160600181565b6040519081526020015b60405180910390f35b34801561017f57600080fd5b506101606104b0565b34801561019457600080fd5b5061019d61050f565b60405161016a9190611817565b3480156101b657600080fd5b506101ca6101c536600461187b565b6105a1565b604051901515815260200161016a565b3480156101e657600080fd5b506007546101ca90600160a81b900460ff1681565b34801561020757600080fd5b50600254610160565b34801561021c57600080fd5b506101ca61022b3660046118a7565b6105bb565b34801561023c57600080fd5b5061016067d02ab486cedc000081565b34801561025857600080fd5b506040516012815260200161016a565b34801561027457600080fd5b50610160676765c793fa10079d601b1b81565b34801561029357600080fd5b5061016060095481565b3480156102a957600080fd5b506101606102b83660046118e8565b6105df565b3480156102c957600080fd5b506101606102d8366004611905565b6105fa565b3480156102e957600080fd5b506006546102fd906001600160a01b031681565b60405161016a919061191e565b34801561031657600080fd5b5061019d6106b7565b34801561032b57600080fd5b506102fd738909dc15e40173ff4699343b6eb8132c65e18ec681565b34801561035357600080fd5b50610160610362366004611905565b6106c6565b34801561037357600080fd5b506102fd734752ba5dbc23f44d87826276bf6fd6b1c372ad2481565b34801561039b57600080fd5b506101ca6103aa36600461187b565b610715565b3480156103bb57600080fd5b506007546101ca90600160a01b900460ff1681565b3480156103dc57600080fd5b506007546102fd906001600160a01b031681565b3480156103fc57600080fd5b5061041061040b36600461187b565b610723565b005b34801561041e57600080fd5b506008546102fd906001600160a01b031681565b34801561043e57600080fd5b50610160600a5481565b34801561045457600080fd5b50610410610463366004611932565b610a99565b610410610476366004611905565b610ea4565b34801561048757600080fd5b50610160610496366004611954565b6112bb565b3480156104a757600080fd5b506101606112e6565b600754600090600160a01b900460ff16156104cb5750600090565b6000600a5467d02ab486cedc00006104e391906119a3565b905060006104f3600160646119a3565b6104fe8360646119b6565b61050891906119e3565b9392505050565b60606003805461051e90611a05565b80601f016020809104026020016040519081016040528092919081815260200182805461054a90611a05565b80156105975780601f1061056c57610100808354040283529160200191610597565b820191906000526020600020905b81548152906001019060200180831161057a57829003601f168201915b5050505050905090565b6000336105af81858561132d565b60019150505b92915050565b6000336105c985828561133f565b6105d4858585611392565b506001949350505050565b6001600160a01b031660009081526020819052604090205490565b6009546000908161060b84836119a3565b90506000670de0b6b3a76400008060026702ddd87149349e0061062e87846119b6565b61063891906119e3565b6106429190611b23565b61064c91906119e3565b61065691906119e3565b90506000670de0b6b3a76400008060026702ddd87149349e0061067987846119b6565b61068391906119e3565b61068d9190611b23565b61069791906119e3565b6106a191906119e3565b90506106ad81836119a3565b9695505050505050565b60606004805461051e90611a05565b600080600954905060006106db600a546113f1565b6106f1600a54866106ec9190611b32565b6113f1565b6106fb91906119a3565b61070d906702ddd87149349e006119b6565b949350505050565b6000336105af818585611392565b600754600160a81b900460ff16156107805760405162461bcd60e51b815260206004820152601b60248201527a141d5b5c119d5b88185b1c9958591e481a5b9a5d1a585b1a5e9959602a1b60448201526064015b60405180910390fd5b600754600160a01b900460ff16156107aa5760405162461bcd60e51b815260040161077790611b45565b600060646107b96001846119b6565b6107c391906119e3565b90506000600860009054906101000a90046001600160a01b03166001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083e9190611b78565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610888576040519150601f19603f3d011682016040523d82523d6000602084013e61088d565b606091505b50509050806108ae5760405162461bcd60e51b815260040161077790611b95565b60006108ba83856119a3565b905060006108c7826106c6565b905081600a60008282546108db9190611b32565b9091555050806108fd5760405162461bcd60e51b815260040161077790611bd7565b610908308783611392565b806009600082825461091a9190611b32565b9091555050600754600a546009546001600160a01b039092169163315dc1ff918991600191879187919061094c6112e6565b6040518863ffffffff1660e01b815260040161096e9796959493929190611c04565b600060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b5050505067d02ab486cedc0000600a5410610a7e576007805460ff60a01b1916600160a01b1790556109eb30734752ba5dbc23f44d87826276bf6fd6b1c372ad246109e6826105df565b61132d565b734752ba5dbc23f44d87826276bf6fd6b1c372ad2463f305d7194730610a10816105df565b6000806000426040518863ffffffff1660e01b8152600401610a3796959493929190611c3f565b60606040518083038185885af1158015610a55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a7a9190611c7a565b5050505b50506007805460ff60a81b1916600160a81b17905550505050565b610aa16114d9565b600754600160a01b900460ff1615610acb5760405162461bcd60e51b815260040161077790611b45565b600060095411610b125760405162461bcd60e51b8152602060048201526012602482015271139bc81d1bdad95b9cc81cdbdb19081e595d60721b6044820152606401610777565b81610b1c336105df565b1015610b615760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610777565b6000610b6c836105fa565b9050600083610b8383670de0b6b3a76400006119b6565b610b8d91906119e3565b90506000610b996112e6565b90506000612710610baa86826119a3565b610bb490846119b6565b610bbe91906119e3565b905080831015610c0f5760405162461bcd60e51b815260206004820152601c60248201527b50726963652062656c6f7720616c6c6f77656420736c69707061676560201b6044820152606401610777565b60006064610c1e6001876119b6565b610c2891906119e3565b90506000600860009054906101000a90046001600160a01b03166001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca39190611b78565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610ced576040519150601f19603f3d011682016040523d82523d6000602084013e610cf2565b606091505b5050905080610d135760405162461bcd60e51b815260040161077790611b95565b6000610d1e306105df565b610d2884896119a3565b11610d3c57610d3783886119a3565b610d45565b610d45306105df565b9050610d5233308b611392565b8860096000828254610d6491906119a3565b909155505060405133908290600081818185875af1925050503d8060008114610da9576040519150601f19603f3d011682016040523d82523d6000602084013e610dae565b606091505b50508092505081610df75760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606401610777565b86600a6000828254610e0991906119a3565b9091555050600754600a546009546001600160a01b039092169163315dc1ff91339160009186918f9190610e3b6112e6565b6040518863ffffffff1660e01b8152600401610e5d9796959493929190611c04565b600060405180830381600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b5050505050505050505050610ea06001600555565b5050565b610eac6114d9565b600754600160a01b900460ff1615610ed65760405162461bcd60e51b815260040161077790611b45565b60006064610ee56001346119b6565b610eef91906119e3565b90506000600860009054906101000a90046001600160a01b03166001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190611b78565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610fb4576040519150601f19603f3d011682016040523d82523d6000602084013e610fb9565b606091505b5050905080610fda5760405162461bcd60e51b815260040161077790611b95565b6000610fe683346119a3565b90506000610ff3826106c6565b905060008161100a84670de0b6b3a76400006119b6565b61101491906119e3565b905060006110206112e6565b905060006127106110318982611b32565b61103b90846119b6565b61104591906119e3565b9050600a546000146110a157808311156110a15760405162461bcd60e51b815260206004820152601e60248201527f5072696365206578636565647320616c6c6f77656420736c69707061676500006044820152606401610777565b84600a60008282546110b39190611b32565b9091555050600a5467d02ab486cedc0000101561110b5760405162461bcd60e51b815260206004820152601660248201527513585e0811551208185b5bdd5b9d081c995858da195960521b6044820152606401610777565b6000841161112b5760405162461bcd60e51b815260040161077790611bd7565b611136303386611392565b83600960008282546111489190611b32565b9091555050600754600a546009546001600160a01b039092169163315dc1ff9133916001918a918a919061117a6112e6565b6040518863ffffffff1660e01b815260040161119c9796959493929190611c04565b600060405180830381600087803b1580156111b657600080fd5b505af11580156111ca573d6000803e3d6000fd5b5050505067d02ab486cedc0000600a54106112a7576007805460ff60a01b1916600160a01b17905561121430734752ba5dbc23f44d87826276bf6fd6b1c372ad246109e6826105df565b734752ba5dbc23f44d87826276bf6fd6b1c372ad2463f305d7194730611239816105df565b6000806000426040518863ffffffff1660e01b815260040161126096959493929190611c3f565b60606040518083038185885af115801561127e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112a39190611c7a565b5050505b505050505050506112b86001600555565b50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000806702ddd87149349e0090506000611301600a546113f1565b90506000826113118360026119b6565b61132390670de0b6b3a76400006119b6565b61070d91906119e3565b61133a8383836001611503565b505050565b600061134b84846112bb565b9050600019811461138c578181101561137d57828183604051637dc7a0d960e11b815260040161077793929190611ca8565b61138c84848484036000611503565b50505050565b6001600160a01b0383166113bc576000604051634b637e8f60e11b8152600401610777919061191e565b6001600160a01b0382166113e657600060405163ec442f0560e01b8152600401610777919061191e565b61133a8383836115d8565b60008160000361140357506000919050565b6000600161141084611656565b901c6001901b90506001818481611429576114296119cd565b048201901c90506001818481611441576114416119cd565b048201901c90506001818481611459576114596119cd565b048201901c90506001818481611471576114716119cd565b048201901c90506001818481611489576114896119cd565b048201901c905060018184816114a1576114a16119cd565b048201901c905060018184816114b9576114b96119cd565b048201901c9050610508818285816114d3576114d36119cd565b046116ea565b6002600554036114fc57604051633ee5aeb560e01b815260040160405180910390fd5b6002600555565b6001600160a01b03841661152d57600060405163e602df0560e01b8152600401610777919061191e565b6001600160a01b038316611557576000604051634a1406b160e11b8152600401610777919061191e565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561138c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516115ca91815260200190565b60405180910390a350505050565b6115e3838383611700565b600754604051634f2b0cbf60e11b81526001600160a01b03858116600483015284811660248301526044820184905290911690639e56197e90606401600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b50505050505050565b600080608083901c1561166b57608092831c92015b604083901c1561167d57604092831c92015b602083901c1561168f57602092831c92015b601083901c156116a157601092831c92015b600883901c156116b357600892831c92015b600483901c156116c557600492831c92015b600283901c156116d757600292831c92015b600183901c156105b55760010192915050565b60008183106116f95781610508565b5090919050565b6001600160a01b03831661172b5780600260008282546117209190611b32565b9091555061178a9050565b6001600160a01b0383166000908152602081905260409020548181101561176b5783818360405163391434e360e21b815260040161077793929190611ca8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166117a6576002805482900390556117c5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180a91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561184557858101830151858201604001528201611829565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112b857600080fd5b6000806040838503121561188e57600080fd5b823561189981611866565b946020939093013593505050565b6000806000606084860312156118bc57600080fd5b83356118c781611866565b925060208401356118d781611866565b929592945050506040919091013590565b6000602082840312156118fa57600080fd5b813561050881611866565b60006020828403121561191757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561194557600080fd5b50508035926020909101359150565b6000806040838503121561196757600080fd5b823561197281611866565b9150602083013561198281611866565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b5576105b561198d565b80820281158282048414176105b5576105b561198d565b634e487b7160e01b600052601260045260246000fd5b600082611a0057634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680611a1957607f821691505b602082108103611a3957634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115611a7a578160001904821115611a6057611a6061198d565b80851615611a6d57918102915b93841c9390800290611a44565b509250929050565b600082611a91575060016105b5565b81611a9e575060006105b5565b8160018114611ab45760028114611abe57611ada565b60019150506105b5565b60ff841115611acf57611acf61198d565b50506001821b6105b5565b5060208310610133831016604e8410600b8410161715611afd575081810a6105b5565b611b078383611a3f565b8060001904821115611b1b57611b1b61198d565b029392505050565b600061050860ff841683611a82565b808201808211156105b5576105b561198d565b602080825260199082015278109bdb991a5b99c818dd5c9d99481c1a185cd948195b991959603a1b604082015260600190565b600060208284031215611b8a57600080fd5b815161050881611866565b60208082526022908201527f466565207472616e7366657220746f206665655265636569766572206661696c604082015261195960f21b606082015260800190565b602080825260139082015272139bdd08195b9bdd59da08115512081cd95b9d606a1b604082015260600190565b6001600160a01b03979097168752941515602087015260408601939093526060850191909152608084015260a083015260c082015260e00190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611c8f57600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b03939093168352602083019190915260408201526060019056fea2646970667358221220d44ef7f7c0793e1db66b0cd673ab19a27f37397ba255c31825ea493cff6d7b0064736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000a057c043369ec2c41c2de0e1d2bb6cc4a1e1606000000000000000000000000330bd48140cf1796e3795a6b374a673d7a4461d00000000000000000000000000000000000000000000000000000000000000004546573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035453540000000000000000000000000000000000000000000000000000000000