608060405266b1a2bc2ec50000600d553480156200001c57600080fd5b50604051620033a1380380620033a18339810160408190526200003f9162000104565b60408051808201825260048152635761776160e01b6020808301919091528251808401845260088152675068692d5761776160c01b8183015233600090815291829052929020805460ff191660019081179091558055906002620000a48382620001db565b506003620000b38282620001db565b5050506001600160a01b038116620000de576040516342bcdf7f60e11b815260040160405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055620002a7565b6000602082840312156200011757600080fd5b81516001600160a01b03811681146200012f57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016157607f821691505b6020821081036200018257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d657600081815260208120601f850160051c81016020861015620001b15750805b601f850160051c820191505b81811015620001d257828155600101620001bd565b5050505b505050565b81516001600160401b03811115620001f757620001f762000136565b6200020f816200020884546200014c565b8462000188565b602080601f8311600181146200024757600084156200022e5750858301515b600019600386901b1c1916600185901b178555620001d2565b600085815260208120601f198616915b82811015620002785788860151825594840194600190910190840162000257565b5085821015620002975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6130ea80620002b76000396000f3fe6080604052600436106102345760003560e01c80634febfa4e11610138578063a035b1fe116100b0578063b88d4fde1161007f578063c87b56dd11610064578063c87b56dd146106dd578063dc2c7e95146106fd578063e985e9c51461071057600080fd5b8063b88d4fde1461069d578063c5f956af146106bd57600080fd5b8063a035b1fe146105f5578063a22cb4651461060b578063a2d28bab1461062b578063a8a150b81461065857600080fd5b806371dce28c11610107578063826766a1116100ec578063826766a11461058357806382cb6b72146105b057806395d89b41146105e057600080fd5b806371dce28c146105435780637f16d5871461056357600080fd5b80634febfa4e146104b3578063554ae676146104e35780636352211e1461050357806370a082311461052357600080fd5b8063173825d9116101cb5780632f745c591161019a57806342842e0e1161017f57806342842e0e1461044257806346b12e16146104625780634f6ccce71461049357600080fd5b80632f745c59146104025780633bb3a24d1461042257600080fd5b8063173825d91461036a57806318160ddd1461038a57806323b872dd146103a957806323bf2f67146103c957600080fd5b80630a57e0b3116102075780630a57e0b3146102ea5780630e89341c1461030a57806313af40351461032a578063162094c41461034a57600080fd5b806301ffc9a71461023957806306fdde031461026e578063081812fc14610290578063095ea7b3146102c8575b600080fd5b34801561024557600080fd5b50610259610254366004612769565b610759565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b506102836107b5565b60405161026591906127f4565b34801561029c57600080fd5b506102b06102ab366004612807565b610847565b6040516001600160a01b039091168152602001610265565b3480156102d457600080fd5b506102e86102e336600461283c565b61086e565b005b3480156102f657600080fd5b506102e8610305366004612877565b6109a4565b34801561031657600080fd5b50610283610325366004612807565b610a6f565b34801561033657600080fd5b506102e86103453660046128a3565b610ac3565b34801561035657600080fd5b506102e86103653660046129a1565b610b77565b34801561037657600080fd5b506102e86103853660046128a3565b610c0d565b34801561039657600080fd5b50600a545b604051908152602001610265565b3480156103b557600080fd5b506102e86103c43660046129e8565b610cbe565b3480156103d557600080fd5b506102596103e43660046128a3565b6001600160a01b031660009081526020819052604090205460ff1690565b34801561040e57600080fd5b5061039b61041d36600461283c565b610d45565b34801561042e57600080fd5b5061028361043d366004612807565b610ded565b34801561044e57600080fd5b506102e861045d3660046129e8565b610e92565b34801561046e57600080fd5b5061048261047d366004612807565b610ead565b604051610265959493929190612a24565b34801561049f57600080fd5b5061039b6104ae366004612807565b610fa8565b3480156104bf57600080fd5b5061039b6104ce366004612a91565b60ff1660009081526010602052604090205490565b3480156104ef57600080fd5b506102e86104fe366004612b2c565b61104c565b34801561050f57600080fd5b506102b061051e366004612807565b61117d565b34801561052f57600080fd5b5061039b61053e3660046128a3565b6111e2565b34801561054f57600080fd5b506102e861055e366004612877565b61127c565b34801561056f57600080fd5b506102e861057e366004612b50565b611339565b34801561058f57600080fd5b5061039b61059e366004612a91565b60106020526000908152604090205481565b3480156105bc57600080fd5b506102596105cb366004612807565b600e6020526000908152604090205460ff1681565b3480156105ec57600080fd5b506102836113cd565b34801561060157600080fd5b5061039b600d5481565b34801561061757600080fd5b506102e8610626366004612b72565b6113dc565b34801561063757600080fd5b5061064b610646366004612807565b6113eb565b6040516102659190612bae565b34801561066457600080fd5b5061068b610673366004612807565b6000908152600f602052604090206002015460ff1690565b60405160ff9091168152602001610265565b3480156106a957600080fd5b506102e86106b8366004612c38565b61154e565b3480156106c957600080fd5b50600c546102b0906001600160a01b031681565b3480156106e957600080fd5b506102836106f8366004612807565b6115dc565b6102e861070b366004612cb4565b611650565b34801561071c57600080fd5b5061025961072b366004612d4b565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d630000000000000000000000000000000000000000000000000000000014806107af57506107af826118d6565b92915050565b6060600280546107c490612d75565b80601f01602080910402602001604051908101604052809291908181526020018280546107f090612d75565b801561083d5780601f106108125761010080835404028352916020019161083d565b820191906000526020600020905b81548152906001019060200180831161082057829003601f168201915b5050505050905090565b6000610852826119b9565b506000908152600660205260409020546001600160a01b031690565b60006108798261117d565b9050806001600160a01b0316836001600160a01b0316036109075760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806109235750610923813361072b565b6109955760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016108fe565b61099f8383611a20565b505050565b3360009081526020819052604090205460ff166109ed576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600f602090815260409182902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff8616908102919091179091558251858152918201527e4c5e1c84ee1e8e8c68bb3923b5bac01d414e523428cd17c97071fe708bb3d291015b60405180910390a15050565b6000818152600e602052604090205460609060ff16610aba576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107af82610ded565b3360009081526020819052604090205460ff16610b0c576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555133917f619792ba07bec101df538ab277befa333e4cf1c0274f11de7be2a9507b9c9a0691a350565b3360009081526020819052604090205460ff16610bc0576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600f60205260409020600101610bdb8282612e16565b507fd2d827dddfc9c9a02afc5fc68d3251684b36e213a7999ebd90a861f25df4077e8282604051610a63929190612f30565b3360009081526020819052604090205460ff16610c56576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555133917fc191551a88c5609788f3532bd94c06479b61b0040eec65f9cd985428ffea643091a350565b610cc83382611aa6565b610d3a5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016108fe565b61099f838383611b25565b6000610d50836111e2565b8210610dc45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016108fe565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6000818152600f60205260409020600101805460609190610e0d90612d75565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3990612d75565b8015610e865780601f10610e5b57610100808354040283529160200191610e86565b820191906000526020600020905b815481529060010190602001808311610e6957829003601f168201915b50505050509050919050565b61099f8383836040518060200160405280600081525061154e565b600f602090815260009182526040918290208251608081018452815460ff8082168352610100820481169483019490945262010000810484169482019490945263010000009093049091166060830152600181018054610f0c90612d75565b80601f0160208091040260200160405190810160405280929190818152602001828054610f3890612d75565b8015610f855780601f10610f5a57610100808354040283529160200191610f85565b820191906000526020600020905b815481529060010190602001808311610f6857829003601f168201915b505050506002830154600390930154919260ff8082169361010090920416915085565b6000610fb3600a5490565b82106110275760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016108fe565b600a828154811061103a5761103a612f49565b90600052602060002001549050919050565b3360009081526020819052604090205460ff16611095576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600f6020908152604091829020835181549285015184860151606087015160ff9081166301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff9282166201000002929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff938216610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009097169190941617949094171617919091179055517f244abc17bb16e23a3ee639d6073482c75e12e4558e63315297d943a5069a4c2790610a639084908490612f78565b6000818152600460205260408120546001600160a01b0316806107af5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016108fe565b60006001600160a01b0382166112605760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016108fe565b506001600160a01b031660009081526005602052604090205490565b3360009081526020819052604090205460ff166112c5576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600f602090815260409182902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff85169081179091558251858152918201527f26b503995a8d5efb729ffb72be7bf3e8e617971c5bd2b5aa607f69ce07d36cd39101610a63565b3360009081526020819052604090205460ff16611382576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600f602090815260409182902060030183905581518481529081018390527fcaac45fba4e23f90b030fd084aae37534807ef6a7a5cc175509dc8783e4965b29101610a63565b6060600380546107c490612d75565b6113e7338383611d91565b5050565b6040805161012081018252600060a0820181815260c0830182905260e083018290526101008301829052825260606020830181905292820181905291810182905260808101919091526000828152600f602090815260409182902082516101208101909352805460ff80821660a08601908152610100808404831660c0880152620100008404831660e0880152630100000090930490911691850191909152835260018101805491928401916114a090612d75565b80601f01602080910402602001604051908101604052809291908181526020018280546114cc90612d75565b80156115195780601f106114ee57610100808354040283529160200191611519565b820191906000526020600020905b8154815290600101906020018083116114fc57829003601f168201915b5050509183525050600282015460ff808216602084015261010090910416604082015260039091015460609091015292915050565b6115583383611aa6565b6115ca5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016108fe565b6115d684848484611e7d565b50505050565b60606115e7826119b9565b60006115fe60408051602081019091526000815290565b9050600081511161161e5760405180602001604052806000815250611649565b8061162884611f06565b604051602001611639929190612fb9565b6040516020818303038152906040525b9392505050565b3360009081526020819052604090205460ff16611699576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116a1611fc4565b6001600160a01b0387166116e1576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000868152600e602052604090205460ff161561172d576040517fc6d6127a000000000000000000000000000000000000000000000000000000008152600481018790526024016108fe565b600d54341015611769576040517f85c247cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117738686610b77565b61177d868461104c565b61178786836109a4565b6117918682611339565b61179b868561127c565b60ff841660009081526010602052604081208054916117b983613017565b90915550506000868152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556117ff878761201d565b600c54600d546040516000926001600160a01b031691908381818185875af1925050503d806000811461184e576040519150601f19603f3d011682016040523d82523d6000602084013e611853565b606091505b505090508061188e576040517f1a77b59600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405187815233907f93f76a52d8da31dad7409376d1c037e919bdceef116700ec63c53c641196962e9060200160405180910390a2506118cd60018055565b50505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061196957507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107af57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107af565b6000818152600460205260409020546001600160a01b0316611a1d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016108fe565b50565b600081815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611a6d8261117d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ab28361117d565b9050806001600160a01b0316846001600160a01b03161480611af957506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80611b1d5750836001600160a01b0316611b1284610847565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b388261117d565b6001600160a01b031614611bb45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016108fe565b6001600160a01b038216611c2f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108fe565b611c3c83838360016121ce565b826001600160a01b0316611c4f8261117d565b6001600160a01b031614611ccb5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016108fe565b600081815260066020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b038781168086526005855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600490945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603611df25760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108fe565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e88848484611b25565b611e948484848461230a565b6115d65760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108fe565b60606000611f13836124c9565b600101905060008167ffffffffffffffff811115611f3357611f336128be565b6040519080825280601f01601f191660200182016040528015611f5d576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611f6757509392505050565b6002600154036120165760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108fe565b6002600155565b6001600160a01b0382166120735760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108fe565b6000818152600460205260409020546001600160a01b0316156120d85760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108fe565b6120e66000838360016121ce565b6000818152600460205260409020546001600160a01b03161561214b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108fe565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60018111156122455760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016108fe565b816001600160a01b0385166122a15761229c81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b6122c4565b836001600160a01b0316856001600160a01b0316146122c4576122c485826125ab565b6001600160a01b0384166122e0576122db81612648565b612303565b846001600160a01b0316846001600160a01b0316146123035761230384826126f7565b5050505050565b60006001600160a01b0384163b156124be576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a029061236790339089908890889060040161304f565b6020604051808303816000875af19250505080156123c0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123bd9181019061308b565b60015b612473573d8080156123ee576040519150601f19603f3d011682016040523d82523d6000602084013e6123f3565b606091505b50805160000361246b5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108fe565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611b1d565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612512577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061253e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061255c57662386f26fc10000830492506010015b6305f5e1008310612574576305f5e100830492506008015b612710831061258857612710830492506004015b6064831061259a576064830492506002015b600a83106107af5760010192915050565b600060016125b8846111e2565b6125c291906130a8565b600083815260096020526040902054909150808214612615576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a5460009061265a906001906130a8565b6000838152600b6020526040812054600a805493945090928490811061268257612682612f49565b9060005260206000200154905080600a83815481106126a3576126a3612f49565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a8054806126db576126db6130bb565b6001900381819060005260206000200160009055905550505050565b6000612702836111e2565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611a1d57600080fd5b60006020828403121561277b57600080fd5b81356116498161273b565b60005b838110156127a1578181015183820152602001612789565b50506000910152565b600081518084526127c2816020860160208601612786565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061164960208301846127aa565b60006020828403121561281957600080fd5b5035919050565b80356001600160a01b038116811461283757600080fd5b919050565b6000806040838503121561284f57600080fd5b61285883612820565b946020939093013593505050565b803560ff8116811461283757600080fd5b6000806040838503121561288a57600080fd5b8235915061289a60208401612866565b90509250929050565b6000602082840312156128b557600080fd5b61164982612820565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115612908576129086128be565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561294e5761294e6128be565b8160405280935085815286868601111561296757600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261299257600080fd5b611649838335602085016128ed565b600080604083850312156129b457600080fd5b82359150602083013567ffffffffffffffff8111156129d257600080fd5b6129de85828601612981565b9150509250929050565b6000806000606084860312156129fd57600080fd5b612a0684612820565b9250612a1460208501612820565b9150604084013590509250925092565b6000610100612a60838960ff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301525050565b806080840152612a72818401886127aa565b60ff96871660a08501529490951660c08301525060e001529392505050565b600060208284031215612aa357600080fd5b61164982612866565b600060808284031215612abe57600080fd5b6040516080810181811067ffffffffffffffff82111715612ae157612ae16128be565b604052905080612af083612866565b8152612afe60208401612866565b6020820152612b0f60408401612866565b6040820152612b2060608401612866565b60608201525092915050565b60008060a08385031215612b3f57600080fd5b8235915061289a8460208501612aac565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b60008060408385031215612b8557600080fd5b612b8e83612820565b915060208301358015158114612ba357600080fd5b809150509250929050565b60208152612bed60208201835160ff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301525050565b600060208301516101008060a0850152612c0b6101208501836127aa565b604086015160ff90811660c087015260608701511660e08601526080909501519301929092525090919050565b60008060008060808587031215612c4e57600080fd5b612c5785612820565b9350612c6560208601612820565b925060408501359150606085013567ffffffffffffffff811115612c8857600080fd5b8501601f81018713612c9957600080fd5b612ca8878235602084016128ed565b91505092959194509250565b6000806000806000806000610140888a031215612cd057600080fd5b612cd988612820565b965060208801359550604088013567ffffffffffffffff811115612cfc57600080fd5b612d088a828b01612981565b955050612d1760608901612866565b9350612d268960808a01612aac565b9250612d356101008901612866565b9150610120880135905092959891949750929550565b60008060408385031215612d5e57600080fd5b612d6783612820565b915061289a60208401612820565b600181811c90821680612d8957607f821691505b602082108103612dc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561099f57600081815260208120601f850160051c81016020861015612def5750805b601f850160051c820191505b81811015612e0e57828155600101612dfb565b505050505050565b815167ffffffffffffffff811115612e3057612e306128be565b612e4481612e3e8454612d75565b84612dc8565b602080601f831160018114612e975760008415612e615750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612e0e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ee457888601518255948401946001909101908401612ec5565b5085821015612f2057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b828152604060208201526000611b1d60408301846127aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b82815260a08101611649602083018460ff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301525050565b60008351612fcb818460208801612786565b835190830190612fdf818360208801612786565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304857613048612fe8565b5060010190565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261308160808301846127aa565b9695505050505050565b60006020828403121561309d57600080fd5b81516116498161273b565b818103818111156107af576107af612fe8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd000000000000000000000000e35e5f8b912c25cdb6b00b347cb856467e4112a3