60a06040523480156200001157600080fd5b50604051620054163803806200541683398101604081905262000034916200064a565b604080518082018252601d81527f4564656e204e6574776f726b2053455620446973747269627574696f6e0000006020808301918252835180850190945260088452671151115394d1559160c21b9084015281519192916200009991600091620004df565b508051620000af906001906020840190620004df565b5050506001600160601b0319606087901b16608052600d546000908152601360205260408120805460ff19166001179055600c80546001600160a01b0388166001600160a01b03199091161790555b82518110156200015a5762000145600080516020620053f683398151915284838151811062000131576200013162000775565b60200260200101516200021860201b60201c565b8062000151816200074b565b915050620000fe565b506200016960ff84166200025b565b60005b8151811015620001c557620001b07f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3983838151811062000131576200013162000775565b80620001bc816200074b565b9150506200016c565b50620001d360008562000218565b60408051600080825260208201527f9ad874aacbaa905813a0a2c9812df59969335e5c0f5fbd99d98575597fbfad08910160405180910390a1505050505050620007ba565b6200022f82826200038a60201b620026721760201c565b6000828152600760209081526040909120620002569183906200267c6200039a821b17901c565b505050565b80620002d45760405162461bcd60e51b815260206004820152603760248201527f4d65726b6c654469737472696275746f725345563a205570646174652074687260448201527f6573686f6c64206d757374206265206e6f6e2d7a65726f00000000000000000060648201526084015b60405180910390fd5b620002ee600080516020620053f6833981519152620003ba565b811115620003525760405162461bcd60e51b815260206004820152602a60248201527f4d65726b6c654469737472696275746f725345563a207468726573686f6c64206044820152693e20757064617465727360b01b6064820152608401620002cb565b6040518181527f4a3f39b792c062592e6c20d41d18331563a8de4ba398cd40ef7c9afffd6234959060200160405180910390a1600f55565b620003968282620003de565b5050565b6000620003b1836001600160a01b03841662000482565b90505b92915050565b60008181526007602090815260408220620003b4916200269e620004d4821b17901c565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620003965760008281526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200043e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000818152600183016020526040812054620004cb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620003b4565b506000620003b4565b6000620003b4825490565b828054620004ed906200070e565b90600052602060002090601f0160209004810192826200051157600085556200055c565b82601f106200052c57805160ff19168380011785556200055c565b828001600101855582156200055c579182015b828111156200055c5782518255916020019190600101906200053f565b506200056a9291506200056e565b5090565b5b808211156200056a57600081556001016200056f565b80516200059281620007a1565b919050565b600082601f830112620005a957600080fd5b815160206001600160401b0380831115620005c857620005c86200078b565b8260051b604051601f19603f83011681018181108482111715620005f057620005f06200078b565b604052848152838101925086840182880185018910156200061057600080fd5b600092505b858310156200063e57620006298162000585565b84529284019260019290920191840162000615565b50979650505050505050565b60008060008060008060c087890312156200066457600080fd5b86516200067181620007a1565b60208801519096506200068481620007a1565b60408801519095506200069781620007a1565b606088015190945060ff81168114620006af57600080fd5b60808801519093506001600160401b0380821115620006cd57600080fd5b620006db8a838b0162000597565b935060a0890151915080821115620006f257600080fd5b506200070189828a0162000597565b9150509295509295509295565b600181811c908216806200072357607f821691505b602082108114156200074557634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200076e57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620007b757600080fd5b50565b60805160601c614c08620007ee600039600081816106e201528181610ff501528181611aee01526122b70152614c086000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c80639010d07c11610191578063c65c3d95116100e3578063decbfda511610097578063e985e9c511610071578063e985e9c514610674578063f6a7fb58146106bd578063fc0c546a146106dd57600080fd5b8063decbfda514610645578063e1e92a6714610658578063e7e7e3871461066b57600080fd5b8063ca15c873116100c8578063ca15c873146105fc578063cd170ce71461060f578063d547741f1461063257600080fd5b8063c65c3d95146105e0578063c87b56dd146105e957600080fd5b8063a217fddf11610145578063b69ef8a81161011f578063b69ef8a8146105b2578063b88d4fde146105ba578063c18d86c0146105cd57600080fd5b8063a217fddf1461058e578063a22cb46514610596578063b1437e27146105a957600080fd5b80639407f5cb116101765780639407f5cb1461056a57806395d89b41146105735780639e05537b1461057b57600080fd5b80639010d07c1461051157806391d148541461052457600080fd5b80632eb4a7ab1161024a57806342842e0e116101fe5780635095af64116101d85780635095af64146104c45780636352211e146104eb57806370a08231146104fe57600080fd5b806342842e0e1461047757806347e633801461048a5780634f6ccce7146104b157600080fd5b80632f745c591161022f5780632f745c591461043e57806335dc395c1461045157806336568abe1461046457600080fd5b80632eb4a7ab146104225780632f2ff15d1461042b57600080fd5b80630ec4c601116102a157806323b872dd1161028657806323b872dd146103d9578063248a9ca3146103ec5780632e7ba6ef1461040f57600080fd5b80630ec4c6011461038b57806318160ddd146103c757600080fd5b806306fdde03116102d257806306fdde031461032b578063081812fc14610340578063095ea7b31461037857600080fd5b806301ffc9a7146102ee57806302fb4d8514610316575b600080fd5b6103016102fc36600461460b565b610704565b60405190151581526020015b60405180910390f35b610329610324366004614421565b6107f8565b005b61033361091b565b60405161030d91906148c7565b61035361034e366004614522565b6109ad565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b610329610386366004614421565b610a87565b6103b2610399366004614282565b6012602052600090815260409020805460019091015482565b6040805192835260208301919091520161030d565b600a545b60405190815260200161030d565b6103296103e73660046142d0565b610c14565b6103cb6103fa366004614522565b60009081526006602052604090206001015490565b61032961041d36600461465e565b610cb5565b6103cb600d5481565b61032961043936600461453b565b61111c565b6103cb61044c366004614421565b61113e565b61032961045f36600461444b565b61120d565b61032961047236600461453b565b611336565b6103296104853660046142d0565b611358565b6103cb7f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab81565b6103cb6104bf366004614522565b611373565b6103cb7f12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e3981565b6103536104f9366004614522565b611431565b6103cb61050c366004614282565b6114e3565b61035361051f3660046145e9565b6115b1565b61030161053236600461453b565b600091825260066020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6103cb600f5481565b6103336115d0565b61032961058936600461465e565b6115df565b6103cb600081565b6103296105a43660046143ea565b61198f565b6103cb60105481565b6103cb611aa6565b6103296105c836600461430c565b611b8e565b6103296105db36600461444b565b611c36565b6103cb600e5481565b6103336105f7366004614522565b611d55565b6103cb61060a366004614522565b611f0f565b61030161061d366004614522565b60136020526000908152604090205460ff1681565b61032961064036600461453b565b611f26565b6103cb61065336600461455e565b611f30565b610329610666366004614522565b6125a8565b6103cb60115481565b61030161068236600461429d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600c546103539073ffffffffffffffffffffffffffffffffffffffff1681565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061079757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107e357507fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000145b806107f257506107f2826126a8565b92915050565b3360009081527f1dfbce58931a94262c3b9c5acee9dafa864324624ff5446cf599e6b0e53aa0ac602052604090205460ff166108bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4d65726b6c654469737472696275746f725345563a2043616c6c6572206d757360448201527f74206861766520534c41534845525f524f4c450000000000000000000000000060648201526084015b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd8260405161090391815260200190565b60405180910390a2610917826000836126fe565b5050565b60606000805461092a90614a0a565b80601f016020809104026020016040519081016040528092919081815260200182805461095690614a0a565b80156109a35780601f10610978576101008083540402835291602001916109a3565b820191906000526020600020905b81548152906001019060200180831161098657829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016108b2565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610a9282611431565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016108b2565b3373ffffffffffffffffffffffffffffffffffffffff82161480610b795750610b798133610682565b610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108b2565b610c0f838361288b565b505050565b610c1e338261292b565b610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108b2565b610c0f838383612a97565b3373ffffffffffffffffffffffffffffffffffffffff851614610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4d65726b6c654469737472696275746f725345563a2043616e6e6f7420636f6c60448201527f6c6563742072657761726473000000000000000000000000000000000000000060648201526084016108b2565b60408051602081018790527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b169181019190915260548101849052600090607401604051602081830303815290604052805190602001209050610df983838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150849050612d09565b610e85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4d65726b6c654469737472696275746f725345563a20496e76616c696420707260448201527f6f6f66000000000000000000000000000000000000000000000000000000000060648201526084016108b2565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260126020526040812060018101549054610ebb9190614929565b9050808511610f4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c654469737472696275746f725345563a204e6f7468696e6720636c60448201527f61696d61626c650000000000000000000000000000000000000000000000000060648201526084016108b2565b6000610f588287614992565b604080518a81526020810189905290810182905290915073ffffffffffffffffffffffffffffffffffffffff8816907fb94bf7f9302edf52a596286915a69b4b0685574cffdedd0712e3c62f2550f0ba9060600160405180910390a2610fc0878260006126fe565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b15801561104e57600080fd5b505af1158015611062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110869190614505565b611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c654469737472696275746f725345563a205472616e73666572206660448201527f61696c656400000000000000000000000000000000000000000000000000000060648201526084016108b2565b5050505050505050565b6111268282612db8565b6000828152600760205260409020610c0f908261267c565b6000611149836114e3565b82106111d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016108b2565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205490565b3360009081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff166112cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c654469737472696275746f725345563a2043616c6c6572206d757360448201527f7420686176652044454641554c545f41444d494e5f524f4c450000000000000060648201526084016108b2565b60005b825181101561132c5761131a7f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab84838151811061130d5761130d614b38565b6020026020010151612dde565b8061132481614a5e565b9150506112ce565b5061091781612e99565b6113408282613016565b6000828152600760205260409020610c0f90826130c5565b610c0f83838360405180602001604052806000815250611b8e565b600061137e600a5490565b821061140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016108b2565b600a828154811061141f5761141f614b38565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806107f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016108b2565b600073ffffffffffffffffffffffffffffffffffffffff8216611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016108b2565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60008281526007602052604081206115c990836130e7565b9392505050565b60606001805461092a90614a0a565b3373ffffffffffffffffffffffffffffffffffffffff851614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4d65726b6c654469737472696275746f725345563a2043616e6e6f7420636f6c60448201527f6c6563742072657761726473000000000000000000000000000000000000000060648201526084016108b2565b60408051602081018790527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b16918101919091526054810184905260009060740160405160208183030381529060405280519060200120905061172383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150849050612d09565b6117af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4d65726b6c654469737472696275746f725345563a20496e76616c696420707260448201527f6f6f66000000000000000000000000000000000000000000000000000000000060648201526084016108b2565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601260205260408120600181015490546117e59190614929565b9050808511611876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c654469737472696275746f725345563a204e6f7468696e6720636c60448201527f61696d61626c650000000000000000000000000000000000000000000000000060648201526084016108b2565b60006118828287614992565b604080518a81526020810189905290810182905290915073ffffffffffffffffffffffffffffffffffffffff8816907fb94bf7f9302edf52a596286915a69b4b0685574cffdedd0712e3c62f2550f0ba9060600160405180910390a26118ea878260006126fe565b600c546040517f70458d850000000000000000000000000000000000000000000000000000000081523360048201526fffffffffffffffffffffffffffffffff8316602482015273ffffffffffffffffffffffffffffffffffffffff909116906370458d8590604401600060405180830381600087803b15801561196d57600080fd5b505af1158015611981573d6000803e3d6000fd5b505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216331415611a0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108b2565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015611b3057600080fd5b505afa158015611b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b689190614645565b9050601154811015611b7b576000611b88565b601154611b889082614992565b91505090565b611b98338361292b565b611c24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108b2565b611c30848484846130f3565b50505050565b3360009081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff16611cf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c654469737472696275746f725345563a2043616c6c6572206d757360448201527f7420686176652044454641554c545f41444d494e5f524f4c450000000000000060648201526084016108b2565b60005b825181101561132c57611d437f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab848381518110611d3657611d36614b38565b6020026020010151613196565b80611d4d81614a5e565b915050611cf7565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611e09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f722060448201527f6e6f6e6578697374656e7420746f6b656e00000000000000000000000000000060648201526084016108b2565b60008281526014602052604081208054611e2290614a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4e90614a0a565b8015611e9b5780601f10611e7057610100808354040283529160200191611e9b565b820191906000526020600020905b815481529060010190602001808311611e7e57829003601f168201915b505050505090506000611eb960408051602081019091526000815290565b9050805160001415611ecc575092915050565b815115611efe578082604051602001611ee6929190614788565b60405160208183030381529060405292505050919050565b611f07846131a0565b949350505050565b60008181526007602052604081206107f29061269e565b61134082826132bc565b3360009081527f72e6a9b491581b344add3f7be10265867e64fdd874e84e97031c08ad09aea58c602052604081205460ff16611fee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4d65726b6c654469737472696275746f725345563a2043616c6c6572206d757360448201527f74206861766520555044415445525f524f4c450000000000000000000000000060648201526084016108b2565b60008681526013602052604090205460ff161561208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c654469737472696275746f725345563a2043616e6e6f742075706460448201527f61746520746f20612070726576696f7573206d65726b6c6520726f6f7400000060648201526084016108b2565b6000600e54600161209e9190614929565b905083811461212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4d65726b6c654469737472696275746f725345563a2043616e206f6e6c79207560448201527f7064617465206e65787420646973747269627574696f6e00000000000000000060648201526084016108b2565b336000908152601660209081526040808320848452909152902054156121d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c654469737472696275746f725345563a205570646174657220616c60448201527f7265616479207375626d6974746564206e657720726f6f74000000000000000060648201526084016108b2565b601054831015612269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c654469737472696275746f725345563a20546f74616c20746f6b6560448201527f6e732063616e6e6f74206465637265617365000000000000000000000000000060648201526084016108b2565b6000601054846122799190614992565b9050806011546122899190614929565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b15801561230e57600080fd5b505afa158015612322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123469190614645565b10156123fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4d65726b6c654469737472696275746f725345563a204469737472696275746960448201527f6f6e20776f756c64206c6561766520636f6e747261637420756e64657266756e60648201527f6465640000000000000000000000000000000000000000000000000000000000608482015260a4016108b2565b33600090815260166020908152604080832085845282528083208b90558a8352601590915281205461242d906001614929565b60008a8152601560205260409020819055600f5490915081141561259657600d899055600089815260136020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600e869055858352601490915290206124a49089896141a2565b5060108590556011805490839060006124bd8385614929565b909155506124cd905033856132e2565b837fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b556572078a8a6040516124ff9291906148b3565b60405180910390a27f57d8ecbe7b76b58585d8a965c3b1f5d9ea66801b41232f59f154f9b2873277be8a858b8b8a60405161253e959493929190614881565b60405180910390a17f9ad874aacbaa905813a0a2c9812df59969335e5c0f5fbd99d98575597fbfad08816125728582614929565b6040805192835260208301919091520160405180910390a18394505050505061259f565b600e5493505050505b95945050505050565b3360009081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff16612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c654469737472696275746f725345563a2043616c6c6572206d757360448201527f7420686176652044454641554c545f41444d494e5f524f4c450000000000000060648201526084016108b2565b61266f81612e99565b50565b61091782826134b0565b60006115c98373ffffffffffffffffffffffffffffffffffffffff84166135a4565b60006107f2825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d630000000000000000000000000000000000000000000000000000000014806107f257506107f2826135f3565b601154821561275b5773ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120805485929061273c908490614929565b9250508190555082601160008282546127559190614992565b90915550505b81156127b85773ffffffffffffffffffffffffffffffffffffffff841660009081526012602052604081206001018054849290612799908490614929565b9250508190555081601160008282546127b29190614992565b90915550505b821515806127c557508115155b15611c305773ffffffffffffffffffffffffffffffffffffffff841660008181526012602052604090819020805460019091015491517f4510314558259843825372fc84b1ae19cb70b8c44805daf4808354e78a05cf6b9261282e928252602082015260400190565b60405180910390a27f9ad874aacbaa905813a0a2c9812df59969335e5c0f5fbd99d98575597fbfad0881836128638683614992565b61286d9190614992565b6040805192835260208301919091520160405180910390a150505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906128e582611431565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166129dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016108b2565b60006129e783611431565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a5657508373ffffffffffffffffffffffffffffffffffffffff16612a3e846109ad565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f07575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff16611f07565b8273ffffffffffffffffffffffffffffffffffffffff16612ab782611431565b73ffffffffffffffffffffffffffffffffffffffff1614612b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016108b2565b73ffffffffffffffffffffffffffffffffffffffff8216612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108b2565b612c07838383613649565b612c1260008261288b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290612c48908490614992565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290612c83908490614929565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600081815b8551811015612dad576000868281518110612d2b57612d2b614b38565b60200260200101519050808311612d6d576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250612d9a565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b5080612da581614a5e565b915050612d0e565b509092149392505050565b600082815260066020526040902060010154612dd4813361374f565b610c0f83836134b0565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561091757600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80612f26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4d65726b6c654469737472696275746f725345563a205570646174652074687260448201527f6573686f6c64206d757374206265206e6f6e2d7a65726f00000000000000000060648201526084016108b2565b612f4f7f73e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab611f0f565b811115612fde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4d65726b6c654469737472696275746f725345563a207468726573686f6c642060448201527f3e2075706461746572730000000000000000000000000000000000000000000060648201526084016108b2565b6040518181527f4a3f39b792c062592e6c20d41d18331563a8de4ba398cd40ef7c9afffd6234959060200160405180910390a1600f55565b73ffffffffffffffffffffffffffffffffffffffff811633146130bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016108b2565b6109178282612dde565b60006115c98373ffffffffffffffffffffffffffffffffffffffff8416613821565b60006115c98383613914565b6130fe848484612a97565b61310a8484848461393e565b611c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108b2565b6111268282612672565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16613254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016108b2565b600061326b60408051602081019091526000815290565b9050600081511161328b57604051806020016040528060008152506115c9565b8061329584613b3d565b6040516020016132a6929190614788565b6040516020818303038152906040529392505050565b6000828152600660205260409020600101546132d8813361374f565b610c0f8383612dde565b73ffffffffffffffffffffffffffffffffffffffff821661335f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108b2565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156133eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108b2565b6133f760008383613649565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546001929061342d908490614929565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661091757600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556135463390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546135eb575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f2565b5060006107f2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f257506107f282613c6f565b73ffffffffffffffffffffffffffffffffffffffff83166136b1576136ac81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b6136ee565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146136ee576136ee8382613cc5565b73ffffffffffffffffffffffffffffffffffffffff821661371257610c0f81613d7c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610c0f57610c0f8282613e2b565b600082815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610917576137a78173ffffffffffffffffffffffffffffffffffffffff166014613e7c565b6137b2836020613e7c565b6040516020016137c39291906147b7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526108b2916004016148c7565b6000818152600183016020526040812054801561390a576000613845600183614992565b855490915060009061385990600190614992565b90508181146138be57600086600001828154811061387957613879614b38565b906000526020600020015490508087600001848154811061389c5761389c614b38565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138cf576138cf614b09565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f2565b60009150506107f2565b600082600001828154811061392b5761392b614b38565b9060005260206000200154905092915050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613b32576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906139b5903390899088908890600401614838565b602060405180830381600087803b1580156139cf57600080fd5b505af1925050508015613a1d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613a1a91810190614628565b60015b613ae7573d808015613a4b576040519150601f19603f3d011682016040523d82523d6000602084013e613a50565b606091505b508051613adf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108b2565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611f07565b506001949350505050565b606081613b7d57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613ba75780613b9181614a5e565b9150613ba09050600a83614941565b9150613b81565b60008167ffffffffffffffff811115613bc257613bc2614b67565b6040519080825280601f01601f191660200182016040528015613bec576020820181803683370190505b5090505b8415611f0757613c01600183614992565b9150613c0e600a86614a97565b613c19906030614929565b60f81b818381518110613c2e57613c2e614b38565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613c68600a86614941565b9450613bf0565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f257506107f2826140bf565b60006001613cd2846114e3565b613cdc9190614992565b600083815260096020526040902054909150808214613d3c5773ffffffffffffffffffffffffffffffffffffffff841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b50600091825260096020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600881528383209183525290812055565b600a54600090613d8e90600190614992565b6000838152600b6020526040812054600a8054939450909284908110613db657613db6614b38565b9060005260206000200154905080600a8381548110613dd757613dd7614b38565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480613e0f57613e0f614b09565b6001900381819060005260206000200160009055905550505050565b6000613e36836114e3565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b60606000613e8b836002614955565b613e96906002614929565b67ffffffffffffffff811115613eae57613eae614b67565b6040519080825280601f01601f191660200182016040528015613ed8576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613f0f57613f0f614b38565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613f7257613f72614b38565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613fae846002614955565b613fb9906001614929565b90505b6001811115614056577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613ffa57613ffa614b38565b1a60f81b82828151811061401057614010614b38565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361404f816149d5565b9050613fbc565b5083156115c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061415257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107f257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f2565b8280546141ae90614a0a565b90600052602060002090601f0160209004810192826141d05760008555614234565b82601f10614207578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555614234565b82800160010185558215614234579182015b82811115614234578235825591602001919060010190614219565b50614240929150614244565b5090565b5b808211156142405760008155600101614245565b803573ffffffffffffffffffffffffffffffffffffffff8116811461427d57600080fd5b919050565b60006020828403121561429457600080fd5b6115c982614259565b600080604083850312156142b057600080fd5b6142b983614259565b91506142c760208401614259565b90509250929050565b6000806000606084860312156142e557600080fd5b6142ee84614259565b92506142fc60208501614259565b9150604084013590509250925092565b6000806000806080858703121561432257600080fd5b61432b85614259565b9350602061433a818701614259565b935060408601359250606086013567ffffffffffffffff8082111561435e57600080fd5b818801915088601f83011261437257600080fd5b81358181111561438457614384614b67565b6143b4847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016148da565b915080825289848285010111156143ca57600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156143fd57600080fd5b61440683614259565b9150602083013561441681614b96565b809150509250929050565b6000806040838503121561443457600080fd5b61443d83614259565b946020939093013593505050565b6000806040838503121561445e57600080fd5b823567ffffffffffffffff8082111561447657600080fd5b818501915085601f83011261448a57600080fd5b813560208282111561449e5761449e614b67565b8160051b92506144af8184016148da565b8281528181019085830185870184018b10156144ca57600080fd5b600096505b848710156144f4576144e081614259565b8352600196909601959183019183016144cf565b509997909101359750505050505050565b60006020828403121561451757600080fd5b81516115c981614b96565b60006020828403121561453457600080fd5b5035919050565b6000806040838503121561454e57600080fd5b823591506142c760208401614259565b60008060008060006080868803121561457657600080fd5b85359450602086013567ffffffffffffffff8082111561459557600080fd5b818801915088601f8301126145a957600080fd5b8135818111156145b857600080fd5b8960208285010111156145ca57600080fd5b9699602092909201985095966040810135965060600135945092505050565b600080604083850312156145fc57600080fd5b50508035926020909101359150565b60006020828403121561461d57600080fd5b81356115c981614ba4565b60006020828403121561463a57600080fd5b81516115c981614ba4565b60006020828403121561465757600080fd5b5051919050565b60008060008060006080868803121561467657600080fd5b8535945061468660208701614259565b935060408601359250606086013567ffffffffffffffff808211156146aa57600080fd5b818801915088601f8301126146be57600080fd5b8135818111156146cd57600080fd5b8960208260051b85010111156146e257600080fd5b9699959850939650602001949392505050565b6000815180845261470d8160208601602086016149a9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000835161479a8184602088016149a9565b8351908301906147ae8183602088016149a9565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516147ef8160178501602088016149a9565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161482c8160288401602088016149a9565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261487760808301846146f5565b9695505050505050565b8581528460208201526080604082015260006148a160808301858761473f565b90508260608301529695505050505050565b602081526000611f0760208301848661473f565b6020815260006115c960208301846146f5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561492157614921614b67565b604052919050565b6000821982111561493c5761493c614aab565b500190565b60008261495057614950614ada565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561498d5761498d614aab565b500290565b6000828210156149a4576149a4614aab565b500390565b60005b838110156149c45781810151838201526020016149ac565b83811115611c305750506000910152565b6000816149e4576149e4614aab565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600181811c90821680614a1e57607f821691505b60208210811415614a58577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614a9057614a90614aab565b5060010190565b600082614aa657614aa6614ada565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b801515811461266f57600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461266f57600080fdfea2646970667358221220e99e0372d813801db6245c8c9b2a64296e5249e1486dfd30f436d3dff2e5848664736f6c6343000806003373e573f9566d61418a34d5de3ff49360f9c51fec37f7486551670290f6285dab0000000000000000000000001559fa1b8f28238fd5d76d9f434ad86fd20d15590000000000000000000000009e3382ca57f4404ac7bf435475eae37e87d1c4530000000000000000000000008f48fe27f68a86786fbbd5d38ea53c2748b234b6000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000a300e1d1ad1eb5ff464395a2f4baa9faa90ee52000000000000000000000000c70c5eeef6fbe1e3efb3a76f31c5d2ae7c49e0590000000000000000000000007d549358b38c9a2c8622c35337010f5caeb5e5a700000000000000000000000000000000000000000000000000000000000000030000000000000000000000000a300e1d1ad1eb5ff464395a2f4baa9faa90ee52000000000000000000000000c70c5eeef6fbe1e3efb3a76f31c5d2ae7c49e0590000000000000000000000007d549358b38c9a2c8622c35337010f5caeb5e5a7