diff --git a/lua/api/features/screen/tree.lua b/lua/api/features/screen/tree.lua index 7058d81..a27b889 100644 --- a/lua/api/features/screen/tree.lua +++ b/lua/api/features/screen/tree.lua @@ -85,6 +85,22 @@ function tree.hit(root, x, y) end ---@return integer h function tree.getRect(id) end +---Pans a scrollable node's children, clamped to the content. The node is marked dirty, so the next draw repaints it. +---@param id NodeId +---@param x integer +---@param y integer +function tree.setScroll(id, x, y) end + +---Returns a scrollable node's current offset, or zeroes. +---@param id NodeId +---@return integer x, integer y +function tree.getScroll(id) end + +---Returns how far each axis can pan before the content's far edge reaches the box. Zero on an axis whose content fits. +---@param id NodeId +---@return integer maxX, integer maxY +function tree.getScrollRange(id) end + ---Replaces a node's text and marks it for repaint. ---@param id NodeId ---@param text string @@ -138,8 +154,8 @@ function tree.getFocus() end ---@return NodeId? focused Current focus when no candidate exists. function tree.moveFocus(root, direction) end ----Registers the painter every custom node calls. ----@param painter fun(id: NodeId, x: integer, y: integer, w: integer, h: integer) +---Registers the painter every custom node calls. The clip arguments are the region of the node being painted now -- one band of a composited repaint -- so a painter can cull to it instead of redrawing itself once per band. +---@param painter fun(id: NodeId, x: integer, y: integer, w: integer, h: integer, clipX: integer, clipY: integer, clipW: integer, clipH: integer) function tree.setPainter(painter) end ---Paints dirty nodes; the firmware owns publication to the physical display. diff --git a/lua/lib/ui.lua b/lua/lib/ui.lua index a3383f4..917a565 100644 --- a/lua/lib/ui.lua +++ b/lua/lib/ui.lua @@ -27,8 +27,10 @@ local ui = {} ---@field on_enter? UiHandler ---@field on_exit? UiHandler ---@field on_click? UiHandler ----@field paint? fun(id: NodeId, x: integer, y: integer, w: integer, h: integer) +---@field paint? fun(id: NodeId, x: integer, y: integer, w: integer, h: integer, clipX: integer, clipY: integer, clipW: integer, clipH: integer) ---@field press_style? boolean False for a widget that paints its own press feedback. +---@field scrollX? boolean Children measure unbounded across, and the box pans horizontally. +---@field scrollY? boolean Children measure unbounded down, and the box pans vertically. ---@class UiConfirmSpec ---@field title string @@ -135,10 +137,13 @@ local function clearState() pressStyles = {} end -tree.setPainter(function(id, x, y, w, h) +-- The clip is the slice of the node being repainted now, which for a composited repaint is +-- one band. A painter that ignores it still draws correctly; one that culls to it stops +-- redrawing its whole contents once per band it spans. +tree.setPainter(function(id, x, y, w, h, clipX, clipY, clipW, clipH) local painter = painters[id] if painter then - painter(id, x, y, w, h) + painter(id, x, y, w, h, clipX, clipY, clipW, clipH) end end) @@ -308,6 +313,29 @@ function ui.invalidate(id) tree.invalidate(id) end +---Pans a scrollable node, clamped to its content. The node is marked dirty, so the next +---ui.draw() repaints it -- there is nothing for the app to draw and no handle to refresh, +---which is the whole point of scrolling in the tree rather than in a painter. +---@param id NodeId +---@param x integer +---@param y integer +function ui.setScroll(id, x, y) + tree.setScroll(id, x, y) +end + +---@param id NodeId +---@return integer x, integer y +function ui.getScroll(id) + return tree.getScroll(id) +end + +---How far each axis can pan. Zero on an axis whose content already fits. +---@param id NodeId +---@return integer maxX, integer maxY +function ui.getScrollRange(id) + return tree.getScrollRange(id) +end + ---@param spec UiConfirmSpec ---@return NodeId function ui.confirm(spec) @@ -393,10 +421,15 @@ function ui.rebuild() collectgarbage() end +-- One GC step a frame, because the collector's default pace is the painter's problem: a +-- band buffer needs a contiguous block, and letting the heap double before a cycle lets +-- garbage take the block the band was going to get. Stepping keeps the sawtooth shallow +-- enough that beginBuffer() keeps succeeding instead of falling back to the panel. function ui.draw() if root then tree.draw(root) end + collectgarbage "step" end local function inside(id, x, y) diff --git a/native/include/lua/layout.h b/native/include/lua/layout.h index ceb4eea..05a3fbf 100644 --- a/native/include/lua/layout.h +++ b/native/include/lua/layout.h @@ -36,6 +36,8 @@ enum Flag : uint8_t { INTERACTIVE = 1 << 2, // has an on_press DIRTY = 1 << 3, PRESSED = 1 << 4, + SCROLL_X = 1 << 5, // children measure unbounded across, and pan horizontally + SCROLL_Y = 1 << 6, }; enum SizeMode : uint8_t { AUTO, PX, FRACTION, FILL }; @@ -118,6 +120,15 @@ struct Spec { uint16_t last = NONE; // tail of the child list, so append is not a walk }; +// A scroll container's pan offset and the size of what it holds. Sparse like +// styles, because a screen has one or two of these and Node has no room: the +// offsets are what setScroll() clamps against, and the content size is the only +// thing measure() learns that place() would otherwise throw away. +struct Scroll { + int16_t x = 0, y = 0; + int16_t contentW = 0, contentH = 0; +}; + // Resistive panels land a few pixels off, so a hit box is larger than what was // painted. constexpr int SLOP = 4; @@ -145,6 +156,7 @@ public: labelAt.clear(); labels.clear(); styles.clear(); + scrollState.clear(); error = nullptr; } @@ -215,6 +227,64 @@ public: return (n.flags & INTERACTIVE) ? id : NONE; } + bool scrolls(uint16_t id) const { + return (nodes[id].flags & (SCROLL_X | SCROLL_Y)) != 0; + } + + const Scroll* scrollOf(uint16_t id) const { + for (size_t at = 0; at < scrollState.size(); at++) { + if (scrollState[at].first == id) + return &scrollState[at].second; + } + return nullptr; + } + + // How far each axis can pan before the content's far edge reaches the box. + void scrollRange(uint16_t id, int& maxX, int& maxY) const { + maxX = maxY = 0; + const Scroll* s = scrollOf(id); + if (!s) + return; + if (nodes[id].flags & SCROLL_X) + maxX = s->contentW - nodes[id].w; + if (nodes[id].flags & SCROLL_Y) + maxY = s->contentH - nodes[id].h; + if (maxX < 0) + maxX = 0; + if (maxY < 0) + maxY = 0; + } + + // Pans the subtree, clamped to the content. Applied as a delta to the stored + // coordinates rather than by placing again: place() reads Spec, which + // dropScratch() has already thrown away, and shifting keeps x/y in screen + // space so hit testing, getRect and every paint routine stay unchanged. + void setScroll(uint16_t id, int x, int y) { + if (!scrolls(id)) + return; + Scroll* state = mutableScroll(id); + if (!state) + return; + int maxX = 0, maxY = 0; + scrollRange(id, maxX, maxY); + if (x < 0) + x = 0; + if (y < 0) + y = 0; + if (x > maxX) + x = maxX; + if (y > maxY) + y = maxY; + const int dx = x - state->x, dy = y - state->y; + if (dx == 0 && dy == 0) + return; + state->x = static_cast(x); + state->y = static_cast(y); + for (uint16_t c = nodes[id].first; c != NONE; c = nodes[c].next) + shift(c, -dx, -dy); + nodes[id].flags |= DIRTY; + } + // Layout inputs are dead once place() has run. Callers drop them here rather // than carrying ~20 bytes a node for the lifetime of a screen. void dropScratch() { @@ -302,6 +372,25 @@ private: std::vector labelAt; std::vector labels; std::vector> styles; + // Linear rather than the sorted search styles use: a screen has one or two + // scroll containers, so the binary search would cost more than the scan. + std::vector> scrollState; + + Scroll* mutableScroll(uint16_t id) { + for (size_t at = 0; at < scrollState.size(); at++) { + if (scrollState[at].first == id) + return &scrollState[at].second; + } + scrollState.push_back(std::make_pair(id, Scroll())); + return &scrollState.back().second; + } + + void shift(uint16_t id, int dx, int dy) { + nodes[id].x = static_cast(nodes[id].x + dx); + nodes[id].y = static_cast(nodes[id].y + dy); + for (uint16_t c = nodes[id].first; c != NONE; c = nodes[c].next) + shift(c, dx, dy); + } void fail(const char* message) { if (!error) @@ -345,6 +434,22 @@ private: // by its content cannot tell a child what fraction of it to take. int innerH = h != UNKNOWN ? h - s.padT - s.padB : UNKNOWN; + // A scrolled axis is unbounded for the children, so they take their natural + // size and the content is free to overflow the box. The box itself still + // needs a size of its own on that axis -- one derived from the content + // would grow to fit it and never scroll. + const uint8_t scrollFlags = nodes[id].flags & (SCROLL_X | SCROLL_Y); + if (scrollFlags & SCROLL_X) { + if (w == UNKNOWN) + fail("scroll-x needs a width"); + innerW = UNKNOWN; + } + if (scrollFlags & SCROLL_Y) { + if (h == UNKNOWN) + fail("scroll-y needs a height"); + innerH = UNKNOWN; + } + int main = 0, cross = 0, count = 0; for (uint16_t c = nodes[id].first; c != NONE; c = nodes[c].next) { measure(c, innerW, innerH); @@ -373,16 +478,19 @@ private: cross = row ? s.intrinsicH : s.intrinsicW; } - Node& self = nodes[id]; int along = main + (row ? s.padL + s.padR : s.padT + s.padB); int across = cross + (row ? s.padT + s.padB : s.padL + s.padR); - if (row) { - self.w = static_cast(w != UNKNOWN ? w : along); - self.h = static_cast(h != UNKNOWN ? h : across); - } else { - self.w = static_cast(w != UNKNOWN ? w : across); - self.h = static_cast(h != UNKNOWN ? h : along); + const int contentW = row ? along : across; + const int contentH = row ? across : along; + if (scrollFlags) { + Scroll* state = mutableScroll(id); + state->contentW = static_cast(contentW); + state->contentH = static_cast(contentH); } + + Node& self = nodes[id]; + self.w = static_cast(w != UNKNOWN ? w : contentW); + self.h = static_cast(h != UNKNOWN ? h : contentH); } void place(uint16_t id, int x, int y, int w, int h) { diff --git a/native/include/lua/providers.h b/native/include/lua/providers.h index 5a58fcf..297ccb5 100644 --- a/native/include/lua/providers.h +++ b/native/include/lua/providers.h @@ -137,6 +137,36 @@ public: // clean up ghosting all stay here. A live LCD has nothing pending and does // nothing. virtual void commit() = 0; + // Offscreen band for composited repaints. beginBuffer opens a RAM surface + // covering the screen rectangle (x, y, w, h); every subsequent draw keeps its + // screen coordinates (the driver translates into the band) and clips to it, + // so a caller re-walks the same tree per band without renumbering anything. + // present() blits the band back to (x, y) and returns drawing to the panel. + // Re-rasterizing into RAM and pushing once collapses a per-primitive bus + // transaction storm into a streamed write, which is what direct-to-panel + // drawing cannot make smooth. A driver with no spare RAM (or an e-ink panel + // that gains nothing) refuses the band, so the painter draws to the panel. + virtual bool beginBuffer(int32_t x, int32_t y, int32_t w, int32_t h) { + (void)x; + (void)y; + (void)w; + (void)h; + return false; + } + virtual void present() {} + // Clips every draw to this screen rectangle until clearClip(). The painter + // wraps a custom node in its own box, because a node owns its box and nothing + // else's: a band is usually taller than the node it covers, so a painter that + // draws outside itself -- a list row half scrolled off the top -- would + // otherwise land on whatever else that band covers. Not clipping is only safe + // while no custom node ever overdraws. + virtual void setClip(int32_t x, int32_t y, int32_t w, int32_t h) { + (void)x; + (void)y; + (void)w; + (void)h; + } + virtual void clearClip() {} virtual void fillPolygon(const int32_t* xs, const int32_t* ys, size_t count, int32_t color) = 0; // Null coordinates centre the image; null bounds fall back to the panel size. diff --git a/native/src/bindings/features/screen/tree.cpp b/native/src/bindings/features/screen/tree.cpp index 3864fd9..d60673a 100644 --- a/native/src/bindings/features/screen/tree.cpp +++ b/native/src/bindings/features/screen/tree.cpp @@ -177,6 +177,10 @@ int create(lua_State* state) { flags |= ui::CAPTURE; if (readFlag(state, 2, "interactive")) flags |= ui::INTERACTIVE; + if (readFlag(state, 2, "scrollX")) + flags |= ui::SCROLL_X; + if (readFlag(state, 2, "scrollY")) + flags |= ui::SCROLL_Y; lua_getfield(state, 2, "font"); const int32_t font = lua_isnoneornil(state, -1) @@ -270,6 +274,27 @@ int getRect(lua_State* state) { return 4; } +int setScroll(lua_State* state) { + tree(state).setScroll(checkNode(state, 1), checkInt(state, 2), + checkInt(state, 3)); + return 0; +} + +int getScroll(lua_State* state) { + const ui::Scroll* scroll = tree(state).scrollOf(checkNode(state, 1)); + lua_pushinteger(state, scroll ? scroll->x : 0); + lua_pushinteger(state, scroll ? scroll->y : 0); + return 2; +} + +int getScrollRange(lua_State* state) { + int maxX = 0, maxY = 0; + tree(state).scrollRange(checkNode(state, 1), maxX, maxY); + lua_pushinteger(state, maxX); + lua_pushinteger(state, maxY); + return 2; +} + int setLabel(lua_State* state) { const uint16_t id = checkNode(state, 1); const char* text = luaL_checkstring(state, 2); @@ -467,7 +492,8 @@ int moveFocus(lua_State* state) { return 1; } -void callPainter(void* context, uint16_t id, int x, int y, int w, int h) { +void callPainter(void* context, uint16_t id, int x, int y, int w, int h, + int clipX, int clipY, int clipW, int clipH) { lua_State* state = static_cast(context); lua_getfield(state, LUA_REGISTRYINDEX, PAINTER_KEY); if (!lua_isfunction(state, -1)) { @@ -479,7 +505,11 @@ void callPainter(void* context, uint16_t id, int x, int y, int w, int h) { lua_pushinteger(state, y); lua_pushinteger(state, w); lua_pushinteger(state, h); - if (lua_pcall(state, 5, 0, 0) != LUA_OK) { + lua_pushinteger(state, clipX); + lua_pushinteger(state, clipY); + lua_pushinteger(state, clipW); + lua_pushinteger(state, clipH); + if (lua_pcall(state, 9, 0, 0) != LUA_OK) { Runtime::from(state)->log().write( LogLevel::Error, lua_tostring(state, -1) ? lua_tostring(state, -1) : "painter"); @@ -554,6 +584,21 @@ const luaL_Reg FUNCTIONS[] = { // @return integer w // @return integer h {"getRect", getRect}, + // --- Pans a scrollable node's children, clamped to the content. The node + // is marked dirty, so the next draw repaints it. + // @param id NodeId + // @param x integer + // @param y integer + {"setScroll", setScroll}, + // --- Returns a scrollable node's current offset, or zeroes. + // @param id NodeId + // @return integer x, integer y + {"getScroll", getScroll}, + // --- Returns how far each axis can pan before the content's far edge + // reaches the box. Zero on an axis whose content fits. + // @param id NodeId + // @return integer maxX, integer maxY + {"getScrollRange", getScrollRange}, // --- Replaces a node's text and marks it for repaint. // @param id NodeId // @param text string @@ -597,9 +642,12 @@ const luaL_Reg FUNCTIONS[] = { // @param direction NodeDirection // @return NodeId|nil focused Current focus when no candidate exists. {"moveFocus", moveFocus}, - // --- Registers the painter every custom node calls. + // --- Registers the painter every custom node calls. The clip arguments are + // the region of the node being painted now -- one band of a composited + // repaint -- so a painter can cull to it instead of redrawing itself once + // per band. // @param painter fun(id: NodeId, x: integer, y: integer, w: integer, h: - // integer) + // integer, clipX: integer, clipY: integer, clipW: integer, clipH: integer) {"setPainter", setPainter}, // --- Paints dirty nodes; the firmware owns publication to the physical // display. diff --git a/native/src/embedded_modules.cpp b/native/src/embedded_modules.cpp index b34043c..7bfcfad 100644 --- a/native/src/embedded_modules.cpp +++ b/native/src/embedded_modules.cpp @@ -4,7 +4,7 @@ namespace esp32lua { static const unsigned char hints[] = {0x1b, 0x4c, 0x75, 0x61, 0x54, 0x00, 0x19, 0x93, 0x0d, 0x0a, 0x1a, 0x0a, 0x04, 0x04, 0x04, 0x78, 0x56, 0x00, 0x00, 0x00, 0x40, 0xb9, 0x43, 0x01, 0x80, 0x80, 0x80, 0x00, 0x01, 0x08, 0x91, 0x51, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x06, 0x52, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x83, 0x81, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0x83, 0x82, 0x01, 0x00, 0x03, 0x03, 0x02, 0x00, 0x83, 0x83, 0x02, 0x00, 0xce, 0x00, 0x06, 0x00, 0x4f, 0x01, 0x00, 0x00, 0xcf, 0x81, 0x00, 0x00, 0x12, 0x00, 0x06, 0x03, 0x46, 0x80, 0x02, 0x01, 0xc6, 0x81, 0x01, 0x01, 0x87, 0x04, 0x85, 0x62, 0x61, 0x63, 0x6b, 0x04, 0x85, 0x6c, 0x65, 0x66, 0x74, 0x04, 0x83, 0x75, 0x70, 0x04, 0x85, 0x64, 0x6f, 0x77, 0x6e, 0x04, 0x86, 0x72, 0x69, 0x67, 0x68, 0x74, 0x04, 0x88, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x81, 0x01, 0x00, 0x00, 0x82, 0x80, 0x89, 0x91, 0x00, 0x00, 0x08, 0x95, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xb8, 0x06, 0x00, 0x80, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0xc2, 0x00, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x80, 0x8b, 0x00, 0x00, 0x02, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x01, 0x44, 0x01, 0x01, 0x00, 0xc4, 0x00, 0x00, 0x05, 0xcb, 0x80, 0x00, 0x00, 0x10, 0x80, 0x06, 0x03, 0xcc, 0x00, 0x00, 0x02, 0xcd, 0x80, 0x01, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x46, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x01, 0x00, 0x84, 0x04, 0x88, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x04, 0x87, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x11, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x96, 0xb1, 0x02, 0x00, 0x19, 0xf8, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x0e, 0x01, 0x01, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x01, 0x0e, 0x01, 0x02, 0x02, 0x8e, 0x01, 0x01, 0x03, 0xc2, 0x81, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x01, 0x8e, 0x01, 0x03, 0x03, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xc4, 0x01, 0x04, 0x02, 0x0e, 0x02, 0x01, 0x04, 0x42, 0x82, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x03, 0x81, 0x02, 0x7f, 0x80, 0x01, 0x03, 0x7f, 0x80, 0x81, 0x03, 0x7f, 0x80, 0x44, 0x02, 0x04, 0x02, 0x8b, 0x02, 0x00, 0x01, 0x8e, 0x02, 0x05, 0x05, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x95, 0x02, 0x05, 0x85, 0xaf, 0x02, 0x85, 0x06, 0x0e, 0x03, 0x01, 0x06, 0x42, 0x83, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x0b, 0x03, 0x00, 0x01, 0x0e, 0x03, 0x06, 0x07, 0x44, 0x03, 0x01, 0x02, 0x23, 0x03, 0x06, 0x05, 0x2e, 0x03, 0x05, 0x07, 0x89, 0x03, 0x01, 0x00, 0xc4, 0x03, 0x01, 0x02, 0x13, 0x04, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x04, 0x00, 0x08, 0x09, 0x05, 0x02, 0x00, 0xc4, 0x04, 0x02, 0x05, 0xcb, 0x84, 0x05, 0x00, 0x8c, 0x07, 0x07, 0x0e, 0xc2, 0x07, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x80, 0x8c, 0x07, 0x00, 0x0e, 0xc2, 0x07, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0xb4, 0x07, 0x08, 0x00, 0x95, 0x07, 0x0f, 0x80, 0xaf, 0x07, 0x80, 0x06, 0x0c, 0x08, 0x00, 0x0e, 0x10, 0x04, 0x0f, 0x10, 0xcc, 0x04, 0x00, 0x02, 0xcd, 0x84, 0x06, 0x00, 0xb6, 0x04, 0x00, 0x00, 0x8b, 0x04, 0x00, 0x01, 0x8e, 0x04, 0x09, 0x09, 0x01, 0x85, 0xff, 0x7f, 0x80, 0x05, 0x06, 0x00, 0x0b, 0x06, 0x00, 0x01, 0x0e, 0x06, 0x0c, 0x0a, 0x44, 0x06, 0x01, 0x02, 0x80, 0x06, 0x05, 0x00, 0x00, 0x07, 0x04, 0x00, 0xc4, 0x04, 0x06, 0x01, 0xb4, 0x04, 0x08, 0x00, 0xbd, 0x04, 0x7f, 0x00, 0x38, 0x00, 0x00, 0x80, 0xc6, 0x82, 0x02, 0x00, 0x8b, 0x04, 0x00, 0x01, 0x8e, 0x04, 0x09, 0x0a, 0xc4, 0x04, 0x01, 0x02, 0x34, 0x05, 0x08, 0x00, 0xa8, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x0c, 0x0b, 0x05, 0x00, 0x08, 0x80, 0x05, 0x08, 0x00, 0x44, 0x05, 0x02, 0x05, 0x4b, 0x85, 0x0d, 0x00, 0x15, 0x08, 0x0e, 0x7e, 0x2f, 0x07, 0x80, 0x07, 0x24, 0x08, 0x09, 0x10, 0xae, 0x04, 0x10, 0x08, 0x8b, 0x08, 0x00, 0x01, 0x8e, 0x08, 0x11, 0x0b, 0x00, 0x09, 0x02, 0x00, 0x80, 0x09, 0x0f, 0x00, 0xc4, 0x08, 0x03, 0x02, 0xa3, 0x08, 0x09, 0x11, 0xae, 0x04, 0x11, 0x07, 0x9c, 0x08, 0x11, 0x0c, 0xb0, 0x08, 0x0c, 0x0c, 0x22, 0x08, 0x10, 0x11, 0x2e, 0x08, 0x11, 0x06, 0x8b, 0x08, 0x00, 0x01, 0x8e, 0x08, 0x11, 0x0d, 0x00, 0x09, 0x02, 0x00, 0x80, 0x09, 0x10, 0x00, 0x15, 0x0a, 0x06, 0x82, 0x2f, 0x03, 0x82, 0x06, 0x80, 0x0a, 0x0f, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x8b, 0x0b, 0x00, 0x01, 0x8e, 0x0b, 0x17, 0x0e, 0x00, 0x0c, 0x04, 0x00, 0xc4, 0x08, 0x08, 0x01, 0x4c, 0x05, 0x00, 0x02, 0x4d, 0x85, 0x0e, 0x00, 0x36, 0x05, 0x00, 0x00, 0xc6, 0x82, 0x02, 0x00, 0x46, 0x85, 0x01, 0x00, 0x8f, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x8b, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x8e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x04, 0x82, 0x79, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x04, 0x89, 0x66, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x63, 0x74, 0x04, 0x89, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x8d, 0x67, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x03, 0x02, 0x00, 0x00, 0x00, 0x04, 0x89, 0x64, 0x72, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x04, 0x8d, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x83, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; -static const unsigned char ui[] = {0x1b, 0x4c, 0x75, 0x61, 0x54, 0x00, 0x19, 0x93, 0x0d, 0x0a, 0x1a, 0x0a, 0x04, 0x04, 0x04, 0x78, 0x56, 0x00, 0x00, 0x00, 0x40, 0xb9, 0x43, 0x01, 0x80, 0x80, 0x80, 0x00, 0x01, 0x20, 0x01, 0xb7, 0x51, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x7f, 0x80, 0x81, 0x02, 0x7f, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0x3b, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x05, 0x92, 0x00, 0x00, 0x02, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0x08, 0x80, 0x81, 0x82, 0x08, 0x80, 0x01, 0x83, 0x09, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x75, 0x80, 0x81, 0x02, 0x75, 0x80, 0x01, 0x03, 0x75, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0x52, 0x80, 0x81, 0x82, 0x3a, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x05, 0x92, 0x00, 0x06, 0x02, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x7f, 0x80, 0x81, 0x02, 0x7f, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x08, 0x92, 0x00, 0x07, 0x02, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x03, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x85, 0x03, 0x00, 0x00, 0x08, 0x04, 0x05, 0x00, 0x01, 0x87, 0xff, 0x7f, 0x88, 0x07, 0x00, 0x00, 0x4f, 0x08, 0x00, 0x00, 0xcf, 0x88, 0x00, 0x00, 0x4f, 0x09, 0x01, 0x00, 0xcf, 0x89, 0x01, 0x00, 0x4f, 0x0a, 0x02, 0x00, 0x12, 0x00, 0x09, 0x14, 0x4f, 0x8a, 0x02, 0x00, 0x12, 0x00, 0x0a, 0x14, 0x4f, 0x0a, 0x03, 0x00, 0x12, 0x00, 0x0b, 0x14, 0x00, 0x0a, 0x13, 0x00, 0x8b, 0x0a, 0x00, 0x0c, 0x8e, 0x0a, 0x15, 0x09, 0xc4, 0x0a, 0x01, 0x00, 0x44, 0x0a, 0x00, 0x01, 0x4f, 0x8a, 0x03, 0x00, 0x8b, 0x0a, 0x00, 0x0d, 0x8e, 0x0a, 0x15, 0x0e, 0x4f, 0x0b, 0x04, 0x00, 0xc4, 0x0a, 0x02, 0x01, 0x93, 0x0a, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x00, 0x03, 0x8b, 0x07, 0x00, 0x83, 0x0b, 0x08, 0x00, 0x03, 0x8c, 0x08, 0x00, 0x83, 0x0c, 0x09, 0x00, 0x03, 0x8d, 0x09, 0x00, 0x83, 0x0d, 0x0a, 0x00, 0x03, 0x8e, 0x0a, 0x00, 0x83, 0x0e, 0x0b, 0x00, 0x03, 0x8f, 0x0b, 0x00, 0x83, 0x0f, 0x0c, 0x00, 0xce, 0x0a, 0x0a, 0x00, 0x4f, 0x8b, 0x04, 0x00, 0xcf, 0x0b, 0x05, 0x00, 0x4f, 0x8c, 0x05, 0x00, 0x12, 0x00, 0x19, 0x18, 0x4f, 0x0c, 0x06, 0x00, 0x12, 0x00, 0x1a, 0x18, 0x4f, 0x8c, 0x06, 0x00, 0x12, 0x00, 0x1b, 0x18, 0x4f, 0x0c, 0x07, 0x00, 0x12, 0x00, 0x1c, 0x18, 0x4f, 0x8c, 0x07, 0x00, 0x12, 0x00, 0x1d, 0x18, 0x4f, 0x0c, 0x08, 0x00, 0x12, 0x00, 0x1e, 0x18, 0x4f, 0x8c, 0x08, 0x00, 0x12, 0x00, 0x1f, 0x18, 0x4f, 0x0c, 0x09, 0x00, 0x12, 0x00, 0x20, 0x18, 0x4f, 0x8c, 0x09, 0x00, 0x12, 0x00, 0x21, 0x18, 0x4f, 0x0c, 0x0a, 0x00, 0x12, 0x00, 0x22, 0x18, 0x4f, 0x8c, 0x0a, 0x00, 0x12, 0x00, 0x23, 0x18, 0x4f, 0x0c, 0x0b, 0x00, 0x12, 0x00, 0x24, 0x18, 0x4f, 0x8c, 0x0b, 0x00, 0x12, 0x00, 0x25, 0x18, 0x4f, 0x0c, 0x0c, 0x00, 0x80, 0x07, 0x18, 0x00, 0x4f, 0x8c, 0x0c, 0x00, 0x12, 0x00, 0x26, 0x18, 0x4f, 0x0c, 0x0d, 0x00, 0x12, 0x00, 0x27, 0x18, 0x4f, 0x8c, 0x0d, 0x00, 0x12, 0x00, 0x28, 0x18, 0x4f, 0x0c, 0x0e, 0x00, 0xcf, 0x8c, 0x0e, 0x00, 0x4f, 0x0d, 0x0f, 0x00, 0xcf, 0x8d, 0x0f, 0x00, 0x12, 0x00, 0x29, 0x1b, 0xcf, 0x0d, 0x10, 0x00, 0x12, 0x00, 0x2a, 0x1b, 0xcf, 0x8d, 0x10, 0x00, 0x12, 0x00, 0x2b, 0x1b, 0x93, 0x0d, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x92, 0x8d, 0x2b, 0x2c, 0x92, 0x8d, 0x29, 0x2c, 0x92, 0x8d, 0x2d, 0x2c, 0x92, 0x8d, 0x2e, 0x2c, 0x4f, 0x0e, 0x11, 0x00, 0xcf, 0x8e, 0x11, 0x00, 0x12, 0x00, 0x2f, 0x1d, 0x46, 0x80, 0x02, 0x01, 0xc6, 0x8e, 0x01, 0x01, 0xb0, 0x04, 0x86, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x03, 0x06, 0x00, 0x00, 0x00, 0x04, 0x85, 0x64, 0x61, 0x72, 0x6b, 0x04, 0x85, 0x6d, 0x6f, 0x6e, 0x6f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x89, 0x67, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x04, 0x89, 0x73, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x87, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x8a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x04, 0x89, 0x63, 0x61, 0x72, 0x64, 0x53, 0x69, 0x64, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x65, 0x74, 0x04, 0x86, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x87, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x04, 0x88, 0x73, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x04, 0x88, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x04, 0x86, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x04, 0x88, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x04, 0x85, 0x64, 0x6f, 0x77, 0x6e, 0x04, 0x85, 0x6d, 0x6f, 0x76, 0x65, 0x04, 0x83, 0x75, 0x70, 0x11, 0x04, 0x85, 0x6c, 0x65, 0x66, 0x74, 0x04, 0x86, 0x72, 0x69, 0x67, 0x68, 0x74, 0x04, 0x8c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x73, 0x73, 0x81, 0x01, 0x00, 0x00, 0xa4, 0x80, 0xbf, 0xc5, 0x03, 0x00, 0x0c, 0x98, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x80, 0x81, 0x02, 0x01, 0x80, 0x01, 0x03, 0x00, 0x80, 0x4a, 0x82, 0x07, 0x00, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x04, 0x08, 0x01, 0x8c, 0x04, 0x00, 0x07, 0x0c, 0x05, 0x01, 0x07, 0x8c, 0x05, 0x00, 0x07, 0x23, 0x05, 0x0a, 0x0b, 0x2e, 0x05, 0x0b, 0x07, 0x24, 0x05, 0x0a, 0x02, 0x2e, 0x05, 0x02, 0x08, 0xa2, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x06, 0x96, 0x04, 0x09, 0x02, 0xb0, 0x04, 0x02, 0x06, 0x44, 0x04, 0x02, 0x02, 0x90, 0x01, 0x07, 0x08, 0x49, 0x02, 0x08, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x83, 0x04, 0x85, 0x6d, 0x61, 0x74, 0x68, 0x04, 0x86, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x13, 0x00, 0x00, 0x00, 0x3f, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc7, 0xc9, 0x01, 0x00, 0x05, 0x88, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x0d, 0x01, 0x00, 0x01, 0x8d, 0x01, 0x00, 0x02, 0x0d, 0x02, 0x00, 0x03, 0xc5, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xcb, 0xd9, 0x01, 0x00, 0x0a, 0xb9, 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x01, 0x8e, 0x01, 0x00, 0x02, 0x13, 0x02, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x00, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x01, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x83, 0x04, 0x02, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x03, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x02, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x83, 0x04, 0x03, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x05, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x83, 0x04, 0x04, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x07, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x09, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x0a, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x0b, 0x05, 0x8e, 0x02, 0x00, 0x0c, 0x12, 0x02, 0x0c, 0x05, 0x48, 0x02, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8d, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x04, 0x86, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x13, 0x66, 0x66, 0xe6, 0x3e, 0x04, 0x89, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x13, 0x00, 0x00, 0x80, 0x3e, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x13, 0x0a, 0xd7, 0xa3, 0x3d, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x82, 0x01, 0x11, 0x00, 0x01, 0x10, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xdb, 0xde, 0x01, 0x00, 0x04, 0x8f, 0x89, 0x00, 0x01, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0xc3, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x83, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00, 0x89, 0x01, 0x00, 0x00, 0x09, 0x01, 0x01, 0x00, 0x0c, 0x01, 0x02, 0x03, 0xc4, 0x00, 0x02, 0x02, 0x0f, 0x01, 0x01, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x86, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x84, 0x01, 0x08, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x12, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe1, 0xe3, 0x00, 0x00, 0x02, 0x83, 0x09, 0x00, 0x00, 0x00, 0x48, 0x00, 0x02, 0x00, 0x47, 0x00, 0x01, 0x00, 0x80, 0x81, 0x01, 0x08, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe6, 0xed, 0x00, 0x00, 0x08, 0x93, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x01, 0x00, 0xc4, 0x00, 0x02, 0x05, 0xcb, 0x00, 0x02, 0x00, 0x34, 0x03, 0x00, 0x00, 0x15, 0x03, 0x06, 0x80, 0x2f, 0x03, 0x80, 0x06, 0x10, 0x00, 0x06, 0x05, 0xcc, 0x00, 0x00, 0x01, 0xcd, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x01, 0x46, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x01, 0x00, 0x83, 0x04, 0x86, 0x70, 0x61, 0x69, 0x72, 0x73, 0x04, 0x86, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x04, 0x85, 0x73, 0x6f, 0x72, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf2, 0x01, 0x81, 0x01, 0x00, 0x05, 0xa5, 0x89, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x88, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xc6, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x01, 0x01, 0x8e, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x03, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x88, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x03, 0x00, 0x89, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x89, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x89, 0x01, 0x04, 0x00, 0x09, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x8b, 0x01, 0x01, 0x01, 0x8e, 0x01, 0x03, 0x03, 0x0b, 0x02, 0x05, 0x04, 0x0e, 0x02, 0x04, 0x05, 0xc4, 0x01, 0x02, 0x01, 0x8b, 0x01, 0x01, 0x06, 0x8e, 0x01, 0x03, 0x07, 0x09, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x88, 0x04, 0x8e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x73, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x86, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x13, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x85, 0x01, 0x88, 0x00, 0x00, 0x04, 0x90, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x03, 0x00, 0x0a, 0x01, 0x02, 0x00, 0x8a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x47, 0x00, 0x01, 0x00, 0x80, 0x85, 0x01, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04, 0x00, 0x01, 0x05, 0x00, 0x01, 0x06, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x8a, 0x01, 0x8f, 0x05, 0x00, 0x0c, 0x8c, 0x89, 0x02, 0x00, 0x00, 0x8c, 0x02, 0x05, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x38, 0x03, 0x00, 0x80, 0x00, 0x03, 0x05, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x80, 0x04, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x80, 0x05, 0x04, 0x00, 0x44, 0x03, 0x06, 0x01, 0x47, 0x03, 0x01, 0x00, 0x80, 0x81, 0x01, 0x05, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x9e, 0x01, 0xab, 0x02, 0x00, 0x0b, 0xa0, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x89, 0x02, 0x01, 0x00, 0x44, 0x02, 0x02, 0x05, 0x4b, 0x02, 0x03, 0x00, 0x0c, 0x05, 0x01, 0x09, 0x3c, 0x85, 0x01, 0x00, 0x38, 0x01, 0x00, 0x80, 0x0c, 0x05, 0x01, 0x09, 0x87, 0x01, 0x00, 0x00, 0x10, 0x01, 0x09, 0x0a, 0x4c, 0x02, 0x00, 0x02, 0x4d, 0x02, 0x04, 0x00, 0x36, 0x02, 0x00, 0x00, 0x0e, 0x02, 0x01, 0x02, 0x3c, 0x82, 0x01, 0x00, 0x38, 0x02, 0x00, 0x80, 0x0e, 0x02, 0x01, 0x02, 0x8e, 0x02, 0x01, 0x02, 0x87, 0x01, 0x00, 0x00, 0x12, 0x01, 0x03, 0x05, 0x12, 0x01, 0x02, 0x04, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x04, 0x0e, 0x02, 0x04, 0x05, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x44, 0x02, 0x03, 0x01, 0x46, 0x82, 0x01, 0x00, 0x86, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x82, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xad, 0x01, 0xc9, 0x02, 0x00, 0x0d, 0xce, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x01, 0x00, 0x83, 0x81, 0x00, 0x00, 0x01, 0x02, 0x01, 0x80, 0x44, 0x01, 0x03, 0x01, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x01, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x05, 0xcb, 0x01, 0x01, 0x00, 0x10, 0x01, 0x07, 0x08, 0x10, 0x80, 0x07, 0x03, 0xcc, 0x01, 0x00, 0x02, 0xcd, 0x01, 0x02, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x12, 0x00, 0x04, 0x01, 0x8e, 0x01, 0x00, 0x06, 0xbc, 0x01, 0x03, 0x00, 0x38, 0x03, 0x00, 0x80, 0x8e, 0x01, 0x00, 0x07, 0xbc, 0x01, 0x03, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x8e, 0x01, 0x00, 0x08, 0xbc, 0x01, 0x03, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x01, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x12, 0x00, 0x05, 0x03, 0x8b, 0x01, 0x01, 0x09, 0x8e, 0x01, 0x03, 0x0a, 0x08, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x02, 0x0b, 0x02, 0x01, 0x02, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x05, 0x4b, 0x82, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x09, 0x0e, 0x05, 0x0a, 0x0b, 0x80, 0x05, 0x03, 0x00, 0x00, 0x06, 0x09, 0x00, 0x44, 0x05, 0x03, 0x01, 0x4c, 0x02, 0x00, 0x02, 0x4d, 0x82, 0x03, 0x00, 0x36, 0x02, 0x00, 0x00, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x44, 0x02, 0x03, 0x01, 0x09, 0x02, 0x03, 0x00, 0x8e, 0x02, 0x00, 0x06, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x04, 0x00, 0x8e, 0x02, 0x00, 0x07, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x05, 0x00, 0x8e, 0x02, 0x00, 0x08, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x06, 0x00, 0x8e, 0x02, 0x00, 0x0c, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x07, 0x00, 0x8e, 0x02, 0x00, 0x0d, 0xbc, 0x02, 0x0e, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0x10, 0x02, 0x03, 0x05, 0xc6, 0x81, 0x02, 0x00, 0x46, 0x82, 0x01, 0x00, 0x8f, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x14, 0xc6, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x69, 0x2e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x28, 0x29, 0x20, 0x77, 0x61, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x69, 0x2e, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x28, 0x29, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x8c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x88, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x87, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x04, 0x87, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x04, 0x86, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x01, 0x88, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x01, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04, 0x00, 0x01, 0x05, 0x00, 0x01, 0x06, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xcd, 0x01, 0xcf, 0x01, 0x00, 0x04, 0x86, 0x89, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xd9, 0x01, 0xe0, 0x04, 0x00, 0x0d, 0xb2, 0x0b, 0x02, 0x00, 0x00, 0x44, 0x02, 0x01, 0x03, 0xbb, 0x02, 0x04, 0x00, 0x38, 0x01, 0x00, 0x80, 0x01, 0x03, 0x01, 0x80, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x01, 0x83, 0x00, 0x80, 0x8b, 0x03, 0x01, 0x01, 0x8e, 0x03, 0x07, 0x02, 0x27, 0x04, 0x00, 0x06, 0x2e, 0x00, 0x06, 0x0b, 0xc4, 0x03, 0x02, 0x02, 0x18, 0x04, 0x01, 0x03, 0xb0, 0x80, 0x03, 0x08, 0x23, 0x04, 0x04, 0x08, 0x2e, 0x02, 0x08, 0x07, 0x95, 0x04, 0x06, 0x7e, 0x2f, 0x03, 0x80, 0x07, 0xa4, 0x04, 0x09, 0x02, 0xae, 0x04, 0x02, 0x08, 0x23, 0x04, 0x08, 0x09, 0x2e, 0x04, 0x09, 0x07, 0x28, 0x04, 0x08, 0x06, 0x2e, 0x04, 0x06, 0x0c, 0x98, 0x04, 0x01, 0x03, 0xb0, 0x80, 0x03, 0x08, 0xa3, 0x04, 0x05, 0x09, 0xae, 0x02, 0x09, 0x07, 0x43, 0x85, 0x03, 0x00, 0x38, 0x00, 0x00, 0x80, 0x01, 0x85, 0xff, 0x7f, 0xa3, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x07, 0x15, 0x05, 0x07, 0x7e, 0xaf, 0x03, 0x80, 0x07, 0x24, 0x05, 0x0a, 0x02, 0x2e, 0x05, 0x02, 0x08, 0xa3, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x07, 0xa8, 0x04, 0x09, 0x07, 0xae, 0x04, 0x07, 0x0c, 0x0b, 0x05, 0x01, 0x01, 0x0e, 0x05, 0x0a, 0x04, 0x80, 0x05, 0x08, 0x00, 0x00, 0x06, 0x09, 0x00, 0x44, 0x05, 0x03, 0x02, 0x80, 0x05, 0x06, 0x00, 0x46, 0x05, 0x03, 0x00, 0x47, 0x05, 0x01, 0x00, 0x85, 0x04, 0x86, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x04, 0x85, 0x6d, 0x61, 0x74, 0x68, 0x04, 0x85, 0x63, 0x65, 0x69, 0x6c, 0x03, 0x02, 0x00, 0x00, 0x00, 0x04, 0x84, 0x6d, 0x69, 0x6e, 0x82, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0x00, 0x02, 0x82, 0x0a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x80, 0x81, 0x01, 0x0e, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xec, 0x01, 0xee, 0x00, 0x00, 0x03, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x44, 0x00, 0x01, 0x02, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x02, 0xc4, 0x00, 0x01, 0x02, 0x09, 0x01, 0x01, 0x00, 0xa3, 0x00, 0x01, 0x02, 0xae, 0x00, 0x02, 0x07, 0x46, 0x00, 0x03, 0x00, 0x47, 0x00, 0x01, 0x00, 0x83, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xf2, 0x01, 0xf5, 0x01, 0x00, 0x04, 0x90, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x00, 0x00, 0x00, 0x13, 0x01, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x03, 0x8e, 0x01, 0x00, 0x01, 0x12, 0x01, 0x01, 0x03, 0x83, 0x01, 0x01, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x83, 0x04, 0x82, 0x77, 0x04, 0x82, 0x68, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xfa, 0x01, 0xff, 0x02, 0x00, 0x05, 0x8f, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x02, 0x92, 0x80, 0x02, 0x03, 0x92, 0x00, 0x01, 0x02, 0x09, 0x01, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x03, 0x02, 0x02, 0x00, 0x45, 0x01, 0x03, 0x00, 0x46, 0x01, 0x00, 0x00, 0x47, 0x01, 0x01, 0x00, 0x85, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x8a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x86, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x00, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x84, 0x02, 0x91, 0x02, 0x00, 0x08, 0xc9, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x0e, 0x01, 0x01, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x01, 0x0e, 0x01, 0x02, 0x02, 0x8e, 0x01, 0x01, 0x03, 0xc2, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x01, 0x8e, 0x01, 0x03, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x42, 0x02, 0x00, 0x00, 0x38, 0x10, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x8e, 0x02, 0x01, 0x05, 0xba, 0x02, 0x04, 0x00, 0xb8, 0x0b, 0x00, 0x80, 0x34, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x38, 0x08, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x83, 0x83, 0x03, 0x00, 0x35, 0x03, 0x02, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x8e, 0x02, 0x01, 0x05, 0xba, 0x02, 0x04, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x14, 0x82, 0x00, 0x08, 0x01, 0x03, 0x00, 0x80, 0x81, 0x83, 0xfe, 0x7f, 0x44, 0x02, 0x04, 0x02, 0x00, 0x00, 0x04, 0x00, 0xb8, 0xf5, 0xff, 0x7f, 0x00, 0x02, 0x00, 0x00, 0x83, 0x82, 0x03, 0x00, 0x35, 0x02, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x92, 0x00, 0x09, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x0b, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x44, 0x02, 0x03, 0x02, 0x92, 0x00, 0x0a, 0x04, 0x00, 0x02, 0x02, 0x00, 0x92, 0x80, 0x05, 0x0c, 0x92, 0x00, 0x00, 0x04, 0x0b, 0x02, 0x01, 0x0d, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x45, 0x02, 0x03, 0x00, 0x46, 0x02, 0x00, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8e, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x04, 0x86, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x8d, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x04, 0x84, 0x66, 0x69, 0x74, 0x04, 0x8d, 0x67, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x82, 0x7e, 0x04, 0x84, 0x73, 0x75, 0x62, 0x04, 0x82, 0x77, 0x04, 0x82, 0x68, 0x04, 0x8e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x95, 0x02, 0xa0, 0x01, 0x00, 0x08, 0xa7, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x81, 0x80, 0x03, 0x80, 0x12, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, 0x01, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x83, 0x00, 0x01, 0x00, 0x12, 0x00, 0x01, 0x01, 0x8e, 0x00, 0x00, 0x03, 0x0e, 0x01, 0x00, 0x04, 0x12, 0x80, 0x03, 0x05, 0x89, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x83, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x03, 0x02, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00, 0x80, 0x0b, 0x02, 0x01, 0x07, 0x0e, 0x02, 0x04, 0x08, 0x80, 0x02, 0x03, 0x00, 0x13, 0x03, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, 0x83, 0x09, 0x0a, 0x12, 0x03, 0x03, 0x01, 0xc3, 0x83, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x8b, 0x03, 0x01, 0x0b, 0x8e, 0x03, 0x07, 0x0c, 0x12, 0x03, 0x04, 0x07, 0x44, 0x02, 0x03, 0x01, 0xc8, 0x01, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8d, 0x04, 0x84, 0x70, 0x61, 0x64, 0x04, 0x86, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x04, 0x87, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x00, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x87, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x82, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xa4, 0x02, 0xa6, 0x01, 0x00, 0x04, 0x86, 0x89, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x87, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xaa, 0x02, 0xb0, 0x02, 0x00, 0x05, 0x91, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x01, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x02, 0x39, 0x01, 0x01, 0x00, 0x38, 0x00, 0x00, 0x80, 0x47, 0x01, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x02, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x44, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x03, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x01, 0x47, 0x01, 0x01, 0x00, 0x84, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x89, 0x73, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xb3, 0x02, 0xb5, 0x01, 0x00, 0x03, 0x85, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xb9, 0x02, 0xd7, 0x01, 0x00, 0x07, 0xeb, 0x93, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x81, 0x00, 0x00, 0x92, 0x00, 0x00, 0x02, 0x92, 0x80, 0x02, 0x03, 0x92, 0x80, 0x04, 0x05, 0x0e, 0x01, 0x00, 0x06, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x07, 0x0e, 0x01, 0x02, 0x06, 0x92, 0x00, 0x06, 0x02, 0x0e, 0x01, 0x00, 0x08, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x07, 0x0e, 0x01, 0x02, 0x09, 0x92, 0x00, 0x08, 0x02, 0x0b, 0x01, 0x00, 0x0a, 0x8e, 0x01, 0x00, 0x0b, 0x44, 0x01, 0x02, 0x00, 0xce, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x34, 0x01, 0x01, 0x00, 0x15, 0x01, 0x02, 0x80, 0x2f, 0x01, 0x80, 0x06, 0x8b, 0x01, 0x00, 0x0a, 0x0e, 0x02, 0x00, 0x0c, 0x93, 0x02, 0x01, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x07, 0x0e, 0x03, 0x06, 0x09, 0x92, 0x02, 0x0d, 0x06, 0xc4, 0x01, 0x03, 0x02, 0x90, 0x00, 0x02, 0x03, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, 0x81, 0x0e, 0x0f, 0x12, 0x81, 0x04, 0x10, 0x12, 0x81, 0x11, 0x12, 0x8e, 0x01, 0x00, 0x13, 0xbc, 0x81, 0x14, 0x00, 0x38, 0x07, 0x00, 0x80, 0xb4, 0x01, 0x02, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x15, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x13, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x83, 0x09, 0x00, 0x92, 0x02, 0x16, 0x06, 0x0e, 0x03, 0x00, 0x18, 0x92, 0x02, 0x17, 0x06, 0x44, 0x02, 0x02, 0x02, 0x10, 0x01, 0x03, 0x04, 0xb4, 0x01, 0x02, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x15, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x19, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x83, 0x0c, 0x00, 0x92, 0x02, 0x16, 0x06, 0x0e, 0x03, 0x00, 0x1a, 0x92, 0x02, 0x17, 0x06, 0x44, 0x02, 0x02, 0x02, 0x10, 0x01, 0x03, 0x04, 0xb4, 0x01, 0x01, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x1b, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x02, 0x90, 0x00, 0x03, 0x04, 0x8b, 0x01, 0x00, 0x1b, 0x13, 0x02, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x92, 0x82, 0x1d, 0x1e, 0x92, 0x82, 0x1f, 0x1e, 0x12, 0x02, 0x1c, 0x05, 0x12, 0x82, 0x00, 0x20, 0x12, 0x82, 0x21, 0x20, 0x12, 0x82, 0x22, 0x0f, 0x12, 0x82, 0x23, 0x24, 0x12, 0x82, 0x11, 0x24, 0x8e, 0x02, 0x00, 0x25, 0x12, 0x02, 0x17, 0x05, 0x8b, 0x02, 0x00, 0x1b, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x00, 0x4e, 0x02, 0x00, 0x00, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0x00, 0x00, 0xc7, 0x01, 0x01, 0x00, 0xa6, 0x04, 0x82, 0x77, 0x13, 0x9a, 0x99, 0x59, 0x3f, 0x04, 0x84, 0x70, 0x61, 0x64, 0x03, 0x10, 0x00, 0x00, 0x00, 0x04, 0x84, 0x67, 0x61, 0x70, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x04, 0x86, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x86, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x04, 0x88, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x84, 0x72, 0x6f, 0x77, 0x11, 0x03, 0x08, 0x00, 0x00, 0x00, 0x04, 0x88, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x79, 0x04, 0x84, 0x65, 0x6e, 0x64, 0x04, 0x87, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x01, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x04, 0x8a, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x04, 0x83, 0x6f, 0x6b, 0x04, 0x86, 0x6f, 0x6e, 0x5f, 0x6f, 0x6b, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x04, 0x83, 0x61, 0x74, 0x04, 0x82, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x82, 0x79, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x82, 0x68, 0x04, 0x88, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x04, 0x86, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x04, 0x87, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x8b, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x81, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xd9, 0x02, 0xde, 0x00, 0x00, 0x04, 0x8d, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x44, 0x00, 0x01, 0x01, 0x09, 0x00, 0x01, 0x00, 0x44, 0x00, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x8a, 0x01, 0x06, 0x00, 0x0a, 0x01, 0x05, 0x00, 0x8a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x47, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x87, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x01, 0x07, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x0d, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xe0, 0x02, 0xed, 0x01, 0x00, 0x05, 0x9f, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0x01, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x02, 0x92, 0x01, 0x02, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x04, 0x92, 0x01, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x05, 0x92, 0x01, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x06, 0x92, 0x01, 0x06, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x07, 0x92, 0x01, 0x07, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x08, 0x92, 0x01, 0x08, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x09, 0x92, 0x01, 0x09, 0x04, 0x0b, 0x02, 0x00, 0x0b, 0x0e, 0x02, 0x04, 0x0c, 0x92, 0x01, 0x0a, 0x04, 0xc4, 0x00, 0x03, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x8d, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xf1, 0x02, 0xf4, 0x01, 0x00, 0x02, 0x84, 0x0a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x01, 0x00, 0xc4, 0x00, 0x01, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x88, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x82, 0x01, 0x09, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xf8, 0x03, 0x8a, 0x00, 0x00, 0x06, 0xb1, 0x0b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x01, 0x01, 0x09, 0x00, 0x02, 0x00, 0x44, 0x00, 0x01, 0x02, 0x0a, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x02, 0x89, 0x00, 0x01, 0x00, 0x03, 0x81, 0x01, 0x00, 0x83, 0x81, 0x01, 0x00, 0x44, 0x00, 0x04, 0x01, 0x09, 0x00, 0x04, 0x00, 0x89, 0x00, 0x01, 0x00, 0x44, 0x00, 0x02, 0x01, 0x0b, 0x00, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x04, 0x89, 0x00, 0x01, 0x00, 0x01, 0x81, 0xff, 0x7f, 0x81, 0x81, 0xff, 0x7f, 0x0b, 0x02, 0x03, 0x05, 0x0e, 0x02, 0x04, 0x06, 0x44, 0x02, 0x01, 0x02, 0x8b, 0x02, 0x03, 0x05, 0x8e, 0x02, 0x05, 0x07, 0xc4, 0x02, 0x01, 0x00, 0x44, 0x00, 0x00, 0x03, 0x42, 0x80, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x03, 0x08, 0x80, 0x01, 0x01, 0x00, 0x01, 0x82, 0x00, 0x80, 0x44, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x0e, 0x01, 0x02, 0x09, 0x44, 0x01, 0x01, 0x01, 0x07, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x05, 0x00, 0x0b, 0x01, 0x03, 0x05, 0x0e, 0x01, 0x02, 0x0a, 0x8b, 0x01, 0x00, 0x0b, 0x8e, 0x01, 0x03, 0x0c, 0x44, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x0e, 0x01, 0x02, 0x0d, 0x89, 0x01, 0x01, 0x00, 0x44, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x03, 0x0e, 0x44, 0x01, 0x01, 0x01, 0x47, 0x01, 0x01, 0x00, 0x8f, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x88, 0x73, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x87, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x04, 0x8c, 0x64, 0x72, 0x6f, 0x70, 0x53, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x04, 0x86, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x04, 0x8f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x86, 0x01, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x01, 0x07, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x8c, 0x03, 0x90, 0x00, 0x00, 0x02, 0x88, 0x09, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x89, 0x00, 0x00, 0x00, 0x44, 0x00, 0x02, 0x01, 0x47, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x82, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x92, 0x03, 0x95, 0x03, 0x00, 0x08, 0x94, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x05, 0xbb, 0x01, 0x01, 0x00, 0xb8, 0x04, 0x00, 0x80, 0xa2, 0x03, 0x03, 0x05, 0xae, 0x01, 0x05, 0x06, 0xba, 0x00, 0x07, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x3b, 0x02, 0x02, 0x00, 0xb8, 0x01, 0x00, 0x80, 0xa2, 0x03, 0x04, 0x06, 0x2e, 0x02, 0x06, 0x06, 0x3a, 0x81, 0x07, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x03, 0x00, 0x00, 0x87, 0x03, 0x00, 0x00, 0xc8, 0x03, 0x02, 0x00, 0xc7, 0x03, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x88, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x74, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x97, 0x03, 0x9f, 0x03, 0x00, 0x08, 0x93, 0x89, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x01, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x89, 0x01, 0x02, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x44, 0x02, 0x04, 0x01, 0x47, 0x02, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x83, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xa1, 0x03, 0xa9, 0x03, 0x00, 0x08, 0x93, 0x89, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x01, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x89, 0x01, 0x02, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x44, 0x02, 0x04, 0x01, 0x47, 0x02, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x83, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xae, 0x03, 0xbf, 0x02, 0x00, 0x08, 0xa9, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x01, 0x44, 0x01, 0x01, 0x02, 0x42, 0x01, 0x00, 0x00, 0x38, 0x05, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x02, 0x08, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x89, 0x01, 0x01, 0x00, 0x8c, 0x01, 0x03, 0x02, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x01, 0x89, 0x01, 0x02, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x03, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x02, 0xc2, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x00, 0x02, 0x03, 0x00, 0x87, 0x02, 0x00, 0x00, 0x8a, 0x02, 0x04, 0x00, 0x0a, 0x02, 0x03, 0x00, 0x09, 0x02, 0x05, 0x00, 0x80, 0x02, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x01, 0x00, 0x44, 0x02, 0x04, 0x01, 0x07, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x84, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x89, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x84, 0x68, 0x69, 0x74, 0x86, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x19, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xc4, 0x03, 0xd2, 0x02, 0x00, 0x07, 0x9e, 0x09, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x09, 0x01, 0x01, 0x00, 0x89, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x02, 0x01, 0x00, 0x44, 0x01, 0x04, 0x02, 0x89, 0x01, 0x02, 0x00, 0x39, 0x81, 0x03, 0x00, 0xb8, 0x06, 0x00, 0x80, 0x0a, 0x01, 0x02, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x89, 0x01, 0x03, 0x00, 0x09, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x01, 0x38, 0x02, 0x00, 0x80, 0x89, 0x01, 0x04, 0x00, 0x09, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x80, 0x85, 0x01, 0x0b, 0x00, 0x01, 0x18, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x19, 0x00, 0x01, 0x1a, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xd7, 0x03, 0xe7, 0x02, 0x00, 0x0a, 0xa6, 0x09, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x85, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x89, 0x01, 0x01, 0x00, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x01, 0x00, 0x44, 0x02, 0x04, 0x02, 0x42, 0x02, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x89, 0x02, 0x03, 0x00, 0x8c, 0x02, 0x05, 0x02, 0xc2, 0x82, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x00, 0x08, 0x03, 0x01, 0x00, 0x8a, 0x03, 0x01, 0x00, 0x0a, 0x03, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x09, 0x03, 0x04, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x04, 0x01, 0x00, 0x44, 0x03, 0x04, 0x01, 0xc2, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x03, 0x05, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x04, 0x01, 0x00, 0x44, 0x03, 0x04, 0x01, 0x07, 0x03, 0x00, 0x00, 0x48, 0x03, 0x02, 0x00, 0x47, 0x03, 0x01, 0x00, 0x80, 0x85, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x18, 0x00, 0x01, 0x04, 0x00, 0x01, 0x1a, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xeb, 0x03, 0xf4, 0x00, 0x00, 0x04, 0x8f, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x89, 0x00, 0x01, 0x00, 0x44, 0x00, 0x02, 0x02, 0x42, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x80, 0x89, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x01, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x01, 0x48, 0x00, 0x02, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x83, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x02, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xf9, 0x04, 0xab, 0x02, 0x00, 0x08, 0xdd, 0x0b, 0x01, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x44, 0x01, 0x02, 0x02, 0x3c, 0x81, 0x01, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x02, 0x83, 0x81, 0x01, 0x00, 0x01, 0x82, 0x00, 0x80, 0x44, 0x01, 0x03, 0x01, 0x09, 0x01, 0x01, 0x00, 0x0c, 0x01, 0x02, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x11, 0x00, 0x80, 0xc2, 0x80, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x07, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x04, 0x0e, 0x01, 0x02, 0x05, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x89, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x01, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x8b, 0x01, 0x00, 0x04, 0x8e, 0x01, 0x03, 0x06, 0x09, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x02, 0xb9, 0x81, 0x02, 0x00, 0xb8, 0x06, 0x00, 0x80, 0x09, 0x02, 0x04, 0x00, 0x0c, 0x02, 0x04, 0x02, 0x42, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x80, 0x02, 0x04, 0x00, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x01, 0x89, 0x02, 0x05, 0x00, 0x8c, 0x02, 0x05, 0x03, 0xc2, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x03, 0x05, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x03, 0x02, 0x01, 0x07, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x3c, 0x80, 0x07, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x04, 0x0e, 0x01, 0x02, 0x05, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x09, 0x01, 0x02, 0x00, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x85, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x04, 0x8e, 0x01, 0x03, 0x08, 0x00, 0x02, 0x02, 0x00, 0x87, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x0a, 0x01, 0x06, 0x00, 0x38, 0x08, 0x00, 0x80, 0x89, 0x01, 0x06, 0x00, 0x08, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x06, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x04, 0x0e, 0x02, 0x04, 0x08, 0x80, 0x02, 0x03, 0x00, 0x05, 0x03, 0x00, 0x00, 0x44, 0x02, 0x03, 0x01, 0x09, 0x02, 0x07, 0x00, 0x0c, 0x02, 0x04, 0x03, 0x42, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x80, 0x02, 0x04, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x89, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x88, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x04, 0x9d, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x8a, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x88, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x88, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x00, 0x01, 0x1c, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x00, 0x01, 0x02, 0x00, 0x01, 0x0d, 0x00, 0x01, 0x04, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; +static const unsigned char ui[] = {0x1b, 0x4c, 0x75, 0x61, 0x54, 0x00, 0x19, 0x93, 0x0d, 0x0a, 0x1a, 0x0a, 0x04, 0x04, 0x04, 0x78, 0x56, 0x00, 0x00, 0x00, 0x40, 0xb9, 0x43, 0x01, 0x80, 0x80, 0x80, 0x00, 0x01, 0x20, 0x01, 0xbd, 0x51, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x7f, 0x80, 0x81, 0x02, 0x7f, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0x3b, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x05, 0x92, 0x00, 0x00, 0x02, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0x08, 0x80, 0x81, 0x82, 0x08, 0x80, 0x01, 0x83, 0x09, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x75, 0x80, 0x81, 0x02, 0x75, 0x80, 0x01, 0x03, 0x75, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0x52, 0x80, 0x81, 0x82, 0x3a, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x05, 0x92, 0x00, 0x06, 0x02, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x7f, 0x80, 0x81, 0x02, 0x7f, 0x80, 0x01, 0x03, 0x7f, 0x80, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x01, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x02, 0x03, 0x93, 0x01, 0x00, 0x03, 0x52, 0x00, 0x00, 0x00, 0x01, 0x82, 0xff, 0x7f, 0x81, 0x82, 0xff, 0x7f, 0x01, 0x83, 0xff, 0x7f, 0xce, 0x01, 0x03, 0x00, 0x12, 0x01, 0x03, 0x03, 0x12, 0x81, 0x04, 0x08, 0x92, 0x00, 0x07, 0x02, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x02, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x03, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x85, 0x03, 0x00, 0x00, 0x08, 0x04, 0x05, 0x00, 0x01, 0x87, 0xff, 0x7f, 0x88, 0x07, 0x00, 0x00, 0x4f, 0x08, 0x00, 0x00, 0xcf, 0x88, 0x00, 0x00, 0x4f, 0x09, 0x01, 0x00, 0xcf, 0x89, 0x01, 0x00, 0x4f, 0x0a, 0x02, 0x00, 0x12, 0x00, 0x09, 0x14, 0x4f, 0x8a, 0x02, 0x00, 0x12, 0x00, 0x0a, 0x14, 0x4f, 0x0a, 0x03, 0x00, 0x12, 0x00, 0x0b, 0x14, 0x00, 0x0a, 0x13, 0x00, 0x8b, 0x0a, 0x00, 0x0c, 0x8e, 0x0a, 0x15, 0x09, 0xc4, 0x0a, 0x01, 0x00, 0x44, 0x0a, 0x00, 0x01, 0x4f, 0x8a, 0x03, 0x00, 0x8b, 0x0a, 0x00, 0x0d, 0x8e, 0x0a, 0x15, 0x0e, 0x4f, 0x0b, 0x04, 0x00, 0xc4, 0x0a, 0x02, 0x01, 0x93, 0x0a, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x00, 0x03, 0x8b, 0x07, 0x00, 0x83, 0x0b, 0x08, 0x00, 0x03, 0x8c, 0x08, 0x00, 0x83, 0x0c, 0x09, 0x00, 0x03, 0x8d, 0x09, 0x00, 0x83, 0x0d, 0x0a, 0x00, 0x03, 0x8e, 0x0a, 0x00, 0x83, 0x0e, 0x0b, 0x00, 0x03, 0x8f, 0x0b, 0x00, 0x83, 0x0f, 0x0c, 0x00, 0xce, 0x0a, 0x0a, 0x00, 0x4f, 0x8b, 0x04, 0x00, 0xcf, 0x0b, 0x05, 0x00, 0x4f, 0x8c, 0x05, 0x00, 0x12, 0x00, 0x19, 0x18, 0x4f, 0x0c, 0x06, 0x00, 0x12, 0x00, 0x1a, 0x18, 0x4f, 0x8c, 0x06, 0x00, 0x12, 0x00, 0x1b, 0x18, 0x4f, 0x0c, 0x07, 0x00, 0x12, 0x00, 0x1c, 0x18, 0x4f, 0x8c, 0x07, 0x00, 0x12, 0x00, 0x1d, 0x18, 0x4f, 0x0c, 0x08, 0x00, 0x12, 0x00, 0x1e, 0x18, 0x4f, 0x8c, 0x08, 0x00, 0x12, 0x00, 0x1f, 0x18, 0x4f, 0x0c, 0x09, 0x00, 0x12, 0x00, 0x20, 0x18, 0x4f, 0x8c, 0x09, 0x00, 0x12, 0x00, 0x21, 0x18, 0x4f, 0x0c, 0x0a, 0x00, 0x12, 0x00, 0x22, 0x18, 0x4f, 0x8c, 0x0a, 0x00, 0x12, 0x00, 0x23, 0x18, 0x4f, 0x0c, 0x0b, 0x00, 0x12, 0x00, 0x24, 0x18, 0x4f, 0x8c, 0x0b, 0x00, 0x12, 0x00, 0x25, 0x18, 0x4f, 0x0c, 0x0c, 0x00, 0x12, 0x00, 0x26, 0x18, 0x4f, 0x8c, 0x0c, 0x00, 0x12, 0x00, 0x27, 0x18, 0x4f, 0x0c, 0x0d, 0x00, 0x12, 0x00, 0x28, 0x18, 0x4f, 0x8c, 0x0d, 0x00, 0x80, 0x07, 0x18, 0x00, 0x4f, 0x0c, 0x0e, 0x00, 0x12, 0x00, 0x29, 0x18, 0x4f, 0x8c, 0x0e, 0x00, 0x12, 0x00, 0x2a, 0x18, 0x4f, 0x0c, 0x0f, 0x00, 0x12, 0x00, 0x2b, 0x18, 0x4f, 0x8c, 0x0f, 0x00, 0xcf, 0x0c, 0x10, 0x00, 0x4f, 0x8d, 0x10, 0x00, 0xcf, 0x0d, 0x11, 0x00, 0x12, 0x00, 0x2c, 0x1b, 0xcf, 0x8d, 0x11, 0x00, 0x12, 0x00, 0x2d, 0x1b, 0xcf, 0x0d, 0x12, 0x00, 0x12, 0x00, 0x2e, 0x1b, 0x93, 0x0d, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x92, 0x8d, 0x2e, 0x2f, 0x92, 0x8d, 0x2c, 0x2f, 0x92, 0x8d, 0x30, 0x2f, 0x92, 0x8d, 0x31, 0x2f, 0x4f, 0x8e, 0x12, 0x00, 0xcf, 0x0e, 0x13, 0x00, 0x12, 0x00, 0x32, 0x1d, 0x46, 0x80, 0x02, 0x01, 0xc6, 0x8e, 0x01, 0x01, 0xb3, 0x04, 0x86, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x03, 0x06, 0x00, 0x00, 0x00, 0x04, 0x85, 0x64, 0x61, 0x72, 0x6b, 0x04, 0x85, 0x6d, 0x6f, 0x6e, 0x6f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x89, 0x67, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x04, 0x89, 0x73, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x87, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x8a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x04, 0x89, 0x63, 0x61, 0x72, 0x64, 0x53, 0x69, 0x64, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x65, 0x74, 0x04, 0x86, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x70, 0x61, 0x63, 0x65, 0x72, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x87, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x04, 0x88, 0x73, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x04, 0x8a, 0x73, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x04, 0x8f, 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x04, 0x88, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x04, 0x86, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x04, 0x88, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x04, 0x85, 0x64, 0x6f, 0x77, 0x6e, 0x04, 0x85, 0x6d, 0x6f, 0x76, 0x65, 0x04, 0x83, 0x75, 0x70, 0x11, 0x04, 0x85, 0x6c, 0x65, 0x66, 0x74, 0x04, 0x86, 0x72, 0x69, 0x67, 0x68, 0x74, 0x04, 0x8c, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x73, 0x73, 0x81, 0x01, 0x00, 0x00, 0xa7, 0x80, 0xc1, 0xc7, 0x03, 0x00, 0x0c, 0x98, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x80, 0x81, 0x02, 0x01, 0x80, 0x01, 0x03, 0x00, 0x80, 0x4a, 0x82, 0x07, 0x00, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x04, 0x08, 0x01, 0x8c, 0x04, 0x00, 0x07, 0x0c, 0x05, 0x01, 0x07, 0x8c, 0x05, 0x00, 0x07, 0x23, 0x05, 0x0a, 0x0b, 0x2e, 0x05, 0x0b, 0x07, 0x24, 0x05, 0x0a, 0x02, 0x2e, 0x05, 0x02, 0x08, 0xa2, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x06, 0x96, 0x04, 0x09, 0x02, 0xb0, 0x04, 0x02, 0x06, 0x44, 0x04, 0x02, 0x02, 0x90, 0x01, 0x07, 0x08, 0x49, 0x02, 0x08, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x83, 0x04, 0x85, 0x6d, 0x61, 0x74, 0x68, 0x04, 0x86, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x13, 0x00, 0x00, 0x00, 0x3f, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc9, 0xcb, 0x01, 0x00, 0x05, 0x88, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x0d, 0x01, 0x00, 0x01, 0x8d, 0x01, 0x00, 0x02, 0x0d, 0x02, 0x00, 0x03, 0xc5, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xcd, 0xdb, 0x01, 0x00, 0x0a, 0xb9, 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x01, 0x8e, 0x01, 0x00, 0x02, 0x13, 0x02, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x00, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x01, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x83, 0x04, 0x02, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x03, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x02, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x83, 0x04, 0x03, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x05, 0x05, 0x89, 0x02, 0x00, 0x00, 0x09, 0x03, 0x01, 0x00, 0x80, 0x03, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x83, 0x04, 0x04, 0x00, 0x44, 0x03, 0x04, 0x00, 0xc4, 0x02, 0x00, 0x02, 0x12, 0x02, 0x07, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x09, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x0a, 0x05, 0x89, 0x02, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x02, 0x12, 0x02, 0x0b, 0x05, 0x8e, 0x02, 0x00, 0x0c, 0x12, 0x02, 0x0c, 0x05, 0x48, 0x02, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8d, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x61, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x04, 0x86, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x13, 0x66, 0x66, 0xe6, 0x3e, 0x04, 0x89, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x13, 0x00, 0x00, 0x80, 0x3e, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x13, 0x0a, 0xd7, 0xa3, 0x3d, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x82, 0x01, 0x11, 0x00, 0x01, 0x10, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xdd, 0xe0, 0x01, 0x00, 0x04, 0x8f, 0x89, 0x00, 0x01, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0xc3, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x83, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00, 0x89, 0x01, 0x00, 0x00, 0x09, 0x01, 0x01, 0x00, 0x0c, 0x01, 0x02, 0x03, 0xc4, 0x00, 0x02, 0x02, 0x0f, 0x01, 0x01, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x86, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x84, 0x01, 0x08, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x12, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe3, 0xe5, 0x00, 0x00, 0x02, 0x83, 0x09, 0x00, 0x00, 0x00, 0x48, 0x00, 0x02, 0x00, 0x47, 0x00, 0x01, 0x00, 0x80, 0x81, 0x01, 0x08, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xe8, 0xef, 0x00, 0x00, 0x08, 0x93, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x01, 0x00, 0xc4, 0x00, 0x02, 0x05, 0xcb, 0x00, 0x02, 0x00, 0x34, 0x03, 0x00, 0x00, 0x15, 0x03, 0x06, 0x80, 0x2f, 0x03, 0x80, 0x06, 0x10, 0x00, 0x06, 0x05, 0xcc, 0x00, 0x00, 0x01, 0xcd, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x01, 0x46, 0x80, 0x02, 0x00, 0xc6, 0x80, 0x01, 0x00, 0x83, 0x04, 0x86, 0x70, 0x61, 0x69, 0x72, 0x73, 0x04, 0x86, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x04, 0x85, 0x73, 0x6f, 0x72, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf4, 0x01, 0x83, 0x01, 0x00, 0x05, 0xa5, 0x89, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x88, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xc6, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x01, 0x01, 0x8e, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x03, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x88, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x03, 0x00, 0x89, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x89, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x89, 0x01, 0x04, 0x00, 0x09, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x8b, 0x01, 0x01, 0x01, 0x8e, 0x01, 0x03, 0x03, 0x0b, 0x02, 0x05, 0x04, 0x0e, 0x02, 0x04, 0x05, 0xc4, 0x01, 0x02, 0x01, 0x8b, 0x01, 0x01, 0x06, 0x8e, 0x01, 0x03, 0x07, 0x09, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x88, 0x04, 0x8e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x73, 0x65, 0x74, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x86, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x86, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x13, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x87, 0x01, 0x8a, 0x00, 0x00, 0x04, 0x90, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x03, 0x00, 0x0a, 0x01, 0x02, 0x00, 0x8a, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x47, 0x00, 0x01, 0x00, 0x80, 0x85, 0x01, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04, 0x00, 0x01, 0x05, 0x00, 0x01, 0x06, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x8f, 0x01, 0x94, 0x09, 0x00, 0x14, 0x90, 0x89, 0x04, 0x00, 0x00, 0x8c, 0x04, 0x09, 0x00, 0xc2, 0x04, 0x00, 0x00, 0x38, 0x05, 0x00, 0x80, 0x00, 0x05, 0x09, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x80, 0x06, 0x02, 0x00, 0x00, 0x07, 0x03, 0x00, 0x80, 0x07, 0x04, 0x00, 0x00, 0x08, 0x05, 0x00, 0x80, 0x08, 0x06, 0x00, 0x00, 0x09, 0x07, 0x00, 0x80, 0x09, 0x08, 0x00, 0x44, 0x05, 0x0a, 0x01, 0x47, 0x05, 0x01, 0x00, 0x80, 0x81, 0x01, 0x05, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xa3, 0x01, 0xb0, 0x02, 0x00, 0x0b, 0xa0, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x0b, 0x02, 0x00, 0x00, 0x89, 0x02, 0x01, 0x00, 0x44, 0x02, 0x02, 0x05, 0x4b, 0x02, 0x03, 0x00, 0x0c, 0x05, 0x01, 0x09, 0x3c, 0x85, 0x01, 0x00, 0x38, 0x01, 0x00, 0x80, 0x0c, 0x05, 0x01, 0x09, 0x87, 0x01, 0x00, 0x00, 0x10, 0x01, 0x09, 0x0a, 0x4c, 0x02, 0x00, 0x02, 0x4d, 0x02, 0x04, 0x00, 0x36, 0x02, 0x00, 0x00, 0x0e, 0x02, 0x01, 0x02, 0x3c, 0x82, 0x01, 0x00, 0x38, 0x02, 0x00, 0x80, 0x0e, 0x02, 0x01, 0x02, 0x8e, 0x02, 0x01, 0x02, 0x87, 0x01, 0x00, 0x00, 0x12, 0x01, 0x03, 0x05, 0x12, 0x01, 0x02, 0x04, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x04, 0x0e, 0x02, 0x04, 0x05, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x44, 0x02, 0x03, 0x01, 0x46, 0x82, 0x01, 0x00, 0x86, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x82, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xb2, 0x01, 0xce, 0x02, 0x00, 0x0d, 0xce, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x01, 0x00, 0x83, 0x81, 0x00, 0x00, 0x01, 0x02, 0x01, 0x80, 0x44, 0x01, 0x03, 0x01, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x01, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x05, 0xcb, 0x01, 0x01, 0x00, 0x10, 0x01, 0x07, 0x08, 0x10, 0x80, 0x07, 0x03, 0xcc, 0x01, 0x00, 0x02, 0xcd, 0x01, 0x02, 0x00, 0xb6, 0x01, 0x00, 0x00, 0x12, 0x00, 0x04, 0x01, 0x8e, 0x01, 0x00, 0x06, 0xbc, 0x01, 0x03, 0x00, 0x38, 0x03, 0x00, 0x80, 0x8e, 0x01, 0x00, 0x07, 0xbc, 0x01, 0x03, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x8e, 0x01, 0x00, 0x08, 0xbc, 0x01, 0x03, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x01, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x12, 0x00, 0x05, 0x03, 0x8b, 0x01, 0x01, 0x09, 0x8e, 0x01, 0x03, 0x0a, 0x08, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x02, 0x0b, 0x02, 0x01, 0x02, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x05, 0x4b, 0x82, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x09, 0x0e, 0x05, 0x0a, 0x0b, 0x80, 0x05, 0x03, 0x00, 0x00, 0x06, 0x09, 0x00, 0x44, 0x05, 0x03, 0x01, 0x4c, 0x02, 0x00, 0x02, 0x4d, 0x82, 0x03, 0x00, 0x36, 0x02, 0x00, 0x00, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x44, 0x02, 0x03, 0x01, 0x09, 0x02, 0x03, 0x00, 0x8e, 0x02, 0x00, 0x06, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x04, 0x00, 0x8e, 0x02, 0x00, 0x07, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x05, 0x00, 0x8e, 0x02, 0x00, 0x08, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x06, 0x00, 0x8e, 0x02, 0x00, 0x0c, 0x10, 0x02, 0x03, 0x05, 0x09, 0x02, 0x07, 0x00, 0x8e, 0x02, 0x00, 0x0d, 0xbc, 0x02, 0x0e, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0x10, 0x02, 0x03, 0x05, 0xc6, 0x81, 0x02, 0x00, 0x46, 0x82, 0x01, 0x00, 0x8f, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x14, 0xc6, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x69, 0x2e, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x28, 0x29, 0x20, 0x77, 0x61, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x69, 0x2e, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x28, 0x29, 0x04, 0x87, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x00, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x8c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x88, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x87, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x04, 0x87, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x04, 0x86, 0x70, 0x61, 0x69, 0x6e, 0x74, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x01, 0x88, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x16, 0x00, 0x01, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04, 0x00, 0x01, 0x05, 0x00, 0x01, 0x06, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xd2, 0x01, 0xd4, 0x01, 0x00, 0x04, 0x86, 0x89, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xde, 0x01, 0xe5, 0x04, 0x00, 0x0d, 0xb2, 0x0b, 0x02, 0x00, 0x00, 0x44, 0x02, 0x01, 0x03, 0xbb, 0x02, 0x04, 0x00, 0x38, 0x01, 0x00, 0x80, 0x01, 0x03, 0x01, 0x80, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x01, 0x83, 0x00, 0x80, 0x8b, 0x03, 0x01, 0x01, 0x8e, 0x03, 0x07, 0x02, 0x27, 0x04, 0x00, 0x06, 0x2e, 0x00, 0x06, 0x0b, 0xc4, 0x03, 0x02, 0x02, 0x18, 0x04, 0x01, 0x03, 0xb0, 0x80, 0x03, 0x08, 0x23, 0x04, 0x04, 0x08, 0x2e, 0x02, 0x08, 0x07, 0x95, 0x04, 0x06, 0x7e, 0x2f, 0x03, 0x80, 0x07, 0xa4, 0x04, 0x09, 0x02, 0xae, 0x04, 0x02, 0x08, 0x23, 0x04, 0x08, 0x09, 0x2e, 0x04, 0x09, 0x07, 0x28, 0x04, 0x08, 0x06, 0x2e, 0x04, 0x06, 0x0c, 0x98, 0x04, 0x01, 0x03, 0xb0, 0x80, 0x03, 0x08, 0xa3, 0x04, 0x05, 0x09, 0xae, 0x02, 0x09, 0x07, 0x43, 0x85, 0x03, 0x00, 0x38, 0x00, 0x00, 0x80, 0x01, 0x85, 0xff, 0x7f, 0xa3, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x07, 0x15, 0x05, 0x07, 0x7e, 0xaf, 0x03, 0x80, 0x07, 0x24, 0x05, 0x0a, 0x02, 0x2e, 0x05, 0x02, 0x08, 0xa3, 0x04, 0x09, 0x0a, 0xae, 0x04, 0x0a, 0x07, 0xa8, 0x04, 0x09, 0x07, 0xae, 0x04, 0x07, 0x0c, 0x0b, 0x05, 0x01, 0x01, 0x0e, 0x05, 0x0a, 0x04, 0x80, 0x05, 0x08, 0x00, 0x00, 0x06, 0x09, 0x00, 0x44, 0x05, 0x03, 0x02, 0x80, 0x05, 0x06, 0x00, 0x46, 0x05, 0x03, 0x00, 0x47, 0x05, 0x01, 0x00, 0x85, 0x04, 0x86, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x04, 0x85, 0x6d, 0x61, 0x74, 0x68, 0x04, 0x85, 0x63, 0x65, 0x69, 0x6c, 0x03, 0x02, 0x00, 0x00, 0x00, 0x04, 0x84, 0x6d, 0x69, 0x6e, 0x82, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xea, 0x01, 0xec, 0x01, 0x00, 0x02, 0x82, 0x0a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x80, 0x81, 0x01, 0x0e, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xf1, 0x01, 0xf3, 0x00, 0x00, 0x03, 0x8b, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x44, 0x00, 0x01, 0x02, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x02, 0xc4, 0x00, 0x01, 0x02, 0x09, 0x01, 0x01, 0x00, 0xa3, 0x00, 0x01, 0x02, 0xae, 0x00, 0x02, 0x07, 0x46, 0x00, 0x03, 0x00, 0x47, 0x00, 0x01, 0x00, 0x83, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xf7, 0x01, 0xfa, 0x01, 0x00, 0x04, 0x90, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0x00, 0x00, 0x00, 0x13, 0x01, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x03, 0x8e, 0x01, 0x00, 0x01, 0x12, 0x01, 0x01, 0x03, 0x83, 0x01, 0x01, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x83, 0x04, 0x82, 0x77, 0x04, 0x82, 0x68, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0xff, 0x02, 0x84, 0x02, 0x00, 0x05, 0x8f, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x02, 0x92, 0x80, 0x02, 0x03, 0x92, 0x00, 0x01, 0x02, 0x09, 0x01, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x03, 0x02, 0x02, 0x00, 0x45, 0x01, 0x03, 0x00, 0x46, 0x01, 0x00, 0x00, 0x47, 0x01, 0x01, 0x00, 0x85, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x8a, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x86, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x00, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x89, 0x02, 0x96, 0x02, 0x00, 0x08, 0xc9, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x13, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x0e, 0x01, 0x01, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x01, 0x0e, 0x01, 0x02, 0x02, 0x8e, 0x01, 0x01, 0x03, 0xc2, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x01, 0x8e, 0x01, 0x03, 0x04, 0x0e, 0x02, 0x01, 0x05, 0x42, 0x02, 0x00, 0x00, 0x38, 0x10, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x8e, 0x02, 0x01, 0x05, 0xba, 0x02, 0x04, 0x00, 0xb8, 0x0b, 0x00, 0x80, 0x34, 0x02, 0x00, 0x00, 0x40, 0x02, 0x80, 0x00, 0x38, 0x08, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x83, 0x83, 0x03, 0x00, 0x35, 0x03, 0x02, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x8e, 0x02, 0x01, 0x05, 0xba, 0x02, 0x04, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x14, 0x82, 0x00, 0x08, 0x01, 0x03, 0x00, 0x80, 0x81, 0x83, 0xfe, 0x7f, 0x44, 0x02, 0x04, 0x02, 0x00, 0x00, 0x04, 0x00, 0xb8, 0xf5, 0xff, 0x7f, 0x00, 0x02, 0x00, 0x00, 0x83, 0x82, 0x03, 0x00, 0x35, 0x02, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x06, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x02, 0x04, 0x02, 0x92, 0x00, 0x09, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x0e, 0x02, 0x04, 0x0b, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x44, 0x02, 0x03, 0x02, 0x92, 0x00, 0x0a, 0x04, 0x00, 0x02, 0x02, 0x00, 0x92, 0x80, 0x05, 0x0c, 0x92, 0x00, 0x00, 0x04, 0x0b, 0x02, 0x01, 0x0d, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x45, 0x02, 0x03, 0x00, 0x46, 0x02, 0x00, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8e, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x04, 0x86, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x8d, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x04, 0x84, 0x66, 0x69, 0x74, 0x04, 0x8d, 0x67, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x82, 0x7e, 0x04, 0x84, 0x73, 0x75, 0x62, 0x04, 0x82, 0x77, 0x04, 0x82, 0x68, 0x04, 0x8e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x9a, 0x02, 0xa5, 0x01, 0x00, 0x08, 0xa7, 0x42, 0x80, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x93, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x81, 0x80, 0x03, 0x80, 0x12, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, 0x01, 0xc2, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x83, 0x00, 0x01, 0x00, 0x12, 0x00, 0x01, 0x01, 0x8e, 0x00, 0x00, 0x03, 0x0e, 0x01, 0x00, 0x04, 0x12, 0x80, 0x03, 0x05, 0x89, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x83, 0x02, 0x03, 0x00, 0xc4, 0x01, 0x03, 0x02, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x06, 0x00, 0x80, 0x0b, 0x02, 0x01, 0x07, 0x0e, 0x02, 0x04, 0x08, 0x80, 0x02, 0x03, 0x00, 0x13, 0x03, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, 0x83, 0x09, 0x0a, 0x12, 0x03, 0x03, 0x01, 0xc3, 0x83, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x8b, 0x03, 0x01, 0x0b, 0x8e, 0x03, 0x07, 0x0c, 0x12, 0x03, 0x04, 0x07, 0x44, 0x02, 0x03, 0x01, 0xc8, 0x01, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x8d, 0x04, 0x84, 0x70, 0x61, 0x64, 0x04, 0x86, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x04, 0x87, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x00, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x87, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x82, 0x01, 0x17, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xa9, 0x02, 0xab, 0x01, 0x00, 0x04, 0x86, 0x89, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x03, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x87, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x81, 0x01, 0x17, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xaf, 0x02, 0xb5, 0x02, 0x00, 0x05, 0x91, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x01, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x02, 0x39, 0x01, 0x01, 0x00, 0x38, 0x00, 0x00, 0x80, 0x47, 0x01, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x02, 0x80, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x44, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x03, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x01, 0x47, 0x01, 0x01, 0x00, 0x84, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x89, 0x73, 0x65, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xb8, 0x02, 0xba, 0x01, 0x00, 0x03, 0x85, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x02, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xc2, 0x02, 0xc4, 0x03, 0x00, 0x07, 0x87, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x80, 0x02, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x01, 0xc7, 0x01, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8a, 0x73, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xc8, 0x02, 0xca, 0x01, 0x00, 0x03, 0x86, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x02, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xcf, 0x02, 0xd1, 0x01, 0x00, 0x03, 0x86, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0xc5, 0x00, 0x02, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8f, 0x67, 0x65, 0x74, 0x53, 0x63, 0x72, 0x6f, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xd5, 0x02, 0xf3, 0x01, 0x00, 0x07, 0xeb, 0x93, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x81, 0x00, 0x00, 0x92, 0x00, 0x00, 0x02, 0x92, 0x80, 0x02, 0x03, 0x92, 0x80, 0x04, 0x05, 0x0e, 0x01, 0x00, 0x06, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x07, 0x0e, 0x01, 0x02, 0x06, 0x92, 0x00, 0x06, 0x02, 0x0e, 0x01, 0x00, 0x08, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x07, 0x0e, 0x01, 0x02, 0x09, 0x92, 0x00, 0x08, 0x02, 0x0b, 0x01, 0x00, 0x0a, 0x8e, 0x01, 0x00, 0x0b, 0x44, 0x01, 0x02, 0x00, 0xce, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x34, 0x01, 0x01, 0x00, 0x15, 0x01, 0x02, 0x80, 0x2f, 0x01, 0x80, 0x06, 0x8b, 0x01, 0x00, 0x0a, 0x0e, 0x02, 0x00, 0x0c, 0x93, 0x02, 0x01, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x07, 0x0e, 0x03, 0x06, 0x09, 0x92, 0x02, 0x0d, 0x06, 0xc4, 0x01, 0x03, 0x02, 0x90, 0x00, 0x02, 0x03, 0x13, 0x01, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, 0x81, 0x0e, 0x0f, 0x12, 0x81, 0x04, 0x10, 0x12, 0x81, 0x11, 0x12, 0x8e, 0x01, 0x00, 0x13, 0xbc, 0x81, 0x14, 0x00, 0x38, 0x07, 0x00, 0x80, 0xb4, 0x01, 0x02, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x15, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x13, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x83, 0x09, 0x00, 0x92, 0x02, 0x16, 0x06, 0x0e, 0x03, 0x00, 0x18, 0x92, 0x02, 0x17, 0x06, 0x44, 0x02, 0x02, 0x02, 0x10, 0x01, 0x03, 0x04, 0xb4, 0x01, 0x02, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x15, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x19, 0x42, 0x83, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x03, 0x83, 0x0c, 0x00, 0x92, 0x02, 0x16, 0x06, 0x0e, 0x03, 0x00, 0x1a, 0x92, 0x02, 0x17, 0x06, 0x44, 0x02, 0x02, 0x02, 0x10, 0x01, 0x03, 0x04, 0xb4, 0x01, 0x01, 0x00, 0x95, 0x01, 0x03, 0x80, 0xaf, 0x01, 0x80, 0x06, 0x0b, 0x02, 0x00, 0x1b, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x02, 0x90, 0x00, 0x03, 0x04, 0x8b, 0x01, 0x00, 0x1b, 0x13, 0x02, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x93, 0x02, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x92, 0x82, 0x1d, 0x1e, 0x92, 0x82, 0x1f, 0x1e, 0x12, 0x02, 0x1c, 0x05, 0x12, 0x82, 0x00, 0x20, 0x12, 0x82, 0x21, 0x20, 0x12, 0x82, 0x22, 0x0f, 0x12, 0x82, 0x23, 0x24, 0x12, 0x82, 0x11, 0x24, 0x8e, 0x02, 0x00, 0x25, 0x12, 0x02, 0x17, 0x05, 0x8b, 0x02, 0x00, 0x1b, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x02, 0x02, 0x00, 0x4e, 0x02, 0x00, 0x00, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0x00, 0x00, 0xc7, 0x01, 0x01, 0x00, 0xa6, 0x04, 0x82, 0x77, 0x13, 0x9a, 0x99, 0x59, 0x3f, 0x04, 0x84, 0x70, 0x61, 0x64, 0x03, 0x10, 0x00, 0x00, 0x00, 0x04, 0x84, 0x67, 0x61, 0x70, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x87, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x04, 0x86, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x04, 0x85, 0x74, 0x65, 0x78, 0x74, 0x04, 0x86, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x04, 0x88, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x84, 0x72, 0x6f, 0x77, 0x11, 0x03, 0x08, 0x00, 0x00, 0x00, 0x04, 0x88, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x79, 0x04, 0x84, 0x65, 0x6e, 0x64, 0x04, 0x87, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x01, 0x04, 0x87, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x04, 0x86, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x04, 0x89, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x04, 0x8a, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x04, 0x83, 0x6f, 0x6b, 0x04, 0x86, 0x6f, 0x6e, 0x5f, 0x6f, 0x6b, 0x04, 0x84, 0x62, 0x6f, 0x78, 0x04, 0x83, 0x61, 0x74, 0x04, 0x82, 0x78, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x82, 0x79, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x82, 0x68, 0x04, 0x88, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x04, 0x86, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x04, 0x87, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x04, 0x8b, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x81, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xf5, 0x02, 0xfa, 0x00, 0x00, 0x04, 0x8d, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x44, 0x00, 0x01, 0x01, 0x09, 0x00, 0x01, 0x00, 0x44, 0x00, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x08, 0x00, 0x03, 0x00, 0x8a, 0x01, 0x06, 0x00, 0x0a, 0x01, 0x05, 0x00, 0x8a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x47, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x87, 0x00, 0x00, 0x00, 0x01, 0x14, 0x00, 0x01, 0x07, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x0d, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0xfc, 0x03, 0x89, 0x01, 0x00, 0x05, 0x9f, 0x8b, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x93, 0x01, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x02, 0x92, 0x01, 0x02, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x04, 0x92, 0x01, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x05, 0x92, 0x01, 0x05, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x06, 0x92, 0x01, 0x06, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x07, 0x92, 0x01, 0x07, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x08, 0x92, 0x01, 0x08, 0x04, 0x0b, 0x02, 0x01, 0x03, 0x0e, 0x02, 0x04, 0x09, 0x92, 0x01, 0x09, 0x04, 0x0b, 0x02, 0x00, 0x0b, 0x0e, 0x02, 0x04, 0x0c, 0x92, 0x01, 0x0a, 0x04, 0xc4, 0x00, 0x03, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x8d, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x73, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x04, 0x86, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x66, 0x61, 0x63, 0x65, 0x04, 0x8c, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x46, 0x61, 0x63, 0x65, 0x04, 0x8d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x04, 0x87, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x04, 0x85, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x88, 0x46, 0x4f, 0x4e, 0x54, 0x5f, 0x55, 0x49, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x8d, 0x03, 0x90, 0x01, 0x00, 0x02, 0x84, 0x0a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x01, 0x00, 0xc4, 0x00, 0x01, 0x01, 0xc7, 0x00, 0x01, 0x00, 0x81, 0x04, 0x88, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x82, 0x01, 0x09, 0x00, 0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x94, 0x03, 0xa6, 0x00, 0x00, 0x06, 0xb1, 0x0b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x01, 0x01, 0x09, 0x00, 0x02, 0x00, 0x44, 0x00, 0x01, 0x02, 0x0a, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x02, 0x89, 0x00, 0x01, 0x00, 0x03, 0x81, 0x01, 0x00, 0x83, 0x81, 0x01, 0x00, 0x44, 0x00, 0x04, 0x01, 0x09, 0x00, 0x04, 0x00, 0x89, 0x00, 0x01, 0x00, 0x44, 0x00, 0x02, 0x01, 0x0b, 0x00, 0x03, 0x01, 0x0e, 0x00, 0x00, 0x04, 0x89, 0x00, 0x01, 0x00, 0x01, 0x81, 0xff, 0x7f, 0x81, 0x81, 0xff, 0x7f, 0x0b, 0x02, 0x03, 0x05, 0x0e, 0x02, 0x04, 0x06, 0x44, 0x02, 0x01, 0x02, 0x8b, 0x02, 0x03, 0x05, 0x8e, 0x02, 0x05, 0x07, 0xc4, 0x02, 0x01, 0x00, 0x44, 0x00, 0x00, 0x03, 0x42, 0x80, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x03, 0x08, 0x80, 0x01, 0x01, 0x00, 0x01, 0x82, 0x00, 0x80, 0x44, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x0e, 0x01, 0x02, 0x09, 0x44, 0x01, 0x01, 0x01, 0x07, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x05, 0x00, 0x0b, 0x01, 0x03, 0x05, 0x0e, 0x01, 0x02, 0x0a, 0x8b, 0x01, 0x00, 0x0b, 0x8e, 0x01, 0x03, 0x0c, 0x44, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x0e, 0x01, 0x02, 0x0d, 0x89, 0x01, 0x01, 0x00, 0x44, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x03, 0x0e, 0x44, 0x01, 0x01, 0x01, 0x47, 0x01, 0x01, 0x00, 0x8f, 0x04, 0x86, 0x72, 0x65, 0x73, 0x65, 0x74, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x88, 0x73, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x04, 0x85, 0x66, 0x69, 0x6c, 0x6c, 0x04, 0x87, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x04, 0x87, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x04, 0x89, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x04, 0x8a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x04, 0x8c, 0x64, 0x72, 0x6f, 0x70, 0x53, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x04, 0x86, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x04, 0x86, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x04, 0x8b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x04, 0x8f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x86, 0x01, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x01, 0x07, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xac, 0x03, 0xb1, 0x00, 0x00, 0x02, 0x8b, 0x09, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x89, 0x00, 0x00, 0x00, 0x44, 0x00, 0x02, 0x01, 0x0b, 0x00, 0x01, 0x02, 0x83, 0x80, 0x01, 0x00, 0x44, 0x00, 0x02, 0x01, 0x47, 0x00, 0x01, 0x00, 0x84, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x85, 0x64, 0x72, 0x61, 0x77, 0x04, 0x8f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x04, 0x85, 0x73, 0x74, 0x65, 0x70, 0x82, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xb3, 0x03, 0xb6, 0x03, 0x00, 0x08, 0x94, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x05, 0xbb, 0x01, 0x01, 0x00, 0xb8, 0x04, 0x00, 0x80, 0xa2, 0x03, 0x03, 0x05, 0xae, 0x01, 0x05, 0x06, 0xba, 0x00, 0x07, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x3b, 0x02, 0x02, 0x00, 0xb8, 0x01, 0x00, 0x80, 0xa2, 0x03, 0x04, 0x06, 0x2e, 0x02, 0x06, 0x06, 0x3a, 0x81, 0x07, 0x00, 0x38, 0x00, 0x00, 0x80, 0x86, 0x03, 0x00, 0x00, 0x87, 0x03, 0x00, 0x00, 0xc8, 0x03, 0x02, 0x00, 0xc7, 0x03, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x88, 0x67, 0x65, 0x74, 0x52, 0x65, 0x63, 0x74, 0x81, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xb8, 0x03, 0xc0, 0x03, 0x00, 0x08, 0x93, 0x89, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x01, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x89, 0x01, 0x02, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x44, 0x02, 0x04, 0x01, 0x47, 0x02, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x83, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xc2, 0x03, 0xca, 0x03, 0x00, 0x08, 0x93, 0x89, 0x01, 0x00, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x01, 0x00, 0x8e, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x89, 0x01, 0x02, 0x00, 0x8c, 0x01, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x80, 0x03, 0x02, 0x00, 0x44, 0x02, 0x04, 0x01, 0x47, 0x02, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x83, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xcf, 0x03, 0xe0, 0x02, 0x00, 0x08, 0xa9, 0x0b, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x01, 0x44, 0x01, 0x01, 0x02, 0x42, 0x01, 0x00, 0x00, 0x38, 0x05, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x02, 0x08, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x02, 0x01, 0x89, 0x01, 0x01, 0x00, 0x8c, 0x01, 0x03, 0x02, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x02, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, 0x44, 0x02, 0x02, 0x01, 0x89, 0x01, 0x02, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x00, 0x8e, 0x01, 0x03, 0x03, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x02, 0xc2, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x00, 0x02, 0x03, 0x00, 0x87, 0x02, 0x00, 0x00, 0x8a, 0x02, 0x04, 0x00, 0x0a, 0x02, 0x03, 0x00, 0x09, 0x02, 0x05, 0x00, 0x80, 0x02, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x01, 0x00, 0x44, 0x02, 0x04, 0x01, 0x07, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x47, 0x02, 0x01, 0x00, 0x84, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x89, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x84, 0x68, 0x69, 0x74, 0x86, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x19, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xe5, 0x03, 0xf3, 0x02, 0x00, 0x07, 0x9e, 0x09, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x09, 0x01, 0x01, 0x00, 0x89, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x02, 0x01, 0x00, 0x44, 0x01, 0x04, 0x02, 0x89, 0x01, 0x02, 0x00, 0x39, 0x81, 0x03, 0x00, 0xb8, 0x06, 0x00, 0x80, 0x0a, 0x01, 0x02, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x80, 0x89, 0x01, 0x03, 0x00, 0x09, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x01, 0x38, 0x02, 0x00, 0x80, 0x89, 0x01, 0x04, 0x00, 0x09, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0xc4, 0x01, 0x04, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x80, 0x85, 0x01, 0x0b, 0x00, 0x01, 0x18, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x19, 0x00, 0x01, 0x1a, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0xf8, 0x04, 0x88, 0x02, 0x00, 0x0a, 0xa6, 0x09, 0x01, 0x00, 0x00, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x85, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x89, 0x01, 0x01, 0x00, 0x09, 0x02, 0x02, 0x00, 0x80, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x03, 0x01, 0x00, 0x44, 0x02, 0x04, 0x02, 0x42, 0x02, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x89, 0x02, 0x03, 0x00, 0x8c, 0x02, 0x05, 0x02, 0xc2, 0x82, 0x00, 0x00, 0x38, 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x00, 0x08, 0x03, 0x01, 0x00, 0x8a, 0x03, 0x01, 0x00, 0x0a, 0x03, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x09, 0x03, 0x04, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x04, 0x01, 0x00, 0x44, 0x03, 0x04, 0x01, 0xc2, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x80, 0x00, 0x03, 0x05, 0x00, 0x80, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x04, 0x01, 0x00, 0x44, 0x03, 0x04, 0x01, 0x07, 0x03, 0x00, 0x00, 0x48, 0x03, 0x02, 0x00, 0x47, 0x03, 0x01, 0x00, 0x80, 0x85, 0x01, 0x0b, 0x00, 0x01, 0x0c, 0x00, 0x01, 0x18, 0x00, 0x01, 0x04, 0x00, 0x01, 0x1a, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x04, 0x8c, 0x04, 0x95, 0x00, 0x00, 0x04, 0x8f, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x89, 0x00, 0x01, 0x00, 0x44, 0x00, 0x02, 0x02, 0x42, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x80, 0x89, 0x00, 0x02, 0x00, 0x8c, 0x00, 0x01, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x01, 0x01, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x01, 0x02, 0x01, 0x48, 0x00, 0x02, 0x00, 0xc7, 0x00, 0x01, 0x00, 0x82, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x8b, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x83, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x02, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x04, 0x9a, 0x04, 0xcc, 0x02, 0x00, 0x08, 0xdd, 0x0b, 0x01, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x44, 0x01, 0x02, 0x02, 0x3c, 0x81, 0x01, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x0b, 0x01, 0x00, 0x02, 0x83, 0x81, 0x01, 0x00, 0x01, 0x82, 0x00, 0x80, 0x44, 0x01, 0x03, 0x01, 0x09, 0x01, 0x01, 0x00, 0x0c, 0x01, 0x02, 0x00, 0x42, 0x01, 0x00, 0x00, 0xb8, 0x11, 0x00, 0x80, 0xc2, 0x80, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x07, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x04, 0x0e, 0x01, 0x02, 0x05, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x80, 0x89, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x01, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0x8b, 0x01, 0x00, 0x04, 0x8e, 0x01, 0x03, 0x06, 0x09, 0x02, 0x03, 0x00, 0x80, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x02, 0xb9, 0x81, 0x02, 0x00, 0xb8, 0x06, 0x00, 0x80, 0x09, 0x02, 0x04, 0x00, 0x0c, 0x02, 0x04, 0x02, 0x42, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x80, 0x02, 0x04, 0x00, 0x00, 0x03, 0x02, 0x00, 0xc4, 0x02, 0x02, 0x01, 0x89, 0x02, 0x05, 0x00, 0x8c, 0x02, 0x05, 0x03, 0xc2, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x00, 0x03, 0x05, 0x00, 0x80, 0x03, 0x03, 0x00, 0x44, 0x03, 0x02, 0x01, 0x07, 0x02, 0x00, 0x00, 0x48, 0x02, 0x02, 0x00, 0x3c, 0x80, 0x07, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x05, 0x01, 0x00, 0x00, 0x48, 0x01, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x04, 0x0e, 0x01, 0x02, 0x05, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x09, 0x01, 0x02, 0x00, 0x44, 0x01, 0x01, 0x02, 0x42, 0x81, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x80, 0x85, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x80, 0x8b, 0x01, 0x00, 0x04, 0x8e, 0x01, 0x03, 0x08, 0x00, 0x02, 0x02, 0x00, 0x87, 0x02, 0x00, 0x00, 0xc4, 0x01, 0x03, 0x01, 0x0a, 0x01, 0x06, 0x00, 0x38, 0x08, 0x00, 0x80, 0x89, 0x01, 0x06, 0x00, 0x08, 0x02, 0x00, 0x00, 0x0a, 0x02, 0x06, 0x00, 0xc2, 0x01, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x80, 0x0b, 0x02, 0x00, 0x04, 0x0e, 0x02, 0x04, 0x08, 0x80, 0x02, 0x03, 0x00, 0x05, 0x03, 0x00, 0x00, 0x44, 0x02, 0x03, 0x01, 0x09, 0x02, 0x07, 0x00, 0x0c, 0x02, 0x04, 0x03, 0x42, 0x02, 0x00, 0x00, 0x38, 0x01, 0x00, 0x80, 0x80, 0x02, 0x04, 0x00, 0x00, 0x03, 0x03, 0x00, 0xc4, 0x02, 0x02, 0x01, 0x87, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x02, 0x00, 0xc7, 0x01, 0x01, 0x00, 0x89, 0x04, 0x85, 0x74, 0x79, 0x70, 0x65, 0x04, 0x88, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x04, 0x86, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x04, 0x9d, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x04, 0x85, 0x74, 0x72, 0x65, 0x65, 0x04, 0x89, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x8a, 0x6d, 0x6f, 0x76, 0x65, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x04, 0x88, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x04, 0x8b, 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x88, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x00, 0x01, 0x1c, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x03, 0x00, 0x01, 0x02, 0x00, 0x01, 0x0d, 0x00, 0x01, 0x04, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; const EmbeddedModule embedded_modules[] = { {"hints", hints, sizeof(hints)}, {"ui", ui, sizeof(ui)}, diff --git a/native/src/node/painter.h b/native/src/node/painter.h index 5e2f8d6..6e2f1cf 100644 --- a/native/src/node/painter.h +++ b/native/src/node/painter.h @@ -1,10 +1,14 @@ #pragma once // Painting the node tree through GuiProvider, so the same walk drives an LCD -// and an e-ink panel. A dirty node paints itself and dirties its children, -// because a parent's fill lands on top of whatever they drew; nothing tracks -// sub-regions, and a widget that wants to repaint part of itself is a CUSTOM -// node painting through the gui bindings. +// and an e-ink panel. The dirty region is composited a band at a time into an +// offscreen buffer and pushed once, so a full-pane repaint -- a scroll -- moves +// smoothly instead of stalling the bus per primitive. The tree is the display +// list: each band re-walks it and paints the nodes it touches, no recorded +// command stream. A driver that offers no buffer falls back to painting the +// dirty nodes straight to the panel, which is what an e-ink panel wants anyway. +// A widget repainting part of itself is still a CUSTOM node painting through +// the gui bindings; a custom painter is re-invoked per band it spans. #include #include @@ -12,8 +16,21 @@ namespace esp32lua { namespace ui { +// The node's own box, then the region of it being painted right now -- one band, or the +// whole node on the panel fallback. A painter that culls to the clip does its work once a +// frame instead of once per band it spans; one that ignores the extra arguments still +// paints correctly, because every write is clipped anyway. typedef void (*CustomPainter)(void* context, uint16_t id, int x, int y, int w, - int h); + int h, int clipX, int clipY, int clipW, + int clipH); + +// Starting band height. How much contiguous heap exists depends on the app, the +// orientation and how fragmented the heap already is, so this is a ceiling the +// painter shrinks from rather than a size it assumes: a band that will not +// allocate is halved and retried, down to MIN_BAND, before the repaint falls +// back to the panel. +constexpr int BAND_HEIGHT = 48; +constexpr int MIN_BAND = 8; class Painter { public: @@ -23,22 +40,188 @@ public: void* context = nullptr; void draw(uint16_t id) { - if (tree.nodes[id].flags & DIRTY) { - paint(id); - tree.nodes[id].flags &= ~DIRTY; - for (uint16_t c = tree.nodes[id].first; c != NONE; - c = tree.nodes[c].next) { - tree.nodes[c].flags |= DIRTY; - } - } - for (uint16_t c = tree.nodes[id].first; c != NONE; c = tree.nodes[c].next) - draw(c); + Rect dirty; + collectDirty(id, false, dirty, Box::unbounded()); + if (dirty.empty()) + return; + if (!drawBanded(id, dirty)) + drawDirect(id); + clearDirty(id); } private: GuiProvider& gui; Tree& tree; + struct Rect { + int minX = 1 << 30, minY = 1 << 30, maxX = -(1 << 30), maxY = -(1 << 30); + bool empty() const { return maxX <= minX || maxY <= minY; } + void add(int x, int y, int w, int h) { + if (x < minX) + minX = x; + if (y < minY) + minY = y; + if (x + w > maxX) + maxX = x + w; + if (y + h > maxY) + maxY = y + h; + } + }; + + // An edge-bounded rectangle, which a Rect built by union cannot express: the + // clip narrows as the walk descends and has to start meaning "no limit". + struct Box { + int x0, y0, x1, y1; + static Box unbounded() { + const Box b = {-(1 << 30), -(1 << 30), 1 << 30, 1 << 30}; + return b; + } + bool empty() const { return x1 <= x0 || y1 <= y0; } + Box clipTo(int x, int y, int w, int h) const { + Box b = {x > x0 ? x : x0, y > y0 ? y : y0, x + w < x1 ? x + w : x1, + y + h < y1 ? y + h : y1}; + return b; + } + }; + + // The clip in force, so a custom node inside a scroll container narrows the + // container's box instead of replacing it and painting over the chrome when + // it restores. + Box clip = Box::unbounded(); + + Box pushClip(const Box& next) { + const Box previous = clip; + clip = next; + gui.setClip(next.x0, next.y0, next.x1 - next.x0, next.y1 - next.y0); + return previous; + } + + void popClip(const Box& previous) { + clip = previous; + if (previous.x0 == -(1 << 30) && previous.y0 == -(1 << 30)) + gui.clearClip(); + else + gui.setClip(previous.x0, previous.y0, previous.x1 - previous.x0, + previous.y1 - previous.y0); + } + + static bool overlaps(const Node& n, int x, int y, int w, int h) { + return n.x < x + w && n.x + n.w > x && n.y < y + h && n.y + n.h > y; + } + + // The region that will repaint: a dirty node and every descendant, because a + // dirty parent's fill lands over its children. Computed before painting so a + // band knows its extent without the dirty flags it is about to clear. + // + // Bounded by the enclosing scroll containers, because a scrolled subtree is + // as tall as its content: unclipped, dirtying a list of sixty rows would ask + // for a dirty region thousands of pixels tall and band the whole of it. + void collectDirty(uint16_t id, bool ancestorDirty, Rect& acc, + const Box& bounds) { + const Node& n = tree.nodes[id]; + const bool dirty = ancestorDirty || (n.flags & DIRTY); + if (dirty) { + const Box visible = bounds.clipTo(n.x, n.y, n.w, n.h); + if (!visible.empty()) + acc.add(visible.x0, visible.y0, visible.x1 - visible.x0, + visible.y1 - visible.y0); + } + const Box inner = + tree.scrolls(id) ? bounds.clipTo(n.x, n.y, n.w, n.h) : bounds; + if (inner.empty()) + return; + for (uint16_t c = tree.nodes[id].first; c != NONE; c = tree.nodes[c].next) + collectDirty(c, dirty, acc, inner); + } + + void clearDirty(uint16_t id) { + tree.nodes[id].flags &= ~DIRTY; + for (uint16_t c = tree.nodes[id].first; c != NONE; c = tree.nodes[c].next) + clearDirty(c); + } + + // Composite the dirty region band by band. Returns false without drawing when + // the first band cannot be allocated, so the caller paints to the panel + // instead. A band is cleared to the root background because its buffer starts + // undefined; the nodes then paint their own fills over it in tree order. + bool drawBanded(uint16_t root, const Rect& dirty) { + const int x = dirty.minX; + const int w = dirty.maxX - dirty.minX; + const int32_t background = tree.inherited(root, S_BG).bg; + bool any = false; + int band = BAND_HEIGHT; + int y = dirty.minY; + while (y < dirty.maxY) { + const int h = y + band > dirty.maxY ? dirty.maxY - y : band; + if (gui.beginBuffer(x, y, w, h)) { + any = true; + gui.clear(background); + paintBand(root, x, y, w, h); + gui.present(); + y += h; + } else if (band > MIN_BAND) { + band /= 2; // too big for this heap: retry the same strip, smaller + } else if (any) { + paintBand(root, x, y, w, h); // mid-frame failure: draw this strip direct + y += h; + } else { + return false; // nothing fits: caller uses the panel path + } + } + return true; + } + + // Paint every node overlapping the band, parent before child so fills sit + // under their contents. Unlike drawDirect this ignores the dirty flag: the + // band's buffer was just cleared, so everything visible in it must be redrawn. + void paintBand(uint16_t id, int x, int y, int w, int h) { + const Node& n = tree.nodes[id]; + if (overlaps(n, x, y, w, h)) + paint(id, x, y, w, h); + if (n.first == NONE) + return; + // A scroll container's children are laid out past its edges, so the subtree + // is scissored to the box on the way in. Without it a row half scrolled off + // the top paints over whatever sits above the container. + const bool scissor = tree.scrolls(id); + Box previous = clip; + if (scissor) { + const Box inner = clip.clipTo(n.x, n.y, n.w, n.h); + if (inner.empty()) + return; + previous = pushClip(inner); + } + for (uint16_t c = tree.nodes[id].first; c != NONE; c = tree.nodes[c].next) + paintBand(c, x, y, w, h); + if (scissor) + popClip(previous); + } + + // Panel fallback: the original dirty-propagating walk, straight to the panel. + void drawDirect(uint16_t id) { + const Node& n = tree.nodes[id]; + if (n.flags & DIRTY) { + paint(id, n.x, n.y, n.w, n.h); + for (uint16_t c = tree.nodes[id].first; c != NONE; + c = tree.nodes[c].next) + tree.nodes[c].flags |= DIRTY; + } + if (n.first == NONE) + return; + const bool scissor = tree.scrolls(id); + Box previous = clip; + if (scissor) { + const Box inner = clip.clipTo(n.x, n.y, n.w, n.h); + if (inner.empty()) + return; + previous = pushClip(inner); + } + for (uint16_t c = tree.nodes[id].first; c != NONE; c = tree.nodes[c].next) + drawDirect(c); + if (scissor) + popClip(previous); + } + // What a node sits on, which is not what it fills. Derived rather than // stored, because a node cannot be told what is behind it: a dialog layer // paints nothing, so its card blends into the dimmed content two levels up, @@ -56,7 +239,7 @@ private: return tree.inherited(root, S_BG).bg; } - void paint(uint16_t id) { + void paint(uint16_t id, int clipX, int clipY, int clipW, int clipH) { const Node& n = tree.nodes[id]; switch (n.type) { case BUTTON: @@ -65,13 +248,29 @@ private: case TEXT: paintText(id); break; - case CUSTOM: + case CUSTOM: { // Cleared first, because a custom painter draws what it wants and nothing - // knows what it drew last time. - gui.fillRect(n.x, n.y, n.w, n.h, tree.inherited(id, S_BG).bg); + // knows what it drew last time. Only the band's slice of the node is + // cleared, because each band clears its own before repainting it. + const int x0 = n.x > clipX ? n.x : clipX; + const int y0 = n.y > clipY ? n.y : clipY; + const int nx1 = n.x + n.w, ny1 = n.y + n.h; + const int x1 = nx1 < clipX + clipW ? nx1 : clipX + clipW; + const int y1 = ny1 < clipY + clipH ? ny1 : clipY + clipH; + if (x1 <= x0 || y1 <= y0) + break; + // Scissored to the node, not just to the band: a custom painter draws what + // it likes and a band is usually taller than the node, so the overflow of + // a row half scrolled off the top would otherwise paint over the chrome + // above it. Culling cannot replace this -- the row is meant to be drawn, + // just cut off at the node's edge. + const Box previous = pushClip(clip.clipTo(x0, y0, x1 - x0, y1 - y0)); + gui.fillRect(x0, y0, x1 - x0, y1 - y0, tree.inherited(id, S_BG).bg); if (custom) - custom(context, id, n.x, n.y, n.w, n.h); + custom(context, id, n.x, n.y, n.w, n.h, x0, y0, x1 - x0, y1 - y0); + popClip(previous); break; + } default: paintBox(id); break; @@ -80,6 +279,7 @@ private: paintFocus(id); } + void paintBox(uint16_t id) { const Node& n = tree.nodes[id]; const Style* own = tree.styleOf(id); diff --git a/native/test/fake_providers.h b/native/test/fake_providers.h index c185aef..6248392 100644 --- a/native/test/fake_providers.h +++ b/native/test/fake_providers.h @@ -162,6 +162,11 @@ struct Gui : GuiProvider { return (r << 16) | (g << 8) | b; } void clear(int32_t) override { trace += "clear;"; } + void setClip(int32_t x, int32_t y, int32_t w, int32_t h) override { + trace += "clip(" + std::to_string(x) + "," + std::to_string(y) + "," + + std::to_string(w) + "," + std::to_string(h) + ");"; + } + void clearClip() override { trace += "unclip;"; } void fillRect(int32_t, int32_t, int32_t, int32_t, int32_t) override { trace += "fillRect;"; } diff --git a/native/test/runtime_test.cpp b/native/test/runtime_test.cpp index 7b9563b..0714971 100644 --- a/native/test/runtime_test.cpp +++ b/native/test/runtime_test.cpp @@ -198,6 +198,56 @@ int main() { "tree.draw(root)\n" "assert(painted == 320)"); + // A scrolling box: children measure past its edges, panning moves them and is + // clamped to the content, and what is scrolled out of the box is neither hit + // nor painted outside it. + bench.gui.trace.clear(); + run(state, + "tree.reset()\n" + "local list = tree.create(nil, {type = 'box', w = 'fill', h = 'fill',\n" + " scrollX = true, scrollY = true})\n" + "local rows = {}\n" + "for i = 1, 5 do rows[i] = tree.create(list, {type = 'box', w = 400, h = " + "100, interactive = true}) end\n" + "tree.setStyle(list, {background = 0xFFFFFF, fill = 0xFFFFFF, border = " + "0x333333})\n" + // The box is the panel; the content is deliberately larger on both axes. + "assert(tree.layout(list, 0, 0, 320, 240))\n" + "local maxX, maxY = tree.getScrollRange(list)\n" + "assert(maxX == 400 - 320, 'content is wider than the box')\n" + "assert(maxY == 5 * 100 - 240, 'content is taller than the box')\n" + // Panning shifts the children, and getRect keeps answering screen space. + "tree.setScroll(list, 30, 150)\n" + "local x, y = tree.getRect(rows[1])\n" + "assert(x == -30 and y == -150, 'row moved by the scroll')\n" + "local sx, sy = tree.getScroll(list)\n" + "assert(sx == 30 and sy == 150)\n" + // The box itself does not move, only what it holds. + "local bx, by = tree.getRect(list)\n" + "assert(bx == 0 and by == 0)\n" + // Row 1 is scrolled above the box, so a tap at the top hits row 2. + "assert(tree.hit(list, 10, 10) == rows[2], 'scrolled-out row is not hit')\n" + // Clamped, never past the content's far edge or before its start. + "tree.setScroll(list, 9999, 9999)\n" + "local cx, cy = tree.getScroll(list)\n" + "assert(cx == maxX and cy == maxY, 'clamped to the content')\n" + "tree.setScroll(list, -50, -50)\n" + "local zx, zy = tree.getScroll(list)\n" + "assert(zx == 0 and zy == 0, 'clamped at the origin')\n" + "tree.draw(list)\n" + "tree.dropScratch()"); + // The subtree is scissored to the box, so a row hanging past it cannot paint + // over whatever sits outside. + assert(bench.gui.trace.find("clip(0,0,320,240);") != std::string::npos); + assert(bench.gui.trace.find("unclip;") != std::string::npos); + + // A scrolled axis has no size to hand down, so the box needs one of its own. + expectError(state, "tree.reset()\n" + "local l = tree.create(nil, {type = 'box', scrollY = " + "true})\n" + "tree.create(l, {type = 'box', w = 10, h = 10})\n" + "assert(tree.layout(l, 0, 0, 320, 240))"); + // A timer firing inside draw is still one batch. run(state, "function draw() timer.after(1, function() end) end\n" "nested = timer.after(1, function() draw() end)");