608060405234801561001057600080fd5b50614044806100206000396000f3fe6080604052600436106102305760003560e01c806352238fdd1161012e578063a22cb465116100ab578063d547741f1161006f578063d547741f1461067b578063e985e9c51461069b578063ee380322146106e4578063f9020e3314610704578063fb5b82d01461075657600080fd5b8063a22cb465146105f5578063b3ab66b014610615578063b69ef8a814610628578063b88d4fde1461063b578063c87b56dd1461065b57600080fd5b80638f81640b116100f25780638f81640b1461056b57806391d148541461058b57806395d89b41146105ab578063a0712d68146105c0578063a217fddf146105e057600080fd5b806352238fdd146104cb5780635a5dfe33146104eb5780636352211e1461050b57806370a082311461052b5780638543302f1461054b57600080fd5b8063248a9ca3116101bc57806336568abe1161018057806336568abe146104365780633ccfd60b1461045657806342842e0e1461046b5780634f6ccce71461048b57806351302d7d146104ab57600080fd5b8063248a9ca31461038f5780632badd498146103bf5780632f2ff15d146103e15780632f745c591461040157806334918dfd1461042157600080fd5b8063081812fc11610203578063081812fc146102e5578063095ea7b31461031d57806311fdda251461033d57806318160ddd1461035057806323b872dd1461036f57600080fd5b8063017854971461023557806301ffc9a71461027157806302fe5305146102a157806306fdde03146102c3575b600080fd5b34801561024157600080fd5b506102556102503660046136a8565b610776565b6040805192151583526020830191909152015b60405180910390f35b34801561027d57600080fd5b5061029161028c3660046136d9565b6107d8565b6040519015158152602001610268565b3480156102ad57600080fd5b506102c16102bc36600461373f565b6107e9565b005b3480156102cf57600080fd5b506102d8610810565b60405161026891906137d9565b3480156102f157600080fd5b506103056103003660046137ec565b6108a2565b6040516001600160a01b039091168152602001610268565b34801561032957600080fd5b506102c1610338366004613805565b6108c9565b6102c161034b36600461382f565b6109da565b34801561035c57600080fd5b50600a545b604051908152602001610268565b34801561037b57600080fd5b506102c161038a3660046138b9565b610d38565b34801561039b57600080fd5b506103616103aa3660046137ec565b6000908152600d602052604090206001015490565b3480156103cb57600080fd5b50610361600080516020613fef83398151915281565b3480156103ed57600080fd5b506102c16103fc3660046138f5565b610d69565b34801561040d57600080fd5b5061036161041c366004613805565b610d8e565b34801561042d57600080fd5b506102c1610e24565b34801561044257600080fd5b506102c16104513660046138f5565b610ef1565b34801561046257600080fd5b506102c1610f6f565b34801561047757600080fd5b506102c16104863660046138b9565b610fb6565b34801561049757600080fd5b506103616104a63660046137ec565b610fd1565b3480156104b757600080fd5b506102c16104c6366004613932565b611064565b3480156104d757600080fd5b506103616104e63660046137ec565b6113af565b3480156104f757600080fd5b506102c1610506366004613a12565b6113d2565b34801561051757600080fd5b506103056105263660046137ec565b611500565b34801561053757600080fd5b506103616105463660046136a8565b611560565b34801561055757600080fd5b506102c1610566366004613a51565b6115e6565b34801561057757600080fd5b506102c1610586366004613a73565b611755565b34801561059757600080fd5b506102916105a63660046138f5565b611a1b565b3480156105b757600080fd5b506102d8611a46565b3480156105cc57600080fd5b506102c16105db3660046137ec565b611a55565b3480156105ec57600080fd5b50610361600081565b34801561060157600080fd5b506102c1610610366004613aa6565b611be9565b6102c16106233660046137ec565b611bf4565b34801561063457600080fd5b5047610361565b34801561064757600080fd5b506102c1610656366004613af3565b611e3d565b34801561066757600080fd5b506102d86106763660046137ec565b611e6f565b34801561068757600080fd5b506102c16106963660046138f5565b611e7a565b3480156106a757600080fd5b506102916106b6366004613bcf565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156106f057600080fd5b506102c16106ff3660046137ec565b611e9f565b34801561071057600080fd5b50601254601554600f54601654600e546011546040805160ff909716151587526020870195909552938501929092526060840152608083015260a082015260c001610268565b34801561076257600080fd5b506102c16107713660046136a8565b611f59565b600080826001600160a01b0381166107a95760405162461bcd60e51b81526004016107a090613bf9565b60405180910390fd5b5050506001600160a01b031660009081526018602090815260408083205460199092529091205460ff90911691565b60006107e382611fee565b92915050565b600080516020613fef83398151915261080181612013565b61080b8383612020565b505050565b60606001805461081f90613c1f565b80601f016020809104026020016040519081016040528092919081815260200182805461084b90613c1f565b80156108985780601f1061086d57610100808354040283529160200191610898565b820191906000526020600020905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b60006108ad8261202c565b506000908152600660205260409020546001600160a01b031690565b60006108d482611500565b9050806001600160a01b0316836001600160a01b031614156109425760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107a0565b336001600160a01b038216148061095e575061095e81336106b6565b6109d05760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107a0565b61080b838361208b565b836001600160a01b038116610a015760405162461bcd60e51b81526004016107a090613bf9565b6001600160a01b0385163314610a4c5760405162461bcd60e51b815260206004820152601060248201526f36bab9ba1031329030b71037bbb732b960811b60448201526064016107a0565b60408051606087901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260349092019092528051910120610ac1908484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506120f992505050565b610b045760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21036b2b935b63290383937b7b360611b60448201526064016107a0565b60408051808201909152601554815260165460208201526000610b26600a5490565b601154909150610b368288613c70565b1115610b545760405162461bcd60e51b81526004016107a090613c88565b815180421015610b8f5760405162461bcd60e51b81526004016107a09060208082526004908201526354696d6560e01b604082015260600190565b600f546000610b9e8983613cb3565b90506000610bab826113af565b905034610bb88284613c70565b1115610bfd5760405162461bcd60e51b81526020600482015260146024820152734e6f20456e6f67682045746865722076616c756560601b60448201526064016107a0565b604051738e657af24d96231d8b861e47fc43dde87b1791799082156108fc029083906000818181858888f19350505050158015610c3e573d6000803e3d6000fd5b50610c488a612108565b6017546001600160a01b0316634e3de4b58c8c610c658587613c70565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015610cb357600080fd5b505af1158015610cc7573d6000803e3d6000fd5b505050507f56400dc29368b35b94e9a98caf7bad72fa43aafecc6c31770599cd05cc049db78b60008c8486610cfc9190613c70565b604080516001600160a01b0395861681529490931660208501529183015260608201526080015b60405180910390a15050505050505050505050565b610d42338261233f565b610d5e5760405162461bcd60e51b81526004016107a090613cd2565b61080b8383836123be565b6000828152600d6020526040902060010154610d8481612013565b61080b8383612565565b6000610d9983611560565b8210610dfb5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107a0565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b600080516020613fef833981519152610e3c81612013565b6012805460ff19811660ff91821615908117909255601754604051630664057d60e01b815292909116151560048301526001600160a01b031690630664057d90602401600060405180830381600087803b158015610e9957600080fd5b505af1158015610ead573d6000803e3d6000fd5b505060125460405160ff909116151581527fd8846f74e3f3c7a2caee8bacb234b12aaf2df27ee16fb1a435a4b61f9dcc50f09250602001905060405180910390a150565b6001600160a01b0381163314610f615760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107a0565b610f6b82826125eb565b5050565b600080516020613fef833981519152610f8781612013565b6040514790339082156108fc029083906000818181858888f1935050505015801561080b573d6000803e3d6000fd5b61080b83838360405180602001604052806000815250611e3d565b6000610fdc600a5490565b821061103f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107a0565b600a828154811061105257611052613d20565b90600052602060002001549050919050565b600054610100900460ff16158080156110845750600054600160ff909116105b8061109e5750303b15801561109e575060005460ff166001145b6111015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a0565b6000805460ff191660011790558015611124576000805461ff0019166101001790555b60208601354211156111785760405162461bcd60e51b815260206004820181905260248201527f7075626c69632074696d652073616c65206973206e6f7420636f72726563742060448201526064016107a0565b6020808801359087013510156111da5760405162461bcd60e51b815260206004820152602160248201527f7075626c69632074696d6520736d616c6c6572207468616e20656e642074696d6044820152606560f81b60648201526084016107a0565b6001600160a01b038a166111ed57600080fd5b6112836111fa8c80613d36565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250600191506112399050565b6020028101906112499190613d36565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061265292505050565b60118890556112928484612020565b61129d60008b612565565b6112b5600080516020613fef8339815191528b612565565b601080546001600160a01b038c81166001600160a01b0319928316179092558735600e558835600f556020898101356015558089013560168190556012805460ff1916600190811790915560148a9055601387905560178054958f16959094169490941790925560408051338152918201929092529081019190915230907f71aa85fba889ad344e3912c7d8e7523fa251ae87d85360c8dc1ac984e6fc1e999060600160405180910390a280156113a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610d23565b5050505050505050505050565b6000806113bd836096613cb3565b90506113cb61271082613d93565b9392505050565b826001600160a01b0381166113f95760405162461bcd60e51b81526004016107a090613bf9565b600080516020613fef83398151915261141181612013565b6001600160a01b038581166000818152601860209081526040808320805460ff19168a151590811790915560199092529182902087905560175491516346d13b1760e11b8152600481019190915260248101929092526044820186905290911690638da2762e90606401600060405180830381600087803b15801561149557600080fd5b505af11580156114a9573d6000803e3d6000fd5b5050604080516001600160a01b038916815287151560208201529081018690527fc95a437cb00b201d5ade4baa03f5c1ca90a0e40c42c4dd2c8fd162c17fc0fe1e9250606001905060405180910390a15050505050565b6000818152600460205260408120546001600160a01b0316806107e35760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a0565b60006001600160a01b0382166115ca5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107a0565b506001600160a01b031660009081526005602052604090205490565b600080516020613fef8339815191526115fe81612013565b60155480841161163c5760405162461bcd60e51b81526020600482015260096024820152684c6973742054696d6560b81b60448201526064016107a0565b8342106116795760405162461bcd60e51b815260206004820152600b60248201526a7075626c69632074696d6560a81b60448201526064016107a0565b601684905560148390556012805460ff19166001908117909155601754604051635cff5e1360e01b8152336004820152602481018790526044810186905260648101929092526001600160a01b031690635cff5e1390608401600060405180830381600087803b1580156116ec57600080fd5b505af1158015611700573d6000803e3d6000fd5b5050601254604080513381526020810189905260ff9092161515908201523092507f71aa85fba889ad344e3912c7d8e7523fa251ae87d85360c8dc1ac984e6fc1e99915060600160405180910390a250505050565b826001600160a01b03811661177c5760405162461bcd60e51b81526004016107a090613bf9565b6001600160a01b038416600090815260186020526040902054849060ff1615156001146117f65760405162461bcd60e51b815260206004820152602260248201527f436f6e74726163742061646472657373206973206e6f7420537570706f727465604482015261032160f51b60648201526084016107a0565b60408051808201909152601554815260165460208201526000611818600a5490565b6011549091506118288288613c70565b11156118465760405162461bcd60e51b81526004016107a090613c88565b6020828101516001600160a01b03891660009081526019909252604090912054814210156118b65760405162461bcd60e51b815260206004820152601a60248201527f53616c65732068617665206e6f7420737461727465642079657400000000000060448201526064016107a0565b60006118c28983613cb3565b905060006118cf826113af565b90506118db8183613c70565b89101561191c5760405162461bcd60e51b815260206004820152600f60248201526e30b6b7bab73a1034b9903637bbb2b960891b60448201526064016107a0565b601754611938906001600160a01b038d81169133911684612683565b601054611954906001600160a01b038d81169133911685612683565b61195d8a612108565b6017546001600160a01b0316633407da89338c8e61197b8688613c70565b6040516001600160e01b031960e087901b1681526001600160a01b0394851660048201526024810193909352921660448201526064810191909152608401600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b505050507f56400dc29368b35b94e9a98caf7bad72fa43aafecc6c31770599cd05cc049db7338c8c8486610cfc9190613c70565b6000918252600d602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606002805461081f90613c1f565b600080516020613fef833981519152611a6d81612013565b6000611a78600a5490565b601154909150611a888285613c70565b1115611aa65760405162461bcd60e51b81526004016107a090613c88565b60005b83811015611be357611ac433611abf8385613c70565b6126dd565b611b07611ad18284613c70565b611ae3611ade8486613c70565b6126f7565b604051602001611af39190613da7565b6040516020818303038152906040526127f5565b6017546001600160a01b031663520196d133611b238486613c70565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611b6957600080fd5b505af1158015611b7d573d6000803e3d6000fd5b505050507fd1d3d8a67ea3222e190a25cd89ce4613287a3f3d1272268cfd5639d6bad416b3338284611baf9190613c70565b604080516001600160a01b03909316835260208301919091520160405180910390a180611bdb81613dc3565b915050611aa9565b50505050565b610f6b33838361288f565b60408051808201909152601554815260165460208201526000611c16600a5490565b601154909150611c268285613c70565b1115611c445760405162461bcd60e51b81526004016107a090613c88565b6020820151600e5481421015611c9c5760405162461bcd60e51b815260206004820152601a60248201527f53616c65732068617665206e6f7420737461727465642079657400000000000060448201526064016107a0565b6000611ca88683613cb3565b90506000611cb5826113af565b905034611cc28284613c70565b1115611d075760405162461bcd60e51b81526020600482015260146024820152734e6f20456e6f67682045746865722076616c756560601b60448201526064016107a0565b604051738e657af24d96231d8b861e47fc43dde87b1791799082156108fc029083906000818181858888f19350505050158015611d48573d6000803e3d6000fd5b50611d5287612108565b6017546001600160a01b0316634e3de4b53389611d6f8587613c70565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b158015611dbd57600080fd5b505af1158015611dd1573d6000803e3d6000fd5b505050507f56400dc29368b35b94e9a98caf7bad72fa43aafecc6c31770599cd05cc049db7336000898486611e069190613c70565b604080516001600160a01b03958616815294909316602085015291830152606082015260800160405180910390a150505050505050565b611e47338361233f565b611e635760405162461bcd60e51b81526004016107a090613cd2565b611be38484848461295e565b60606107e382612991565b6000828152600d6020526040902060010154611e9581612013565b61080b83836125eb565b600080516020613fef833981519152611eb781612013565b601382905560175460405163acd67f7d60e01b8152600481018490526001600160a01b039091169063acd67f7d90602401600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050507fad0bec87852bb97dc5b3a3cbaada530117561bf3f310ddb4eaa4a9318cdc864d601354604051611f4d91815260200190565b60405180910390a15050565b806001600160a01b038116611f805760405162461bcd60e51b81526004016107a090613bf9565b600080516020613fef833981519152611f9881612013565b601080546001600160a01b0319166001600160a01b0385169081179091556040519081527fb6fa265663b88e6646a23ac41fc0175bf5d5b5e22d6ad62d51b53f00f4a4ee809060200160405180910390a1505050565b60006001600160e01b03198216637965db0b60e01b14806107e357506107e382612a9a565b61201d8133612abf565b50565b61080b6003838361357f565b6000818152600460205260409020546001600160a01b031661201d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107a0565b600081815260066020526040902080546001600160a01b0319166001600160a01b03841690811790915581906120c082611500565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006113cb8260135485612b23565b6000612113600a5490565b6011549091506121238284613c70565b11156121415760405162461bcd60e51b81526004016107a090613c88565b60148211156121925760405162461bcd60e51b815260206004820152601860248201527f4f6e6c7920323020746f6b656e7320617420612074696d65000000000000000060448201526064016107a0565b60125460ff166121d95760405162461bcd60e51b815260206004820152601260248201527153616c65206973206e6f742061637469766560701b60448201526064016107a0565b6121e233611560565b6121ec9083613c70565b601454101561223d5760405162461bcd60e51b815260206004820152601d60248201527f63616e2774206d696e74206d6f7265207468616e20726571756972657300000060448201526064016107a0565b60005b8281101561080b5761225633611abf8385613c70565b612263611ad18284613c70565b6017546001600160a01b031663520196d13361227f8486613c70565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156122c557600080fd5b505af11580156122d9573d6000803e3d6000fd5b505050507fd1d3d8a67ea3222e190a25cd89ce4613287a3f3d1272268cfd5639d6bad416b333828461230b9190613c70565b604080516001600160a01b03909316835260208301919091520160405180910390a18061233781613dc3565b915050612240565b60008061234b83611500565b9050806001600160a01b0316846001600160a01b0316148061239257506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b806123b65750836001600160a01b03166123ab846108a2565b6001600160a01b0316145b949350505050565b826001600160a01b03166123d182611500565b6001600160a01b0316146124355760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016107a0565b6001600160a01b0382166124975760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107a0565b6124a2838383612b39565b6124ad60008261208b565b6001600160a01b03831660009081526005602052604081208054600192906124d6908490613dde565b90915550506001600160a01b0382166000908152600560205260408120805460019290612504908490613c70565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61256f8282611a1b565b610f6b576000828152600d602090815260408083206001600160a01b03851684529091529020805460ff191660011790556125a73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6125f58282611a1b565b15610f6b576000828152600d602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166126795760405162461bcd60e51b81526004016107a090613df5565b610f6b8282612b44565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611be3908590612b92565b610f6b828260405180602001604052806000815250612c64565b60608161271b5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612745578061272f81613dc3565b915061273e9050600a83613d93565b915061271f565b60008167ffffffffffffffff81111561276057612760613add565b6040519080825280601f01601f19166020018201604052801561278a576020820181803683370190505b5090505b84156123b65761279f600183613dde565b91506127ac600a86613e40565b6127b7906030613c70565b60f81b8183815181106127cc576127cc613d20565b60200101906001600160f81b031916908160001a9053506127ee600a86613d93565b945061278e565b6000828152600460205260409020546001600160a01b03166128705760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016107a0565b6000828152600c60209081526040909120825161080b92840190613603565b816001600160a01b0316836001600160a01b031614156128f15760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107a0565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6129698484846123be565b61297584848484612c97565b611be35760405162461bcd60e51b81526004016107a090613e54565b606061299c8261202c565b6000828152600c6020526040812080546129b590613c1f565b80601f01602080910402602001604051908101604052809291908181526020018280546129e190613c1f565b8015612a2e5780601f10612a0357610100808354040283529160200191612a2e565b820191906000526020600020905b815481529060010190602001808311612a1157829003601f168201915b505050505090506000612a4c60408051602081019091526000815290565b9050805160001415612a5f575092915050565b815115612a91578082604051602001612a79929190613ea6565b60405160208183030381529060405292505050919050565b6123b684612d95565b60006001600160e01b0319821663780e9d6360e01b14806107e357506107e382612e08565b612ac98282611a1b565b610f6b57612ae1816001600160a01b03166014612e58565b612aec836020612e58565b604051602001612afd929190613ed5565b60408051601f198184030181529082905262461bcd60e51b82526107a0916004016137d9565b600082612b308584612ff4565b14949350505050565b61080b838383613041565b600054610100900460ff16612b6b5760405162461bcd60e51b81526004016107a090613df5565b8151612b7e906001906020850190613603565b50805161080b906002906020840190613603565b6000612be7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130f99092919063ffffffff16565b80519091501561080b5780806020019051810190612c059190613f4a565b61080b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107a0565b612c6e8383613108565b612c7b6000848484612c97565b61080b5760405162461bcd60e51b81526004016107a090613e54565b60006001600160a01b0384163b15612d8a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612cdb903390899088908890600401613f67565b6020604051808303816000875af1925050508015612d16575060408051601f3d908101601f19168201909252612d1391810190613fa4565b60015b612d70573d808015612d44576040519150601f19603f3d011682016040523d82523d6000602084013e612d49565b606091505b508051612d685760405162461bcd60e51b81526004016107a090613e54565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506123b6565b506001949350505050565b6060612da08261202c565b6000612db760408051602081019091526000815290565b90506000815111612dd757604051806020016040528060008152506113cb565b80612de1846126f7565b604051602001612df2929190613ea6565b6040516020818303038152906040529392505050565b60006001600160e01b031982166380ac58cd60e01b1480612e3957506001600160e01b03198216635b5e139f60e01b145b806107e357506301ffc9a760e01b6001600160e01b03198316146107e3565b60606000612e67836002613cb3565b612e72906002613c70565b67ffffffffffffffff811115612e8a57612e8a613add565b6040519080825280601f01601f191660200182016040528015612eb4576020820181803683370190505b509050600360fc1b81600081518110612ecf57612ecf613d20565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612efe57612efe613d20565b60200101906001600160f81b031916908160001a9053506000612f22846002613cb3565b612f2d906001613c70565b90505b6001811115612fa5576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612f6157612f61613d20565b1a60f81b828281518110612f7757612f77613d20565b60200101906001600160f81b031916908160001a90535060049490941c93612f9e81613fc1565b9050612f30565b5083156113cb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107a0565b600081815b8451811015613039576130258286838151811061301857613018613d20565b6020026020010151613256565b91508061303181613dc3565b915050612ff9565b509392505050565b6001600160a01b03831661309c5761309781600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b6130bf565b816001600160a01b0316836001600160a01b0316146130bf576130bf8382613285565b6001600160a01b0382166130d65761080b81613322565b826001600160a01b0316826001600160a01b03161461080b5761080b82826133d1565b60606123b68484600085613415565b6001600160a01b03821661315e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107a0565b6000818152600460205260409020546001600160a01b0316156131c35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107a0565b6131cf60008383612b39565b6001600160a01b03821660009081526005602052604081208054600192906131f8908490613c70565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008183106132725760008281526020849052604090206113cb565b60008381526020839052604090206113cb565b6000600161329284611560565b61329c9190613dde565b6000838152600960205260409020549091508082146132ef576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a5460009061333490600190613dde565b6000838152600b6020526040812054600a805493945090928490811061335c5761335c613d20565b9060005260206000200154905080600a838154811061337d5761337d613d20565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a8054806133b5576133b5613fd8565b6001900381819060005260206000200160009055905550505050565b60006133dc83611560565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6060824710156134765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107a0565b6001600160a01b0385163b6134cd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a0565b600080866001600160a01b031685876040516134e99190613da7565b60006040518083038185875af1925050503d8060008114613526576040519150601f19603f3d011682016040523d82523d6000602084013e61352b565b606091505b509150915061353b828286613546565b979650505050505050565b606083156135555750816113cb565b8251156135655782518084602001fd5b8160405162461bcd60e51b81526004016107a091906137d9565b82805461358b90613c1f565b90600052602060002090601f0160209004810192826135ad57600085556135f3565b82601f106135c65782800160ff198235161785556135f3565b828001600101855582156135f3579182015b828111156135f35782358255916020019190600101906135d8565b506135ff929150613677565b5090565b82805461360f90613c1f565b90600052602060002090601f01602090048101928261363157600085556135f3565b82601f1061364a57805160ff19168380011785556135f3565b828001600101855582156135f3579182015b828111156135f357825182559160200191906001019061365c565b5b808211156135ff5760008155600101613678565b80356001600160a01b03811681146136a357600080fd5b919050565b6000602082840312156136ba57600080fd5b6113cb8261368c565b6001600160e01b03198116811461201d57600080fd5b6000602082840312156136eb57600080fd5b81356113cb816136c3565b60008083601f84011261370857600080fd5b50813567ffffffffffffffff81111561372057600080fd5b60208301915083602082850101111561373857600080fd5b9250929050565b6000806020838503121561375257600080fd5b823567ffffffffffffffff81111561376957600080fd5b613775858286016136f6565b90969095509350505050565b60005b8381101561379c578181015183820152602001613784565b83811115611be35750506000910152565b600081518084526137c5816020860160208601613781565b601f01601f19169290920160200192915050565b6020815260006113cb60208301846137ad565b6000602082840312156137fe57600080fd5b5035919050565b6000806040838503121561381857600080fd5b6138218361368c565b946020939093013593505050565b6000806000806060858703121561384557600080fd5b61384e8561368c565b935060208501359250604085013567ffffffffffffffff8082111561387257600080fd5b818701915087601f83011261388657600080fd5b81358181111561389557600080fd5b8860208260051b85010111156138aa57600080fd5b95989497505060200194505050565b6000806000606084860312156138ce57600080fd5b6138d78461368c565b92506138e56020850161368c565b9150604084013590509250925092565b6000806040838503121561390857600080fd5b823591506139186020840161368c565b90509250929050565b80604081018310156107e357600080fd5b6000806000806000806000806000806101608b8d03121561395257600080fd5b8a3567ffffffffffffffff8082111561396a57600080fd5b6139768e838f01613921565b9b5061398460208e0161368c565b9a5061399260408e0161368c565b995060608d013598506139a88e60808f01613921565b97506139b78e60c08f01613921565b96506101008d013595506101208d01359150808211156139d657600080fd5b506139e38d828e016136f6565b915080945050809250506101408b013590509295989b9194979a5092959850565b801515811461201d57600080fd5b600080600060608486031215613a2757600080fd5b613a308461368c565b92506020840135613a4081613a04565b929592945050506040919091013590565b60008060408385031215613a6457600080fd5b50508035926020909101359150565b600080600060608486031215613a8857600080fd5b613a918461368c565b95602085013595506040909401359392505050565b60008060408385031215613ab957600080fd5b613ac28361368c565b91506020830135613ad281613a04565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215613b0957600080fd5b613b128561368c565b9350613b206020860161368c565b925060408501359150606085013567ffffffffffffffff80821115613b4457600080fd5b818701915087601f830112613b5857600080fd5b813581811115613b6a57613b6a613add565b604051601f8201601f19908116603f01168101908382118183101715613b9257613b92613add565b816040528281528a6020848701011115613bab57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215613be257600080fd5b613beb8361368c565b91506139186020840161368c565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b600181811c90821680613c3357607f821691505b60208210811415613c5457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115613c8357613c83613c5a565b500190565b602080825260119082015270457863656564206d617820737570706c7960781b604082015260600190565b6000816000190483118215151615613ccd57613ccd613c5a565b500290565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112613d4d57600080fd5b83018035915067ffffffffffffffff821115613d6857600080fd5b60200191503681900382131561373857600080fd5b634e487b7160e01b600052601260045260246000fd5b600082613da257613da2613d7d565b500490565b60008251613db9818460208701613781565b9190910192915050565b6000600019821415613dd757613dd7613c5a565b5060010190565b600082821015613df057613df0613c5a565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082613e4f57613e4f613d7d565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351613eb8818460208801613781565b835190830190613ecc818360208801613781565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613f0d816017850160208801613781565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613f3e816028840160208801613781565b01602801949350505050565b600060208284031215613f5c57600080fd5b81516113cb81613a04565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613f9a908301846137ad565b9695505050505050565b600060208284031215613fb657600080fd5b81516113cb816136c3565b600081613fd057613fd0613c5a565b506000190190565b634e487b7160e01b600052603160045260246000fdfefce46245ca99b0c2a0661328f294ae427fab26f82f3bae5d22755f6707d9661fa2646970667358221220ee2cf0231bb5bb95bda89546d6d1134bc5299bf0dc3125effd7f4ed952edb27b64736f6c634300080a0033