60806040523480156200001157600080fd5b506040516200165d3803806200165d8339810160408190526200003491620002ac565b604080518082019091526012808252712047656e65736973204d656368616e69736d60701b60209092019182526200006f9160039162000206565b506040805180820190915260038082526247654d60e81b60209092019182526200009c9160049162000206565b50620000b960006000805160206200163d83398151915262000107565b620000d46000805160206200163d8339815191523362000152565b620001007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68262000152565b5062000319565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200015e828262000162565b5050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff166200015e5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001c23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b8280546200021490620002dc565b90600052602060002090601f01602090048101928262000238576000855562000283565b82601f106200025357805160ff191683800117855562000283565b8280016001018555821562000283579182015b828111156200028357825182559160200191906001019062000266565b506200029192915062000295565b5090565b5b8082111562000291576000815560010162000296565b600060208284031215620002be578081fd5b81516001600160a01b0381168114620002d5578182fd5b9392505050565b600181811c90821680620002f157607f821691505b602082108114156200031357634e487b7160e01b600052602260045260246000fd5b50919050565b61131480620003296000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063a217fddf1161007c578063a217fddf146102dc578063a457c2d7146102e4578063a9059cbb146102f7578063d53913931461030a578063d547741f14610331578063dd62ed3e1461034457600080fd5b806370a082311461024b57806375b238fc1461027457806379cc67901461029b57806391d14854146102ae57806395d89b41146102c1578063a0712d68146102c957600080fd5b80632f2ff15d116101155780632f2ff15d146101db578063313ce567146101f057806336568abe146101ff578063395093511461021257806340c10f191461022557806342966c681461023857600080fd5b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019357806323b872dd146101a5578063248a9ca3146101b8575b600080fd5b61015a61037d565b60405161016791906111c9565b60405180910390f35b61018361017e3660046110f1565b61040f565b6040519015158152602001610167565b6002545b604051908152602001610167565b6101836101b33660046110b6565b610425565b6101976101c636600461111a565b60009081526005602052604090206001015490565b6101ee6101e9366004611132565b6104d4565b005b60405160128152602001610167565b6101ee61020d366004611132565b610518565b6101836102203660046110f1565b610596565b6101ee6102333660046110f1565b6105d2565b6101ee61024636600461111a565b610607565b61019761025936600461106a565b6001600160a01b031660009081526020819052604090205490565b6101977fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6101ee6102a93660046110f1565b610614565b6101836102bc366004611132565b610695565b61015a6106c0565b6101ee6102d736600461111a565b6106cf565b610197600081565b6101836102f23660046110f1565b61070e565b6101836103053660046110f1565b6107a7565b6101977f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101ee61033f366004611132565b6107b4565b610197610352366004611084565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038c9061128d565b80601f01602080910402602001604051908101604052809291908181526020018280546103b89061128d565b80156104055780601f106103da57610100808354040283529160200191610405565b820191906000526020600020905b8154815290600101906020018083116103e857829003601f168201915b5050505050905090565b600061041c3384846107f3565b50600192915050565b6000610432848484610917565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104bc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104c985338584036107f3565b506001949350505050565b6000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd546105098133610ae7565b6105138383610b4b565b505050565b6001600160a01b03811633146105885760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016104b3565b6105928282610bd1565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161041c9185906105cd9086906111fc565b6107f3565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66105fd8133610ae7565b6105138383610c38565b6106113382610d17565b50565b60006106208333610352565b90508181101561067e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016104b3565b61068b83338484036107f3565b6105138383610d17565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461038c9061128d565b6000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd546107048133610ae7565b6105923383610c38565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104b3565b61079d33858584036107f3565b5060019392505050565b600061041c338484610917565b6000805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bd546107e98133610ae7565b6105138383610bd1565b6001600160a01b0383166108555760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b3565b6001600160a01b0382166108b65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661097b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b3565b6001600160a01b0382166109dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b3565b6001600160a01b03831660009081526020819052604090205481811015610a555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104b3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a8c9084906111fc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad891815260200190565b60405180910390a35b50505050565b610af18282610695565b61059257610b09816001600160a01b03166014610e65565b610b14836020610e65565b604051602001610b25929190611154565b60408051601f198184030181529082905262461bcd60e51b82526104b3916004016111c9565b610b558282610695565b6105925760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610b8d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610bdb8282610695565b156105925760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610c8e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104b3565b8060026000828254610ca091906111fc565b90915550506001600160a01b03821660009081526020819052604081208054839290610ccd9084906111fc565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610d775760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104b3565b6001600160a01b03821660009081526020819052604090205481811015610deb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104b3565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610e1a908490611233565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60606000610e74836002611214565b610e7f9060026111fc565b67ffffffffffffffff811115610ea557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610ecf576020820181803683370190505b509050600360fc1b81600081518110610ef857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610f3557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000610f59846002611214565b610f649060016111fc565b90505b6001811115610ff8576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610fa657634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110610fca57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93610ff181611276565b9050610f67565b5083156110475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104b3565b9392505050565b80356001600160a01b038116811461106557600080fd5b919050565b60006020828403121561107b578081fd5b6110478261104e565b60008060408385031215611096578081fd5b61109f8361104e565b91506110ad6020840161104e565b90509250929050565b6000806000606084860312156110ca578081fd5b6110d38461104e565b92506110e16020850161104e565b9150604084013590509250925092565b60008060408385031215611103578182fd5b61110c8361104e565b946020939093013593505050565b60006020828403121561112b578081fd5b5035919050565b60008060408385031215611144578182fd5b823591506110ad6020840161104e565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161118c81601785016020880161124a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516111bd81602884016020880161124a565b01602801949350505050565b60208152600082518060208401526111e881604085016020870161124a565b601f01601f19169190910160400192915050565b6000821982111561120f5761120f6112c8565b500190565b600081600019048311821515161561122e5761122e6112c8565b500290565b600082821015611245576112456112c8565b500390565b60005b8381101561126557818101518382015260200161124d565b83811115610ae15750506000910152565b600081611285576112856112c8565b506000190190565b600181811c908216806112a157607f821691505b602082108114156112c257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea264697066735822122093a43ddbad8c445ac642185f725a8ad7fe4811ededc453b49643c0ef19704a3164736f6c63430008040033a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775000000000000000000000000fcf6966547ea0ef986a44be7732d8b884e70158d