for (;;);{"error":null,"payload":{"timeline":"\u003cdiv class=\"phui-timeline-shell phui-timeline-green\" data-sigil=\"transaction anchor-container\" data-meta=\"0_140\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236374\" id=\"236374\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill fill-has-color phui-timeline-icon-fill-green\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-arrow-right phui-timeline-icon\" data-meta=\"0_138\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_0\"\u003eepriestley\u003c\/a\u003e triaged this task as \u003cspan class=\"phui-timeline-value\"\u003eNormal\u003c\/span\u003e priority.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236374\" data-sigil=\"has-tooltip\" data-meta=\"0_137\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 2:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 14:21:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_139\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_11\"\u003eepriestley\u003c\/a\u003e created this task.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_143\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"display: none;\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236380\" id=\"236380\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_142\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/herald\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_13\"\u003eHerald\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/eadler\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_14\"\u003eeadler\u003c\/a\u003e. \u003cspan class=\"phui-timeline-extra-information\"\u003e \u00b7 \u003ca href=\"\/herald\/transcript\/311787\/\"\u003eView Herald Transcript\u003c\/a\u003e\u003c\/span\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236380\" data-sigil=\"has-tooltip\" data-meta=\"0_141\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 2:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 14:21:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_146\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236403\" id=\"236403\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_145\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_15\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-adlifrnc55qauxq\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236403\" data-sigil=\"has-tooltip\" data-meta=\"0_144\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 3:43 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 15:43:09 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_149\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/ha7fpr4n67jtaeonitot\/PHID-FILE-luoqw46wec4g2ptkp5pu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/ftdysa\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236422\" id=\"236422\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_148\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/ftdysa\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_16\"\u003eftdysa\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/ftdysa\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_17\"\u003eftdysa\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236422\" data-sigil=\"has-tooltip\" data-meta=\"0_147\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 4:57 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 16:57:19 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_152\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236423\" id=\"236423\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_151\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_18\"\u003eyelirekim\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_19\"\u003eyelirekim\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236423\" data-sigil=\"has-tooltip\" data-meta=\"0_150\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 6:27 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 18:27:27 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_165\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_161\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_162\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_163\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_164\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236425\" id=\"236425\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_160\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_20\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236425\" data-sigil=\"has-tooltip\" data-meta=\"0_159\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:04 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:04:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_157\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_158\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_21\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI'm planning to tackle the build log stuff first since it's the most clear-cut, all fairly close together, and also roughly the most dumb.\u003c\/p\u003e\n\n\u003cp\u003eThere's some possible adjacency to doing "logs in general" (see \u003ca href=\"\/T13076\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_1\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT13076\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e) but that feels like gratuitous levels of scope explosion.\u003c\/p\u003e\n\n\u003cp\u003eI think the storage side of logs is mostly in reasonable shape. The remaining plans from \u003ca href=\"\/T5822\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_2\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT5822\u003c\/span\u003e\u003c\/a\u003e are:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eArchive into Files after 30 days.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDelete forever after 180 days.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd a way to configure a hard log size limit which causes build failures ("if a build produces more than 8MB of output, abort it").\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eI think these remain reasonable, but not especially high-priority. Files supports access to arbitrary ranges via \u003ctt class=\"remarkup-monospaced\"\u003egetFileDataIterator($begin, $end)\u003c\/tt\u003e, although it does not currently support compression. Since log chunks \u003cem\u003edo\u003c\/em\u003e support compression, archiving logs into Files and retaining access to arbitrary content ranges could end up \u003cem\u003eincreasing\u003c\/em\u003e the storage size of logs, although you get to store the uncompressed stuff in S3 instead of the database so maybe that's fine. We could also archive each log chunk into Files as a separate File object, or distinguish between "you can read arbitrary ranges from this file" and "you can read this file only from the beginning", or implement compression into Files, although compression+encryption sometimes interact in a dangerous way (CRIME \/ BREACH).\u003c\/p\u003e\n\n\u003cp\u003eSince we need to put the uncompressed data in Files anyway if we're going to do "Download Log", I'm inclined to start there and then do compression transparently at a later date if it's motivated by the data.\u003c\/p\u003e\n\n\u003cp\u003eBuild logs should be queryable via the API (not exactly \u003ca href=\"\/T9124\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_3\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT9124\u003c\/span\u003e\u003c\/a\u003e, which asks for writes), but they should return a file PHID, not the actual log content, like other similar modern methods. This dodges size\/streaming\/non-UTF8 concerns, and you can do arbitrary range reads with \u003ctt class=\"remarkup-monospaced\"\u003eContent-Range\u003c\/tt\u003e.\u003c\/p\u003e\n\n\u003cp\u003eThe UI should be rewritten more cleanly and support a standalone page with line targets (\u003ca href=\"\/T10868\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_4\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT10868\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e). Logs should support highlighting (\u003ca href=\"\/T10179\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_5\"\u003e\u003cspan class=\"phui-tag-core-closed\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT10179\u003c\/span\u003e\u003c\/span\u003e\u003c\/a\u003e, \u003ca href=\"\/T8656\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_6\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT8656\u003c\/span\u003e\u003c\/a\u003e) and summarization (not exactly \u003ca href=\"\/T6139\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_7\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT6139\u003c\/span\u003e\u003c\/a\u003e). This should maybe also be live, I guess. \ud83d\udc22\u003c\/p\u003e\n\n\u003cp\u003eThey should also have a "Download entire log" (\u003ca href=\"https:\/\/admin.phacility.com\/PHI382\" class=\"phui-tag-view phui-tag-type-shade phui-tag-violet phui-tag-shade \"\u003e\u003cspan class=\"phui-tag-core \"\u003ePHI382\u003c\/span\u003e\u003c\/a\u003e) and maybe a "grep" would be nice.\u003c\/p\u003e\n\n\u003cp\u003eMuch of this depends on converting a log into a File object. For sufficiently large logs, this may take longer than users can reasonably wait in the web UI (e.g., if a build produces 10GB of output, it's going to take more than 30 seconds to stream out of the database into S3). So I'm inclined to do this:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhen a log closes, we queue a task to finalize it.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThe finalizer streams the whole thing out of the database, through any dedicated formatter\/summarizer, and into Files.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eOnce it hits Files, the file is attached to the log and set on the log in some new \u003ctt class=\"remarkup-monospaced\"\u003efilePHID\u003c\/tt\u003e column.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis activates "download entire log", file PHID retrieval via Conduit, etc, which don't work until then ("Wait for this thing to finish, then you can download it.").\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThe "archive into Files" GC just deletes the log chunks and leaves the file.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eSo I think the specific steps here are:\u003c\/p\u003e\n\n\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMove the \u003ctt class=\"remarkup-monospaced\"\u003ecompressLog()\u003c\/tt\u003e stuff into a worker.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd a \u003ctt class=\"remarkup-monospaced\"\u003efilePHID\u003c\/tt\u003e to \u003ctt class=\"remarkup-monospaced\"\u003eBuildLog\u003c\/tt\u003e.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMake that worker also send the log to Files.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ctt class=\"remarkup-monospaced\"\u003ebin\/harbormaster archive-logs\u003c\/tt\u003e probably needs a file rebuild mode to test this.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd a dedicated log page.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd a "download log" button.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eMake the log page show the log without needing to load more than a constant amount of data even for an arbitrarily large log. \u003cstrong\u003eWOW. AMAZING.\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd line numbers and links to the log page with proper copy\/paste behavior.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eJavascript! Ugh!\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd "click for more context" in the middle of long logs.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd live reload for live logs.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd the junk to automatically expand the "click for more context" in the middle of long logs when someone hilarious links to #999999 in a 2-million line log, ha ha ha ha I love writing and maintaining Javascript.\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eThis is actually legitimately hard without scanning the entire file. Maybe we can emit a map as part of finalization which shows which has line markers every megabyte or so.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd a SearchEngine + API method for querying logs.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDefine a Formatter\/Summarizer engine with methods like: \u003ctt class=\"remarkup-monospaced\"\u003ehighlightLogFragment($fragment)\u003c\/tt\u003e, \u003ctt class=\"remarkup-monospaced\"\u003ehighlightEntireLog($corpus)\u003c\/tt\u003e, and \u003ctt class=\"remarkup-monospaced\"\u003eaccumulateLogSummary($iterator)\u003c\/tt\u003e.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eDefault "run command" to an ANSI highlighter. Default "HTTP Request" to the rainbow highlighter or something? Eventually, some way to specify these without writing code and\/or support for them to guess where they're most useful (e.g., JSON can recognize itself, popular unit test frameworks can recognize themselves).\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eWhen the standalone view renders log fragments, highlight them with the fragment highlighter. When it renders the entire log, highlight it with the entire-log highlighter.\u003cul class=\"remarkup-list\"\u003e\n\u003cli class=\"remarkup-list-item\"\u003eLine-oriented fragments are tricky because a build may emit a single 2GB log of the letter "A" with no newlines. We need to be mindful that lines may be arbitrarily long throughout all of this.\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eIn the finalization worker, pipe the whole thing through the summarizer on the way to Files. Maybe summarization and highlighting aren't the same object? Could kinda go either way. This emits a dictionary which is stored on the Log and gets a callback to render in the UI.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003e\u003ctt class=\"remarkup-monospaced\"\u003ebin\/harbormaster archive-logs\u003c\/tt\u003e probably needs a "resummarize" mode for this.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eReplace the log view on the build page with the new view.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd GC for chunk removal.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eAdd GC for log removal.\u003c\/li\u003e\n\u003cli class=\"remarkup-list-item\"\u003eSomewhere in here, add more flags to \u003ctt class=\"remarkup-monospaced\"\u003ebin\/harbormaster archive-logs\u003c\/tt\u003e for "nuke chunks", "nuke logs", and "select IDs \/ time ranges" to support testing all this stuff.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eThen logs will probably be in more OK shape.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_178\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_174\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_175\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_176\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_177\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236427\" id=\"236427\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_173\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_22\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236427\" data-sigil=\"has-tooltip\" data-meta=\"0_172\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:08 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:08:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_170\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_171\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_23\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote\u003e\u003cp\u003emaybe a "grep" would be nice\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eFor exceptionally large logs we can't pre-compute this, but we could stream it chunk-by-chunk and let you download it via the bulk queue eventually if there's use for that kinda thing. I love writing and maintaining Javascript so I'm eager to increase the amount of Javascript powering build logs.\u003c\/p\u003e\n\n\u003cp\u003eHighlight + grep is a bit of a mess so maybe the highlighter needs \u003ctt class=\"remarkup-monospaced\"\u003estripFragment($fragment)\u003c\/tt\u003e which would, e.g., remove ANSI control codes so we can grep the display text.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_191\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_187\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_188\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_189\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_190\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236428\" id=\"236428\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_186\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_24\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236428\" data-sigil=\"has-tooltip\" data-meta=\"0_185\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:16 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:16:45 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_183\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_184\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_25\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eTesting any of this is also a pain right now, so before any of that happens I'm going to write \u003ctt class=\"remarkup-monospaced\"\u003ebin\/harbormaster build --log output.txt\u003c\/tt\u003e or \u003ctt class=\"remarkup-monospaced\"\u003ebin\/harbormaster write-a-log\u003c\/tt\u003e or something. This overlaps the actual API-writing request in \u003ca href=\"\/T9124\" class=\"phui-tag-view phui-tag-type-object \" data-sigil=\"hovercard\" data-meta=\"0_8\"\u003e\u003cspan class=\"phui-tag-core phui-tag-color-object\"\u003eT9124\u003c\/span\u003e\u003c\/a\u003e, but that has more complicated concerns (like UTF8 issues, writing to a closed log, etc).\u003c\/p\u003e\n\n\u003cp\u003eI also think I need to write \u003ctt class=\"remarkup-monospaced\"\u003ecat-slowly\u003c\/tt\u003e, which works like \u003ctt class=\"remarkup-monospaced\"\u003ecat\u003c\/tt\u003e but prints the file really slowly to test live logs. As far as I can tell from some Googling, this doesn't exist? I'm almost inclined to write it as \u003ctt class=\"remarkup-monospaced\"\u003earc tar - read stdin and write it to stdout\u003c\/tt\u003e, with an undocumented side effect that it does this very slowly, but this feels like it might mostly funny to me and not as funny to anyone else. I don't know any way to do this with standard CLI tools.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_204\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/11\/\" data-sigil=\"has-tooltip\" data-meta=\"0_200\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-beer\" data-meta=\"0_201\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/2\/\" data-sigil=\"has-tooltip\" data-meta=\"0_202\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_203\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236429\" id=\"236429\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_199\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_26\"\u003eyelirekim\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236429\" data-sigil=\"has-tooltip\" data-meta=\"0_198\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:21:04 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_196\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_197\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_27\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eThere is a program far superior to \u003ctt class=\"remarkup-monospaced\"\u003ecat\u003c\/tt\u003e that already exists.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_217\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/11\/\" data-sigil=\"has-tooltip\" data-meta=\"0_213\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-beer\" data-meta=\"0_214\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/2\/\" data-sigil=\"has-tooltip\" data-meta=\"0_215\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_216\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236430\" id=\"236430\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_212\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_28\"\u003eyelirekim\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236430\" data-sigil=\"has-tooltip\" data-meta=\"0_211\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:21:24 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_209\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_210\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_29\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003ca href=\"https:\/\/www.tecmint.com\/add-colors-to-command-output-terminal-linux\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/www.tecmint.com\/add-colors-to-command-output-terminal-linux\/\u003c\/a\u003e\u003c\/p\u003e\n\n\u003cp\u003eit has an \u003ctt class=\"remarkup-monospaced\"\u003e-s\u003c\/tt\u003e option\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_230\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_226\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_227\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_228\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_229\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236431\" id=\"236431\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_225\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_30\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236431\" data-sigil=\"has-tooltip\" data-meta=\"0_224\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:21:39 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_222\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_223\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_31\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eI suppose welding does normally take a long time.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_243\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_239\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_240\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_241\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_242\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236432\" id=\"236432\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_238\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_32\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236432\" data-sigil=\"has-tooltip\" data-meta=\"0_237\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:21 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:21:56 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_235\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_236\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_33\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003ehaha\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_256\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/11\/\" data-sigil=\"has-tooltip\" data-meta=\"0_252\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-beer\" data-meta=\"0_253\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/2\/\" data-sigil=\"has-tooltip\" data-meta=\"0_254\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_255\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236433\" id=\"236433\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_251\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_34\"\u003eyelirekim\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236433\" data-sigil=\"has-tooltip\" data-meta=\"0_250\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:22 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:22:19 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_248\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_249\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_35\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003cdiv class=\"phabricator-remarkup-embed-layout-left\"\u003e\u003ca href=\"https:\/\/p.phcdn.net\/file\/data\/@secure\/4ojv3spzu2k5jgsgw77v\/PHID-FILE-gmckb4yhguhwew6a3rqr\/Colorful-Linux-Terminal-Output.gif\" class=\"phabricator-remarkup-embed-image-full\" data-sigil=\"lightboxable\" data-meta=\"0_9\"\u003e\u003cimg src=\"https:\/\/p.phcdn.net\/file\/data\/@secure\/4ojv3spzu2k5jgsgw77v\/PHID-FILE-gmckb4yhguhwew6a3rqr\/Colorful-Linux-Terminal-Output.gif\" height=\"365\" width=\"922\" alt=\"Colorful-Linux-Terminal-Output.gif (365\u00d7922 px, 341 KB)\" \/\u003e\u003c\/a\u003e\u003c\/div\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_269\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/11\/\" data-sigil=\"has-tooltip\" data-meta=\"0_265\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-beer\" data-meta=\"0_266\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/2\/\" data-sigil=\"has-tooltip\" data-meta=\"0_267\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_268\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236434\" id=\"236434\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_264\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_36\"\u003eyelirekim\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236434\" data-sigil=\"has-tooltip\" data-meta=\"0_263\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 7:49 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 19:49:58 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_261\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_262\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_37\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003e\u003cdiv class=\"phabricator-remarkup-embed-layout-left\"\u003e\u003ca href=\"https:\/\/p.phcdn.net\/file\/data\/@secure\/fdhdtk76hmplkgut3cxg\/PHID-FILE-3acmyhp3zs4dk6mub7zw\/cat.gif\" class=\"phabricator-remarkup-embed-image-full\" data-sigil=\"lightboxable\" data-meta=\"0_10\"\u003e\u003cimg src=\"https:\/\/p.phcdn.net\/file\/data\/@secure\/fdhdtk76hmplkgut3cxg\/PHID-FILE-3acmyhp3zs4dk6mub7zw\/cat.gif\" height=\"1880\" width=\"3356\" alt=\"cat.gif (1\u00d73 px, 7 MB)\" \/\u003e\u003c\/a\u003e\u003c\/div\u003e\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_282\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/rvruefeag7gxk2n5cgyv\/PHID-FILE-qzzwsny56o7sszr7w2ii\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/avivey\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/5\/\" data-sigil=\"has-tooltip\" data-meta=\"0_278\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-graduation-cap\" data-meta=\"0_279\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-blue \" href=\"\/badges\/view\/3\/\" data-sigil=\"has-tooltip\" data-meta=\"0_280\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-rocket\" data-meta=\"0_281\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236436\" id=\"236436\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_277\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_39\"\u003eavivey\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/avivey\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_40\"\u003eavivey\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236436\" data-sigil=\"has-tooltip\" data-meta=\"0_276\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 8:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 20:00:50 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_274\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_275\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_38\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cdiv class=\"remarkup-code-block\" data-code-lang=\"sh\" data-sigil=\"remarkup-code-block\"\u003e\u003cpre class=\"remarkup-code\"\u003e\u003cspan\u003e\u003c\/span\u003e$ sudo apt install lolcat\n ...\n ...\n ...\nAfter this operation, \u003cspan class=\"m\"\u003e27\u003c\/span\u003e.6 MB of additional disk space will be used.\nDo you want to \u003cspan class=\"k\"\u003econtinue\u003c\/span\u003e? \u003cspan class=\"o\"\u003e[\u003c\/span\u003eY\/n\u003cspan class=\"o\"\u003e]\u003c\/span\u003e\u003c\/pre\u003e\u003c\/div\u003e\n\n\u003cp\u003ewth? \u003cstrong\u003e27.6MB\u003c\/strong\u003e ?\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_295\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/uwxas6jgwupejfjl54x5\/PHID-FILE-ktywue5o3f3nr7wplmz7\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/yelirekim\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-yellow \" href=\"\/badges\/view\/11\/\" data-sigil=\"has-tooltip\" data-meta=\"0_291\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-beer\" data-meta=\"0_292\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-green \" href=\"\/badges\/view\/2\/\" data-sigil=\"has-tooltip\" data-meta=\"0_293\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-star\" data-meta=\"0_294\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236437\" id=\"236437\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_290\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/yelirekim\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_41\"\u003eyelirekim\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236437\" data-sigil=\"has-tooltip\" data-meta=\"0_289\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 8:02 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 20:02:02 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_287\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_288\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_42\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003ei used \u003ctt class=\"remarkup-monospaced\"\u003egem install\u003c\/tt\u003e so that i could remain ignorant of those types of problems\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_298\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/p62ki3m3vhyhqgx2ws6g\/PHID-FILE-d2g3qa7jc4idsuifblfi\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/jcox\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236438\" id=\"236438\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_297\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/jcox\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_43\"\u003ejcox\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/jcox\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_44\"\u003ejcox\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236438\" data-sigil=\"has-tooltip\" data-meta=\"0_296\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 8:03 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 20:03:00 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_311\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_307\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_308\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_309\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_310\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236439\" id=\"236439\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_306\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_45\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236439\" data-sigil=\"has-tooltip\" data-meta=\"0_305\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 8:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 20:14:06 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_303\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_304\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_46\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003ethis is a very good task :)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_314\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/fi6ylgf5kmydp7a5pj6t\/PHID-FILE-ojjj4nv7jgylhoqmbzvu\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/timhirsh\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236440\" id=\"236440\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_313\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/timhirsh\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_47\"\u003etimhirsh\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/timhirsh\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_48\"\u003etimhirsh\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236440\" data-sigil=\"has-tooltip\" data-meta=\"0_312\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 21 2018, 11:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-21 23:53:33 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_323\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/fvlyugyr2suc32adotbs\/PHID-FILE-ef7wmds5yyjncs46m3ik\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/asherkin\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236442\" id=\"236442\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_322\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/asherkin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_50\"\u003easherkin\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/asherkin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_51\"\u003easherkin\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236442\" data-sigil=\"has-tooltip\" data-meta=\"0_321\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 22 2018, 10:33 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-22 10:33:56 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_319\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_320\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_49\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eAs a note, \u003ctt class=\"remarkup-monospaced\"\u003epv\u003c\/tt\u003e can rate limit a pipe and is generally very useful all around.\u003c\/p\u003e\n\n\u003cp\u003e\u003ctt class=\"remarkup-monospaced\"\u003ecat README.md | pv -q -l -L 1\u003c\/tt\u003e will print one line every second,\u003cbr \/\u003e\n\u003ctt class=\"remarkup-monospaced\"\u003ecat README.md | pv -q -L 10\u003c\/tt\u003e. will print one byte every 0.1 seconds.\u003c\/p\u003e\n\n\u003cp\u003e\u003ctt class=\"remarkup-monospaced\"\u003elolcat\u003c\/tt\u003e is probably the more fun option though.\u003c\/p\u003e\n\n\u003cp\u003eI look forward to getting rid of Jenkins, TeamCity, \u003cem\u003eand\u003c\/em\u003e Buildbot (or more likely just adding to them \u2639)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_326\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236490\" id=\"236490\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_325\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_52\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19130\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_53\"\u003eD19130: Add `bin\/harbormaster write-log` to write some arbitrary content into a new Harbormaster log\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236490\" data-sigil=\"has-tooltip\" data-meta=\"0_324\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 2:06 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 02:06:39 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_329\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236491\" id=\"236491\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_328\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_54\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19131\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_55\"\u003eD19131: Move Harbormaster log compression to the worker task queue\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236491\" data-sigil=\"has-tooltip\" data-meta=\"0_327\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 2:20 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 02:20:30 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_332\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236492\" id=\"236492\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_331\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_56\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19132\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_57\"\u003eD19132: Add a "filePHID" to HarbormasterBuildLog and copy logs into Files during finalization\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236492\" data-sigil=\"has-tooltip\" data-meta=\"0_330\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 2:46 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 02:46:23 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_335\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236493\" id=\"236493\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_334\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_58\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19133\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_59\"\u003eD19133: Add a very basic standalone view for build logs with a "Download Log" button\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236493\" data-sigil=\"has-tooltip\" data-meta=\"0_333\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 3:20 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 03:20:37 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_338\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/fvlyugyr2suc32adotbs\/PHID-FILE-ef7wmds5yyjncs46m3ik\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/asherkin\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236494\" id=\"236494\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-times phui-timeline-icon\" data-meta=\"0_337\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/asherkin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_60\"\u003easherkin\u003c\/a\u003e removed a subscriber: \u003ca href=\"\/p\/asherkin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_61\"\u003easherkin\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236494\" data-sigil=\"has-tooltip\" data-meta=\"0_336\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 7:16 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 07:16:59 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_341\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236495\" id=\"236495\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_340\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_62\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19134\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_63\"\u003eD19134: Implement DestructibleInterface on BuildLog\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236495\" data-sigil=\"has-tooltip\" data-meta=\"0_339\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 1:18 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 13:18:09 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_344\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236496\" id=\"236496\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_343\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_64\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19135\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_65\"\u003eD19135: Manage log locks on the Log object to prepare for multiple writers\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236496\" data-sigil=\"has-tooltip\" data-meta=\"0_342\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 1:39 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 13:39:57 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_347\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236497\" id=\"236497\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_346\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_66\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19136\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_67\"\u003eD19136: In Harbormaster, record byte length on the build logs\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236497\" data-sigil=\"has-tooltip\" data-meta=\"0_345\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 1:52 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 13:52:32 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_350\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236498\" id=\"236498\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_349\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_68\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19137\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_69\"\u003eD19137: Add "--all" and an explicit "--force" flag to `bin\/harbormaster rebuild-log`\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236498\" data-sigil=\"has-tooltip\" data-meta=\"0_348\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 2:03 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 14:03:39 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_353\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236499\" id=\"236499\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_352\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_70\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19138\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_71\"\u003eD19138: Store the Harbormaster log chunk format on the log record\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236499\" data-sigil=\"has-tooltip\" data-meta=\"0_351\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 2:15 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 14:15:03 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_356\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236500\" id=\"236500\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_355\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_72\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19139\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_73\"\u003eD19139: As Harbormaster logs are processed, build a sparse map of byte offsets to line numbers\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236500\" data-sigil=\"has-tooltip\" data-meta=\"0_354\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 23 2018, 7:12 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-23 19:12:09 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_359\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236519\" id=\"236519\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_358\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_74\"\u003eepriestley\u003c\/a\u003e mentioned this in \u003ca href=\"\/w\/changelog\/2018.08\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_75\"\u003e2018 Week 8 (Late February)\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236519\" data-sigil=\"has-tooltip\" data-meta=\"0_357\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 24 2018, 4:16 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-24 16:16:28 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_362\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/nqci63nw44qxk2hsg6yh\/PHID-FILE-c2wegbhhpan7dxipmo7d\/profile-github_-profile.jpg)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/joshuaspence\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236521\" id=\"236521\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_361\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_76\"\u003ejoshuaspence\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/joshuaspence\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_77\"\u003ejoshuaspence\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236521\" data-sigil=\"has-tooltip\" data-meta=\"0_360\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 25 2018, 12:22 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-25 00:22:54 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_365\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236523\" id=\"236523\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_364\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_78\"\u003eepriestley\u003c\/a\u003e added a project: \u003ca href=\"\/tag\/plans\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_79\"\u003ePlans\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236523\" data-sigil=\"has-tooltip\" data-meta=\"0_363\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 25 2018, 3:28 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-25 15:28:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_368\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/zeg54now7ng5ejzzw3s2\/PHID-FILE-rlreoueyslgu27d7epgo\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/peplin\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236568\" id=\"236568\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_367\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/peplin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_80\"\u003epeplin\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/peplin\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_81\"\u003epeplin\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236568\" data-sigil=\"has-tooltip\" data-meta=\"0_366\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 26 2018, 6:15 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-26 18:15:52 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_371\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"display: none;\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236569\" id=\"236569\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_370\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/herald\/\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_82\"\u003eHerald\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/faulconbridge\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_83\"\u003efaulconbridge\u003c\/a\u003e. \u003cspan class=\"phui-timeline-extra-information\"\u003e \u00b7 \u003ca href=\"\/herald\/transcript\/312838\/\"\u003eView Herald Transcript\u003c\/a\u003e\u003c\/span\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236569\" data-sigil=\"has-tooltip\" data-meta=\"0_369\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 26 2018, 6:15 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-26 18:15:52 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_374\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236574\" id=\"236574\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_373\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_84\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19141\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_85\"\u003eD19141: Sort of make Harbormaster build logs page properly\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236574\" data-sigil=\"has-tooltip\" data-meta=\"0_372\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 26 2018, 10:50 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-26 22:50:21 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_377\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/k6vts5q4ba5zt376jw2j\/PHID-FILE-jz26kckphwdcnmqvhdav\/alphanumeric_lato-dark_A.png-_607bc2-255%2C255%2C255%2C0.7.png)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/alexmv\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236575\" id=\"236575\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-user-plus phui-timeline-icon\" data-meta=\"0_376\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/alexmv\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_86\"\u003ealexmv\u003c\/a\u003e added a subscriber: \u003ca href=\"\/p\/alexmv\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_87\"\u003ealexmv\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236575\" data-sigil=\"has-tooltip\" data-meta=\"0_375\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 12:20 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 00:20:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_380\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236576\" id=\"236576\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_379\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_88\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19142\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_89\"\u003eD19142: Fix some of the most egregious errors in Harbormaster log paging\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236576\" data-sigil=\"has-tooltip\" data-meta=\"0_378\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 1:49 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 01:49:55 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_386\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236577\" id=\"236577\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_382\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_90\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPcd4c4dc2ff9e6c096c011077bef61359657fa39f\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_91\"\u003erPcd4c4dc2ff9e: Add `bin\/harbormaster write-log` to write some arbitrary content into a new\u2026\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236577\" data-sigil=\"has-tooltip\" data-meta=\"0_381\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 1:51 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 01:51:20 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_383\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_92\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP32c6b649dd211f3b2316750371c27dffe7342631\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_93\"\u003erP32c6b649dd21: Move Harbormaster log compression to the worker task queue\u003c\/a\u003e.\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_384\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_94\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP8a2604cf06a8f3d2178c1311b8aa25917ad27a1d\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_95\"\u003erP8a2604cf06a8: Add a "filePHID" to HarbormasterBuildLog and copy logs into Files during\u2026\u003c\/a\u003e.\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_385\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_96\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP9b4295ed6051aff6bcef406db3ea75b9f41e32eb\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_97\"\u003erP9b4295ed6051: Add a very basic standalone view for build logs with a "Download Log" button\u003c\/a\u003e.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_392\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236581\" id=\"236581\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_388\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_98\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPe920e2b143a2d12b1bbafabcc7ec0a282e54e322\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_99\"\u003erPe920e2b143a2: Implement DestructibleInterface on BuildLog\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236581\" data-sigil=\"has-tooltip\" data-meta=\"0_387\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 1:53 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 01:53:45 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_389\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_100\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPd152bd58360884f41105dc642225492730b536ac\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_101\"\u003erPd152bd583608: Manage log locks on the Log object to prepare for multiple writers\u003c\/a\u003e.\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_390\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_102\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP57e3d607f566ba1cddbca5b149738632359ae80e\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_103\"\u003erP57e3d607f566: In Harbormaster, record byte length on the build logs\u003c\/a\u003e.\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_391\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_104\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP46d735d312ca8e54f9b2604783b62c360bf7a1a9\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_105\"\u003erP46d735d312ca: Add "--all" and an explicit "--force" flag to `bin\/harbormaster rebuild-log`\u003c\/a\u003e.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_396\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236585\" id=\"236585\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_394\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_106\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPd6311044bba66828f8e5d8898662d9dfe40e3088\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_107\"\u003erPd6311044bba6: Store the Harbormaster log chunk format on the log record\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236585\" data-sigil=\"has-tooltip\" data-meta=\"0_393\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 1:56 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 01:56:34 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_395\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_108\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP6dc341be87088984beb6ff4a267c4deff57a0bd5\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_109\"\u003erP6dc341be8708: As Harbormaster logs are processed, build a sparse map of byte offsets to line\u2026\u003c\/a\u003e.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_400\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236587\" id=\"236587\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_398\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_110\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP11d1dc484b867d287a258813510c395407e9151c\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_111\"\u003erP11d1dc484b86: Sort of make Harbormaster build logs page properly\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236587\" data-sigil=\"has-tooltip\" data-meta=\"0_397\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 1:58 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 01:58:40 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_399\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_112\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPf450c6c55bfdc3680a1895842ac17765a60e3d15\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_113\"\u003erPf450c6c55bfd: Fix some of the most egregious errors in Harbormaster log paging\u003c\/a\u003e.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_413\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_409\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_410\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_411\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_412\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236589\" id=\"236589\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_408\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_114\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236589\" data-sigil=\"has-tooltip\" data-meta=\"0_407\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 27 2018, 2:05 AM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-27 02:05:49 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_405\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_406\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_115\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cp\u003eVery rough version of the new log:\u003c\/p\u003e\n\n\u003cp\u003e\u003ca href=\"https:\/\/secure.phabricator.com\/harbormaster\/log\/view\/23024\/\" class=\"remarkup-link\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps:\/\/secure.phabricator.com\/harbormaster\/log\/view\/23024\/\u003c\/a\u003e\u003c\/p\u003e\n\n\u003cp\u003e(The buttons are set to silly values right now to make testing the behavior easier, they'll load a more reasonable amount of log later.)\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_416\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236625\" id=\"236625\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_415\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_116\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19148\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_117\"\u003eD19148: Fix a Harbormaster build log issue where too few header lines were returned when expanding logs in the middle\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236625\" data-sigil=\"has-tooltip\" data-meta=\"0_414\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 1:45 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 13:45:21 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_419\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236626\" id=\"236626\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_418\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_118\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19149\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_119\"\u003eD19149: When showing a small piece of a Harbormaster build log, load a small piece of data instead of the entire log\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236626\" data-sigil=\"has-tooltip\" data-meta=\"0_417\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 2:22 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 14:22:26 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_422\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236627\" id=\"236627\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_421\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_120\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19150\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_121\"\u003eD19150: Add a "(prototype)" link to the standalone build log on build pages\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236627\" data-sigil=\"has-tooltip\" data-meta=\"0_420\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 2:48 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 14:48:12 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_435\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-major-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-badges\"\u003e\u003cul class=\"phui-badge-flex-view grouped flex-view-collapsed \"\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-grey \" href=\"\/badges\/view\/14\/\" data-sigil=\"has-tooltip\" data-meta=\"0_431\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-desktop\" data-meta=\"0_432\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003cli class=\"phui-badge-flex-item\"\u003e\u003ca class=\"phui-badge-mini phui-badge-mini-orange \" href=\"\/badges\/view\/13\/\" data-sigil=\"has-tooltip\" data-meta=\"0_433\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-gift\" data-meta=\"0_434\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003cdiv class=\"phui-timeline-inner-content\"\u003e\u003ca name=\"236628\" id=\"236628\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon phui-timeline-title-with-menu\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-comment phui-timeline-icon\" data-meta=\"0_430\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_122\"\u003eepriestley\u003c\/a\u003e added a comment.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236628\" data-sigil=\"has-tooltip\" data-meta=\"0_429\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 2:53 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 14:53:15 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003ca href=\"#\" class=\"phui-timeline-menu\" aria-haspopup=\"true\" aria-expanded=\"false\" data-sigil=\"phui-dropdown-menu\" data-meta=\"0_427\"\u003e\u003cspan class=\"aural-only\"\u003eComment Actions\u003c\/span\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-caret-down\" data-meta=\"0_428\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-core-content\"\u003e\u003cspan class=\"transaction-comment\" data-sigil=\"transaction-comment\" data-meta=\"0_123\"\u003e\u003cdiv class=\"phabricator-remarkup\"\u003e\u003cblockquote\u003e\u003cp\u003eMaybe summarization and highlighting aren't the same object?\u003c\/p\u003e\u003c\/blockquote\u003e\n\n\u003cp\u003eI'm going to make these separate objects under the theory that many logs (anything backed by running a CLI program) will likely use an ANSI highlighter, and the rules for an ANSI highlighter to recognize ANSI input are simple and likely to be reliable (e.g., if a log contains ANSI color code sequences, it's overwhelmingly likely to be ANSI).\u003c\/p\u003e\n\n\u003cp\u003eHowever, these logs would use different summarizers (e.g., PyTest vs PHPUnit summarizers differ). A PHPUnit summarizer likely shares zero code with a PyTest summarizer and zero code with an ANSI highlighter.\u003c\/p\u003e\u003c\/div\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_438\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236629\" id=\"236629\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_437\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_124\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19151\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_125\"\u003eD19151: Provide API read access to Harbormaster build logs\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236629\" data-sigil=\"has-tooltip\" data-meta=\"0_436\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 3:14 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 15:14:53 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_441\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236630\" id=\"236630\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_440\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_126\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19152\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_127\"\u003eD19152: Add a "--rate" flag to `bin\/harbormaster write-log` to support testing live log streaming\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236630\" data-sigil=\"has-tooltip\" data-meta=\"0_439\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 3:45 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 15:45:59 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_444\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236631\" id=\"236631\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-pencil phui-timeline-icon\" data-meta=\"0_443\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_128\"\u003eepriestley\u003c\/a\u003e updated the task description. \u003ca href=\"\/transactions\/detail\/PHID-XACT-TASK-yuapdbcspx3wctr\/\" data-sigil=\"workflow\"\u003e(Show Details)\u003c\/a\u003e\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236631\" data-sigil=\"has-tooltip\" data-meta=\"0_442\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 6:00 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 18:00:10 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_447\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236632\" id=\"236632\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_446\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_129\"\u003eepriestley\u003c\/a\u003e added a revision: \u003ca href=\"\/D19153\" class=\"phui-handle handle-status-closed\" data-sigil=\"hovercard\" data-meta=\"0_130\"\u003eD19153: When viewing a live build log, trap users in a small personal hell where nothing but slavish devotion to the log exists\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236632\" data-sigil=\"has-tooltip\" data-meta=\"0_445\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 7:39 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 19:39:05 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_451\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236633\" id=\"236633\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_449\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_131\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP985d499f50998011e047226cc89e4096a4311b4b\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_132\"\u003erP985d499f5099: Fix a Harbormaster build log issue where too few header lines were returned\u2026\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236633\" data-sigil=\"has-tooltip\" data-meta=\"0_448\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 8:30 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 20:30:37 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_450\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_133\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rP143033dc1f4b2f7689c1abd5b08126fdea2049d1\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_134\"\u003erP143033dc1f4b: When showing a small piece of a Harbormaster build log, load a small piece of\u2026\u003c\/a\u003e.\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-spacer\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-shell\" data-sigil=\"transaction anchor-container\" data-meta=\"0_454\"\u003e\u003cdiv class=\"phui-timeline-event-view phui-timeline-minor-event\"\u003e\u003cdiv class=\"phui-timeline-content\"\u003e\u003ca style=\"background-image: url(https:\/\/p.phcdn.net\/file\/data\/@secure\/6jr7vs4rmmlnids4tac7\/PHID-FILE-clfyipsks65542hv4vpd\/profile)\" class=\"visual-only phui-timeline-image\" href=\"\/p\/epriestley\/\" aria-hidden=\"true\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-wedge\" style=\"\"\u003e\u003c\/div\u003e\u003cdiv class=\"phui-timeline-group\"\u003e\u003ca name=\"236635\" id=\"236635\" class=\"phabricator-anchor-view\"\u003e\u003c\/a\u003e\u003cdiv class=\"phui-timeline-title phui-timeline-title-with-icon\"\u003e\u003cspan class=\"phui-timeline-icon-fill\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-link phui-timeline-icon\" data-meta=\"0_453\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003ca href=\"\/p\/epriestley\/\" class=\"phui-handle phui-link-person\" data-sigil=\"hovercard\" data-meta=\"0_135\"\u003eepriestley\u003c\/a\u003e added a commit: \u003ca href=\"\/rPdc6a66f7f42e0632bba055a1b0fde8e3f253b70f\" class=\"phui-handle\" data-sigil=\"hovercard\" data-meta=\"0_136\"\u003erPdc6a66f7f42e: Add a "(prototype)" link to the standalone build log on build pages\u003c\/a\u003e.\u003cspan class=\"phui-timeline-extra\"\u003e\u003ca href=\"#236635\" data-sigil=\"has-tooltip\" data-meta=\"0_452\"\u003e\u003cspan class=\"screen-only\"\u003eFeb 28 2018, 8:34 PM\u003c\/span\u003e\u003cspan class=\"print-only\" aria-hidden=\"true\"\u003e2018-02-28 20:34:14 (UTC+0)\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e"},"javelin_metadata":[{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-ymxr5vw74u3hsr5wbv5y"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-czn3wyqqnz7mpxn2ez7f"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-tz5pn4exmfim7uulw6no"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-ybdkzabro7j2d4exvmjs"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-bth4zwprwypglwy3qqgh"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-ko426qiyt6hezeawgcfc"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-jdcprbajpxpzdeuixrys"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-tz5pn4exmfim7uulw6no"}},{"phid":"PHID-FILE-gmckb4yhguhwew6a3rqr","uri":"https:\/\/p.phcdn.net\/file\/data\/@secure\/4ojv3spzu2k5jgsgw77v\/PHID-FILE-gmckb4yhguhwew6a3rqr\/Colorful-Linux-Terminal-Output.gif","dUri":"https:\/\/p.phcdn.net\/file\/download\/@secure\/4ojv3spzu2k5jgsgw77v\/PHID-FILE-gmckb4yhguhwew6a3rqr\/Colorful-Linux-Terminal-Output.gif","alt":"Colorful-Linux-Terminal-Output.gif (365\u00d7922 px, 341 KB)","viewable":true,"monogram":"F5444932"},{"phid":"PHID-FILE-3acmyhp3zs4dk6mub7zw","uri":"https:\/\/p.phcdn.net\/file\/data\/@secure\/fdhdtk76hmplkgut3cxg\/PHID-FILE-3acmyhp3zs4dk6mub7zw\/cat.gif","dUri":"https:\/\/p.phcdn.net\/file\/download\/@secure\/fdhdtk76hmplkgut3cxg\/PHID-FILE-3acmyhp3zs4dk6mub7zw\/cat.gif","alt":"cat.gif (1\u00d73 px, 7 MB)","viewable":true,"monogram":"F5444963"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-TASK-gbv2botai4vr2hfiknh7"}},{"hovercardSpec":{"objectPHID":"PHID-APPS-PhabricatorHeraldApplication"}},{"hovercardSpec":{"objectPHID":"PHID-USER-jmvolb7vo5qolixkccuq"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-giddehwotzauy3j5wjun"}},{"hovercardSpec":{"objectPHID":"PHID-USER-giddehwotzauy3j5wjun"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-i62xb46sln5tiuv"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-56enljdukp4zos5"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-azzlrabpb27gzcz"},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"phid":"PHID-XACT-TASK-qwy2f5qdh27v7vl"},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"phid":"PHID-XACT-TASK-aoaq65yyyyfdmb2"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-rwbr6njra2creml"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-4gkif73degtlcvq"},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"phid":"PHID-XACT-TASK-qdbmv6kgisad33c"},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"phid":"PHID-XACT-TASK-nopezuskmstzaiq"},{"phid":"PHID-XACT-TASK-4ooaf4f6joq5552"},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-lgbuqrsim4oysksuxv5b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-kf4ew3wz3mo6jygesr5y"}},{"phid":"PHID-XACT-TASK-zmsicfon2hk77fa"},{"hovercardSpec":{"objectPHID":"PHID-USER-t3jlsx6i44otgyhpbdja"}},{"hovercardSpec":{"objectPHID":"PHID-USER-t3jlsx6i44otgyhpbdja"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-sirgihwlw2wuhjr"},{"hovercardSpec":{"objectPHID":"PHID-USER-iqyuejrhrflmjtnbdz3h"}},{"hovercardSpec":{"objectPHID":"PHID-USER-iqyuejrhrflmjtnbdz3h"}},{"phid":"PHID-XACT-TASK-lhgkfwokudf4ine"},{"hovercardSpec":{"objectPHID":"PHID-USER-cgl36ooih42m4an7wj7c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-cgl36ooih42m4an7wj7c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-33sansbxyoaakqixfkle"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-goymw33hsca67fik3m4d"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-cwztnqu6ocypc22yndgi"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-v2qkxzitlaa3eadv54wi"}},{"hovercardSpec":{"objectPHID":"PHID-USER-cgl36ooih42m4an7wj7c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-cgl36ooih42m4an7wj7c"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-hnrlzqj5urybjuspykbg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-o5iggcfnkrna34kzb52v"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-nllkc42wtk3rv4s23vvj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-xe63ofxqqh6uy4zn53jl"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-htaulkbjgbtnf4pjax53"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-atitbxf76apurhd6vcck"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-WIKI-nbrweeltsjdg2vt4gkuh"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-3yc34eijivr6rqs4vgiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-PROJ-2oie4gcjkoxnerjindmk"}},{"hovercardSpec":{"objectPHID":"PHID-USER-6mmfc5gyojoxotbng5lv"}},{"hovercardSpec":{"objectPHID":"PHID-USER-6mmfc5gyojoxotbng5lv"}},{"hovercardSpec":{"objectPHID":"PHID-APPS-PhabricatorHeraldApplication"}},{"hovercardSpec":{"objectPHID":"PHID-USER-7eebkwkylylqfbxh6lt2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-rlwowt7cxgtolv7aibwv"}},{"hovercardSpec":{"objectPHID":"PHID-USER-dba32rxpzzg26n4ekeoh"}},{"hovercardSpec":{"objectPHID":"PHID-USER-dba32rxpzzg26n4ekeoh"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-7vh2qc65h2gmxij7gre2"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-e2ku6a7d3hy7jlruxnp7"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-siqbd6w5ocvanlyxbgyu"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-436wibwkia57tx3rnu6b"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-odwk44lwtuqq3sy3e6xg"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-mz2nivivnp6b3x5mmvkr"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-ka6brydajbmztoelpf67"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-nj3wh6cmbsfmqv26y2jj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-tggysj6znjfwiw5nu2lu"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-6gmfirqk4zlsn3aohysj"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-bxjklu4t257foupqmrsb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-cmkq3ync4whoothuwq7e"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-imf7b4cajhv4nobhlftv"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-gtz645pnzelnfzl"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-c3khem6sbwk6maarnpiw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-xs3l5ucii3ednhofnrrn"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-emzjci5qtlvifqgucmq4"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"phid":"PHID-XACT-TASK-upxv45fwevinflm"},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-7bz4pqjkt6twc37rjkqc"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-7wx5jcv4robhk3g7h6vw"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-DREV-ooqy3xhkijdba6k7khmk"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-uqrbxwvjmxbz7athziqz"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-utc7kxwpindsz2jvxopn"}},{"hovercardSpec":{"objectPHID":"PHID-USER-ba8aeea1b3fe2853d6bb"}},{"hovercardSpec":{"objectPHID":"PHID-CMIT-vyygeebzafzoidq45koo"}},{"tip":"Via Web"},[],[],{"phid":"PHID-XACT-TASK-a2bw42qevtly4g6","anchor":"236374"},{"tip":"Via Herald"},[],{"phid":"PHID-XACT-TASK-l3a6442av45iq74","anchor":"236380"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-adlifrnc55qauxq","anchor":"236403"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-hryl53z7co4yx2n","anchor":"236422"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-ykuadp5kjckgn3w","anchor":"236423"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-i62xb46sln5tiuv\/","ref":"T13088#236425"},[],{"anchor":"236425"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_1\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_153\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_154\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_3\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-i62xb46sln5tiuv\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_155\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_156\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-i62xb46sln5tiuv","anchor":"236425"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-56enljdukp4zos5\/","ref":"T13088#236427"},[],{"anchor":"236427"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_5\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_166\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_167\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_7\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-56enljdukp4zos5\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_168\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_169\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-56enljdukp4zos5","anchor":"236427"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-azzlrabpb27gzcz\/","ref":"T13088#236428"},[],{"anchor":"236428"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_9\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_179\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_180\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_11\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-azzlrabpb27gzcz\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_181\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_182\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-azzlrabpb27gzcz","anchor":"236428"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-qwy2f5qdh27v7vl\/","ref":"T13088#236429"},[],{"anchor":"236429"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_13\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_192\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_193\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_15\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-qwy2f5qdh27v7vl\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_194\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_195\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Phabricator Gold","align":"E","size":300},[],{"tip":"Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-qwy2f5qdh27v7vl","anchor":"236429"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-aoaq65yyyyfdmb2\/","ref":"T13088#236430"},[],{"anchor":"236430"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_17\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_205\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_206\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_19\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-aoaq65yyyyfdmb2\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_207\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_208\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Phabricator Gold","align":"E","size":300},[],{"tip":"Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-aoaq65yyyyfdmb2","anchor":"236430"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-rwbr6njra2creml\/","ref":"T13088#236431"},[],{"anchor":"236431"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_21\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_218\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_219\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_23\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-rwbr6njra2creml\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_220\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_221\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-rwbr6njra2creml","anchor":"236431"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-4gkif73degtlcvq\/","ref":"T13088#236432"},[],{"anchor":"236432"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_25\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_231\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_232\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_27\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-4gkif73degtlcvq\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_233\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_234\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-4gkif73degtlcvq","anchor":"236432"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-qdbmv6kgisad33c\/","ref":"T13088#236433"},[],{"anchor":"236433"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_29\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_244\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_245\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_31\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-qdbmv6kgisad33c\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_246\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_247\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Phabricator Gold","align":"E","size":300},[],{"tip":"Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-qdbmv6kgisad33c","anchor":"236433"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-nopezuskmstzaiq\/","ref":"T13088#236434"},[],{"anchor":"236434"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_33\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_257\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_258\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_35\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-nopezuskmstzaiq\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_259\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_260\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Phabricator Gold","align":"E","size":300},[],{"tip":"Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-nopezuskmstzaiq","anchor":"236434"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-4ooaf4f6joq5552\/","ref":"T13088#236436"},[],{"anchor":"236436"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_37\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_270\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_271\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_39\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-4ooaf4f6joq5552\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_272\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_273\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Professor","align":"E","size":300},[],{"tip":"Elite Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-4ooaf4f6joq5552","anchor":"236436"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-zmsicfon2hk77fa\/","ref":"T13088#236437"},[],{"anchor":"236437"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_41\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_283\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_284\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_43\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-zmsicfon2hk77fa\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_285\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_286\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Phabricator Gold","align":"E","size":300},[],{"tip":"Contributor","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-zmsicfon2hk77fa","anchor":"236437"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-a6tgnllfjcdhsxl","anchor":"236438"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-sirgihwlw2wuhjr\/","ref":"T13088#236439"},[],{"anchor":"236439"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_45\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_299\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_300\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_47\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-sirgihwlw2wuhjr\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_301\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_302\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-sirgihwlw2wuhjr","anchor":"236439"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-dzdjwooeiucmrxl","anchor":"236440"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-lhgkfwokudf4ine\/","ref":"T13088#236442"},[],{"anchor":"236442"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_49\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_315\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_316\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_51\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-lhgkfwokudf4ine\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_317\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_318\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-lhgkfwokudf4ine","anchor":"236442"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-gcn27wggnukj27a","anchor":"236490"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-d6xb33544z4kje4","anchor":"236491"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-qktlqymqjgbp3bk","anchor":"236492"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-szeecmze4wmchj7","anchor":"236493"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-zkw4clb44mpklux","anchor":"236494"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-6zigvgpd4q32grf","anchor":"236495"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-6apkylcpvuwo3nk","anchor":"236496"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-iy7ar6zephhngfg","anchor":"236497"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-myib2bojbwam5wj","anchor":"236498"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-hv3acpgrw236thy","anchor":"236499"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-rdwnq6ttlv45ans","anchor":"236500"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-7uxsgapkqeounm6","anchor":"236519"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-rtzoaibzn5bbag5","anchor":"236521"},{"tip":"Via Bulk Update"},[],{"phid":"PHID-XACT-TASK-twf2ld6ho3sjobs","anchor":"236523"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-dv6nwjlscnu3b6c","anchor":"236568"},{"tip":"Via Herald"},[],{"phid":"PHID-XACT-TASK-6lhvaeqytogbrnk","anchor":"236569"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-nvoky2lv7rxt2mk","anchor":"236574"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-hplvtj66fun6oa5","anchor":"236575"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-quptlgei6mvtkhu","anchor":"236576"},{"tip":"Via Daemon"},[],[],[],[],{"phid":"PHID-XACT-TASK-pf7mldp4lgysy2c","anchor":"236577"},{"tip":"Via Daemon"},[],[],[],[],{"phid":"PHID-XACT-TASK-xxzmidoffuhic2k","anchor":"236581"},{"tip":"Via Daemon"},[],[],{"phid":"PHID-XACT-TASK-4m4sx75uzkyxsrt","anchor":"236585"},{"tip":"Via Daemon"},[],[],{"phid":"PHID-XACT-TASK-66k26ylx5ozwmk4","anchor":"236587"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-gtz645pnzelnfzl\/","ref":"T13088#236589"},[],{"anchor":"236589"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_53\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_401\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_402\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_55\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-gtz645pnzelnfzl\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_403\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_404\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-gtz645pnzelnfzl","anchor":"236589"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-pcotedg7b26zey5","anchor":"236625"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-cdzzwvdsfitv6ul","anchor":"236626"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-4s76wnnqoro7mh3","anchor":"236627"},{"targetID":"UQ0_1","uri":"\/transactions\/quote\/PHID-XACT-TASK-upxv45fwevinflm\/","ref":"T13088#236628"},[],{"anchor":"236628"},[],{"items":"\u003cul class=\"phabricator-action-list-view \"\u003e\u003cli id=\"UQ0_57\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"#\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-quote\" data-meta=\"0_423\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-quote-left phabricator-action-view-icon\" data-meta=\"0_424\" aria-hidden=\"true\"\u003e\u003c\/span\u003eQuote Comment\u003c\/a\u003e\u003c\/li\u003e\u003cli id=\"UQ0_59\" class=\"phabricator-action-view phabricator-action-view-href action-has-icon\" style=\"\"\u003e\u003ca href=\"\/transactions\/raw\/PHID-XACT-TASK-upxv45fwevinflm\/\" class=\"phabricator-action-view-item\" data-sigil=\"transaction-raw\" data-meta=\"0_425\"\u003e\u003cspan class=\"visual-only phui-icon-view phui-font-fa fa-code phabricator-action-view-icon\" data-meta=\"0_426\" aria-hidden=\"true\"\u003e\u003c\/span\u003eView Raw Remarkup\u003c\/a\u003e\u003c\/li\u003e\u003c\/ul\u003e"},[],{"tip":"Via Web"},[],{"tip":"Master of Safari","align":"E","size":300},[],{"tip":"5 Years ","align":"E","size":300},[],{"phid":"PHID-XACT-TASK-upxv45fwevinflm","anchor":"236628"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-rawqi2p4w7bqs22","anchor":"236629"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-c76hi75zp2h76hj","anchor":"236630"},{"tip":"Via Web"},[],{"phid":"PHID-XACT-TASK-yuapdbcspx3wctr","anchor":"236631"},{"tip":"Via Conduit"},[],{"phid":"PHID-XACT-TASK-2c27q7klcx4z7am","anchor":"236632"},{"tip":"Via Daemon"},[],[],{"phid":"PHID-XACT-TASK-x2rtjlkpugectg7","anchor":"236633"},{"tip":"Via Daemon"},[],{"phid":"PHID-XACT-TASK-tjosrn34vmf3kya","anchor":"236635"}],"javelin_behaviors":{"phui-hovercards":[],"phabricator-watch-anchor":[],"phabricator-tooltips":[],"phui-dropdown-menu":[]},"javelin_resources":["https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/d2de90d9\/core.pkg.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/98e6504a\/rsrc\/externals\/javelin\/core\/init.js","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/b816811e\/core.pkg.css","https:\/\/p.phcdn.net\/res\/defaultX\/phabricator\/666e25ad\/rsrc\/css\/phui\/phui-badge.css"]}