UNPKG

@nubit/kzg-js

Version:

WebAssembly-based KZG4844 commitment scheme

4 lines 9.47 MB
var AU = Object.defineProperty; var fU = (N, J, E) => J in N ? AU(N, J, { enumerable: !0, configurable: !0, writable: !0, value: E }) : N[J] = E; var L = (N, J, E) => fU(N, typeof J != "symbol" ? J + "" : J, E); const DU = "KCgpID0+IHsKICBjb25zdCBRID0gKCkgPT4gewogICAgY29uc3QgdyA9IG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIik7CiAgICByZXR1cm4gdy5jb2RlID0gIkVOT1NZUyIsIHc7CiAgfTsKICBpZiAoIWdsb2JhbFRoaXMuZnMpIHsKICAgIGxldCB3ID0gIiI7CiAgICBnbG9iYWxUaGlzLmZzID0gewogICAgICBjb25zdGFudHM6IHsgT19XUk9OTFk6IC0xLCBPX1JEV1I6IC0xLCBPX0NSRUFUOiAtMSwgT19UUlVOQzogLTEsIE9fQVBQRU5EOiAtMSwgT19FWENMOiAtMSB9LAogICAgICAvLyB1bnVzZWQKICAgICAgd3JpdGVTeW5jKEMsIEkpIHsKICAgICAgICB3ICs9IE4uZGVjb2RlKEkpOwogICAgICAgIGNvbnN0IEUgPSB3Lmxhc3RJbmRleE9mKGAKYCk7CiAgICAgICAgcmV0dXJuIEUgIT0gLTEgJiYgKGNvbnNvbGUubG9nKHcuc3Vic3RyaW5nKDAsIEUpKSwgdyA9IHcuc3Vic3RyaW5nKEUgKyAxKSksIEkubGVuZ3RoOwogICAgICB9LAogICAgICB3cml0ZShDLCBJLCBFLCBNLCBHLCBrKSB7CiAgICAgICAgaWYgKEUgIT09IDAgfHwgTSAhPT0gSS5sZW5ndGggfHwgRyAhPT0gbnVsbCkgewogICAgICAgICAgayhRKCkpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBVID0gdGhpcy53cml0ZVN5bmMoQywgSSk7CiAgICAgICAgayhudWxsLCBVKTsKICAgICAgfSwKICAgICAgY2htb2QoQywgSSwgRSkgewogICAgICAgIEUoUSgpKTsKICAgICAgfSwKICAgICAgY2hvd24oQywgSSwgRSwgTSkgewogICAgICAgIE0oUSgpKTsKICAgICAgfSwKICAgICAgY2xvc2UoQywgSSkgewogICAgICAgIEkoUSgpKTsKICAgICAgfSwKICAgICAgZmNobW9kKEMsIEksIEUpIHsKICAgICAgICBFKFEoKSk7CiAgICAgIH0sCiAgICAgIGZjaG93bihDLCBJLCBFLCBNKSB7CiAgICAgICAgTShRKCkpOwogICAgICB9LAogICAgICBmc3RhdChDLCBJKSB7CiAgICAgICAgSShRKCkpOwogICAgICB9LAogICAgICBmc3luYyhDLCBJKSB7CiAgICAgICAgSShudWxsKTsKICAgICAgfSwKICAgICAgZnRydW5jYXRlKEMsIEksIEUpIHsKICAgICAgICBFKFEoKSk7CiAgICAgIH0sCiAgICAgIGxjaG93bihDLCBJLCBFLCBNKSB7CiAgICAgICAgTShRKCkpOwogICAgICB9LAogICAgICBsaW5rKEMsIEksIEUpIHsKICAgICAgICBFKFEoKSk7CiAgICAgIH0sCiAgICAgIGxzdGF0KEMsIEkpIHsKICAgICAgICBJKFEoKSk7CiAgICAgIH0sCiAgICAgIG1rZGlyKEMsIEksIEUpIHsKICAgICAgICBFKFEoKSk7CiAgICAgIH0sCiAgICAgIG9wZW4oQywgSSwgRSwgTSkgewogICAgICAgIE0oUSgpKTsKICAgICAgfSwKICAgICAgcmVhZChDLCBJLCBFLCBNLCBHLCBrKSB7CiAgICAgICAgayhRKCkpOwogICAgICB9LAogICAgICByZWFkZGlyKEMsIEkpIHsKICAgICAgICBJKFEoKSk7CiAgICAgIH0sCiAgICAgIHJlYWRsaW5rKEMsIEkpIHsKICAgICAgICBJKFEoKSk7CiAgICAgIH0sCiAgICAgIHJlbmFtZShDLCBJLCBFKSB7CiAgICAgICAgRShRKCkpOwogICAgICB9LAogICAgICBybWRpcihDLCBJKSB7CiAgICAgICAgSShRKCkpOwogICAgICB9LAogICAgICBzdGF0KEMsIEkpIHsKICAgICAgICBJKFEoKSk7CiAgICAgIH0sCiAgICAgIHN5bWxpbmsoQywgSSwgRSkgewogICAgICAgIEUoUSgpKTsKICAgICAgfSwKICAgICAgdHJ1bmNhdGUoQywgSSwgRSkgewogICAgICAgIEUoUSgpKTsKICAgICAgfSwKICAgICAgdW5saW5rKEMsIEkpIHsKICAgICAgICBJKFEoKSk7CiAgICAgIH0sCiAgICAgIHV0aW1lcyhDLCBJLCBFLCBNKSB7CiAgICAgICAgTShRKCkpOwogICAgICB9CiAgICB9OwogIH0KICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzIHx8IChnbG9iYWxUaGlzLnByb2Nlc3MgPSB7CiAgICBnZXR1aWQoKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0sCiAgICBnZXRnaWQoKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0sCiAgICBnZXRldWlkKCkgewogICAgICByZXR1cm4gLTE7CiAgICB9LAogICAgZ2V0ZWdpZCgpIHsKICAgICAgcmV0dXJuIC0xOwogICAgfSwKICAgIGdldGdyb3VwcygpIHsKICAgICAgdGhyb3cgUSgpOwogICAgfSwKICAgIHBpZDogLTEsCiAgICBwcGlkOiAtMSwKICAgIHVtYXNrKCkgewogICAgICB0aHJvdyBRKCk7CiAgICB9LAogICAgY3dkKCkgewogICAgICB0aHJvdyBRKCk7CiAgICB9LAogICAgY2hkaXIoKSB7CiAgICAgIHRocm93IFEoKTsKICAgIH0KICB9KSwgIWdsb2JhbFRoaXMuY3J5cHRvKQogICAgdGhyb3cgbmV3IEVycm9yKCJnbG9iYWxUaGlzLmNyeXB0byBpcyBub3QgYXZhaWxhYmxlLCBwb2x5ZmlsbCByZXF1aXJlZCAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBvbmx5KSIpOwogIGlmICghZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZSkKICAgIHRocm93IG5ldyBFcnJvcigiZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZSBpcyBub3QgYXZhaWxhYmxlLCBwb2x5ZmlsbCByZXF1aXJlZCAocGVyZm9ybWFuY2Uubm93IG9ubHkpIik7CiAgaWYgKCFnbG9iYWxUaGlzLlRleHRFbmNvZGVyKQogICAgdGhyb3cgbmV3IEVycm9yKCJnbG9iYWxUaGlzLlRleHRFbmNvZGVyIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkIik7CiAgaWYgKCFnbG9iYWxUaGlzLlRleHREZWNvZGVyKQogICAgdGhyb3cgbmV3IEVycm9yKCJnbG9iYWxUaGlzLlRleHREZWNvZGVyIGlzIG5vdCBhdmFpbGFibGUsIHBvbHlmaWxsIHJlcXVpcmVkIik7CiAgY29uc3QgZyA9IG5ldyBUZXh0RW5jb2RlcigidXRmLTgiKSwgTiA9IG5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTsKICBnbG9iYWxUaGlzLkdvID0gY2xhc3MgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHRoaXMuYXJndiA9IFsianMiXSwgdGhpcy5lbnYgPSB7fSwgdGhpcy5leGl0ID0gKEEpID0+IHsKICAgICAgICBBICE9PSAwICYmIGNvbnNvbGUud2FybigiZXhpdCBjb2RlOiIsIEEpOwogICAgICB9LCB0aGlzLl9leGl0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChBKSA9PiB7CiAgICAgICAgdGhpcy5fcmVzb2x2ZUV4aXRQcm9taXNlID0gQTsKICAgICAgfSksIHRoaXMuX3BlbmRpbmdFdmVudCA9IG51bGwsIHRoaXMuX3NjaGVkdWxlZFRpbWVvdXRzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgdGhpcy5fbmV4dENhbGxiYWNrVGltZW91dElEID0gMTsKICAgICAgY29uc3QgdyA9IChBLCBCKSA9PiB7CiAgICAgICAgdGhpcy5tZW0uc2V0VWludDMyKEEgKyAwLCBCLCAhMCksIHRoaXMubWVtLnNldFVpbnQzMihBICsgNCwgTWF0aC5mbG9vcihCIC8gNDI5NDk2NzI5NiksICEwKTsKICAgICAgfSwgQyA9IChBKSA9PiB7CiAgICAgICAgY29uc3QgQiA9IHRoaXMubWVtLmdldFVpbnQzMihBICsgMCwgITApLCBEID0gdGhpcy5tZW0uZ2V0SW50MzIoQSArIDQsICEwKTsKICAgICAgICByZXR1cm4gQiArIEQgKiA0Mjk0OTY3Mjk2OwogICAgICB9LCBJID0gKEEpID0+IHsKICAgICAgICBjb25zdCBCID0gdGhpcy5tZW0uZ2V0RmxvYXQ2NChBLCAhMCk7CiAgICAgICAgaWYgKEIgPT09IDApCiAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCFpc05hTihCKSkKICAgICAgICAgIHJldHVybiBCOwogICAgICAgIGNvbnN0IEQgPSB0aGlzLm1lbS5nZXRVaW50MzIoQSwgITApOwogICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXNbRF07CiAgICAgIH0sIEUgPSAoQSwgQikgPT4gewogICAgICAgIGlmICh0eXBlb2YgQiA9PSAibnVtYmVyIiAmJiBCICE9PSAwKSB7CiAgICAgICAgICBpZiAoaXNOYU4oQikpIHsKICAgICAgICAgICAgdGhpcy5tZW0uc2V0VWludDMyKEEgKyA0LCAyMTQ2OTU5MzYwLCAhMCksIHRoaXMubWVtLnNldFVpbnQzMihBLCAwLCAhMCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMubWVtLnNldEZsb2F0NjQoQSwgQiwgITApOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoQiA9PT0gdm9pZCAwKSB7CiAgICAgICAgICB0aGlzLm1lbS5zZXRGbG9hdDY0KEEsIDAsICEwKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbGV0IHkgPSB0aGlzLl9pZHMuZ2V0KEIpOwogICAgICAgIHkgPT09IHZvaWQgMCAmJiAoeSA9IHRoaXMuX2lkUG9vbC5wb3AoKSwgeSA9PT0gdm9pZCAwICYmICh5ID0gdGhpcy5fdmFsdWVzLmxlbmd0aCksIHRoaXMuX3ZhbHVlc1t5XSA9IEIsIHRoaXMuX2dvUmVmQ291bnRzW3ldID0gMCwgdGhpcy5faWRzLnNldChCLCB5KSksIHRoaXMuX2dvUmVmQ291bnRzW3ldKys7CiAgICAgICAgbGV0IFkgPSAwOwogICAgICAgIHN3aXRjaCAodHlwZW9mIEIpIHsKICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgIEIgIT09IG51bGwgJiYgKFkgPSAxKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICBZID0gMjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJzeW1ib2wiOgogICAgICAgICAgICBZID0gMzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgIFkgPSA0OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgdGhpcy5tZW0uc2V0VWludDMyKEEgKyA0LCAyMTQ2OTU5MzYwIHwgWSwgITApLCB0aGlzLm1lbS5zZXRVaW50MzIoQSwgeSwgITApOwogICAgICB9LCBNID0gKEEpID0+IHsKICAgICAgICBjb25zdCBCID0gQyhBICsgMCksIEQgPSBDKEEgKyA4KTsKICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodGhpcy5faW5zdC5leHBvcnRzLm1lbS5idWZmZXIsIEIsIEQpOwogICAgICB9LCBHID0gKEEpID0+IHsKICAgICAgICBjb25zdCBCID0gQyhBICsgMCksIEQgPSBDKEEgKyA4KSwgeSA9IG5ldyBBcnJheShEKTsKICAgICAgICBmb3IgKGxldCBZID0gMDsgWSA8IEQ7IFkrKykKICAgICAgICAgIHlbWV0gPSBJKEIgKyBZICogOCk7CiAgICAgICAgcmV0dXJuIHk7CiAgICAgIH0sIGsgPSAoQSkgPT4gewogICAgICAgIGNvbnN0IEIgPSBDKEEgKyAwKSwgRCA9IEMoQSArIDgpOwogICAgICAgIHJldHVybiBOLmRlY29kZShuZXcgRGF0YVZpZXcodGhpcy5faW5zdC5leHBvcnRzLm1lbS5idWZmZXIsIEIsIEQpKTsKICAgICAgfSwgVSA9IERhdGUubm93KCkgLSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgdGhpcy5pbXBvcnRPYmplY3QgPSB7CiAgICAgICAgX2dvdGVzdDogewogICAgICAgICAgYWRkOiAoQSwgQikgPT4gQSArIEIKICAgICAgICB9LAogICAgICAgIGdvanM6IHsKICAgICAgICAgIC8vIEdvJ3MgU1AgZG9lcyBub3QgY2hhbmdlIGFzIGxvbmcgYXMgbm8gR28gY29kZSBpcyBydW5uaW5nLiBTb21lIG9wZXJhdGlvbnMgKGUuZy4gY2FsbHMsIGdldHRlcnMgYW5kIHNldHRlcnMpCiAgICAgICAgICAvLyBtYXkgc3luY2hyb25vdXNseSB0cmlnZ2VyIGEgR28gZXZlbnQgaGFuZGxlci4gVGhpcyBtYWtlcyBHbyBjb2RlIGdldCBleGVjdXRlZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBpbXBvcnRlZAogICAgICAgICAgLy8gZnVuY3Rpb24uIEEgZ29yb3V0aW5lIGNhbiBzd2l0Y2ggdG8gYSBuZXcgc3RhY2sgaWYgdGhlIGN1cnJlbnQgc3RhY2sgaXMgdG9vIHNtYWxsIChzZWUgbW9yZXN0YWNrIGZ1bmN0aW9uKS4KICAgICAgICAgIC8vIFRoaXMgY2hhbmdlcyB0aGUgU1AsIHRodXMgd2UgaGF2ZSB0byB1cGRhdGUgdGhlIFNQIHVzZWQgYnkgdGhlIGltcG9ydGVkIGZ1bmN0aW9uLgogICAgICAgICAgLy8gZnVuYyB3YXNtRXhpdChjb2RlIGludDMyKQogICAgICAgICAgInJ1bnRpbWUud2FzbUV4aXQiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgY29uc3QgQiA9IHRoaXMubWVtLmdldEludDMyKEEgKyA4LCAhMCk7CiAgICAgICAgICAgIHRoaXMuZXhpdGVkID0gITAsIGRlbGV0ZSB0aGlzLl9pbnN0LCBkZWxldGUgdGhpcy5fdmFsdWVzLCBkZWxldGUgdGhpcy5fZ29SZWZDb3VudHMsIGRlbGV0ZSB0aGlzLl9pZHMsIGRlbGV0ZSB0aGlzLl9pZFBvb2wsIHRoaXMuZXhpdChCKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIHdhc21Xcml0ZShmZCB1aW50cHRyLCBwIHVuc2FmZS5Qb2ludGVyLCBuIGludDMyKQogICAgICAgICAgInJ1bnRpbWUud2FzbVdyaXRlIjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDA7CiAgICAgICAgICAgIGNvbnN0IEIgPSBDKEEgKyA4KSwgRCA9IEMoQSArIDE2KSwgeSA9IHRoaXMubWVtLmdldEludDMyKEEgKyAyNCwgITApOwogICAgICAgICAgICBmcy53cml0ZVN5bmMoQiwgbmV3IFVpbnQ4QXJyYXkodGhpcy5faW5zdC5leHBvcnRzLm1lbS5idWZmZXIsIEQsIHkpKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIHJlc2V0TWVtb3J5RGF0YVZpZXcoKQogICAgICAgICAgInJ1bnRpbWUucmVzZXRNZW1vcnlEYXRhVmlldyI6IChBKSA9PiB7CiAgICAgICAgICAgIHRoaXMubWVtID0gbmV3IERhdGFWaWV3KHRoaXMuX2luc3QuZXhwb3J0cy5tZW0uYnVmZmVyKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIG5hbm90aW1lMSgpIGludDY0CiAgICAgICAgICAicnVudGltZS5uYW5vdGltZTEiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMCwgdyhBICsgOCwgKFUgKyBwZXJmb3JtYW5jZS5ub3coKSkgKiAxZTYpOwogICAgICAgICAgfSwKICAgICAgICAgIC8vIGZ1bmMgd2FsbHRpbWUoKSAoc2VjIGludDY0LCBuc2VjIGludDMyKQogICAgICAgICAgInJ1bnRpbWUud2FsbHRpbWUiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgY29uc3QgQiA9ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgICAgICAgICB3KEEgKyA4LCBCIC8gMWUzKSwgdGhpcy5tZW0uc2V0SW50MzIoQSArIDE2LCBCICUgMWUzICogMWU2LCAhMCk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyBzY2hlZHVsZVRpbWVvdXRFdmVudChkZWxheSBpbnQ2NCkgaW50MzIKICAgICAgICAgICJydW50aW1lLnNjaGVkdWxlVGltZW91dEV2ZW50IjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDA7CiAgICAgICAgICAgIGNvbnN0IEIgPSB0aGlzLl9uZXh0Q2FsbGJhY2tUaW1lb3V0SUQ7CiAgICAgICAgICAgIHRoaXMuX25leHRDYWxsYmFja1RpbWVvdXRJRCsrLCB0aGlzLl9zY2hlZHVsZWRUaW1lb3V0cy5zZXQoQiwgc2V0VGltZW91dCgKICAgICAgICAgICAgICAoKSA9PiB7CiAgICAgICAgICAgICAgICBmb3IgKHRoaXMuX3Jlc3VtZSgpOyB0aGlzLl9zY2hlZHVsZWRUaW1lb3V0cy5oYXMoQik7ICkKICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCJzY2hlZHVsZVRpbWVvdXRFdmVudDogbWlzc2VkIHRpbWVvdXQgZXZlbnQiKSwgdGhpcy5fcmVzdW1lKCk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBDKEEgKyA4KQogICAgICAgICAgICApKSwgdGhpcy5tZW0uc2V0SW50MzIoQSArIDE2LCBCLCAhMCk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyBjbGVhclRpbWVvdXRFdmVudChpZCBpbnQzMikKICAgICAgICAgICJydW50aW1lLmNsZWFyVGltZW91dEV2ZW50IjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDA7CiAgICAgICAgICAgIGNvbnN0IEIgPSB0aGlzLm1lbS5nZXRJbnQzMihBICsgOCwgITApOwogICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2NoZWR1bGVkVGltZW91dHMuZ2V0KEIpKSwgdGhpcy5fc2NoZWR1bGVkVGltZW91dHMuZGVsZXRlKEIpOwogICAgICAgICAgfSwKICAgICAgICAgIC8vIGZ1bmMgZ2V0UmFuZG9tRGF0YShyIFtdYnl0ZSkKICAgICAgICAgICJydW50aW1lLmdldFJhbmRvbURhdGEiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMCwgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhNKEEgKyA4KSk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyBmaW5hbGl6ZVJlZih2IHJlZikKICAgICAgICAgICJzeXNjYWxsL2pzLmZpbmFsaXplUmVmIjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDA7CiAgICAgICAgICAgIGNvbnN0IEIgPSB0aGlzLm1lbS5nZXRVaW50MzIoQSArIDgsICEwKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2dvUmVmQ291bnRzW0JdLS0sIHRoaXMuX2dvUmVmQ291bnRzW0JdID09PSAwKSB7CiAgICAgICAgICAgICAgY29uc3QgRCA9IHRoaXMuX3ZhbHVlc1tCXTsKICAgICAgICAgICAgICB0aGlzLl92YWx1ZXNbQl0gPSBudWxsLCB0aGlzLl9pZHMuZGVsZXRlKEQpLCB0aGlzLl9pZFBvb2wucHVzaChCKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIC8vIGZ1bmMgc3RyaW5nVmFsKHZhbHVlIHN0cmluZykgcmVmCiAgICAgICAgICAic3lzY2FsbC9qcy5zdHJpbmdWYWwiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMCwgRShBICsgMjQsIGsoQSArIDgpKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIHZhbHVlR2V0KHYgcmVmLCBwIHN0cmluZykgcmVmCiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZUdldCI6IChBKSA9PiB7CiAgICAgICAgICAgIEEgPj4+PSAwOwogICAgICAgICAgICBjb25zdCBCID0gUmVmbGVjdC5nZXQoSShBICsgOCksIGsoQSArIDE2KSk7CiAgICAgICAgICAgIEEgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMCwgRShBICsgMzIsIEIpOwogICAgICAgICAgfSwKICAgICAgICAgIC8vIGZ1bmMgdmFsdWVTZXQodiByZWYsIHAgc3RyaW5nLCB4IHJlZikKICAgICAgICAgICJzeXNjYWxsL2pzLnZhbHVlU2V0IjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDAsIFJlZmxlY3Quc2V0KEkoQSArIDgpLCBrKEEgKyAxNiksIEkoQSArIDMyKSk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyB2YWx1ZURlbGV0ZSh2IHJlZiwgcCBzdHJpbmcpCiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZURlbGV0ZSI6IChBKSA9PiB7CiAgICAgICAgICAgIEEgPj4+PSAwLCBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KEkoQSArIDgpLCBrKEEgKyAxNikpOwogICAgICAgICAgfSwKICAgICAgICAgIC8vIGZ1bmMgdmFsdWVJbmRleCh2IHJlZiwgaSBpbnQpIHJlZgogICAgICAgICAgInN5c2NhbGwvanMudmFsdWVJbmRleCI6IChBKSA9PiB7CiAgICAgICAgICAgIEEgPj4+PSAwLCBFKEEgKyAyNCwgUmVmbGVjdC5nZXQoSShBICsgOCksIEMoQSArIDE2KSkpOwogICAgICAgICAgfSwKICAgICAgICAgIC8vIHZhbHVlU2V0SW5kZXgodiByZWYsIGkgaW50LCB4IHJlZikKICAgICAgICAgICJzeXNjYWxsL2pzLnZhbHVlU2V0SW5kZXgiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMCwgUmVmbGVjdC5zZXQoSShBICsgOCksIEMoQSArIDE2KSwgSShBICsgMjQpKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIHZhbHVlQ2FsbCh2IHJlZiwgbSBzdHJpbmcsIGFyZ3MgW11yZWYpIChyZWYsIGJvb2wpCiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZUNhbGwiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBjb25zdCBCID0gSShBICsgOCksIEQgPSBSZWZsZWN0LmdldChCLCBrKEEgKyAxNikpLCB5ID0gRyhBICsgMzIpLCBZID0gUmVmbGVjdC5hcHBseShELCBCLCB5KTsKICAgICAgICAgICAgICBBID0gdGhpcy5faW5zdC5leHBvcnRzLmdldHNwKCkgPj4+IDAsIEUoQSArIDU2LCBZKSwgdGhpcy5tZW0uc2V0VWludDgoQSArIDY0LCAxKTsKICAgICAgICAgICAgfSBjYXRjaCAoQikgewogICAgICAgICAgICAgIEEgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMCwgRShBICsgNTYsIEIpLCB0aGlzLm1lbS5zZXRVaW50OChBICsgNjQsIDApOwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyB2YWx1ZUludm9rZSh2IHJlZiwgYXJncyBbXXJlZikgKHJlZiwgYm9vbCkKICAgICAgICAgICJzeXNjYWxsL2pzLnZhbHVlSW52b2tlIjogKEEpID0+IHsKICAgICAgICAgICAgQSA+Pj49IDA7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgY29uc3QgQiA9IEkoQSArIDgpLCBEID0gRyhBICsgMTYpLCB5ID0gUmVmbGVjdC5hcHBseShCLCB2b2lkIDAsIEQpOwogICAgICAgICAgICAgIEEgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMCwgRShBICsgNDAsIHkpLCB0aGlzLm1lbS5zZXRVaW50OChBICsgNDgsIDEpOwogICAgICAgICAgICB9IGNhdGNoIChCKSB7CiAgICAgICAgICAgICAgQSA9IHRoaXMuX2luc3QuZXhwb3J0cy5nZXRzcCgpID4+PiAwLCBFKEEgKyA0MCwgQiksIHRoaXMubWVtLnNldFVpbnQ4KEEgKyA0OCwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIHZhbHVlTmV3KHYgcmVmLCBhcmdzIFtdcmVmKSAocmVmLCBib29sKQogICAgICAgICAgInN5c2NhbGwvanMudmFsdWVOZXciOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBjb25zdCBCID0gSShBICsgOCksIEQgPSBHKEEgKyAxNiksIHkgPSBSZWZsZWN0LmNvbnN0cnVjdChCLCBEKTsKICAgICAgICAgICAgICBBID0gdGhpcy5faW5zdC5leHBvcnRzLmdldHNwKCkgPj4+IDAsIEUoQSArIDQwLCB5KSwgdGhpcy5tZW0uc2V0VWludDgoQSArIDQ4LCAxKTsKICAgICAgICAgICAgfSBjYXRjaCAoQikgewogICAgICAgICAgICAgIEEgPSB0aGlzLl9pbnN0LmV4cG9ydHMuZ2V0c3AoKSA+Pj4gMCwgRShBICsgNDAsIEIpLCB0aGlzLm1lbS5zZXRVaW50OChBICsgNDgsIDApOwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyB2YWx1ZUxlbmd0aCh2IHJlZikgaW50CiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZUxlbmd0aCI6IChBKSA9PiB7CiAgICAgICAgICAgIEEgPj4+PSAwLCB3KEEgKyAxNiwgcGFyc2VJbnQoSShBICsgOCkubGVuZ3RoKSk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gdmFsdWVQcmVwYXJlU3RyaW5nKHYgcmVmKSAocmVmLCBpbnQpCiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZVByZXBhcmVTdHJpbmciOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgY29uc3QgQiA9IGcuZW5jb2RlKFN0cmluZyhJKEEgKyA4KSkpOwogICAgICAgICAgICBFKEEgKyAxNiwgQiksIHcoQSArIDI0LCBCLmxlbmd0aCk7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gdmFsdWVMb2FkU3RyaW5nKHYgcmVmLCBiIFtdYnl0ZSkKICAgICAgICAgICJzeXNjYWxsL2pzLnZhbHVlTG9hZFN0cmluZyI6IChBKSA9PiB7CiAgICAgICAgICAgIEEgPj4+PSAwOwogICAgICAgICAgICBjb25zdCBCID0gSShBICsgOCk7CiAgICAgICAgICAgIE0oQSArIDE2KS5zZXQoQik7CiAgICAgICAgICB9LAogICAgICAgICAgLy8gZnVuYyB2YWx1ZUluc3RhbmNlT2YodiByZWYsIHQgcmVmKSBib29sCiAgICAgICAgICAic3lzY2FsbC9qcy52YWx1ZUluc3RhbmNlT2YiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMCwgdGhpcy5tZW0uc2V0VWludDgoQSArIDI0LCBJKEEgKyA4KSBpbnN0YW5jZW9mIEkoQSArIDE2KSA/IDEgOiAwKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIGNvcHlCeXRlc1RvR28oZHN0IFtdYnl0ZSwgc3JjIHJlZikgKGludCwgYm9vbCkKICAgICAgICAgICJzeXNjYWxsL2pzLmNvcHlCeXRlc1RvR28iOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgY29uc3QgQiA9IE0oQSArIDgpLCBEID0gSShBICsgMzIpOwogICAgICAgICAgICBpZiAoIShEIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBEIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpKSB7CiAgICAgICAgICAgICAgdGhpcy5tZW0uc2V0VWludDgoQSArIDQ4LCAwKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgeSA9IEQuc3ViYXJyYXkoMCwgQi5sZW5ndGgpOwogICAgICAgICAgICBCLnNldCh5KSwgdyhBICsgNDAsIHkubGVuZ3RoKSwgdGhpcy5tZW0uc2V0VWludDgoQSArIDQ4LCAxKTsKICAgICAgICAgIH0sCiAgICAgICAgICAvLyBmdW5jIGNvcHlCeXRlc1RvSlMoZHN0IHJlZiwgc3JjIFtdYnl0ZSkgKGludCwgYm9vbCkKICAgICAgICAgICJzeXNjYWxsL2pzLmNvcHlCeXRlc1RvSlMiOiAoQSkgPT4gewogICAgICAgICAgICBBID4+Pj0gMDsKICAgICAgICAgICAgY29uc3QgQiA9IEkoQSArIDgpLCBEID0gTShBICsgMTYpOwogICAgICAgICAgICBpZiAoIShCIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBCIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpKSB7CiAgICAgICAgICAgICAgdGhpcy5tZW0uc2V0VWludDgoQSArIDQ4LCAwKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgeSA9IEQuc3ViYXJyYXkoMCwgQi5sZW5ndGgpOwogICAgICAgICAgICBCLnNldCh5KSwgdyhBICsgNDAsIHkubGVuZ3RoKSwgdGhpcy5tZW0uc2V0VWludDgoQSArIDQ4LCAxKTsKICAgICAgICAgIH0sCiAgICAgICAgICBkZWJ1ZzogKEEpID0+IHsKICAgICAgICAgICAgY29uc29sZS5sb2coQSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9OwogICAgfQogICAgYXN5bmMgcnVuKHcpIHsKICAgICAgaWYgKCEodyBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlKSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdvLnJ1bjogV2ViQXNzZW1ibHkuSW5zdGFuY2UgZXhwZWN0ZWQiKTsKICAgICAgdGhpcy5faW5zdCA9IHcsIHRoaXMubWVtID0gbmV3IERhdGFWaWV3KHRoaXMuX2luc3QuZXhwb3J0cy5tZW0uYnVmZmVyKSwgdGhpcy5fdmFsdWVzID0gWwogICAgICAgIC8vIEpTIHZhbHVlcyB0aGF0IEdvIGN1cnJlbnRseSBoYXMgcmVmZXJlbmNlcyB0bywgaW5kZXhlZCBieSByZWZlcmVuY2UgaWQKICAgICAgICBOYU4sCiAgICAgICAgMCwKICAgICAgICBudWxsLAogICAgICAgICEwLAogICAgICAgICExLAogICAgICAgIGdsb2JhbFRoaXMsCiAgICAgICAgdGhpcwogICAgICBdLCB0aGlzLl9nb1JlZkNvdW50cyA9IG5ldyBBcnJheSh0aGlzLl92YWx1ZXMubGVuZ3RoKS5maWxsKDEgLyAwKSwgdGhpcy5faWRzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoWwogICAgICAgIC8vIG1hcHBpbmcgZnJvbSBKUyB2YWx1ZXMgdG8gcmVmZXJlbmNlIGlkcwogICAgICAgIFswLCAxXSwKICAgICAgICBbbnVsbCwgMl0sCiAgICAgICAgWyEwLCAzXSwKICAgICAgICBbITEsIDRdLAogICAgICAgIFtnbG9iYWxUaGlzLCA1XSwKICAgICAgICBbdGhpcywgNl0KICAgICAgXSksIHRoaXMuX2lkUG9vbCA9IFtdLCB0aGlzLmV4aXRlZCA9ICExOwogICAgICBsZXQgQyA9IDQwOTY7CiAgICAgIGNvbnN0IEkgPSAoQSkgPT4gewogICAgICAgIGNvbnN0IEIgPSBDLCBEID0gZy5lbmNvZGUoQSArICJcMCIpOwogICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh0aGlzLm1lbS5idWZmZXIsIEMsIEQubGVuZ3RoKS5zZXQoRCksIEMgKz0gRC5sZW5ndGgsIEMgJSA4ICE9PSAwICYmIChDICs9IDggLSBDICUgOCksIEI7CiAgICAgIH0sIEUgPSB0aGlzLmFyZ3YubGVuZ3RoLCBNID0gW107CiAgICAgIHRoaXMuYXJndi5mb3JFYWNoKChBKSA9PiB7CiAgICAgICAgTS5wdXNoKEkoQSkpOwogICAgICB9KSwgTS5wdXNoKDApLCBPYmplY3Qua2V5cyh0aGlzLmVudikuc29ydCgpLmZvckVhY2goKEEpID0+IHsKICAgICAgICBNLnB1c2goSShgJHtBfT0ke3RoaXMuZW52W0FdfWApKTsKICAgICAgfSksIE0ucHVzaCgwKTsKICAgICAgY29uc3QgayA9IEM7CiAgICAgIGlmIChNLmZvckVhY2goKEEpID0+IHsKICAgICAgICB0aGlzLm1lbS5zZXRVaW50MzIoQywgQSwgITApLCB0aGlzLm1lbS5zZXRVaW50MzIoQyArIDQsIDAsICEwKSwgQyArPSA4OwogICAgICB9KSwgQyA+PSAxMjI4OCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInRvdGFsIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBleGNlZWRzIGxpbWl0Iik7CiAgICAgIHRoaXMuX2luc3QuZXhwb3J0cy5ydW4oRSwgayksIHRoaXMuZXhpdGVkICYmIHRoaXMuX3Jlc29sdmVFeGl0UHJvbWlzZSgpLCBhd2FpdCB0aGlzLl9leGl0UHJvbWlzZTsKICAgIH0KICAgIF9yZXN1bWUoKSB7CiAgICAgIGlmICh0aGlzLmV4aXRlZCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdvIHByb2dyYW0gaGFzIGFscmVhZHkgZXhpdGVkIik7CiAgICAgIHRoaXMuX2luc3QuZXhwb3J0cy5yZXN1bWUoKSwgdGhpcy5leGl0ZWQgJiYgdGhpcy5fcmVzb2x2ZUV4aXRQcm9taXNlKCk7CiAgICB9CiAgICBfbWFrZUZ1bmNXcmFwcGVyKHcpIHsKICAgICAgY29uc3QgQyA9IHRoaXM7CiAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCBJID0geyBpZDogdywgdGhpczogdGhpcywgYXJnczogYXJndW1lbnRzIH07CiAgICAgICAgcmV0dXJuIEMuX3BlbmRpbmdFdmVudCA9IEksIEMuX3Jlc3VtZSgpLCBJLnJlc3VsdDsKICAgICAgfTsKICAgIH0KICB9Owp9KSgpOwp2YXIgUiA9IGFzeW5jIChRID0ge30sIGcpID0+IHsKICBsZXQgTjsKICBpZiAoZy5zdGFydHNXaXRoKCJkYXRhOiIpKSB7CiAgICBjb25zdCB3ID0gZy5yZXBsYWNlKC9eZGF0YTouKj9iYXNlNjQsLywgIiIpOwogICAgbGV0IEM7CiAgICBpZiAodHlwZW9mIEJ1ZmZlciA9PSAiZnVuY3Rpb24iICYmIHR5cGVvZiBCdWZmZXIuZnJvbSA9PSAiZnVuY3Rpb24iKQogICAgICBDID0gQnVmZmVyLmZyb20odywgImJhc2U2NCIpOwogICAgZWxzZSBpZiAodHlwZW9mIGF0b2IgPT0gImZ1bmN0aW9uIikgewogICAgICBjb25zdCBJID0gYXRvYih3KTsKICAgICAgQyA9IG5ldyBVaW50OEFycmF5KEkubGVuZ3RoKTsKICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCBJLmxlbmd0aDsgRSsrKQogICAgICAgIENbRV0gPSBJLmNoYXJDb2RlQXQoRSk7CiAgICB9IGVsc2UKICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICJGYWlsZWQgdG8gZGVjb2RlIGJhc2U2NC1lbmNvZGVkIGRhdGEgVVJMLCBCdWZmZXIgYW5kIGF0b2IgYXJlIG5vdCBzdXBwb3J0ZWQiCiAgICAgICk7CiAgICBOID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQywgUSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IHcgPSBhd2FpdCBmZXRjaChnKSwgQyA9IHcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgQy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIE4gPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyh3LCBRKTsKICAgIGVsc2UgewogICAgICBjb25zdCBJID0gYXdhaXQgdy5hcnJheUJ1ZmZlcigpOwogICAgICBOID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoSSwgUSk7CiAgICB9CiAgfQogIHJldHVybiBOLmluc3RhbmNlOwp9LCBhID0gKFEpID0+IFIoUSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFBOG9DQWdBQUtaMjg2WW5WcGJHUnBaUDhnUjI4Z1luVnBiR1FnU1VRNklDSmlTREpuYzBkdVIzZHNOakZxUVdFMk9VWkliaTlQTkVsdlpucHNOMk5IZHpSUFdXY3ljWEJJU0M5R1kwZGhjVFoyWTFSRFJsTTFTMDlOYkRSYU55OUxhMjVVYTAxR1VWVjNOWFZKTmpOTk1sSlhSeUlLSVA4QndJQ0FnQUFNWUFGL0FYOWdBWDhBWUFSK2ZuNStBWDVnQTM5L2Z3Ri9ZQU4rZm40QmZtQUJmZ0YrWUFBQmZtQUFBR0FDZjM4QVlBQUJmMkFDZm40QmZtQUJmQUYrQXZHRWdJQUFGUVJuYjJwekhISjFiblJwYldVdWMyTm9aV1IxYkdWVWFXMWxiM1YwUlhabGJuUUFBUVJuYjJwekdYSjFiblJwYldVdVkyeGxZWEpVYVcxbGIzVjBSWFpsYm5RQUFRUm5iMnB6RzNKMWJuUnBiV1V1Y21WelpYUk5aVzF2Y25sRVlYUmhWbWxsZHdBQkJHZHZhbk1SY25WdWRHbHRaUzUzWVhOdFYzSnBkR1VBQVFSbmIycHpGWEoxYm5ScGJXVXVaMlYwVW1GdVpHOXRSR0YwWVFBQkJHZHZhbk1SY25WdWRHbHRaUzV1WVc1dmRHbHRaVEVBQVFSbmIycHpFSEoxYm5ScGJXVXVkMkZ6YlVWNGFYUUFBUVJuYjJwekVISjFiblJwYldVdWQyRnNiSFJwYldVQUFRUm5iMnB6Rm5ONWMyTmhiR3d2YW5NdVptbHVZV3hwZW1WU1pXWUFBUVJuYjJwekZITjVjMk5oYkd3dmFuTXVjM1J5YVc1blZtRnNBQUVFWjI5cWN4TnplWE5qWVd4c0wycHpMblpoYkhWbFIyVjBBQUVFWjI5cWN4TnplWE5qWVd4c0wycHpMblpoYkhWbFUyVjBBQUVFWjI5cWN4VnplWE5qWVd4c0wycHpMblpoYkhWbFNXNWtaWGdBQVFSbmIycHpHSE41YzJOaGJHd3Zhbk11ZG1Gc2RXVlRaWFJKYm1SbGVBQUJCR2R2YW5NV2MzbHpZMkZzYkM5cWN5NTJZV3gxWlV4bGJtZDBhQUFCQkdkdmFuTVVjM2x6WTJGc2JDOXFjeTUyWVd4MVpVTmhiR3dBQVFSbmIycHpFM041YzJOaGJHd3Zhbk11ZG1Gc2RXVk9aWGNBQVFSbmIycHpIWE41YzJOaGJHd3Zhbk11ZG1Gc2RXVlFjbVZ3WVhKbFUzUnlhVzVuQUFFRVoyOXFjeHB6ZVhOallXeHNMMnB6TG5aaGJIVmxURzloWkZOMGNtbHVad0FCQkdkdmFuTVljM2x6WTJGc2JDOXFjeTVqYjNCNVFubDBaWE5VYjBkdkFBRUVaMjlxY3hoemVYTmpZV3hzTDJwekxtTnZjSGxDZVhSbGMxUnZTbE1BQVFPOWxZQ0FBTHNWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdNQUJBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnWUdCZ1lHQmdZSEFBQUFCd2dIQ1FBQUNnc0xBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWhZQ0FnQUFCY0FDN05RV0VnSUNBQUFFQXFRSUdxWUNBZ0FBSWZ3RkJBQXQrQVVJQUMzNEJRZ0FMZmdGQ0FBdCtBVUlBQzM0QlFnQUxmZ0ZDQUF0L0FVRUFDd2VoZ0lDQUFBUURjblZ1QU5JSkJuSmxjM1Z0WlFEVENRVm5aWFJ6Y0FEVUNRTnRaVzBDQUFtVHFvQ0FBQUVBUVlBZ0M3c1ZGUllYR0JrYUd4d2RIaDhnSVNJakpDVW1KeWdwS2lzc0xTNHZNREV5TXpRMU5qYzRPVG83UEQwK1AwQkJRa05FUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldsdGNYVjVmWUdGaVkyUmxabWRvYVdwcmJHMXViM0J4Y25OMGRYWjNlSGw2ZTN4OWZuK0FBWUVCZ2dHREFZUUJoUUdHQVljQmlBR0pBWW9CaXdHTUFZMEJqZ0dQQVpBQmtRR1NBWk1CbEFHVkFaWUJsd0dZQVprQm1nR2JBWndCblFHZUFaOEJvQUdoQWFJQm93R2tBYVVCcGdHbkFhZ0JxUUdxQWFzQnJBR3RBYTRCcndHd0FiRUJzZ0d6QWJRQnRRRzJBYmNCdUFHNUFib0J1d0c4QWIwQnZnRy9BY0FCd1FIQ0FjTUJ4QUhGQWNZQnh3SElBY2tCeWdITEFjd0J6UUhPQWM4QjBBSFJBZElCMHdIVUFkVUIxZ0hYQWRnQjJRSGFBZHNCM0FIZEFkNEIzd0hnQWVFQjRnSGpBZVFCNVFIbUFlY0I2QUhwQWVvQjZ3SHNBZTBCN2dIdkFmQUI4UUh5QWZNQjlBSDFBZllCOXdINEFma0IrZ0g3QWZ3Qi9RSCtBZjhCZ0FLQkFvSUNnd0tFQW9VQ2hnS0hBb2dDaVFLS0Fvc0NqQUtOQW80Q2p3S1FBcEVDa2dLVEFwUUNsUUtXQXBjQ21BS1pBcG9DbXdLY0FwMENuZ0tmQXFBQ29RS2lBcU1DcEFLbEFxWUNwd0tvQXFrQ3FnS3JBcXdDclFLdUFxOENzQUt4QXJJQ3N3SzBBclVDdGdLM0FyZ0N1UUs2QXJzQ3ZBSzlBcjRDdndMQUFzRUN3Z0xEQXNRQ3hRTEdBc2NDeUFMSkFzb0N5d0xNQXMwQ3pnTFBBdEFDMFFMU0F0TUMxQUxWQXRZQzF3TFlBdGtDMmdMYkF0d0MzUUxlQXQ4QzRBTGhBdUlDNHdMa0F1VUM1Z0xuQXVnQzZRTHFBdXNDN0FMdEF1NEM3d0x3QXZFQzhnTHpBdlFDOVFMMkF2Y0MrQUw1QXZvQyt3TDhBdjBDL2dML0FvQURnUU9DQTRNRGhBT0ZBNFlEaHdPSUE0a0RpZ09MQTR3RGpRT09BNDhEa0FPUkE1SURrd09VQTVVRGxnT1hBNWdEbVFPYUE1c0RuQU9kQTU0RG53T2dBNkVEb2dPakE2UURwUU9tQTZjRHFBT3BBNm9EcXdPc0E2MERyZ092QTdBRHNRT3lBN01EdEFPMUE3WUR0d080QTdrRHVnTzdBN3dEdlFPK0E3OER3QVBCQThJRHd3UEVBOFVEeGdQSEE4Z0R5UVBLQThzRHpBUE5BODREendQUUE5RUQwZ1BUQTlRRDFRUFdBOWNEMkFQWkE5b0Qyd1BjQTkwRDNnUGZBK0FENFFQaUErTUQ1QVBsQStZRDV3UG9BK2tENmdQckErd0Q3UVB1QSs4RDhBUHhBL0lEOHdQMEEvVUQ5Z1AzQS9nRCtRUDZBL3NEL0FQOUEvNEQvd09BQklFRWdnU0RCSVFFaFFTR0JJY0VpQVNKQklvRWl3U01CSTBFamdTUEJKQUVrUVNTQkpNRWxBU1ZCSllFbHdTWUJKa0VtZ1NiQkp3RW5RU2VCSjhFb0FTaEJLSUVvd1NrQktVRXBnU25CS2dFcVFTcUJLc0VyQVN0Qks0RXJ3U3dCTEVFc2dTekJMUUV0UVMyQkxjRXVBUzVCTG9FdXdTOEJMMEV2Z1MvQk1BRXdRVENCTU1FeEFURkJNWUV4d1RJQk1rRXlnVExCTXdFelFUT0JNOEUwQVRSQk5JRTB3VFVCTlVFMWdUWEJOZ0UyUVRhQk5zRTNBVGRCTjRFM3dUZ0JPRUU0Z1RqQk9RRTVRVG1CT2NFNkFUcEJPb0U2d1RzQk8wRTdnVHZCUEFFOFFUeUJQTUU5QVQxQlBZRTl3VDRCUGtFK2dUN0JQd0UvUVQrQlA4RWdBV0JCWUlGZ3dXRUJZVUZoZ1dIQllnRmlRV0tCWXNGakFXTkJZNEZqd1dRQlpFRmtnV1RCWlFGbFFXV0JaY0ZtQVdaQlpvRm13V2NCWjBGbmdXZkJhQUZvUVdpQmFNRnBBV2xCYVlGcHdXb0Jha0ZxZ1dyQmF3RnJRV3VCYThGc0FXeEJiSUZzd1cwQmJVRnRnVzNCYmdGdVFXNkJic0Z2QVc5QmI0RnZ3WEFCY0VGd2dYREJjUUZ4UVhHQmNjRnlBWEpCY29GeXdYTUJjMEZ6Z1hQQmRBRjBRWFNCZE1GMUFYVkJkWUYxd1hZQmRrRjJnWGJCZHdGM1FYZUJkOEY0QVhoQmVJRjR3WGtCZVVGNWdYbkJlZ0Y2UVhxQmVzRjdBWHRCZTRGN3dYd0JmRUY4Z1h6QmZRRjlRWDJCZmNGK0FYNUJmb0Yrd1g4QmYwRi9nWC9CWUFHZ1FhQ0JvTUdoQWFGQm9ZR2h3YUlCb2tHaWdhTEJvd0dqUWFPQm84R2tBYVJCcElHa3dhVUJwVUdsZ2FYQnBnR21RYWFCcHNHbkFhZEJwNEdud2FnQnFFR29nYWpCcVFHcFFhbUJxY0dxQWFwQnFvR3F3YXNCcTBHcmdhdkJyQUdzUWF5QnJNR3RBYTFCcllHdHdhNEJya0d1Z2E3QnJ3R3ZRYStCcjhHd0FiQkJzSUd3d2JFQnNVR3hnYkhCc2dHeVFiS0Jzc0d6QWJOQnM0R3p3YlFCdEVHMGdiVEJ0UUcxUWJXQnRjRzJBYlpCdG9HMndiY0J0MEczZ2JmQnVBRzRRYmlCdU1HNUFibEJ1WUc1d2JvQnVrRzZnYnJCdXdHN1FidUJ1OEc4QWJ4QnZJRzh3YjBCdlVHOWdiM0J2Z0crUWI2QnZzRy9BYjlCdjRHL3dhQUI0RUhnZ2VEQjRRSGhRZUdCNGNIaUFlSkI0b0hpd2VNQjQwSGpnZVBCNUFIa1FlU0I1TUhsQWVWQjVZSGx3ZVlCNWtIbWdlYkI1d0huUWVlQjU4SG9BZWhCNklIb3dla0I2VUhwZ2VuQjZnSHFRZXFCNnNIckFldEI2NEhyd2V3QjdFSHNnZXpCN1FIdFFlMkI3Y0h1QWU1QjdvSHV3ZThCNzBIdmdlL0I4QUh3UWZDQjhNSHhBZkZCOFlIeHdmSUI4a0h5Z2ZMQjh3SHpRZk9CODhIMEFmUkI5SUgwd2ZVQjlVSDFnZlhCOWdIMlFmYUI5c0gzQWZkQjk0SDN3ZmdCK0VINGdmakIrUUg1UWZtQitjSDZBZnBCK29INndmc0IrMEg3Z2Z2Qi9BSDhRZnlCL01IOUFmMUIvWUg5d2Y0Qi9rSCtnZjdCL3dIL1FmK0IvOEhnQWlCQ0lJSWd3aUVDSVVJaGdpSENJZ0lpUWlLQ0lzSWpBaU5DSTRJandpUUNKRUlrZ2lUQ0pRSWxRaVdDSmNJbUFpWkNKb0ltd2ljQ0owSW5naWZDS0FJb1FpaUNLTUlwQWlsQ0tZSXB3aW9DS2tJcWdpckNLd0lyUWl1Q0s4SXNBaXhDTElJc3dpMENMVUl0Z2kzQ0xnSXVRaTZDTHNJdkFpOUNMNEl2d2pBQ01FSXdnakRDTVFJeFFqR0NNY0l5QWpKQ01vSXl3ak1DTTBJemdqUENOQUkwUWpTQ05NSTFBalZDTllJMXdqWUNOa0kyZ2piQ053STNRamVDTjhJNEFqaENPSUk0d2prQ09VSTVnam5DT2dJNlFqcUNPc0k3QWp0Q080STd3andDUEVJOGdqekNQUUk5UWoyQ1BjSStBajVDUG9JK3dqOENQMEkvZ2ovQ0lBSmdRbUNDWU1KaEFtRkNZWUpod21JQ1lrSmlnbUxDWXdKalFtT0NZOEprQW1SQ1pJSmt3bVVDWlVKbGdtWENaZ0ptUW1hQ1pzSm5BbWRDWjRKbndtZ0NhRUpvZ21qQ2FRSnBRbW1DYWNKcUFtcENhb0pxd21zQ2EwSnJnbXZDYkFKc1FteUNiTUp0QW0xQ2JZSnR3bTRDYmtKdWdtN0Nid0p2UW0rQ2I4SndBbkJDY0lKd3duRUNjVUp4Z25IQ2NnSnlRbktDY3NKekFuTkNjNEp6d25RQ2RFSjBnblRDZFFKMVFuV0NkY0oyQW5aQ2RvSjJ3bmNDZDBKM2duZkNlQUo0UW5pQ2VNSjVBbmxDZVlKNXdub0Nla0o2Z25yQ2V3SjdRbnVDZThKOEFueENmSUo4d24wQ2ZVSjlnbjNDZmdKK1FuNkNmc0ovQW45Q2Y0Si93bUFDb0VLZ2dxRENvUUtoUXFHQ29jS2lBcUpDb29LaXdxTUNvMEtqZ3FQQ3BBS2tRcVNDcE1LbEFxVkNwWUtsd3FZQ3BrS21ncWJDcHdLblFxZUNwOEtvQXFoQ3FJS293cWtDcVVLcGdxbkNxZ0txUXFxQ3FzS3JBcXRDcTRLcndxd0NyRUtzZ3F6Q3JRS3RRcTJDcmNLdUFxNUNyb0t1d3E4Q3IwS3ZncS9Dc0FLd1FyQ0NzTUt4QXJGQ3NZS3h3cklDc2tLeWdyTENzd0t6UXJPQ3M4SzBBclJDdElLMHdyVUN0VUsxZ3JYQ3RnSzJRcmFDdHNLM0FyZEN0NEszd3JnQ3VFSzRncmpDdVFLNVFybUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLZ0F1QkM0SUxnd3VFQzRVTGhndUhDNGdMaVF1S0M0c0xqQXVOQzQ0TGp3dVFDNUVMa2d1VEM1UUxsUXVXQzVjTG1BdVpDNW9MbXd1Y0M1MExuZ3VmQzZBTG9RdWlDNk1McEF1bEM2WUxwd3VvQzZrTHFndXJDNndMclF1dUM2OExzQXV4QzdJTHN3dTBDN1VMdGd1M0M3Z0x1UXU2QzdzTHZBdTlDNzRMdnd2QUM4RUx3Z3ZEQzhRTHhRdkdDOGNMeUF2SkM4b0x5d3ZNQzgwTHpndlBDOUFMMFF2U0M5TUwxQXZWQzlZTDF3dllDOWtMMmd2YkM5d0wzUXZlQzk4TDRBdmhDK0lMNHd2a0MrVUw1Z3ZuQytnTDZRdnFDK3NMN0F2dEMrNEw3d3Z3Qy9FTDhndnpDL1FMOVF2MkMvY0wrQXY1Qy9vTCt3djhDLzBML2d2L0M0QU1nUXlDRElNTWhBeUZESVlNaHd5SURJa01pZ3lMREl3TWpReU9ESThNa0F5UkRKSU1rd3lVREpVTWxneVhESmdNbVF5YURKc01uQXlkREo0TW53eWdES0VNb2d5akRLUU1wUXltREtjTXFBeXBES29NcXd5c0RLME1yZ3l2RExBTXNReXlETE1NdEF5MURMWU10d3k0RExrTXVneTdETHdNdlF5K0RMOE13QXpCRE1JTXd3ekVETVVNeGd6SERNZ015UXpLRE1zTXpBek5ETTRNend6UURORU0wZ3pURE5RTTFReldETmNNMkF6WkROb00yd3pjRE4wTTNnemZET0FNNFF6aURPTU01QXpsRE9ZTTV3em9ET2tNNmd6ckRPd003UXp1RE84TThBenhEUElNOHd6MERQVU05Z3ozRFBnTStRejZEUHNNL0F6OURQNE0vd3lBRFlFTmdnMkREWVFOaFEyR0RZY05pQTJKRFlvTml3Mk1EWTBOamcyUERaQU5rUTJTRFpNTmxBMlZEWllObHcyWURaa05tZzJiRFp3Tm5RMmVEWjhOb0EyaERhSU5vdzJrRGFVTnBnMm5EYWdOcVEycURhc05yQTJ0RGE0TnJ3MndEYkVOc2cyekRiUU50UTIyRGJjTnVBMjVEYm9OdXcyOERiME52ZzIvRGNBTndRM0NEY01OeEEzRkRjWU54dzNJRGNrTnlnM0xEY3dOelEzT0RjOE4wQTNSRGRJTjB3M1VEZFVOMWczWERkZ04yUTNhRGRzTjNBM2REZDROM3czZ0RlRU40ZzNqRGVRTjVRM21EZWNONkEzcERlb042dzNzRGUwTjdnM3ZEZkFOOFEzeURmTU45QTMxRGZZTjl3MzREZmtOK2czN0Rmd04vUTMrRGY4TmdBNkJEb0lPZ3c2RURvVU9oZzZIRG9nT2lRNktEb3NPakE2TkRvNE9qdzZRRHBFT2tnNlREcFFPbFE2V0RwY09tQTZaRHBvT213NmNEcDBPbmc2ZkRxQU9vUTZpRHFNT3BBNmxEcVlPcHc2b0Rxa09xZzZyRHF3T3JRNnVEcThPc0E2eERySU9zdzYwRHJVT3RnNjNEcmdPdVE2NkRyc092QTY5RHI0T3Z3N0FEc0VPd2c3RERzUU94UTdHRHNjT3lBN0pEc29PeXc3TURzME96ZzdQRHRBTzBRN1NEdE1PMUE3VkR0WU8xdzdZRHRrTzJnN2JEdHdPM1E3ZUR0OE80QTdoRHVJTzR3N2tEdVVPNWc3bkR1Z082UTdxRHVzTzdBN3REdTRPN3c3d0R2RU84Zzd6RHZRTzlRNzJEdmNPK0E3NUR2b08rdzc4RHYwTy9nNy9Eb0FQZ1ErQ0Q0TVBoQStGRDRZUGh3K0lENGtQaWcrTEQ0d1BqUStPRDQ4UGtBK1JENUlQa3crVUQ1VVBsZytYRDVnUG1RK2FENXNQbkErZEQ1NFBudytnRDZFUG9nK2pENlFQcFErbUQ2Y1BxQStwRDZvUHF3K3NENjBQcmcrdkQ3QVBzUSt5RDdNUHRBKzFEN1lQdHcrNEQ3a1B1Zys3RDd3UHZRKytENzhQd0EvQkQ4SVB3dy9FRDhVUHhnL0hEOGdQeVEvS0Q4c1B6QS9ORDg0UHp3L1FEOUVQMGcvVEQ5UVAxUS9XRDljUDJBL1pEOW9QMncvY0Q5MFAzZy9mRCtBUDRRL2lEK01QNUEvbEQrWVA1dy9vRCtrUDZnL3JEK3dQN1EvdUQrOFA4QS94RC9JUDh3LzBEL1VQOWcvM0QvZ1ArUS82RC9zUC9BLzlELzRQL3crQUVJRVFnaENERUlRUWhSQ0dFSWNRaUJDSkVJb1FpeENNRUkwUWpoQ1BFSkFRa1JDU0VKTVFsQkNWRUpZUWx4Q1lFSmtRbWhDYkVKd1FuUkNlRUo4UW9CQ2hFS0lRb3hDa0VLVVFwaENuRUtnUXFSQ3FFS3NRckJDdEVLNFFyeEN3RUxFUXNoQ3pFTFFRdFJDMkVMY1F1QkM1RUxvUXV4QzhFTDBRdmhDL0VNQVF3UkRDRU1NUXhCREZFTVlReHhESUVNa1F5aERMRU13UXpSRE9FTThRMEJEUkVOSVEweERVRU5VUTFoRFhFTmdRMlJEYUVOc1EzQkRkRU40UTN4RGdFT0VRNGhEakVPUVE1UkRtRU9jUTZCRHBFT29RNnhEc0VPMFE3aER2RVBBUThSRHlFUE1ROUJEMUVQWVE5eEQ0RVBrUStoRDdFUHdRL1JEK0VQOFFnQkdCRVlJUmd4R0VFWVVSaGhHSEVZZ1JpUkdLRVlzUmpCR05FWTRSanhHUUVaRVJraEdURVpRUmxSR1dFWmNSbUJHWkVab1JteEdjRVowUm5oR2ZFYUFSb1JHaUVhTVJwQkdsRWFZUnB4R29FYWtScWhHckVhd1JyUkd1RWE4UnNCR3hFYklSc3hHMEViVVJ0aEczRWJnUnVSRzZFYnNSdkJHOUViNFJ2eEhBRWNFUndoSERFY1FSeFJIR0VjY1J5QkhKRWNvUnl4SE1FYzBSemhIUEVkQVIwUkhTRWRNUjFCSFZFZFlSMXhIWUVka1IyaEhiRWR3UjNSSGVFZDhSNEJIaEVlSVI0eEhrRWVVUjVoSG5FZWdSNlJIcUVlc1I3Qkh0RWU0Ujd4SHdFZkVSOGhIekVmUVI5UkgyRWZjUitCSDVFZm9SK3hIOEVmMFIvaEgvRVlBU2dSS0NFb01TaEJLRkVvWVNoeEtJRW9rU2loS0xFb3dTalJLT0VvOFNrQktSRXBJU2t4S1VFcFVTbGhLWEVwZ1NtUkthRXBzU25CS2RFcDRTbnhLZ0VxRVNvaEtqRXFRU3BSS21FcWNTcUJLcEVxb1NxeEtzRXEwU3JoS3ZFckFTc1JLeUVyTVN0QksxRXJZU3R4SzRFcmtTdWhLN0Vyd1N2UksrRXI4U3dCTEJFc0lTd3hMRUVzVVN4aExIRXNnU3lSTEtFc3NTekJMTkVzNFN6eExRRXRFUzBoTFRFdFFTMVJMV0V0Y1MyQkxaRXRvUzJ4TGNFdDBTM2hMZkV1QVM0UkxpRXVNUzVCTGxFdVlTNXhMb0V1a1M2aExyRXV3UzdSTHVFdThTOEJMeEV2SVM4eEwwRXZVUzloTDNFdmdTK1JMNkV2c1MvQkw5RXY0Uy94S0FFNEVUZ2hPREU0UVRoUk9HRTRjVGlCT0pFNG9UaXhPTUU0MFRqaE9QRTVBVGtST1NFNU1UbEJPVkU1WVRseE9ZRTVrVG1oT2JFNXdUblJPZUU1OFRvQk9oRTZJVG94T2tFNlVUcGhPbkU2Z1RxUk9xRTZzVHJCT3RFNjRUcnhPd0U3RVRzaE96RTdRVHRSTzJFN2NUdUJPNUU3b1R1eE84RTcwVHZoTy9FOEFUd1JQQ0U4TVR4QlBGRThZVHh4UElFOGtUeWhQTEU4d1R6UlBPRTg4VDBCUFJFOUlUMHhQVUU5VVQxaFBYRTlnVDJSUGFFOXNUM0JQZEU5NFQzeFBnRStFVDRoUGpFK1FUNVJQbUUrY1Q2QlBwRStvVDZ4UHNFKzBUN2hQdkUvQVQ4UlB5RS9NVDlCUDFFL1lUOXhQNEUva1QraFA3RS93VC9SUCtFLzhUZ0JTQkZJSVVneFNFRklVVWhoU0hGSWdVaVJTS0ZJc1VqQlNORkk0VWp4U1FGSkVVa2hTVEZKUVVsUlNXRkpjVW1CU1pGSm9VbXhTY0ZKMFVuaFNmRktBVW9SU2lGS01VcEJTbEZLWVVweFNvRktrVXFoU3JGS3dVclJTdUZLOFVzQlN4RkxJVXN4UzBGTFVVdGhTM0ZMZ1V1UlM2RkxzVXZCUzlGTDRVdnhUQUZNRVV3aFRERk1RVXhSVEdGTWNVeUJUSkZNb1V5eFRNRk0wVXpoVFBGTkFVMFJUU0ZOTVUxQlRWRk5ZVTF4VFlGTmtVMmhUYkZOd1UzUlRlRk44VTRCVGhGT0lVNHhUa0ZPVVU1aFRuRk9nVTZSVHFGT3NVN0JUdEZPNFU3eFR3RlBFVThoVHpGUFFVOVJUMkZQY1UrQlQ1RlBvVSt4VDhGUDBVL2hUL0ZJQVZnUldDRllNVmhCV0ZGWVlWaHhXSUZZa1ZpaFdMRll3VmpSV09GWThWa0JXUkZaSVZreFdVRlpVVmxoV1hGWmdWbVJXYUZac1ZuQldkRlo0Vm54V2dGYUVWb2hXakZhUVZwUldtRmFjVnFCV3BGYW9WcXhXc0ZhMFZyaFd2RmJBVnNSV3lGYk1WdEJXMUZiWVZ0eFc0RmJrVnVoVzdGYndWdlJXK0ZiOFZ3QlhCRmNJVnd4WEVGY1VWeGhYSEZjZ1Z5UlhLRmNzVnpCWE5GYzRWenhVS2liUzFnUUM3RlFRQVFRQUxxZ01DQVg4Q2ZpTUFJUUVDUUFOQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQTRLQUFBQkFnTUVCUVlIQ0FrTElBRWpBcWNvQWhCTkJFQWdBVUVJYXlJQkpBQWdBVUtBZ0lTQUFUY0RBRUVBRUtZSkl3QWhBUTBMQ3lBQlFSQnJJZ0VrQUVMUXVhSUJweWtEQ0NFQ1F0QzVvZ0duS1FNQUlRTWdBU2tER0NBQ1UwVUVRRUVFSVFBTUNnc0xJQUVwQXhnZ0FsUkZCRUJCQ0NFQURBa0xDeUFESUFFcEF4aENCSVo4SWdLbktRTUFJUU1nQXFjcEF3Z2hBaUFCclVJZ2ZLY2dBemNEQUNBQnJVSW9mS2NnQWpjREFDQUJRUkJxSWdFa0FDQUJRUWhxSWdFa0FFRUFEd3NnQWxDdFVFVUVRRUVHSVFBTUJ3c0xJQU9uS1FNQUlRSWdBNmNwQXdnaEF5QUJyVUlnZktjZ0FqY0RBQ0FCclVJb2ZLY2dBemNEQUNBQlFSQnFJZ0VrQUNBQlFRaHFJZ0VrQUVFQUR3c2dBVUlBTndNQUlBR3RRZ2g4cDBJQU53TUFJQUZCQ0dzaUFTUUFJQUZDaDRDRWdBRTNBd0JCQUJET0JDTUFJUUVOQlFzTElBRWdBU2tER0RjREFDQUJyVUlJZktjZ0FqY0RBQ0FCUVFocklnRWtBQ0FCUW9tQWhJQUJOd01BUVFBUXp3UWpBQ0VCRFFNTEN3RUxBQXRCQVF1dkFRSUJmd0YrSXdBaEFRSkFBMEFDUUFKQUFrQUNRQ0FBRGdrQUFBQUFBQUFBQVFJREN3RWdBU2tEQ0ZBRVFDQUJRUWhySWdFa0FDQUJRb1NBaUlBQk53TUFRUUFReVFRakFDRUJEUVVMSUFFcEF3aW5NUUFYUWgrRFF2OEJneUVDQVNBQ1FoRlJSUVJBUVFnaEFBd0VDd3NnQWExQ0VIeW5JQUVwQXdpbktRTkFOd01BSUFGQkNHb2lBU1FBUVFBUEN5QUJyVUlRZktkQ0FEY0RBQ0FCUVFocUlnRWtBRUVBRHdzTEFBdEJBUXRqQVFGL0l3QWhBUUpBQWtBQ1FDQUFEZ01BQUFBQkN5QUJLUU1JVUFSQUlBRkJDR3NpQVNRQUlBRkNnWUNNZ0FFM0F3QkJBQkRKQkNNQUlRRU5BZ3NnQWExQ0VIeW5JQUVwQXdpbktRTUFOd01BSUFGQkNHb2lBU1FBUVFBUEN3QUxRUUVMNEFZQ0FYOERmaU1BSVFFQ1FBTkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQURrSUFBQUFBQUFBQUFBQUJBUUlDQWdNRUJRVUdCZ2NIQ0FnSkNRb0tDZ3NMREEwTkRnNE9EdzhRRUJFUkVoSVRFeFFVRlJVVkZSWVdGeGNYRnhjWUdCa2FHaHNjQ3lBQkl3S25LQUlRVFFSQUlBRkJDR3NpQVNRQUlBRkNnSUNRZ0FFM0F3QkJBQkNtQ1NNQUlRRU5IZ3NnQVVFUWF5SUJKQUFCSUFFcEF4aFFCRUFnQVVFSWF5SUJKQUFnQVVLRmdKQ0FBVGNEQUVFQUVNa0VJd0FoQVEwZUN5QUJLUU1ZcHpFQUZFSUJneUlDUXY4Qmd5RUNBU0FDVUVVRVFFRUxJUUFNSFFzTFFnQWhBa0V3SVFBTUd3c2dBU2tER0tjeEFCZENINE5DL3dHRElRSUJJQUpDRkZoRkJFQkJIU0VBREJzTEN5QUNRaEpZUlFSQVFSWWhBQXdhQ3dzZ0FrSVJVVVVFUUVFU0lRQU1HUXNMSUFFcEF4aEN5QUI4SVFKQk1DRUFEQmNMSUFKQ0VsRkZCRUJCTFNFQURCY0xDeUFCS1FNWVFzQUFmQ0VDUVRBaEFBd1ZDeUFDUWhOUlJRUkFRUm9oQUF3VkN3c2dBU2tER0VJNGZDRUNRVEFoQUF3VEN5QUJLUU1ZUXRBQWZDRUNRVEFoQUF3U0N5QUNRaFpZUlFSQVFTVWhBQXdTQ3dzZ0FrSVZVVVVFUUVFaUlRQU1FUXNMSUFFcEF4aEMyQUI4SVFKQk1DRUFEQThMSUFFcEF4aENPSHdoQWtFd0lRQU1EZ3NnQWtJWFVVVUVRRUVwSVFBTURnc0xJQUVwQXhoQ09Id2hBa0V3SVFBTURBc2dBa0laVVVVRVFFRXRJUUFNREFzTElBRXBBeGhDMEFCOElRSkJNQ0VBREFvTElBRXBBeGhDTUh3aEFnc2dBbEN0SWdOUVJRUkFRVDRoQUF3SkN3c2dBcWN6QVFZaEF3RWdBMUJGQkVCQk55RUFEQWdMQzBJQUlRTkNBQ0VDUVR3aEFBd0dDeUFDcHpVQ0NDRUVBU0FDSUFSOElRSWdBMEtBZ0FSWVJRUkFRVDhoQUF3R0N3c2dBYTFDSUh5bklBSTNBd0FnQWExQ0tIeW5JQU0zQXdBZ0FhMUNNSHluSUFNM0F3QWdBVUVRYWlJQkpBQWdBVUVJYWlJQkpBQkJBQThMSUFHdFFpQjhwMElBTndNQUlBR3RRaWg4cDBJQU53TUFJQUd0UWpCOHAwSUFOd01BSUFGQkVHb2lBU1FBSUFGQkNHb2lBU1FBUVFBUEN5QUJJQU0zQXdBZ0FhMUNDSHluUW9DQUJEY0RBQ0FCUVFocklnRWtBQ0FCUXNHQWtJQUJOd01BUVFBUTFnUWpBQ0VCRFFNTEN3RUxBQXRCQVF1eEFnSUJmd0YrSXdBaEFRSkFBMEFDUUFKQUFrQUNRQUpBSUFBT0RRQUFBQUFBQUFBQUFRRUJBZ01FQ3lBQkl3S25LQUlRVFFSQUlBRkJDR3NpQVNRQUlBRkNnSUNVZ0FFM0F3QkJBQkNtQ1NNQUlRRU5CZ3NnQVVFZ2F5SUJKQUFCSUFFcEF5aFFCRUFnQVVFSWF5SUJKQUFnQVVLRmdKU0FBVGNEQUVFQUVNa0VJd0FoQVEwR0N5QUJLUU1vcHpFQUYwSWZnMEwvQVlNaEFnRWdBa0lVVVVVRVFFRUxJUUFNQlFzTElBRXBBeWluS1FOQUlRSUJJQUd0UWpCOHB5QUNOd01BSUFGQklHb2lBU1FBSUFGQkNHb2lBU1FBUVFBUEN5QUJJQUVwQXlnM0F3QWdBVUVJYXlJQkpBQWdBVUtNZ0pTQUFUY0RBRUVBRUJrakFDRUJEUU1MSUFHdFFqQjhweUFCclVJUWZLY3BBd0EzQXdBZ0FVRWdhaUlCSkFBZ0FVRUlhaUlCSkFCQkFBOExDd0FMUVFFTGlnTUNBWDhHZmlNQUlRRUNRQU5BQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUE0WkFBRUJBUUlDQXdNRUJBUUVCQVFFQkFVR0JnY0lDUW9LQ3d3TElBRXBBd2hRclNJQ1VFVUVRRUVFSVFBTURRc0xBU0FCS1FNSUlRSkNBQ0VEUWdBaEJFRUlJUUFNQ3dzZ0FhMUNFSHluUWdBOEFBQWdBVUVJYWlJQkpBQkJBQThMSUFOQ0FYd2hBd3NnQTBJSGZpRUZJQUlnQTN4Q0FYd2lCbEFFUUNBQlFRaHJJZ0VrQUNBQlFvdUFtSUFCTndNQVFRQVF5UVFqQUNFQkRRb0xJQWFuTVFBQUlnWkMvd0NESVFjQklBZEMvd0dESVFjQlFnQWdCVmRGQkVCQkZpRUFEQWtMQ3lBSElBV0dRZ0FnQlVMQUFGUWJJUVVnQmtLQWY0TkMvd0dESVFZZ0JTQUVmQ0VFSUFaUVJRUkFRUVloQUF3SUN3c2dCRUlCVVVVRVFFRVVJUUFNQndzTElBS25NUUFDUXQ4QVVhMGhBa0VWSVFBTUJRdENBQ0VDQ3lBQnJVSVFmS2NnQWp3QUFDQUJRUWhxSWdFa0FFRUFEd3NnQVVFSWF5SUJKQUFnQVVLWWdKaUFBVGNEQUVFQUVOZ0VJd0FoQVEwREN3c0JDd0FMUVFFTHVnUUNBWDhIZmlNQUlRRUNRQU5BQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FBNGxBQUVCQVFJQ0F3TUVCQVFFQkFRRUJBVUdCZ1lHQndjSEJ3Y0lDUW9MREEwT0R4QVFFUklMSUFFcEF3aFFyU0lDVUVVRVFFRUVJUUFNRXdzTEFTQUJLUU1JSVFKQ0FDRURRZ0FoQkVFSUlRQU1FUXNnQWExQ0VIeW5RZ0EzQXdBZ0FhMUNHSHluUWdBM0F3QWdBVUVJYWlJQkpBQkJBQThMSUFOQ0FYd2hBd3NnQTBJSGZpRUZJQU1nQW53aUJrSUJmQ0lIVUFSQUlBRkJDR3NpQVNRQUlBRkNpNENjZ0FFM0F3QkJBQkRKQkNNQUlRRU5FQXNnQjZjeEFBQWlCMEwvQUlNaENBRWdDRUwvQVlNaENBRkNBQ0FGVjBVRVFFRWlJUUFNRHdzTElBZ2dCWVlpQ0VJQUlBVkN3QUJVR3lFRklBZENnSCtEUXY4Qmd5RUhJQVVnQkh3aEJDQUhVRVVFUUVFR0lRQU1EZ3NMQVFFZ0JFSUFVd1JBUVNBaEFBd05Dd3NnQmtJQ2ZDRUNRZ0FnQW4waEF5QUNJUUlnQXlBRVZBUkFRUnNoQUF3TUN3c2dBYTFDRUh5bklBSTNBd0FnQWExQ0dIeW5JQVEzQXdBZ0FVRUlhaUlCSkFCQkFBOExJQUpRclZCRkJFQkJIaUVBREFvTEN5QUJRUWhySWdFa0FDQUJRcDJBbklBQk53TUFRUUFRK0FjakFDRUJEUWtMQ3lBQlFRaHJJZ0VrQUNBQlFwK0FuSUFCTndNQVFRQVErUWNqQUNFQkRRY0xDeUFCUVFocklnRWtBQ0FCUXFHQW5JQUJOd01BUVFBUStBY2pBQ0VCRFFVTEN5QUJRUWhySWdFa0FDQUJRcVNBbklBQk53TUFRUUFRMkFRakFDRUJEUU1MQ3dFTEFBdEJBUXZ0QmdJQmZ3aCtJd0FoQVFKQUEwQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQURqc0FBQUFBQUFBQUFRRUJBZ0lEQXdRRUJBUUVCQVFFQlFZR0JnY0lDQWdJQ0FnSUNBa0tDZ29LQ3dzTEN3c01EUTRQRUJFU0V4UVVGUllXRnhnTEFTQUJLUU1JVUFSQUlBRkJDR3NpQVNRQUlBRkNoSUNnZ0FFM0F3QkJBQkRKQkNNQUlRRU5HZ3NnQVNrRENLY3hBQUJDQW9NaUFrTC9BWU5RclNFQ0FTQUNVRVVFUUVFS0lRQU1HUXNMQVNBQktRTUlJUUpDQUNFRFFnQWhCRUVPSVFBTUZ3c2dBYTFDRUh5blFnQTNBd0FnQWExQ0dIeW5RZ0EzQXdBZ0FVRUlhaUlCSkFCQkFBOExJQU5DQVh3aEF3c2dBMElIZmlFRklBSWhCaUFESUFaOFFnRjhJZ2RRQkVBZ0FVRUlheUlCSkFBZ0FVS1JnS0NBQVRjREFFRUFFTWtFSXdBaEFRMFdDeUFIcHpFQUFDSUhRdjhBZ3lFSUFTQUlRdjhCZ3lFSUFVSUFJQVZYUlFSQVFUZ2hBQXdWQ3dzZ0NDQUZoaUlJUWdBZ0JVTEFBRlFiSVFVZ0IwS0FmNE5DL3dHRElRY2dCU0FFZkNFRUlBZFFSUVJBUVF3aEFBd1VDd3NCSUFNZ0JId2hBa0lBSVFOQ0FDRUVRUnNoQUF3U0N5QURRZ0Y4SVFNTElBTWdBbndoQlNBRFFnZCtJUWNnQmlBRmZDSUZRZ0o4SWdoUUJFQWdBVUVJYXlJQkpBQWdBVUtlZ0tDQUFUY0RBRUVBRU1rRUl3QWhBUTBTQ3lBSXB6RUFBQ0lJUXY4QWd5RUpBU0FKUXY4Qmd5RUpBVUlBSUFkWFJRUkFRVFVoQUF3UkN3c2dDU0FIaGtJQUlBZEN3QUJVR3lFSElBaENnSCtEUXY4Qmd5RUlJQWNnQkh3aEJDQUlVRVVFUUVFYUlRQU1FQXNMQVFFZ0JFSUFVd1JBUVRNaEFBd1BDd3NnQlVJRGZDRUNRZ0FnQW4waEF5QUNJUUlnQXlBRVZBUkFRUzRoQUF3T0N3c2dBYTFDRUh5bklBSTNBd0FnQWExQ0dIeW5JQVEzQXdBZ0FVRUlhaUlCSkFCQkFBOExJQUpRclZCRkJFQkJNU0VBREF3TEN5QUJRUWhySWdFa0FDQUJRckNBb0lBQk53TUFRUUFRK0FjakFDRUJEUXNMQ3lBQlFRaHJJZ0VrQUNBQlFyS0FvSUFCTndNQVFRQVErUWNqQUNFQkRRa0xDeUFCUVFocklnRWtBQ0FCUXJTQW9JQUJOd01BUVFBUStBY2pBQ0VCRFFjTEN5QUJRUWhySWdFa0FDQUJRcmVBb0lBQk53TUFRUUFRMkFRakFDRUJEUVVMQ3lBQlFRaHJJZ0VrQUNBQlFycUFvSUFCTndNQVFRQVEyQVFqQUNFQkRRTUxDd0VMQUF0QkFRdjlGQUlCZndsK0l3QWhBUUpBQTBBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQU9VQUFBQVFJQ0FnSUNBd1FGQmdjSEJ3Y0hDQWtLQ3d3TURBd01EUTRQRUJFUkVSSVRGQlVXRnhnWkdob2FHeHNiSEIwZUh5QWhJaU1rSlNZbktDa3FLaXNzTFM0dUx6QXhNakl6TkRVMk56ZzVPZ3NnQVNNQ3B5Z0NFRUVvYWswRVFDQUJRUWhySWdFa0FDQUJRb0NBcElBQk53TUFRUUFRcGdrakFDRUJEVHdMSUFGQnFBRnJJZ0VrQUVLQWdJQ0FBaUFCS1FPNEFWY0VRRUhNQUNFQUREc0xDMEtBZ0lDQUFpQUJLUVBJQVZjRVFFSEhBQ0VBRERvTEN5QUJyVUxVQUh5blFnQTNBd0FnQWExQzFBQjhwMElBTndNQ0lBR3RRc29BZktkQ0FEY0RBQ0FCclVMS0FIeW5RZ0EzQXdJQklBRXBBN2dCSWdJaEEwSUFJUVJCQ1NFQUREZ0xJQUd0UXRRQWZDQUVmS2NnQWp3QUFDQUVRZ0Y4SVFRZ0JTRUNDeUFDUWdlSElRVWdBa0wvQUlNaEFpQUZVQVJBUVFzaEFBdzNDd3NnQWtLQWY0UWhBaUFFUWdwVUJFQkJDQ0VBRERZTFFjVUFJUUFNTlFzZ0JFSUtWRVVFUUVIQ0FDRUFERFVMQ3lBQnJVTFVBSHdnQkh5bklBSThBQUFCSUFFcEE4Z0JJZ0loQlVJQUlRWkJFaUVBRERNTElBR3RRc29BZkNBR2ZLY2dBandBQUNBR1FnRjhJUVlnQnlFQ0N5QUNRZ2VISVFjZ0FrTC9BSU1oQWlBSFVBUkFRUlFoQUF3eUN3c2dBa0tBZjRRaEFpQUdRZ3BVQkVCQkVTRUFEREVMUWNBQUlRQU1NQXNnQmtJS1ZFVUVRRUU5SVFBTU1Bc0xJQUVnQmpjRGVDQUJJQVEzQTRBQklBUWdBM3doQnlBQklBYzNBNUFCSUFWUXJTRUlJQUd0UXNvQWZDQUdmS2NnQWp3QUFDQUhRZ0o4SVFJZ0FTQUNOd053SUFoUXJTRUlJQUVnQ0R3QVh5QUlwMFVFUUVFYklRQU1Md3NMSUFZZ0JYd2dCM3hDQTN3aENTQUJNUURRQVVJQ2hDRUtRUndoQUF3dEN5QUJNUURRQVNFS0lBSWhDUXNnQVNBS1BBQmVJQUVnQ1RjRGlBRWdBVUtBMVFZM0F3QWdBYTFDQ0h5bklBazNBd0FnQWExQ0VIeW5JQWszQXdBZ0FVRUlheUlCSkFBZ0FVS2RnS1NBQVRjREFFRUFFTVVHSXdBaEFRMHNDeUFCTVFCZVFnaUVJUUlnQVNrRGlBRlFyU0VESUFJZ0FURUFYaUFCTVFEUkFhY2JJUUlnQTFCRkJFQkJPeUVBRENzTEN5QUJyVUlZZktjcEF3QWhBeUFCSUFNM0E2QUJJQU9uSUFJOEFBQWdBU2tEaUFGQ2Yzd2hBaUFEUWdBZ0FuMUNQNGRDQVlOOElRUWdBU2tEZ0FGQ0FYd2lCU0FDSUFVZ0FsTWJJUUlnQWExQzFBQjhJQVJTUlFSQVFTTWhBQXdxQ3dzZ0FTQUVOd01BSUFHdFFnaDhweUFCclVMVUFIdzNBd0FnQWExQ0VIeW5JQUkzQXdBZ0FVRUlheUlCSkFBZ0FVS2lnS1NBQVRjREFFRUFFTThKSXdBaEFRMHBDeUFCS1FPZ0FTRURDeUFCS1FPQUFVSUNmQ0lDSUFFcEE0Z0JXRVVFUUVFNUlRQU1Kd3NMSUFFcEE0Z0JJQUVwQTRBQmZVSitmQ0VFSUFFcEE3Z0JJQVJUclNFRklBTWdBa0lBSUFSOVFqK0hnM3doQWlBQktRTzRBU0FFSUFXbkd5RUVJQUVwQTdBQklBSlNSUVJBUVNjaEFBd21Dd3NnQVNBQ053TUFJQUd0UWdoOHB5QUJLUU93QVRjREFDQUJyVUlRZktjZ0JEY0RBQ0FCUVFocklnRWtBQ0FCUXFhQXBJQUJOd01BUVFBUXp3a2pBQ0VCRFNVTElBRXBBNkFCSVFNTElBRXhBRjhpQXFkRkJFQkJOQ0VBRENNTEN5QUJLUU53SUFFcEE0Z0JXRVVFUUVFM0lRQU1JZ3NMSUFFcEE0Z0JJQUVwQTVBQmZTSUNRbjU4SVFRZ0EwSUFJQVI5UWorSElBRXBBM0NEZkNFRklBRXBBM2hDQVh3aUJpQUVJQVlnQkZNYklRY2dBYTFDeWdCOElBVlNSUVJBUVRBaEFBd2hDd3NnQVNBR053TmdJQUVnQkRjRGFDQUJJQVUzQTVnQklBRWdBamNEa0FFZ0FTQUZOd01BSUFHdFFnaDhweUFCclVMS0FIdzNBd0FnQWExQ0VIeW5JQWMzQXdBZ0FVRUlheUlCSkFBZ0FVS3ZnS1NBQVRjREFFRUFFTThKSXdBaEFRMGdDeUFCS1FPUUFTRUNJQUVwQTZBQklRTWdBU2tEYUNFRUlBRXBBNWdCSVFVZ0FTa0RZQ0VHQ3lBR0lBUllSUVJBUVRVaEFBd2VDd3NnQWlBQktRTjRmVUo5ZkNFQ0lBRXBBOGdCSUFKVHJTRUVJQVZDQUNBQ2ZVSS9oeUFHZzN3aEJTQUJLUVBJQVNBQ0lBU25HeUVDSUFFcEE4QUJJQVZTUlFSQVFUUWhBQXdkQ3dzZ0FTQUZOd01BSUFHdFFnaDhweUFCS1FQQUFUY0RBQ0FCclVJUWZLY2dBamNEQUNBQlFRaHJJZ0VrQUNBQlFyT0FwSUFCTndNQVFRQVF6d2tqQUNFQkRSd0xJQUVwQTZBQklRTUxJQUd0UXRnQmZLY2dBemNEQUNBQlFhZ0JhaUlCSkFBZ0FVRUlhaUlCSkFCQkFBOExJQUVnQmpjREFDQUJyVUlJZktjZ0JEY0RBQ0FCUVFocklnRWtBQ0FCUXJhQXBJQUJOd01BUVFBUTFBUWpBQ0VCRFJrTEN5QUJJQUVwQTNBM0F3QWdBYTFDQ0h5bklBRXBBNGdCTndNQUlBRkJDR3NpQVNRQUlBRkN1SUNrZ0FFM0F3QkJBQkRVQkNNQUlRRU5Gd3NMSUFFZ0FqY0RBQ0FCclVJSWZLY2dBU2tEaUFFM0F3QWdBVUVJYXlJQkpBQWdBVUs2Z0tTQUFUY0RBRUVBRU5RRUl3QWhBUTBWQ3dzZ0FVSUFOd01BSUFHdFFnaDhwMElBTndNQUlBRkJDR3NpQVNRQUlBRkN2SUNrZ0FFM0F3QkJBQkRPQkNNQUlRRU5Fd3NMSUFFZ0JqY0RBQ0FCclVJSWZLZENDamNEQUNBQlFRaHJJZ0VrQUNBQlFyK0FwSUFCTndNQVFRQVF6Z1FqQUNFQkRSRUxDeUFCSUFZM0F3QWdBYTFDQ0h5blFnbzNBd0FnQVVFSWF5SUJKQUFnQVVMQmdLU0FBVGNEQUVFQUVNNEVJd0FoQVEwUEN3c2dBU0FFTndNQUlBR3RRZ2g4cDBJS053TUFJQUZCQ0dzaUFTUUFJQUZDeElDa2dBRTNBd0JCQUJET0JDTUFJUUVORFFzTElBRWdCRGNEQUNBQnJVSUlmS2RDQ2pjREFDQUJRUWhySWdFa0FDQUJRc2FBcElBQk53TUFRUUFRemdRakFDRUJEUXNMQ3lBQlFnQTNBd0FnQWExQ0NIeW5RcHpBRWpjREFDQUJyVUlRZktkQ0d6Y0RBQ0FCclVJWWZLY2dBU2tEd0FFM0F3QWdBYTFDSUh5blFvQUlOd01BSUFHdFFpaDhwMEwxbmhFM0F3QWdBYTFDTUh5blFnTTNBd0FnQVVFSWF5SUJKQUFnQVVMSmdLU0FBVGNEQUVFQUVPQUdJd0FoQVEwSkN5QUJyVUk0ZktjcEF3QWhBaUFCclVMQUFIeW5LUU1BSVFNZ0FTQUNOd01BSUFHdFFnaDhweUFETndNQUlBRkJDR3NpQVNRQUlBRkN5b0NrZ0FFM0F3QkJBQkMxQVNNQUlRRU5DQXNnQWExQ0VIeW5LUU1BSVFJZ0FVS0ExQVkzQXdBZ0FhMUNDSHluSUFJM0F3QWdBVUVJYXlJQkpBQWdBVUxMZ0tTQUFUY0RBRUVBRU9JRUl3QWhBUTBIQ3dzZ0FVSUFOd01BSUFHdFFnaDhwMExDeUJJM0F3QWdBYTFDRUh5blFodzNBd0FnQWExQ0dIeW5JQUVwQTdBQk53TUFJQUd0UWlCOHAwS0FDRGNEQUNBQnJVSW9mS2RDOVo0Uk53TUFJQUd0UWpCOHAwSUROd01BSUFGQkNHc2lBU1FBSUFGQ3pZQ2tnQUUzQXdCQkFCRGdCaU1BSVFFTkJRc2dBYTFDT0h5bktRTUFJUUlnQWExQ3dBQjhweWtEQUNFRElBRWdBamNEQUNBQnJVSUlmS2NnQXpjREFDQUJRUWhySWdFa0FDQUJRczZBcElBQk53TUFRUUFRdFFFakFDRUJEUVFMSUFHdFFoQjhweWtEQUNFQ0lBRkNnTlFHTndNQUlBR3RRZ2g4cHlBQ053TUFJQUZCQ0dzaUFTUUFJQUZDejRDa2dBRTNBd0JCQUJEaUJDTUFJUUVOQXdzTEFRc0FDMEVCQy9JREFnRi9BMzRqQUNFQkFrQURRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQUE0V0FBQUJBUUVCQWdNREJBUUZCZ1lIQndnSkNnc0xEQTBMSUFFakFxY29BaEJOQkVBZ0FVRUlheUlCSkFBZ0FVS0FnS2lBQVRjREFFRUFFS1lKSXdBaEFRMFBDeUFCUVJCcklnRWtBQ01DcHlrRElDSUNVRVVFUUNBQnJVSVlmQ0FDcHlrREFGRUVRQ0FDcHlBQnJUY0RBQXNMSUFFcEF4aFFyVkJGQkVCQkV5RUFEQTRMQ3lBQktRTVlweWtEQUNFQ1F0QzVvZ0duS1FNSUlRTUJRdEM1b2dHbktRTUFJUVFnQWlBRFUwVUVRRUVKSVFBTURRc0xJQUlnQTFSRkJFQkJFU0VBREF3TEN5QUVJQUpDQklaOElnS25LUU1BSVFNZ0FxY3BBd2doQWtFTklRQU1DZ3NnQTFDdFVFVUVRRUVPSVFBTUNnc0xJQVNuS1FNQUlRTWdCS2NwQXdnaEFnc2dBYTFDSUh5bklBTTNBd0FnQWExQ0tIeW5JQUkzQXdBZ0FVRVFhaUlCSkFBZ0FVRUlhaUlCSkFCQkFBOExJQUZDQURjREFDQUJyVUlJZktkQ0FEY0RBQ0FCUVFocklnRWtBQ0FCUXBDQXFJQUJOd01BUVFBUXpnUWpBQ0VCRFFjTEN5QUJJQUkzQXdBZ0FhMUNDSHluSUFNM0F3QWdBVUVJYXlJQkpBQWdBVUtTZ0tpQUFUY0RBRUVBRU04RUl3QWhBUTBGQ3dzZ0FVRUlheUlCSkFBZ0FVS1ZnS2lBQVRjREFFRUFFSjhCSXdBaEFRMERDd3NCQ3dBTFFRRUx6d0VDQVg4QmZpTUFJUUVDUUFOQUFrQUNRQUpBQWtBQ1FDQUFEZ29BQUFBQUFBQUJBUUlEQkFzakFxY3BBeUFpQWxCRkJFQWdBYTFDQ0h3Z0FxY3BBd0JSQkVBZ0FxY2dBYTAzQXdBTEN5QUJLUU1JVUFSQUlBRkJDR3NpQVNRQUlBRkNnWUNzZ0FFM0F3QkJBQkRKQkNNQUlRRU5CZ3NnQVNrRENLY3hBQmRDSDROQy93R0RJUUlCQVNBQ1FoRlJSUVJBUVFnaEFBd0ZDd3NnQVNrRENLY3BBMEFoQWtFSklRQU1Bd3RDQUNFQ0N5QUJyVUlRZktjZ0FqY0RBQ0FCUVFocUlnRWtBRUVBRHdzTEFBdEJBUXZ4QVFJQmZ3RitJd0FoQVFKQUFrQUNRQUpBSUFBT0JRQUFBQUFCQWdzZ0FTTUNweWdDRUUwRVFDQUJRUWhySWdFa0FDQUJRb0NBc0lBQk53TUFRUUFRcGdrakFDRUJEUU1MSUFGQkVHc2lBU1FBSXdLbktRTWdJZ0pRUlFSQUlBR3RRaGg4SUFLbktRTUFVUVJBSUFLbklBR3ROd01BQ3dzZ0FTa0RHRkFFUUNBQlFRaHJJZ0VrQUNB