diff --git a/resources/celerity/map.php b/resources/celerity/map.php
index 6053b0846e..dc018326bf 100644
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -1,2369 +1,2369 @@
 <?php
 
 /**
  * This file is automatically generated. Use 'bin/celerity map' to rebuild it.
  *
  * @generated
  */
 return array(
   'names' => array(
     'conpherence.pkg.css' => 'e68cf1fa',
     'conpherence.pkg.js' => '15191c65',
-    'core.pkg.css' => '39061f68',
+    'core.pkg.css' => 'c30f6eaa',
     'core.pkg.js' => 'e1f0f7bd',
     'differential.pkg.css' => '06dc617c',
     'differential.pkg.js' => 'c2ca903a',
     'diffusion.pkg.css' => 'a2d17c7d',
     'diffusion.pkg.js' => '6134c5a1',
     'maniphest.pkg.css' => '4845691a',
     'maniphest.pkg.js' => '4d7e79c8',
     'rsrc/audio/basic/alert.mp3' => '98461568',
     'rsrc/audio/basic/bing.mp3' => 'ab8603a5',
     'rsrc/audio/basic/pock.mp3' => '0cc772f5',
     'rsrc/audio/basic/tap.mp3' => 'fc2fd796',
     'rsrc/audio/basic/ting.mp3' => '17660001',
     'rsrc/css/aphront/aphront-bars.css' => '231ac33c',
     'rsrc/css/aphront/dark-console.css' => '0e14e8f6',
     'rsrc/css/aphront/dialog-view.css' => '6bfc244b',
     'rsrc/css/aphront/list-filter-view.css' => '5d6f0526',
     'rsrc/css/aphront/multi-column.css' => '84cc6640',
     'rsrc/css/aphront/notification.css' => '457861ec',
     'rsrc/css/aphront/panel-view.css' => '8427b78d',
     'rsrc/css/aphront/phabricator-nav-view.css' => '694d7723',
     'rsrc/css/aphront/table-view.css' => '8c9bbafe',
     'rsrc/css/aphront/tokenizer.css' => '15d5ff71',
     'rsrc/css/aphront/tooltip.css' => '173b9431',
     'rsrc/css/aphront/typeahead-browse.css' => 'f2818435',
     'rsrc/css/aphront/typeahead.css' => 'a4a21016',
     'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af',
     'rsrc/css/application/auth/auth.css' => '0877ed6e',
     'rsrc/css/application/base/main-menu-view.css' => '1802a242',
-    'rsrc/css/application/base/notification-menu.css' => '10685bd4',
+    'rsrc/css/application/base/notification-menu.css' => 'ef480927',
     'rsrc/css/application/base/phui-theme.css' => '9f261c6b',
     'rsrc/css/application/base/standard-page-view.css' => '34ee718b',
     'rsrc/css/application/chatlog/chatlog.css' => 'd295b020',
     'rsrc/css/application/conduit/conduit-api.css' => '7bc725c4',
     'rsrc/css/application/config/config-options.css' => '4615667b',
     'rsrc/css/application/config/config-template.css' => '8f18fa41',
     'rsrc/css/application/config/setup-issue.css' => '30ee0173',
     'rsrc/css/application/config/unhandled-exception.css' => '4c96257a',
     'rsrc/css/application/conpherence/color.css' => 'abb4c358',
     'rsrc/css/application/conpherence/durable-column.css' => '89ea6bef',
     'rsrc/css/application/conpherence/header-pane.css' => 'cb6f4e19',
     'rsrc/css/application/conpherence/menu.css' => '69368e97',
     'rsrc/css/application/conpherence/message-pane.css' => 'b0f55ecc',
     'rsrc/css/application/conpherence/notification.css' => 'cef0a3fc',
     'rsrc/css/application/conpherence/participant-pane.css' => '26a3ce56',
     'rsrc/css/application/conpherence/transaction.css' => '85129c68',
     'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4',
     'rsrc/css/application/countdown/timer.css' => '16c52f5c',
     'rsrc/css/application/daemon/bulk-job.css' => 'df9c1d4a',
     'rsrc/css/application/dashboard/dashboard.css' => 'fe5b1869',
     'rsrc/css/application/diff/inline-comment-summary.css' => 'f23d4e8f',
     'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
     'rsrc/css/application/differential/changeset-view.css' => 'db34a142',
     'rsrc/css/application/differential/core.css' => '5b7b8ff4',
     'rsrc/css/application/differential/phui-inline-comment.css' => '65ae3bc2',
     'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
     'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
     'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
     'rsrc/css/application/differential/table-of-contents.css' => 'ae4b7a55',
     'rsrc/css/application/diffusion/diffusion-icons.css' => '0c15255e',
     'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
     'rsrc/css/application/diffusion/diffusion-repository.css' => 'ee6f20ec',
     'rsrc/css/application/diffusion/diffusion.css' => '45727264',
     'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
     'rsrc/css/application/files/global-drag-and-drop.css' => 'b556a948',
     'rsrc/css/application/flag/flag.css' => 'bba8f811',
     'rsrc/css/application/harbormaster/harbormaster.css' => '730a4a3c',
     'rsrc/css/application/herald/herald-test.css' => 'a52e323e',
     'rsrc/css/application/herald/herald.css' => 'cd8d0134',
     'rsrc/css/application/maniphest/report.css' => '9b9580b7',
     'rsrc/css/application/maniphest/task-edit.css' => 'fda62a9b',
     'rsrc/css/application/maniphest/task-summary.css' => '11cc5344',
     'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6',
     'rsrc/css/application/owners/owners-path-editor.css' => '9c136c29',
     'rsrc/css/application/paste/paste.css' => '9fcc9773',
     'rsrc/css/application/people/people-picture-menu-item.css' => 'a06f7f34',
     'rsrc/css/application/people/people-profile.css' => '4df76faf',
     'rsrc/css/application/phame/phame.css' => '8cb3afcd',
     'rsrc/css/application/pholio/pholio-edit.css' => '07676f51',
     'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49',
     'rsrc/css/application/pholio/pholio.css' => 'ca89d380',
     'rsrc/css/application/phortune/phortune-credit-card-form.css' => '8391eb02',
     'rsrc/css/application/phortune/phortune-invoice.css' => '476055e2',
     'rsrc/css/application/phortune/phortune.css' => '5b99dae0',
     'rsrc/css/application/phrequent/phrequent.css' => 'ffc185ad',
     'rsrc/css/application/phriction/phriction-document-css.css' => '4282e4ad',
     'rsrc/css/application/policy/policy-edit.css' => '815c66f7',
     'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43',
     'rsrc/css/application/policy/policy.css' => '957ea14c',
     'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96',
     'rsrc/css/application/project/project-card-view.css' => '0010bb52',
     'rsrc/css/application/project/project-view.css' => '792c9057',
     'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733',
     'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5',
     'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd',
     'rsrc/css/application/releeph/releeph-request-typeahead.css' => '667a48ae',
     'rsrc/css/application/search/application-search-view.css' => '787f5b76',
     'rsrc/css/application/search/search-results.css' => '505dd8cf',
     'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230',
     'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
     'rsrc/css/application/uiexample/example.css' => '528b19de',
     'rsrc/css/core/core.css' => '62fa3ace',
     'rsrc/css/core/remarkup.css' => 'bff43c81',
     'rsrc/css/core/syntax.css' => 'e9c95dd4',
     'rsrc/css/core/z-index.css' => '9d8f7c4b',
     'rsrc/css/diviner/diviner-shared.css' => '896f1d43',
     'rsrc/css/font/font-awesome.css' => 'e838e088',
     'rsrc/css/font/font-lato.css' => 'c7ccd872',
     'rsrc/css/font/phui-font-icon-base.css' => '870a7360',
     'rsrc/css/layout/phabricator-filetree-view.css' => 'b912ad97',
     'rsrc/css/layout/phabricator-source-code-view.css' => 'fdbefca0',
     'rsrc/css/phui/button/phui-button-bar.css' => 'f1ff5494',
     'rsrc/css/phui/button/phui-button-simple.css' => '8e1baf68',
     'rsrc/css/phui/button/phui-button.css' => '1863cc6e',
     'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893',
     'rsrc/css/phui/calendar/phui-calendar-list.css' => '576be600',
     'rsrc/css/phui/calendar/phui-calendar-month.css' => '21154caf',
     'rsrc/css/phui/calendar/phui-calendar.css' => 'f1ddf11c',
     'rsrc/css/phui/object-item/phui-oi-big-ui.css' => '628f59de',
     'rsrc/css/phui/object-item/phui-oi-color.css' => 'cd2b9b77',
     'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => '08f4ccc3',
     'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '9d9685d6',
     'rsrc/css/phui/object-item/phui-oi-list-view.css' => 'ae1404ba',
     'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => 'a8beebea',
     'rsrc/css/phui/phui-action-list.css' => '0bcd9a45',
     'rsrc/css/phui/phui-action-panel.css' => 'b4798122',
     'rsrc/css/phui/phui-badge.css' => '22c0cf4f',
     'rsrc/css/phui/phui-basic-nav-view.css' => '98c11ab3',
     'rsrc/css/phui/phui-big-info-view.css' => 'acc3492c',
     'rsrc/css/phui/phui-box.css' => '4bd6cdb9',
     'rsrc/css/phui/phui-bulk-editor.css' => '9a81e5d5',
     'rsrc/css/phui/phui-chart.css' => '6bf6f78e',
     'rsrc/css/phui/phui-cms.css' => '504b4b23',
     'rsrc/css/phui/phui-comment-form.css' => 'ac68149f',
     'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad',
     'rsrc/css/phui/phui-crumbs-view.css' => '6ece3bbb',
     'rsrc/css/phui/phui-curtain-view.css' => '2bdaf026',
     'rsrc/css/phui/phui-document-pro.css' => '8af7ea27',
     'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
     'rsrc/css/phui/phui-document.css' => '878c2f52',
     'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
     'rsrc/css/phui/phui-fontkit.css' => '1320ed01',
     'rsrc/css/phui/phui-form-view.css' => 'ae9f8d16',
     'rsrc/css/phui/phui-form.css' => '7aaa04e3',
     'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f',
     'rsrc/css/phui/phui-header-view.css' => '31dc6c72',
     'rsrc/css/phui/phui-hovercard.css' => 'f0592bcf',
     'rsrc/css/phui/phui-icon-set-selector.css' => '87db8fee',
     'rsrc/css/phui/phui-icon.css' => 'cf24ceec',
     'rsrc/css/phui/phui-image-mask.css' => 'a8498f9c',
     'rsrc/css/phui/phui-info-view.css' => 'e929f98c',
     'rsrc/css/phui/phui-invisible-character-view.css' => '6993d9f0',
     'rsrc/css/phui/phui-left-right.css' => '75227a4d',
     'rsrc/css/phui/phui-lightbox.css' => '0a035e40',
     'rsrc/css/phui/phui-list.css' => '38f8c9bd',
     'rsrc/css/phui/phui-object-box.css' => '9cff003c',
     'rsrc/css/phui/phui-pager.css' => 'edcbc226',
     'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
     'rsrc/css/phui/phui-property-list-view.css' => 'de4754d8',
     'rsrc/css/phui/phui-remarkup-preview.css' => '54a34863',
     'rsrc/css/phui/phui-segment-bar-view.css' => 'b1d1b892',
     'rsrc/css/phui/phui-spacing.css' => '042804d6',
     'rsrc/css/phui/phui-status.css' => 'd5263e49',
     'rsrc/css/phui/phui-tag-view.css' => 'b4719c50',
     'rsrc/css/phui/phui-timeline-view.css' => '6ddf8126',
     'rsrc/css/phui/phui-two-column-view.css' => '44ec4951',
     'rsrc/css/phui/workboards/phui-workboard-color.css' => '783cdff5',
     'rsrc/css/phui/workboards/phui-workboard.css' => '3bc85455',
     'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92',
     'rsrc/css/phui/workboards/phui-workpanel.css' => 'a3a63478',
     'rsrc/css/sprite-login.css' => '396f3c3a',
     'rsrc/css/sprite-tokens.css' => '9cdfd599',
     'rsrc/css/syntax/syntax-default.css' => '9923583c',
     'rsrc/externals/d3/d3.min.js' => 'a11a5ff2',
     'rsrc/externals/font/fontawesome/fontawesome-webfont.eot' => '24a7064f',
     'rsrc/externals/font/fontawesome/fontawesome-webfont.ttf' => '0039fe26',
     'rsrc/externals/font/fontawesome/fontawesome-webfont.woff' => 'de978a43',
     'rsrc/externals/font/fontawesome/fontawesome-webfont.woff2' => '2a832057',
     'rsrc/externals/font/lato/lato-bold.eot' => '99fbcf8c',
     'rsrc/externals/font/lato/lato-bold.svg' => '2aa83045',
     'rsrc/externals/font/lato/lato-bold.ttf' => '0a7141f7',
     'rsrc/externals/font/lato/lato-bold.woff' => 'f5db2061',
     'rsrc/externals/font/lato/lato-bold.woff2' => '37a94ecd',
     'rsrc/externals/font/lato/lato-bolditalic.eot' => 'b93389d0',
     'rsrc/externals/font/lato/lato-bolditalic.svg' => '5442e1ef',
     'rsrc/externals/font/lato/lato-bolditalic.ttf' => 'dad31252',
     'rsrc/externals/font/lato/lato-bolditalic.woff' => 'e53bcf47',
     'rsrc/externals/font/lato/lato-bolditalic.woff2' => 'd035007f',
     'rsrc/externals/font/lato/lato-italic.eot' => '6a903f5d',
     'rsrc/externals/font/lato/lato-italic.svg' => '0dc7cf2f',
     'rsrc/externals/font/lato/lato-italic.ttf' => '629f64f0',
     'rsrc/externals/font/lato/lato-italic.woff' => '678dc4bb',
     'rsrc/externals/font/lato/lato-italic.woff2' => '7c8dd650',
     'rsrc/externals/font/lato/lato-regular.eot' => '848dfb1e',
     'rsrc/externals/font/lato/lato-regular.svg' => 'cbd5fd6b',
     'rsrc/externals/font/lato/lato-regular.ttf' => 'e270165b',
     'rsrc/externals/font/lato/lato-regular.woff' => '13d39fe2',
     'rsrc/externals/font/lato/lato-regular.woff2' => '57a9f742',
     'rsrc/externals/javelin/core/Event.js' => '2ee659ce',
     'rsrc/externals/javelin/core/Stratcom.js' => '327f418a',
     'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => '717554e4',
     'rsrc/externals/javelin/core/__tests__/install.js' => 'c432ee85',
     'rsrc/externals/javelin/core/__tests__/stratcom.js' => '88bf7313',
     'rsrc/externals/javelin/core/__tests__/util.js' => 'e251703d',
     'rsrc/externals/javelin/core/init.js' => '638a4e2b',
     'rsrc/externals/javelin/core/init_node.js' => 'c234aded',
     'rsrc/externals/javelin/core/install.js' => '05270951',
     'rsrc/externals/javelin/core/util.js' => '93cc50d6',
     'rsrc/externals/javelin/docs/Base.js' => '74676256',
     'rsrc/externals/javelin/docs/onload.js' => 'e819c479',
     'rsrc/externals/javelin/ext/fx/Color.js' => '7e41274a',
     'rsrc/externals/javelin/ext/fx/FX.js' => '54b612ba',
     'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => 'f6555212',
     'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '2b8de964',
     'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '1ad0a787',
     'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '76f4ebed',
     'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => 'c90a04fc',
     'rsrc/externals/javelin/ext/view/HTMLView.js' => 'fe287620',
     'rsrc/externals/javelin/ext/view/View.js' => '0f764c35',
     'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => 'f829edb3',
     'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => '47830651',
     'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '6c2b09a2',
     'rsrc/externals/javelin/ext/view/ViewVisitor.js' => 'efe49472',
     'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => 'f92d7bcb',
     'rsrc/externals/javelin/ext/view/__tests__/View.js' => '6450b38b',
     'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => '7a94d6a5',
     'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '6ea96ac9',
     'rsrc/externals/javelin/lib/Cookie.js' => '62dfea03',
     'rsrc/externals/javelin/lib/DOM.js' => '4976858c',
     'rsrc/externals/javelin/lib/History.js' => 'd4505101',
     'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
     'rsrc/externals/javelin/lib/Leader.js' => '7f243deb',
     'rsrc/externals/javelin/lib/Mask.js' => '8a41885b',
     'rsrc/externals/javelin/lib/Quicksand.js' => '6b8ef10b',
     'rsrc/externals/javelin/lib/Request.js' => '94b750d2',
     'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
     'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
     'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
     'rsrc/externals/javelin/lib/Scrollbar.js' => '9065f639',
     'rsrc/externals/javelin/lib/Sound.js' => '949c0fe5',
     'rsrc/externals/javelin/lib/URI.js' => 'c989ade3',
     'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8',
     'rsrc/externals/javelin/lib/WebSocket.js' => '3ffe32d6',
     'rsrc/externals/javelin/lib/Workflow.js' => '6a726c55',
     'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8',
     'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b',
     'rsrc/externals/javelin/lib/__tests__/JSON.js' => '837a7d68',
     'rsrc/externals/javelin/lib/__tests__/URI.js' => '1e45fda9',
     'rsrc/externals/javelin/lib/__tests__/behavior.js' => '1ea62783',
     'rsrc/externals/javelin/lib/behavior.js' => '61cbc29a',
     'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '8d3bc1b2',
     'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '70baed2f',
     'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '185bbd53',
     'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '503e17fd',
     'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '013ffff9',
     'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '54f314a0',
     'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'ab9e0a82',
     'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '6c0e62fa',
     'rsrc/favicons/favicon-16x16.png' => 'fc6275ba',
     'rsrc/favicons/mask-icon.svg' => 'e132a80f',
     'rsrc/image/BFCFDA.png' => 'd5ec91f4',
     'rsrc/image/actions/edit.png' => '2fc41442',
     'rsrc/image/avatar.png' => '17d346a4',
     'rsrc/image/checker_dark.png' => 'd8e65881',
     'rsrc/image/checker_light.png' => 'a0155918',
     'rsrc/image/checker_lighter.png' => 'd5da91b6',
     'rsrc/image/controls/checkbox-checked.png' => 'ad6441ea',
     'rsrc/image/controls/checkbox-unchecked.png' => '8eb1f0ae',
     'rsrc/image/d5d8e1.png' => '0c2a1497',
     'rsrc/image/darkload.gif' => '1ffd3ec6',
     'rsrc/image/divot.png' => '94dded62',
     'rsrc/image/examples/hero.png' => '979a86ae',
     'rsrc/image/grippy_texture.png' => 'aca81e2f',
     'rsrc/image/icon/fatcow/arrow_branch.png' => '2537c01c',
     'rsrc/image/icon/fatcow/arrow_merge.png' => '21b660e0',
     'rsrc/image/icon/fatcow/calendar_edit.png' => '24632275',
     'rsrc/image/icon/fatcow/document_black.png' => '45fe1c60',
     'rsrc/image/icon/fatcow/flag_blue.png' => 'a01abb1d',
     'rsrc/image/icon/fatcow/flag_finish.png' => '67825cee',
     'rsrc/image/icon/fatcow/flag_ghost.png' => '20ca8783',
     'rsrc/image/icon/fatcow/flag_green.png' => '7e0eaa7a',
     'rsrc/image/icon/fatcow/flag_orange.png' => '9e73df66',
     'rsrc/image/icon/fatcow/flag_pink.png' => '7e92f3b2',
     'rsrc/image/icon/fatcow/flag_purple.png' => 'cc517522',
     'rsrc/image/icon/fatcow/flag_red.png' => '04ec726f',
     'rsrc/image/icon/fatcow/flag_yellow.png' => '73946fd4',
     'rsrc/image/icon/fatcow/key_question.png' => '52a0c26a',
     'rsrc/image/icon/fatcow/link.png' => '7afd4d5e',
     'rsrc/image/icon/fatcow/page_white_edit.png' => '39a2eed8',
     'rsrc/image/icon/fatcow/page_white_put.png' => '08c95a0c',
     'rsrc/image/icon/fatcow/source/conduit.png' => '4ea01d2f',
     'rsrc/image/icon/fatcow/source/email.png' => '9bab3239',
     'rsrc/image/icon/fatcow/source/fax.png' => '04195e68',
     'rsrc/image/icon/fatcow/source/mobile.png' => 'f1321264',
     'rsrc/image/icon/fatcow/source/tablet.png' => '49396799',
     'rsrc/image/icon/fatcow/source/web.png' => '136ccb5d',
     'rsrc/image/icon/subscribe.png' => 'd03ed5a5',
     'rsrc/image/icon/tango/attachment.png' => 'ecc8022e',
     'rsrc/image/icon/tango/edit.png' => '929a1363',
     'rsrc/image/icon/tango/go-down.png' => '96d95e43',
     'rsrc/image/icon/tango/log.png' => 'b08cc63a',
     'rsrc/image/icon/tango/upload.png' => '7bbb7984',
     'rsrc/image/icon/unsubscribe.png' => '25725013',
     'rsrc/image/lightblue-header.png' => '5c168b6d',
     'rsrc/image/logo/light-eye.png' => '1a576ddd',
     'rsrc/image/main_texture.png' => '29a2c5ad',
     'rsrc/image/menu_texture.png' => '5a17580d',
     'rsrc/image/people/harding.png' => '45aa614e',
     'rsrc/image/people/jefferson.png' => 'afca0e53',
     'rsrc/image/people/lincoln.png' => '9369126d',
     'rsrc/image/people/mckinley.png' => 'fb8f16ce',
     'rsrc/image/people/taft.png' => 'd7bc402c',
     'rsrc/image/people/user0.png' => '03dacaea',
     'rsrc/image/people/user1.png' => '4a4e7702',
     'rsrc/image/people/user2.png' => '47a0ee40',
     'rsrc/image/people/user3.png' => '835ff627',
     'rsrc/image/people/user4.png' => 'b0e830f1',
     'rsrc/image/people/user5.png' => '9c95b369',
     'rsrc/image/people/user6.png' => 'ba3fbfb0',
     'rsrc/image/people/user7.png' => 'da613924',
     'rsrc/image/people/user8.png' => 'f1035edf',
     'rsrc/image/people/user9.png' => '66730be3',
     'rsrc/image/people/washington.png' => '40dd301c',
     'rsrc/image/phrequent_active.png' => 'a466a8ed',
     'rsrc/image/phrequent_inactive.png' => 'bfc15a69',
     'rsrc/image/resize.png' => 'fd476de4',
     'rsrc/image/sprite-login-X2.png' => '308c92c4',
     'rsrc/image/sprite-login.png' => '9ec54245',
     'rsrc/image/sprite-tokens-X2.png' => '804a5232',
     'rsrc/image/sprite-tokens.png' => 'b41d03da',
     'rsrc/image/texture/card-gradient.png' => '815f26e8',
     'rsrc/image/texture/dark-menu-hover.png' => '5fa7ece8',
     'rsrc/image/texture/dark-menu.png' => '7e22296e',
     'rsrc/image/texture/grip.png' => '719404f3',
     'rsrc/image/texture/panel-header-gradient.png' => 'e3b8dcfe',
     'rsrc/image/texture/phlnx-bg.png' => '8d819209',
     'rsrc/image/texture/pholio-background.gif' => 'ba29239c',
     'rsrc/image/texture/table_header.png' => '5c433037',
     'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
     'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
     'rsrc/js/application/aphlict/Aphlict.js' => 'e1d4b11a',
     'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'caade6f2',
     'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '599a8f5f',
     'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9',
     'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '27ca6289',
     'rsrc/js/application/calendar/behavior-day-view.js' => '4b3c4443',
     'rsrc/js/application/calendar/behavior-event-all-day.js' => 'b41537c9',
     'rsrc/js/application/calendar/behavior-month-view.js' => 'fe33e256',
     'rsrc/js/application/config/behavior-reorder-fields.js' => 'b6993408',
     'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '4d863052',
     'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '9bbf3762',
     'rsrc/js/application/conpherence/behavior-durable-column.js' => '2ae077e1',
     'rsrc/js/application/conpherence/behavior-menu.js' => '4047cd35',
     'rsrc/js/application/conpherence/behavior-participant-pane.js' => 'd057e45a',
     'rsrc/js/application/conpherence/behavior-pontificate.js' => '55616e04',
     'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
     'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '3dbf94d5',
     'rsrc/js/application/countdown/timer.js' => 'e4cc26b3',
     'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145',
     'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e',
     'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
     'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
     'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
     'rsrc/js/application/diff/DiffChangeset.js' => 'b49b59d6',
     'rsrc/js/application/diff/DiffChangesetList.js' => 'e74b7517',
     'rsrc/js/application/diff/DiffInline.js' => 'e83d28f3',
     'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
     'rsrc/js/application/differential/behavior-comment-preview.js' => '51c5ad07',
     'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
     'rsrc/js/application/differential/behavior-populate.js' => '419998ab',
     'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
     'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '00676f00',
     'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a',
     'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
     'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb',
     'rsrc/js/application/diffusion/behavior-locate-file.js' => '6d3e1947',
     'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc',
     'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70',
     'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
     'rsrc/js/application/files/behavior-document-engine.js' => 'ee0deff8',
     'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
     'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888',
     'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => '191b4909',
     'rsrc/js/application/herald/HeraldRuleEditor.js' => 'dca75c0e',
     'rsrc/js/application/herald/PathTypeahead.js' => '662e9cea',
     'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3',
     'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ad54037e',
     'rsrc/js/application/maniphest/behavior-line-chart.js' => 'e4232876',
     'rsrc/js/application/maniphest/behavior-list-edit.js' => 'a9f88de2',
     'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '71237763',
     'rsrc/js/application/owners/OwnersPathEditor.js' => 'c96502cf',
     'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3',
     'rsrc/js/application/passphrase/passphrase-credential-control.js' => '3cb0b2fc',
     'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => 'bee502c8',
     'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'ec1f3669',
     'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => 'a6b98425',
     'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'fc91ab6c',
     'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef',
     'rsrc/js/application/policy/behavior-policy-control.js' => 'd0c516d5',
     'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
     'rsrc/js/application/projects/WorkboardBoard.js' => '8935deef',
     'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f',
     'rsrc/js/application/projects/WorkboardColumn.js' => '758b4758',
     'rsrc/js/application/projects/WorkboardController.js' => '26167537',
     'rsrc/js/application/projects/behavior-project-boards.js' => '4250a34e',
     'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
     'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
     'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
     'rsrc/js/application/releeph/releeph-request-state-change.js' => 'a0b57eb8',
     'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'de2e896f',
     'rsrc/js/application/repository/repository-crossreference.js' => '9a860428',
     'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e2e0a072',
     'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08',
     'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => '887ad43f',
     'rsrc/js/application/transactions/behavior-comment-actions.js' => '9a6dd75c',
     'rsrc/js/application/transactions/behavior-reorder-configs.js' => 'd7a74243',
     'rsrc/js/application/transactions/behavior-reorder-fields.js' => 'b59e1e96',
     'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '8f29b364',
     'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => 'b23b49e6',
     'rsrc/js/application/transactions/behavior-transaction-list.js' => '1f6794f6',
     'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '635de1ec',
     'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '93d0c9e3',
     'rsrc/js/application/uiexample/gesture-example.js' => '558829c2',
     'rsrc/js/application/uiexample/notification-example.js' => '8ce821c5',
     'rsrc/js/core/Busy.js' => '59a7976a',
     'rsrc/js/core/DragAndDropFileUpload.js' => '58dea2fa',
     'rsrc/js/core/DraggableList.js' => 'bea6e7f4',
     'rsrc/js/core/Favicon.js' => '1fe2510c',
     'rsrc/js/core/FileUpload.js' => '680ea2c8',
     'rsrc/js/core/Hovercard.js' => '1bd28176',
     'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2',
     'rsrc/js/core/KeyboardShortcutManager.js' => 'c19dd9b9',
     'rsrc/js/core/MultirowRowManager.js' => 'b5d57730',
     'rsrc/js/core/Notification.js' => '4f774dac',
     'rsrc/js/core/Prefab.js' => '77b0ae28',
     'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
     'rsrc/js/core/TextAreaUtils.js' => '320810c8',
     'rsrc/js/core/Title.js' => '485aaa6c',
     'rsrc/js/core/ToolTip.js' => '358b8c04',
     'rsrc/js/core/behavior-active-nav.js' => 'e379b58e',
     'rsrc/js/core/behavior-audio-source.js' => '59b251eb',
     'rsrc/js/core/behavior-autofocus.js' => '7319e029',
     'rsrc/js/core/behavior-badge-view.js' => '8ff5e24c',
     'rsrc/js/core/behavior-bulk-editor.js' => '66a6def1',
     'rsrc/js/core/behavior-choose-control.js' => '327a00d1',
     'rsrc/js/core/behavior-copy.js' => 'b0b8f86d',
     'rsrc/js/core/behavior-detect-timezone.js' => '4c193c96',
     'rsrc/js/core/behavior-device.js' => 'a3714c76',
     'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '484a6e22',
     'rsrc/js/core/behavior-fancy-datepicker.js' => 'ecf4e799',
     'rsrc/js/core/behavior-file-tree.js' => '88236f00',
     'rsrc/js/core/behavior-form.js' => '5c54cbf3',
     'rsrc/js/core/behavior-gesture.js' => '3ab51e2c',
     'rsrc/js/core/behavior-global-drag-and-drop.js' => '960f6a39',
     'rsrc/js/core/behavior-high-security-warning.js' => 'a464fe03',
     'rsrc/js/core/behavior-history-install.js' => '7ee2b591',
     'rsrc/js/core/behavior-hovercard.js' => 'bcaccd64',
     'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0',
     'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0',
     'rsrc/js/core/behavior-lightbox-attachments.js' => '6b31879a',
     'rsrc/js/core/behavior-line-linker.js' => '66a62306',
     'rsrc/js/core/behavior-more.js' => 'a80d0378',
     'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0',
     'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
     'rsrc/js/core/behavior-phabricator-nav.js' => '94b7c320',
     'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'acd29eee',
     'rsrc/js/core/behavior-read-only-warning.js' => 'ba158207',
     'rsrc/js/core/behavior-redirect.js' => '0213259f',
     'rsrc/js/core/behavior-refresh-csrf.js' => 'ab2f381b',
     'rsrc/js/core/behavior-remarkup-load-image.js' => '040fce04',
     'rsrc/js/core/behavior-remarkup-preview.js' => '4b700e9e',
     'rsrc/js/core/behavior-reorder-applications.js' => '76b9fc3e',
     'rsrc/js/core/behavior-reveal-content.js' => '60821bc7',
     'rsrc/js/core/behavior-scrollbar.js' => '834a1173',
     'rsrc/js/core/behavior-search-typeahead.js' => 'c3e917d9',
     'rsrc/js/core/behavior-select-content.js' => 'bf5374ef',
     'rsrc/js/core/behavior-select-on-click.js' => '4e3e79a6',
     'rsrc/js/core/behavior-setup-check-https.js' => '491416b3',
     'rsrc/js/core/behavior-time-typeahead.js' => '522431f7',
     'rsrc/js/core/behavior-toggle-class.js' => '92b9ec77',
     'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884',
     'rsrc/js/core/behavior-tooltip.js' => 'c420b0b9',
     'rsrc/js/core/behavior-user-menu.js' => '31420f77',
     'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d',
     'rsrc/js/core/behavior-workflow.js' => '0a3f3021',
     'rsrc/js/core/darkconsole/DarkLog.js' => 'c8e1ffe3',
     'rsrc/js/core/darkconsole/DarkMessage.js' => 'c48cccdd',
     'rsrc/js/core/darkconsole/behavior-dark-console.js' => '66888767',
     'rsrc/js/core/phtize.js' => 'd254d646',
     'rsrc/js/phui/behavior-phui-dropdown-menu.js' => 'b95d6f7d',
     'rsrc/js/phui/behavior-phui-file-upload.js' => 'b003d4fb',
     'rsrc/js/phui/behavior-phui-selectable-list.js' => '464259a2',
     'rsrc/js/phui/behavior-phui-submenu.js' => 'a6f7a73b',
     'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9',
     'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
     'rsrc/js/phuix/PHUIXActionView.js' => '8d4a8c72',
     'rsrc/js/phuix/PHUIXAutocomplete.js' => 'df1bbd34',
     'rsrc/js/phuix/PHUIXButtonView.js' => '8a91e1ac',
     'rsrc/js/phuix/PHUIXDropdownMenu.js' => '04b2ae03',
     'rsrc/js/phuix/PHUIXExample.js' => '68af71ca',
     'rsrc/js/phuix/PHUIXFormControl.js' => '210a16c1',
     'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b',
   ),
   'symbols' => array(
     'almanac-css' => 'dbb9b3af',
     'aphront-bars' => '231ac33c',
     'aphront-dark-console-css' => '0e14e8f6',
     'aphront-dialog-view-css' => '6bfc244b',
     'aphront-list-filter-view-css' => '5d6f0526',
     'aphront-multi-column-view-css' => '84cc6640',
     'aphront-panel-view-css' => '8427b78d',
     'aphront-table-view-css' => '8c9bbafe',
     'aphront-tokenizer-control-css' => '15d5ff71',
     'aphront-tooltip-css' => '173b9431',
     'aphront-typeahead-control-css' => 'a4a21016',
     'application-search-view-css' => '787f5b76',
     'auth-css' => '0877ed6e',
     'bulk-job-css' => 'df9c1d4a',
     'conduit-api-css' => '7bc725c4',
     'config-options-css' => '4615667b',
     'conpherence-color-css' => 'abb4c358',
     'conpherence-durable-column-view' => '89ea6bef',
     'conpherence-header-pane-css' => 'cb6f4e19',
     'conpherence-menu-css' => '69368e97',
     'conpherence-message-pane-css' => 'b0f55ecc',
     'conpherence-notification-css' => 'cef0a3fc',
     'conpherence-participant-pane-css' => '26a3ce56',
     'conpherence-thread-manager' => '4d863052',
     'conpherence-transaction-css' => '85129c68',
     'd3' => 'a11a5ff2',
     'differential-changeset-view-css' => 'db34a142',
     'differential-core-view-css' => '5b7b8ff4',
     'differential-revision-add-comment-css' => 'c47f8c40',
     'differential-revision-comment-css' => '14b8565a',
     'differential-revision-history-css' => '0e8eb855',
     'differential-revision-list-css' => 'f3c47d33',
     'differential-table-of-contents-css' => 'ae4b7a55',
     'diffusion-css' => '45727264',
     'diffusion-icons-css' => '0c15255e',
     'diffusion-readme-css' => '419dd5b6',
     'diffusion-repository-css' => 'ee6f20ec',
     'diviner-shared-css' => '896f1d43',
     'font-fontawesome' => 'e838e088',
     'font-lato' => 'c7ccd872',
     'global-drag-and-drop-css' => 'b556a948',
     'harbormaster-css' => '730a4a3c',
     'herald-css' => 'cd8d0134',
     'herald-rule-editor' => 'dca75c0e',
     'herald-test-css' => 'a52e323e',
     'inline-comment-summary-css' => 'f23d4e8f',
     'javelin-aphlict' => 'e1d4b11a',
     'javelin-behavior' => '61cbc29a',
     'javelin-behavior-aphlict-dropdown' => 'caade6f2',
     'javelin-behavior-aphlict-listen' => '599a8f5f',
     'javelin-behavior-aphlict-status' => '5e2634b9',
     'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
     'javelin-behavior-aphront-drag-and-drop-textarea' => '484a6e22',
     'javelin-behavior-aphront-form-disable-on-submit' => '5c54cbf3',
     'javelin-behavior-aphront-more' => 'a80d0378',
     'javelin-behavior-audio-source' => '59b251eb',
     'javelin-behavior-audit-preview' => 'd835b03a',
     'javelin-behavior-badge-view' => '8ff5e24c',
     'javelin-behavior-bulk-editor' => '66a6def1',
     'javelin-behavior-bulk-job-reload' => 'edf8a145',
     'javelin-behavior-calendar-month-view' => 'fe33e256',
     'javelin-behavior-choose-control' => '327a00d1',
     'javelin-behavior-comment-actions' => '9a6dd75c',
     'javelin-behavior-config-reorder-fields' => 'b6993408',
     'javelin-behavior-conpherence-menu' => '4047cd35',
     'javelin-behavior-conpherence-participant-pane' => 'd057e45a',
     'javelin-behavior-conpherence-pontificate' => '55616e04',
     'javelin-behavior-conpherence-search' => '9bbf3762',
     'javelin-behavior-countdown-timer' => 'e4cc26b3',
     'javelin-behavior-dark-console' => '66888767',
     'javelin-behavior-dashboard-async-panel' => '469c0d9e',
     'javelin-behavior-dashboard-move-panels' => '408bf173',
     'javelin-behavior-dashboard-query-panel-select' => '453c5375',
     'javelin-behavior-dashboard-tab-panel' => 'd4eecc63',
     'javelin-behavior-day-view' => '4b3c4443',
     'javelin-behavior-desktop-notifications-control' => '27ca6289',
     'javelin-behavior-detect-timezone' => '4c193c96',
     'javelin-behavior-device' => 'a3714c76',
     'javelin-behavior-diff-preview-link' => '051c7832',
     'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
     'javelin-behavior-differential-feedback-preview' => '51c5ad07',
     'javelin-behavior-differential-populate' => '419998ab',
     'javelin-behavior-differential-user-select' => 'a8d8459d',
     'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04',
     'javelin-behavior-diffusion-commit-graph' => '75b83cbb',
     'javelin-behavior-diffusion-locate-file' => '6d3e1947',
     'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
     'javelin-behavior-document-engine' => 'ee0deff8',
     'javelin-behavior-doorkeeper-tag' => '1db13e70',
     'javelin-behavior-drydock-live-operation-status' => '901935ef',
     'javelin-behavior-durable-column' => '2ae077e1',
     'javelin-behavior-editengine-reorder-configs' => 'd7a74243',
     'javelin-behavior-editengine-reorder-fields' => 'b59e1e96',
     'javelin-behavior-event-all-day' => 'b41537c9',
     'javelin-behavior-fancy-datepicker' => 'ecf4e799',
     'javelin-behavior-global-drag-and-drop' => '960f6a39',
     'javelin-behavior-harbormaster-log' => '191b4909',
     'javelin-behavior-herald-rule-editor' => '7ebaeed3',
     'javelin-behavior-high-security-warning' => 'a464fe03',
     'javelin-behavior-history-install' => '7ee2b591',
     'javelin-behavior-icon-composer' => '8499b6ab',
     'javelin-behavior-launch-icon-composer' => '48086888',
     'javelin-behavior-lightbox-attachments' => '6b31879a',
     'javelin-behavior-line-chart' => 'e4232876',
     'javelin-behavior-maniphest-batch-selector' => 'ad54037e',
     'javelin-behavior-maniphest-list-editor' => 'a9f88de2',
     'javelin-behavior-maniphest-subpriority-editor' => '71237763',
     'javelin-behavior-owners-path-editor' => '7a68dda3',
     'javelin-behavior-passphrase-credential-control' => '3cb0b2fc',
     'javelin-behavior-phabricator-active-nav' => 'e379b58e',
     'javelin-behavior-phabricator-autofocus' => '7319e029',
     'javelin-behavior-phabricator-clipboard-copy' => 'b0b8f86d',
     'javelin-behavior-phabricator-file-tree' => '88236f00',
     'javelin-behavior-phabricator-gesture' => '3ab51e2c',
     'javelin-behavior-phabricator-gesture-example' => '558829c2',
     'javelin-behavior-phabricator-keyboard-pager' => 'a8da01f0',
     'javelin-behavior-phabricator-keyboard-shortcuts' => '01fca1f0',
     'javelin-behavior-phabricator-line-linker' => '66a62306',
     'javelin-behavior-phabricator-nav' => '94b7c320',
     'javelin-behavior-phabricator-notification-example' => '8ce821c5',
     'javelin-behavior-phabricator-object-selector' => '77c1f0b0',
     'javelin-behavior-phabricator-oncopy' => '2926fff2',
     'javelin-behavior-phabricator-remarkup-assist' => 'acd29eee',
     'javelin-behavior-phabricator-reveal-content' => '60821bc7',
     'javelin-behavior-phabricator-search-typeahead' => 'c3e917d9',
     'javelin-behavior-phabricator-show-older-transactions' => '8f29b364',
     'javelin-behavior-phabricator-tooltips' => 'c420b0b9',
     'javelin-behavior-phabricator-transaction-comment-form' => 'b23b49e6',
     'javelin-behavior-phabricator-transaction-list' => '1f6794f6',
     'javelin-behavior-phabricator-watch-anchor' => '9f36c42d',
     'javelin-behavior-pholio-mock-edit' => 'bee502c8',
     'javelin-behavior-pholio-mock-view' => 'ec1f3669',
     'javelin-behavior-phui-dropdown-menu' => 'b95d6f7d',
     'javelin-behavior-phui-file-upload' => 'b003d4fb',
     'javelin-behavior-phui-hovercards' => 'bcaccd64',
     'javelin-behavior-phui-selectable-list' => '464259a2',
     'javelin-behavior-phui-submenu' => 'a6f7a73b',
     'javelin-behavior-phui-tab-group' => '0a0b10e9',
     'javelin-behavior-phuix-example' => '68af71ca',
     'javelin-behavior-policy-control' => 'd0c516d5',
     'javelin-behavior-policy-rule-editor' => '5e9f347c',
     'javelin-behavior-project-boards' => '4250a34e',
     'javelin-behavior-project-create' => '065227cc',
     'javelin-behavior-quicksand-blacklist' => '7927a7d3',
     'javelin-behavior-read-only-warning' => 'ba158207',
     'javelin-behavior-redirect' => '0213259f',
     'javelin-behavior-refresh-csrf' => 'ab2f381b',
     'javelin-behavior-releeph-preview-branch' => 'b2b4fbaf',
     'javelin-behavior-releeph-request-state-change' => 'a0b57eb8',
     'javelin-behavior-releeph-request-typeahead' => 'de2e896f',
     'javelin-behavior-remarkup-load-image' => '040fce04',
     'javelin-behavior-remarkup-preview' => '4b700e9e',
     'javelin-behavior-reorder-applications' => '76b9fc3e',
     'javelin-behavior-reorder-columns' => 'e1d25dfb',
     'javelin-behavior-reorder-profile-menu-items' => 'e2e0a072',
     'javelin-behavior-repository-crossreference' => '9a860428',
     'javelin-behavior-scrollbar' => '834a1173',
     'javelin-behavior-search-reorder-queries' => 'e9581f08',
     'javelin-behavior-select-content' => 'bf5374ef',
     'javelin-behavior-select-on-click' => '4e3e79a6',
     'javelin-behavior-setup-check-https' => '491416b3',
     'javelin-behavior-slowvote-embed' => '887ad43f',
     'javelin-behavior-stripe-payment-form' => 'a6b98425',
     'javelin-behavior-test-payment-form' => 'fc91ab6c',
     'javelin-behavior-time-typeahead' => '522431f7',
     'javelin-behavior-toggle-class' => '92b9ec77',
     'javelin-behavior-toggle-widget' => '3dbf94d5',
     'javelin-behavior-typeahead-browse' => '635de1ec',
     'javelin-behavior-typeahead-search' => '93d0c9e3',
     'javelin-behavior-user-menu' => '31420f77',
     'javelin-behavior-view-placeholder' => '47830651',
     'javelin-behavior-workflow' => '0a3f3021',
     'javelin-color' => '7e41274a',
     'javelin-cookie' => '62dfea03',
     'javelin-diffusion-locate-file-source' => '00676f00',
     'javelin-dom' => '4976858c',
     'javelin-dynval' => 'f6555212',
     'javelin-event' => '2ee659ce',
     'javelin-fx' => '54b612ba',
     'javelin-history' => 'd4505101',
     'javelin-install' => '05270951',
     'javelin-json' => '69adf288',
     'javelin-leader' => '7f243deb',
     'javelin-magical-init' => '638a4e2b',
     'javelin-mask' => '8a41885b',
     'javelin-quicksand' => '6b8ef10b',
     'javelin-reactor' => '2b8de964',
     'javelin-reactor-dom' => 'c90a04fc',
     'javelin-reactor-node-calmer' => '76f4ebed',
     'javelin-reactornode' => '1ad0a787',
     'javelin-request' => '94b750d2',
     'javelin-resource' => '44959b73',
     'javelin-routable' => 'b3e7d692',
     'javelin-router' => '29274e2b',
     'javelin-scrollbar' => '9065f639',
     'javelin-sound' => '949c0fe5',
     'javelin-stratcom' => '327f418a',
     'javelin-tokenizer' => '8d3bc1b2',
     'javelin-typeahead' => '70baed2f',
     'javelin-typeahead-composite-source' => '503e17fd',
     'javelin-typeahead-normalizer' => '185bbd53',
     'javelin-typeahead-ondemand-source' => '013ffff9',
     'javelin-typeahead-preloaded-source' => '54f314a0',
     'javelin-typeahead-source' => 'ab9e0a82',
     'javelin-typeahead-static-source' => '6c0e62fa',
     'javelin-uri' => 'c989ade3',
     'javelin-util' => '93cc50d6',
     'javelin-vector' => '2caa8fb8',
     'javelin-view' => '0f764c35',
     'javelin-view-html' => 'fe287620',
     'javelin-view-interpreter' => 'f829edb3',
     'javelin-view-renderer' => '6c2b09a2',
     'javelin-view-visitor' => 'efe49472',
     'javelin-websocket' => '3ffe32d6',
     'javelin-workboard-board' => '8935deef',
     'javelin-workboard-card' => 'c587b80f',
     'javelin-workboard-column' => '758b4758',
     'javelin-workboard-controller' => '26167537',
     'javelin-workflow' => '6a726c55',
     'maniphest-report-css' => '9b9580b7',
     'maniphest-task-edit-css' => 'fda62a9b',
     'maniphest-task-summary-css' => '11cc5344',
     'multirow-row-manager' => 'b5d57730',
     'owners-path-editor' => 'c96502cf',
     'owners-path-editor-css' => '9c136c29',
     'paste-css' => '9fcc9773',
     'path-typeahead' => '662e9cea',
     'people-picture-menu-item-css' => 'a06f7f34',
     'people-profile-css' => '4df76faf',
     'phabricator-action-list-view-css' => '0bcd9a45',
     'phabricator-busy' => '59a7976a',
     'phabricator-chatlog-css' => 'd295b020',
     'phabricator-content-source-view-css' => '4b8b05d4',
     'phabricator-core-css' => '62fa3ace',
     'phabricator-countdown-css' => '16c52f5c',
     'phabricator-darklog' => 'c8e1ffe3',
     'phabricator-darkmessage' => 'c48cccdd',
     'phabricator-dashboard-css' => 'fe5b1869',
     'phabricator-diff-changeset' => 'b49b59d6',
     'phabricator-diff-changeset-list' => 'e74b7517',
     'phabricator-diff-inline' => 'e83d28f3',
     'phabricator-drag-and-drop-file-upload' => '58dea2fa',
     'phabricator-draggable-list' => 'bea6e7f4',
     'phabricator-fatal-config-template-css' => '8f18fa41',
     'phabricator-favicon' => '1fe2510c',
     'phabricator-feed-css' => 'ecd4ec57',
     'phabricator-file-upload' => '680ea2c8',
     'phabricator-filetree-view-css' => 'b912ad97',
     'phabricator-flag-css' => 'bba8f811',
     'phabricator-keyboard-shortcut' => '1ae869f2',
     'phabricator-keyboard-shortcut-manager' => 'c19dd9b9',
     'phabricator-main-menu-view' => '1802a242',
     'phabricator-nav-view-css' => '694d7723',
     'phabricator-notification' => '4f774dac',
     'phabricator-notification-css' => '457861ec',
-    'phabricator-notification-menu-css' => '10685bd4',
+    'phabricator-notification-menu-css' => 'ef480927',
     'phabricator-object-selector-css' => '85ee8ce6',
     'phabricator-phtize' => 'd254d646',
     'phabricator-prefab' => '77b0ae28',
     'phabricator-remarkup-css' => 'bff43c81',
     'phabricator-search-results-css' => '505dd8cf',
     'phabricator-shaped-request' => '7cbe244b',
     'phabricator-slowvote-css' => 'a94b7230',
     'phabricator-source-code-view-css' => 'fdbefca0',
     'phabricator-standard-page-view' => '34ee718b',
     'phabricator-textareautils' => '320810c8',
     'phabricator-title' => '485aaa6c',
     'phabricator-tooltip' => '358b8c04',
     'phabricator-ui-example-css' => '528b19de',
     'phabricator-zindex-css' => '9d8f7c4b',
     'phame-css' => '8cb3afcd',
     'pholio-css' => 'ca89d380',
     'pholio-edit-css' => '07676f51',
     'pholio-inline-comments-css' => '8e545e49',
     'phortune-credit-card-form' => '2290aeef',
     'phortune-credit-card-form-css' => '8391eb02',
     'phortune-css' => '5b99dae0',
     'phortune-invoice-css' => '476055e2',
     'phrequent-css' => 'ffc185ad',
     'phriction-document-css' => '4282e4ad',
     'phui-action-panel-css' => 'b4798122',
     'phui-badge-view-css' => '22c0cf4f',
     'phui-basic-nav-view-css' => '98c11ab3',
     'phui-big-info-view-css' => 'acc3492c',
     'phui-box-css' => '4bd6cdb9',
     'phui-bulk-editor-css' => '9a81e5d5',
     'phui-button-bar-css' => 'f1ff5494',
     'phui-button-css' => '1863cc6e',
     'phui-button-simple-css' => '8e1baf68',
     'phui-calendar-css' => 'f1ddf11c',
     'phui-calendar-day-css' => '572b1893',
     'phui-calendar-list-css' => '576be600',
     'phui-calendar-month-css' => '21154caf',
     'phui-chart-css' => '6bf6f78e',
     'phui-cms-css' => '504b4b23',
     'phui-comment-form-css' => 'ac68149f',
     'phui-comment-panel-css' => 'f50152ad',
     'phui-crumbs-view-css' => '6ece3bbb',
     'phui-curtain-view-css' => '2bdaf026',
     'phui-document-summary-view-css' => '9ca48bdf',
     'phui-document-view-css' => '878c2f52',
     'phui-document-view-pro-css' => '8af7ea27',
     'phui-feed-story-css' => '44a9c8e9',
     'phui-font-icon-base-css' => '870a7360',
     'phui-fontkit-css' => '1320ed01',
     'phui-form-css' => '7aaa04e3',
     'phui-form-view-css' => 'ae9f8d16',
     'phui-head-thing-view-css' => 'fd311e5f',
     'phui-header-view-css' => '31dc6c72',
     'phui-hovercard' => '1bd28176',
     'phui-hovercard-view-css' => 'f0592bcf',
     'phui-icon-set-selector-css' => '87db8fee',
     'phui-icon-view-css' => 'cf24ceec',
     'phui-image-mask-css' => 'a8498f9c',
     'phui-info-view-css' => 'e929f98c',
     'phui-inline-comment-view-css' => '65ae3bc2',
     'phui-invisible-character-view-css' => '6993d9f0',
     'phui-left-right-css' => '75227a4d',
     'phui-lightbox-css' => '0a035e40',
     'phui-list-view-css' => '38f8c9bd',
     'phui-object-box-css' => '9cff003c',
     'phui-oi-big-ui-css' => '628f59de',
     'phui-oi-color-css' => 'cd2b9b77',
     'phui-oi-drag-ui-css' => '08f4ccc3',
     'phui-oi-flush-ui-css' => '9d9685d6',
     'phui-oi-list-view-css' => 'ae1404ba',
     'phui-oi-simple-ui-css' => 'a8beebea',
     'phui-pager-css' => 'edcbc226',
     'phui-pinboard-view-css' => '2495140e',
     'phui-property-list-view-css' => 'de4754d8',
     'phui-remarkup-preview-css' => '54a34863',
     'phui-segment-bar-view-css' => 'b1d1b892',
     'phui-spacing-css' => '042804d6',
     'phui-status-list-view-css' => 'd5263e49',
     'phui-tag-view-css' => 'b4719c50',
     'phui-theme-css' => '9f261c6b',
     'phui-timeline-view-css' => '6ddf8126',
     'phui-two-column-view-css' => '44ec4951',
     'phui-workboard-color-css' => '783cdff5',
     'phui-workboard-view-css' => '3bc85455',
     'phui-workcard-view-css' => 'cca5fa92',
     'phui-workpanel-view-css' => 'a3a63478',
     'phuix-action-list-view' => 'b5c256b8',
     'phuix-action-view' => '8d4a8c72',
     'phuix-autocomplete' => 'df1bbd34',
     'phuix-button-view' => '8a91e1ac',
     'phuix-dropdown-menu' => '04b2ae03',
     'phuix-form-control-view' => '210a16c1',
     'phuix-icon-view' => 'bff6884b',
     'policy-css' => '957ea14c',
     'policy-edit-css' => '815c66f7',
     'policy-transaction-detail-css' => '82100a43',
     'ponder-view-css' => 'fbd45f96',
     'project-card-view-css' => '0010bb52',
     'project-view-css' => '792c9057',
     'releeph-core' => '9b3c5733',
     'releeph-preview-branch' => 'b7a6f4a5',
     'releeph-request-differential-create-dialog' => '8d8b92cd',
     'releeph-request-typeahead-css' => '667a48ae',
     'setup-issue-css' => '30ee0173',
     'sprite-login-css' => '396f3c3a',
     'sprite-tokens-css' => '9cdfd599',
     'syntax-default-css' => '9923583c',
     'syntax-highlighting-css' => 'e9c95dd4',
     'tokens-css' => '3d0f239e',
     'typeahead-browse-css' => 'f2818435',
     'unhandled-exception-css' => '4c96257a',
   ),
   'requires' => array(
     '00676f00' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-typeahead-preloaded-source',
       'javelin-util',
     ),
     '013ffff9' => array(
       'javelin-install',
       'javelin-util',
       'javelin-request',
       'javelin-typeahead-source',
     ),
     '01fca1f0' => array(
       'javelin-behavior',
       'javelin-workflow',
       'javelin-json',
       'javelin-dom',
       'phabricator-keyboard-shortcut',
     ),
     '0213259f' => array(
       'javelin-behavior',
       'javelin-uri',
     ),
     '040fce04' => array(
       'javelin-behavior',
       'javelin-request',
     ),
     '04b2ae03' => array(
       'javelin-install',
       'javelin-util',
       'javelin-dom',
       'javelin-vector',
       'javelin-stratcom',
     ),
     '051c7832' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '05270951' => array(
       'javelin-util',
       'javelin-magical-init',
     ),
     '065227cc' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
     ),
     '08f4ccc3' => array(
       'phui-oi-list-view-css',
     ),
     '0a0b10e9' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '0a3f3021' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'javelin-router',
     ),
     '0f764c35' => array(
       'javelin-install',
       'javelin-util',
     ),
     '15d5ff71' => array(
       'aphront-typeahead-control-css',
       'phui-tag-view-css',
     ),
     '1802a242' => array(
       'phui-theme-css',
     ),
     '185bbd53' => array(
       'javelin-install',
     ),
     '191b4909' => array(
       'javelin-behavior',
     ),
     '1ad0a787' => array(
       'javelin-install',
       'javelin-reactor',
       'javelin-util',
       'javelin-reactor-node-calmer',
     ),
     '1ae869f2' => array(
       'javelin-install',
       'javelin-util',
       'phabricator-keyboard-shortcut-manager',
     ),
     '1bd28176' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-vector',
       'javelin-request',
       'javelin-uri',
     ),
     '1db13e70' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-json',
       'javelin-workflow',
       'javelin-magical-init',
     ),
     '1f6794f6' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'javelin-uri',
       'phabricator-textareautils',
     ),
     '1fe2510c' => array(
       'javelin-install',
       'javelin-dom',
     ),
     '210a16c1' => array(
       'javelin-install',
       'javelin-dom',
     ),
     '2290aeef' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-json',
       'javelin-workflow',
       'javelin-util',
     ),
     26167537 => array(
       'javelin-install',
       'javelin-dom',
       'javelin-util',
       'javelin-vector',
       'javelin-stratcom',
       'javelin-workflow',
       'phabricator-drag-and-drop-file-upload',
       'javelin-workboard-board',
     ),
     '27ca6289' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-uri',
       'phabricator-notification',
     ),
     '2926fff2' => array(
       'javelin-behavior',
       'javelin-dom',
     ),
     '29274e2b' => array(
       'javelin-install',
       'javelin-util',
     ),
     '2ae077e1' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-behavior-device',
       'javelin-scrollbar',
       'javelin-quicksand',
       'phabricator-keyboard-shortcut',
       'conpherence-thread-manager',
     ),
     '2b8de964' => array(
       'javelin-install',
       'javelin-util',
     ),
     '2caa8fb8' => array(
       'javelin-install',
       'javelin-event',
     ),
     '2ee659ce' => array(
       'javelin-install',
     ),
     '31420f77' => array(
       'javelin-behavior',
     ),
     '320810c8' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-vector',
     ),
     '327a00d1' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-workflow',
     ),
     '327f418a' => array(
       'javelin-install',
       'javelin-event',
       'javelin-util',
       'javelin-magical-init',
     ),
     '358b8c04' => array(
       'javelin-install',
       'javelin-util',
       'javelin-dom',
       'javelin-vector',
     ),
     '3ab51e2c' => array(
       'javelin-behavior',
       'javelin-behavior-device',
       'javelin-stratcom',
       'javelin-vector',
       'javelin-dom',
       'javelin-magical-init',
     ),
     '3cb0b2fc' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-util',
       'javelin-uri',
     ),
     '3dbf94d5' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-workflow',
       'javelin-stratcom',
     ),
     '3ffe32d6' => array(
       'javelin-install',
     ),
     '4047cd35' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-behavior-device',
       'javelin-history',
       'javelin-vector',
       'javelin-scrollbar',
       'phabricator-title',
       'phabricator-shaped-request',
       'conpherence-thread-manager',
     ),
     '408bf173' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-workflow',
       'phabricator-draggable-list',
     ),
     '419998ab' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'phabricator-tooltip',
       'phabricator-diff-changeset-list',
       'phabricator-diff-changeset',
     ),
     '4250a34e' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-vector',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-workboard-controller',
     ),
     '44959b73' => array(
       'javelin-util',
       'javelin-uri',
       'javelin-install',
     ),
     '453c5375' => array(
       'javelin-behavior',
       'javelin-dom',
     ),
     '464259a2' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '469c0d9e' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-workflow',
     ),
     47830651 => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-view-renderer',
       'javelin-install',
     ),
     48086888 => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-workflow',
     ),
     '484a6e22' => array(
       'javelin-behavior',
       'javelin-dom',
       'phabricator-drag-and-drop-file-upload',
       'phabricator-textareautils',
     ),
     '485aaa6c' => array(
       'javelin-install',
     ),
     '491416b3' => array(
       'javelin-behavior',
       'javelin-uri',
       'phabricator-notification',
     ),
     '4976858c' => array(
       'javelin-magical-init',
       'javelin-install',
       'javelin-util',
       'javelin-vector',
       'javelin-stratcom',
     ),
     '4b3c4443' => array(
       'phuix-icon-view',
     ),
     '4b700e9e' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'phabricator-shaped-request',
     ),
     '4c193c96' => array(
       'javelin-behavior',
       'javelin-uri',
       'phabricator-notification',
     ),
     '4d863052' => array(
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-install',
       'javelin-aphlict',
       'javelin-workflow',
       'javelin-router',
       'javelin-behavior-device',
       'javelin-vector',
     ),
     '4e3e79a6' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '4f774dac' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-util',
       'phabricator-notification-css',
     ),
     '503e17fd' => array(
       'javelin-install',
       'javelin-typeahead-source',
       'javelin-util',
     ),
     '51c5ad07' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-request',
       'javelin-util',
       'phabricator-shaped-request',
     ),
     '522431f7' => array(
       'javelin-behavior',
       'javelin-util',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-vector',
       'javelin-typeahead-static-source',
     ),
     '54b612ba' => array(
       'javelin-color',
       'javelin-install',
       'javelin-util',
     ),
     '54f314a0' => array(
       'javelin-install',
       'javelin-util',
       'javelin-request',
       'javelin-typeahead-source',
     ),
     '55616e04' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-workflow',
       'javelin-stratcom',
       'conpherence-thread-manager',
     ),
     '558829c2' => array(
       'javelin-stratcom',
       'javelin-behavior',
       'javelin-vector',
       'javelin-dom',
     ),
     '58dea2fa' => array(
       'javelin-install',
       'javelin-util',
       'javelin-request',
       'javelin-dom',
       'javelin-uri',
       'phabricator-file-upload',
     ),
     '599a8f5f' => array(
       'javelin-behavior',
       'javelin-aphlict',
       'javelin-stratcom',
       'javelin-request',
       'javelin-uri',
       'javelin-dom',
       'javelin-json',
       'javelin-router',
       'javelin-util',
       'javelin-leader',
       'javelin-sound',
       'phabricator-notification',
     ),
     '59a7976a' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-fx',
     ),
     '59b251eb' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-vector',
       'javelin-dom',
     ),
     '5c54cbf3' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '5e2634b9' => array(
       'javelin-behavior',
       'javelin-aphlict',
       'phabricator-phtize',
       'javelin-dom',
     ),
     '5e9f347c' => array(
       'javelin-behavior',
       'multirow-row-manager',
       'javelin-dom',
       'javelin-util',
       'phabricator-prefab',
       'javelin-json',
     ),
     '60821bc7' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '61cbc29a' => array(
       'javelin-magical-init',
       'javelin-util',
     ),
     '628f59de' => array(
       'phui-oi-list-view-css',
     ),
     '62dfea03' => array(
       'javelin-install',
       'javelin-util',
     ),
     '635de1ec' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
     ),
     '662e9cea' => array(
       'javelin-install',
       'javelin-typeahead',
       'javelin-dom',
       'javelin-request',
       'javelin-typeahead-ondemand-source',
       'javelin-util',
     ),
     66888767 => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-util',
       'javelin-dom',
       'javelin-request',
       'phabricator-keyboard-shortcut',
       'phabricator-darklog',
       'phabricator-darkmessage',
     ),
     '66a62306' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-history',
     ),
     '66a6def1' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'multirow-row-manager',
       'javelin-json',
       'phuix-form-control-view',
     ),
     '680ea2c8' => array(
       'javelin-install',
       'javelin-dom',
       'phabricator-notification',
     ),
     '68af71ca' => array(
       'javelin-install',
       'javelin-dom',
       'phuix-button-view',
     ),
     '69adf288' => array(
       'javelin-install',
     ),
     '6a726c55' => array(
       'javelin-stratcom',
       'javelin-request',
       'javelin-dom',
       'javelin-vector',
       'javelin-install',
       'javelin-util',
       'javelin-mask',
       'javelin-uri',
       'javelin-routable',
     ),
     '6b31879a' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-mask',
       'javelin-util',
       'phuix-icon-view',
       'phabricator-busy',
     ),
     '6b8ef10b' => array(
       'javelin-install',
     ),
     '6c0e62fa' => array(
       'javelin-install',
       'javelin-typeahead-source',
     ),
     '6c2b09a2' => array(
       'javelin-install',
       'javelin-util',
     ),
     '6d3e1947' => array(
       'javelin-behavior',
       'javelin-diffusion-locate-file-source',
       'javelin-dom',
       'javelin-typeahead',
       'javelin-uri',
     ),
     '70baed2f' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-vector',
       'javelin-util',
     ),
     71237763 => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
       'phabricator-draggable-list',
     ),
     '7319e029' => array(
       'javelin-behavior',
       'javelin-dom',
     ),
     '758b4758' => array(
       'javelin-install',
       'javelin-workboard-card',
     ),
     '75b83cbb' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     '76b9fc3e' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     '76f4ebed' => array(
       'javelin-install',
       'javelin-reactor',
       'javelin-util',
     ),
     '77b0ae28' => array(
       'javelin-install',
       'javelin-util',
       'javelin-dom',
       'javelin-typeahead',
       'javelin-tokenizer',
       'javelin-typeahead-preloaded-source',
       'javelin-typeahead-ondemand-source',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-util',
     ),
     '77c1f0b0' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-request',
       'javelin-util',
     ),
     '7927a7d3' => array(
       'javelin-behavior',
       'javelin-quicksand',
     ),
     '7a68dda3' => array(
       'owners-path-editor',
       'javelin-behavior',
     ),
     '7cbe244b' => array(
       'javelin-install',
       'javelin-util',
       'javelin-request',
       'javelin-router',
     ),
     '7e41274a' => array(
       'javelin-install',
     ),
     '7ebaeed3' => array(
       'herald-rule-editor',
       'javelin-behavior',
     ),
     '7ee2b591' => array(
       'javelin-behavior',
       'javelin-history',
     ),
     '7f243deb' => array(
       'javelin-install',
     ),
     '834a1173' => array(
       'javelin-behavior',
       'javelin-scrollbar',
     ),
     '8499b6ab' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     '85ee8ce6' => array(
       'aphront-dialog-view-css',
     ),
     '88236f00' => array(
       'javelin-behavior',
       'phabricator-keyboard-shortcut',
       'javelin-stratcom',
     ),
     '887ad43f' => array(
       'javelin-behavior',
       'javelin-request',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '8935deef' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-workflow',
       'phabricator-draggable-list',
       'javelin-workboard-column',
     ),
     '8a41885b' => array(
       'javelin-install',
       'javelin-dom',
     ),
     '8a91e1ac' => array(
       'javelin-install',
       'javelin-dom',
     ),
     '8ce821c5' => array(
       'phabricator-notification',
       'javelin-stratcom',
       'javelin-behavior',
     ),
     '8d3bc1b2' => array(
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-install',
     ),
     '8d4a8c72' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-util',
     ),
     '8e1baf68' => array(
       'phui-button-css',
     ),
     '8f29b364' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'phabricator-busy',
     ),
     '8ff5e24c' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '901935ef' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-request',
     ),
     '9065f639' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-vector',
     ),
     '92b9ec77' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     '93d0c9e3' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
     ),
     '949c0fe5' => array(
       'javelin-install',
     ),
     '94b750d2' => array(
       'javelin-install',
       'javelin-stratcom',
       'javelin-util',
       'javelin-behavior',
       'javelin-json',
       'javelin-dom',
       'javelin-resource',
       'javelin-routable',
     ),
     '94b7c320' => array(
       'javelin-behavior',
       'javelin-behavior-device',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-magical-init',
       'javelin-vector',
       'javelin-request',
       'javelin-util',
     ),
     '960f6a39' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-uri',
       'javelin-mask',
       'phabricator-drag-and-drop-file-upload',
     ),
     '9a6dd75c' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phuix-form-control-view',
       'phuix-icon-view',
       'javelin-behavior-phabricator-gesture',
     ),
     '9a860428' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-uri',
     ),
     '9bbf3762' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-workflow',
       'javelin-stratcom',
     ),
     '9d9685d6' => array(
       'phui-oi-list-view-css',
     ),
     '9f36c42d' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-vector',
     ),
     'a0b57eb8' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-util',
       'phabricator-keyboard-shortcut',
     ),
     'a3714c76' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-vector',
       'javelin-install',
     ),
     'a3a63478' => array(
       'phui-workcard-view-css',
     ),
     'a464fe03' => array(
       'javelin-behavior',
       'javelin-uri',
       'phabricator-notification',
     ),
     'a6b98425' => array(
       'javelin-behavior',
       'javelin-dom',
       'phortune-credit-card-form',
     ),
     'a6f7a73b' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     'a80d0378' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     'a8beebea' => array(
       'phui-oi-list-view-css',
     ),
     'a8d8459d' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     'a8da01f0' => array(
       'javelin-behavior',
       'javelin-uri',
       'phabricator-keyboard-shortcut',
     ),
     'a9f88de2' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-fx',
       'javelin-util',
     ),
     'ab2f381b' => array(
       'javelin-request',
       'javelin-behavior',
       'javelin-dom',
       'javelin-router',
       'javelin-util',
       'phabricator-busy',
     ),
     'ab9e0a82' => array(
       'javelin-install',
       'javelin-util',
       'javelin-dom',
       'javelin-typeahead-normalizer',
     ),
     'acd29eee' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'phabricator-phtize',
       'phabricator-textareautils',
       'javelin-workflow',
       'javelin-vector',
       'phuix-autocomplete',
       'javelin-mask',
     ),
     'ad54037e' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-util',
     ),
     'b003d4fb' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'phuix-dropdown-menu',
     ),
     'b0b8f86d' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     'b23b49e6' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-request',
       'phabricator-shaped-request',
     ),
     'b2b4fbaf' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-uri',
       'javelin-request',
     ),
     'b3a4b884' => array(
       'javelin-behavior',
       'phabricator-prefab',
     ),
     'b3e7d692' => array(
       'javelin-install',
     ),
     'b49b59d6' => array(
       'javelin-dom',
       'javelin-util',
       'javelin-stratcom',
       'javelin-install',
       'javelin-workflow',
       'javelin-router',
       'javelin-behavior-device',
       'javelin-vector',
       'phabricator-diff-inline',
     ),
     'b59e1e96' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     'b5c256b8' => array(
       'javelin-install',
       'javelin-dom',
     ),
     'b5d57730' => array(
       'javelin-install',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-util',
     ),
     'b6993408' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-json',
       'phabricator-draggable-list',
     ),
     'b95d6f7d' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'phuix-dropdown-menu',
     ),
     'ba158207' => array(
       'javelin-behavior',
       'javelin-uri',
       'phabricator-notification',
     ),
     'bcaccd64' => array(
       'javelin-behavior',
       'javelin-behavior-device',
       'javelin-stratcom',
       'javelin-vector',
       'phui-hovercard',
     ),
     'bdaf4d04' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-request',
     ),
     'bea6e7f4' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-util',
       'javelin-vector',
       'javelin-magical-init',
     ),
     'bee502c8' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-workflow',
       'javelin-quicksand',
       'phabricator-phtize',
       'phabricator-drag-and-drop-file-upload',
       'phabricator-draggable-list',
     ),
     'bf5374ef' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     'bff6884b' => array(
       'javelin-install',
       'javelin-dom',
     ),
     'c19dd9b9' => array(
       'javelin-install',
       'javelin-util',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-vector',
     ),
     'c3e917d9' => array(
       'javelin-behavior',
       'javelin-typeahead-ondemand-source',
       'javelin-typeahead',
       'javelin-dom',
       'javelin-uri',
       'javelin-util',
       'javelin-stratcom',
       'phabricator-prefab',
       'phuix-icon-view',
     ),
     'c420b0b9' => array(
       'javelin-behavior',
       'javelin-behavior-device',
       'javelin-stratcom',
       'phabricator-tooltip',
     ),
     'c587b80f' => array(
       'javelin-install',
     ),
     'c7ccd872' => array(
       'phui-fontkit-css',
     ),
     'c90a04fc' => array(
       'javelin-dom',
       'javelin-dynval',
       'javelin-reactor',
       'javelin-reactornode',
       'javelin-install',
       'javelin-util',
     ),
     'c96502cf' => array(
       'multirow-row-manager',
       'javelin-install',
       'path-typeahead',
       'javelin-dom',
       'javelin-util',
       'phabricator-prefab',
       'phuix-form-control-view',
     ),
     'c989ade3' => array(
       'javelin-install',
       'javelin-util',
       'javelin-stratcom',
     ),
     'caade6f2' => array(
       'javelin-behavior',
       'javelin-request',
       'javelin-stratcom',
       'javelin-vector',
       'javelin-dom',
       'javelin-uri',
       'javelin-behavior-device',
       'phabricator-title',
       'phabricator-favicon',
     ),
     'cd2b9b77' => array(
       'phui-oi-list-view-css',
     ),
     'd057e45a' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-util',
       'phabricator-notification',
       'conpherence-thread-manager',
     ),
     'd0c516d5' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'phuix-dropdown-menu',
       'phuix-action-list-view',
       'phuix-action-view',
       'javelin-workflow',
       'phuix-icon-view',
     ),
     'd254d646' => array(
       'javelin-util',
     ),
     'd4505101' => array(
       'javelin-stratcom',
       'javelin-install',
       'javelin-uri',
       'javelin-util',
     ),
     'd4eecc63' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     'd7a74243' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     'd835b03a' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'phabricator-shaped-request',
     ),
     'db34a142' => array(
       'phui-inline-comment-view-css',
     ),
     'dca75c0e' => array(
       'multirow-row-manager',
       'javelin-install',
       'javelin-util',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-json',
       'phabricator-prefab',
     ),
     'de2e896f' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-typeahead',
       'javelin-typeahead-ondemand-source',
       'javelin-dom',
     ),
     'df1bbd34' => array(
       'javelin-install',
       'javelin-dom',
       'phuix-icon-view',
       'phabricator-prefab',
     ),
     'e1d25dfb' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     'e1d4b11a' => array(
       'javelin-install',
       'javelin-util',
       'javelin-websocket',
       'javelin-leader',
       'javelin-json',
     ),
     'e1ff79b1' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-dom',
     ),
     'e2e0a072' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     'e379b58e' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-vector',
       'javelin-dom',
       'javelin-uri',
     ),
     'e4232876' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-vector',
       'phui-chart-css',
     ),
     'e4cc26b3' => array(
       'javelin-behavior',
       'javelin-dom',
     ),
     'e74b7517' => array(
       'javelin-install',
       'phuix-button-view',
     ),
     'e83d28f3' => array(
       'javelin-dom',
     ),
     'e9581f08' => array(
       'javelin-behavior',
       'javelin-stratcom',
       'javelin-workflow',
       'javelin-dom',
       'phabricator-draggable-list',
     ),
     'e9c95dd4' => array(
       'syntax-default-css',
     ),
     'ec1f3669' => array(
       'javelin-behavior',
       'javelin-util',
       'javelin-stratcom',
       'javelin-dom',
       'javelin-vector',
       'javelin-magical-init',
       'javelin-request',
       'javelin-history',
       'javelin-workflow',
       'javelin-mask',
       'javelin-behavior-device',
       'phabricator-keyboard-shortcut',
     ),
     'ecf4e799' => array(
       'javelin-behavior',
       'javelin-util',
       'javelin-dom',
       'javelin-stratcom',
       'javelin-vector',
     ),
     'edf8a145' => array(
       'javelin-behavior',
       'javelin-uri',
     ),
     'ee0deff8' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-stratcom',
     ),
     'efe49472' => array(
       'javelin-install',
       'javelin-util',
     ),
     'f01586dc' => array(
       'javelin-behavior',
       'javelin-dom',
       'javelin-util',
       'javelin-workflow',
       'javelin-json',
     ),
     'f1ff5494' => array(
       'phui-button-css',
       'phui-button-simple-css',
     ),
     'f50152ad' => array(
       'phui-timeline-view-css',
     ),
     'f6555212' => array(
       'javelin-install',
       'javelin-reactornode',
       'javelin-util',
       'javelin-reactor',
     ),
     'f829edb3' => array(
       'javelin-view',
       'javelin-install',
       'javelin-dom',
     ),
     'fc91ab6c' => array(
       'javelin-behavior',
       'javelin-dom',
       'phortune-credit-card-form',
     ),
     'fe287620' => array(
       'javelin-install',
       'javelin-dom',
       'javelin-view-visitor',
       'javelin-util',
     ),
   ),
   'packages' => array(
     'conpherence.pkg.css' => array(
       'conpherence-durable-column-view',
       'conpherence-menu-css',
       'conpherence-color-css',
       'conpherence-message-pane-css',
       'conpherence-notification-css',
       'conpherence-transaction-css',
       'conpherence-participant-pane-css',
       'conpherence-header-pane-css',
     ),
     'conpherence.pkg.js' => array(
       'javelin-behavior-conpherence-menu',
       'javelin-behavior-conpherence-participant-pane',
       'javelin-behavior-conpherence-pontificate',
       'javelin-behavior-toggle-widget',
     ),
     'core.pkg.css' => array(
       'phabricator-core-css',
       'phabricator-zindex-css',
       'phui-button-css',
       'phui-button-simple-css',
       'phui-theme-css',
       'phabricator-standard-page-view',
       'aphront-dialog-view-css',
       'phui-form-view-css',
       'aphront-panel-view-css',
       'aphront-table-view-css',
       'aphront-tokenizer-control-css',
       'aphront-typeahead-control-css',
       'aphront-list-filter-view-css',
       'application-search-view-css',
       'phabricator-remarkup-css',
       'syntax-highlighting-css',
       'syntax-default-css',
       'phui-pager-css',
       'aphront-tooltip-css',
       'phabricator-flag-css',
       'phui-info-view-css',
       'phabricator-main-menu-view',
       'phabricator-notification-css',
       'phabricator-notification-menu-css',
       'phui-lightbox-css',
       'phui-comment-panel-css',
       'phui-header-view-css',
       'phabricator-nav-view-css',
       'phui-basic-nav-view-css',
       'phui-crumbs-view-css',
       'phui-oi-list-view-css',
       'phui-oi-color-css',
       'phui-oi-big-ui-css',
       'phui-oi-drag-ui-css',
       'phui-oi-simple-ui-css',
       'phui-oi-flush-ui-css',
       'global-drag-and-drop-css',
       'phui-spacing-css',
       'phui-form-css',
       'phui-icon-view-css',
       'phabricator-action-list-view-css',
       'phui-property-list-view-css',
       'phui-tag-view-css',
       'phui-list-view-css',
       'font-fontawesome',
       'font-lato',
       'phui-font-icon-base-css',
       'phui-fontkit-css',
       'phui-box-css',
       'phui-object-box-css',
       'phui-timeline-view-css',
       'phui-two-column-view-css',
       'phui-curtain-view-css',
       'sprite-login-css',
       'sprite-tokens-css',
       'tokens-css',
       'auth-css',
       'phui-status-list-view-css',
       'phui-feed-story-css',
       'phabricator-feed-css',
       'phabricator-dashboard-css',
       'aphront-multi-column-view-css',
     ),
     'core.pkg.js' => array(
       'javelin-util',
       'javelin-install',
       'javelin-event',
       'javelin-stratcom',
       'javelin-behavior',
       'javelin-resource',
       'javelin-request',
       'javelin-vector',
       'javelin-dom',
       'javelin-json',
       'javelin-uri',
       'javelin-workflow',
       'javelin-mask',
       'javelin-typeahead',
       'javelin-typeahead-normalizer',
       'javelin-typeahead-source',
       'javelin-typeahead-preloaded-source',
       'javelin-typeahead-ondemand-source',
       'javelin-tokenizer',
       'javelin-history',
       'javelin-router',
       'javelin-routable',
       'javelin-behavior-aphront-basic-tokenizer',
       'javelin-behavior-workflow',
       'javelin-behavior-aphront-form-disable-on-submit',
       'phabricator-keyboard-shortcut-manager',
       'phabricator-keyboard-shortcut',
       'javelin-behavior-phabricator-keyboard-shortcuts',
       'javelin-behavior-refresh-csrf',
       'javelin-behavior-phabricator-watch-anchor',
       'javelin-behavior-phabricator-autofocus',
       'phuix-dropdown-menu',
       'phuix-action-list-view',
       'phuix-action-view',
       'phuix-icon-view',
       'phabricator-phtize',
       'javelin-behavior-phabricator-oncopy',
       'phabricator-tooltip',
       'javelin-behavior-phabricator-tooltips',
       'phabricator-prefab',
       'javelin-behavior-device',
       'javelin-behavior-toggle-class',
       'javelin-behavior-lightbox-attachments',
       'phabricator-busy',
       'javelin-sound',
       'javelin-aphlict',
       'phabricator-notification',
       'javelin-behavior-aphlict-listen',
       'javelin-behavior-phabricator-search-typeahead',
       'javelin-behavior-aphlict-dropdown',
       'javelin-behavior-history-install',
       'javelin-behavior-phabricator-gesture',
       'javelin-behavior-phabricator-active-nav',
       'javelin-behavior-phabricator-nav',
       'javelin-behavior-phabricator-remarkup-assist',
       'phabricator-textareautils',
       'phabricator-file-upload',
       'javelin-behavior-global-drag-and-drop',
       'javelin-behavior-phabricator-reveal-content',
       'phui-hovercard',
       'javelin-behavior-phui-hovercards',
       'javelin-color',
       'javelin-fx',
       'phabricator-draggable-list',
       'javelin-behavior-phabricator-transaction-list',
       'javelin-behavior-phabricator-show-older-transactions',
       'javelin-behavior-phui-dropdown-menu',
       'javelin-behavior-doorkeeper-tag',
       'phabricator-title',
       'javelin-leader',
       'javelin-websocket',
       'javelin-behavior-dashboard-async-panel',
       'javelin-behavior-dashboard-tab-panel',
       'javelin-quicksand',
       'javelin-behavior-quicksand-blacklist',
       'javelin-behavior-high-security-warning',
       'javelin-behavior-read-only-warning',
       'javelin-scrollbar',
       'javelin-behavior-scrollbar',
       'javelin-behavior-durable-column',
       'conpherence-thread-manager',
       'javelin-behavior-detect-timezone',
       'javelin-behavior-setup-check-https',
       'javelin-behavior-aphlict-status',
       'javelin-behavior-user-menu',
       'phabricator-favicon',
     ),
     'differential.pkg.css' => array(
       'differential-core-view-css',
       'differential-changeset-view-css',
       'differential-revision-history-css',
       'differential-revision-list-css',
       'differential-table-of-contents-css',
       'differential-revision-comment-css',
       'differential-revision-add-comment-css',
       'phabricator-object-selector-css',
       'phabricator-content-source-view-css',
       'inline-comment-summary-css',
       'phui-inline-comment-view-css',
       'phabricator-filetree-view-css',
     ),
     'differential.pkg.js' => array(
       'phabricator-drag-and-drop-file-upload',
       'phabricator-shaped-request',
       'javelin-behavior-differential-feedback-preview',
       'javelin-behavior-differential-populate',
       'javelin-behavior-differential-diff-radios',
       'javelin-behavior-aphront-drag-and-drop-textarea',
       'javelin-behavior-phabricator-object-selector',
       'javelin-behavior-repository-crossreference',
       'javelin-behavior-differential-user-select',
       'javelin-behavior-aphront-more',
       'phabricator-diff-inline',
       'phabricator-diff-changeset',
       'phabricator-diff-changeset-list',
     ),
     'diffusion.pkg.css' => array(
       'diffusion-icons-css',
     ),
     'diffusion.pkg.js' => array(
       'javelin-behavior-diffusion-pull-lastmodified',
       'javelin-behavior-diffusion-commit-graph',
       'javelin-behavior-audit-preview',
     ),
     'maniphest.pkg.css' => array(
       'maniphest-task-summary-css',
     ),
     'maniphest.pkg.js' => array(
       'javelin-behavior-maniphest-batch-selector',
       'javelin-behavior-maniphest-subpriority-editor',
       'javelin-behavior-maniphest-list-editor',
     ),
   ),
 );
diff --git a/src/applications/notification/controller/PhabricatorNotificationPanelController.php b/src/applications/notification/controller/PhabricatorNotificationPanelController.php
index 3e30ead9e7..1e956a60ea 100644
--- a/src/applications/notification/controller/PhabricatorNotificationPanelController.php
+++ b/src/applications/notification/controller/PhabricatorNotificationPanelController.php
@@ -1,83 +1,163 @@
 <?php
 
 final class PhabricatorNotificationPanelController
   extends PhabricatorNotificationController {
 
   public function handleRequest(AphrontRequest $request) {
     $viewer = $request->getViewer();
 
+    $unread_count = $viewer->getUnreadNotificationCount();
+
+    $warning = $this->prunePhantomNotifications($unread_count);
+
     $query = id(new PhabricatorNotificationQuery())
       ->setViewer($viewer)
       ->withUserPHIDs(array($viewer->getPHID()))
       ->setLimit(10);
 
     $stories = $query->execute();
 
     $clear_ui_class = 'phabricator-notification-clear-all';
     $clear_uri = id(new PhutilURI('/notification/clear/'));
     if ($stories) {
       $builder = id(new PhabricatorNotificationBuilder($stories))
         ->setUser($viewer);
 
       $notifications_view = $builder->buildView();
       $content = $notifications_view->render();
       $clear_uri->setQueryParam(
         'chronoKey',
         head($stories)->getChronologicalKey());
     } else {
       $content = phutil_tag_div(
         'phabricator-notification no-notifications',
         pht('You have no notifications.'));
       $clear_ui_class .= ' disabled';
     }
     $clear_ui = javelin_tag(
       'a',
       array(
         'sigil' => 'workflow',
         'href' => (string)$clear_uri,
         'class' => $clear_ui_class,
       ),
       pht('Mark All Read'));
 
     $notifications_link = phutil_tag(
       'a',
       array(
         'href' => '/notification/',
       ),
       pht('Notifications'));
 
     $connection_status = new PhabricatorNotificationStatusView();
 
     $connection_ui = phutil_tag(
       'div',
       array(
         'class' => 'phabricator-notification-footer',
       ),
       $connection_status);
 
     $header = phutil_tag(
       'div',
       array(
         'class' => 'phabricator-notification-header',
       ),
       array(
         $notifications_link,
         $clear_ui,
       ));
 
     $content = hsprintf(
-      '%s%s%s',
+      '%s%s%s%s',
       $header,
+      $warning,
       $content,
       $connection_ui);
 
-    $unread_count = $viewer->getUnreadNotificationCount();
-
     $json = array(
       'content' => $content,
       'number'  => (int)$unread_count,
     );
 
     return id(new AphrontAjaxResponse())->setContent($json);
   }
+
+  private function prunePhantomNotifications($unread_count) {
+    // See T8953. If you have an unread notification about an object you
+    // do not have permission to view, it isn't possible to clear it by
+    // visiting the object. Identify these notifications and mark them as
+    // read.
+
+    $viewer = $this->getViewer();
+
+    if (!$unread_count) {
+      return null;
+    }
+
+    $table = new PhabricatorFeedStoryNotification();
+    $conn = $table->establishConnection('r');
+
+    $rows = queryfx_all(
+      $conn,
+      'SELECT chronologicalKey, primaryObjectPHID FROM %T
+        WHERE userPHID = %s AND hasViewed = 0',
+      $table->getTableName(),
+      $viewer->getPHID());
+    if (!$rows) {
+      return null;
+    }
+
+    $map = array();
+    foreach ($rows as $row) {
+      $map[$row['primaryObjectPHID']][] = $row['chronologicalKey'];
+    }
+
+    $handles = $viewer->loadHandles(array_keys($map));
+    $purge_keys = array();
+    foreach ($handles as $handle) {
+      $phid = $handle->getPHID();
+      if ($handle->isComplete()) {
+        continue;
+      }
+
+      foreach ($map[$phid] as $chronological_key) {
+        $purge_keys[] = $chronological_key;
+      }
+    }
+
+    if (!$purge_keys) {
+      return null;
+    }
+
+    $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
+
+    $conn = $table->establishConnection('w');
+    queryfx(
+      $conn,
+      'UPDATE %T SET hasViewed = 1
+        WHERE userPHID = %s AND chronologicalKey IN (%Ls)',
+      $table->getTableName(),
+      $viewer->getPHID(),
+      $purge_keys);
+
+    PhabricatorUserCache::clearCache(
+      PhabricatorUserNotificationCountCacheType::KEY_COUNT,
+      $viewer->getPHID());
+
+    unset($unguarded);
+
+    return phutil_tag(
+      'div',
+      array(
+        'class' => 'phabricator-notification phabricator-notification-warning',
+      ),
+      pht(
+        '%s notification(s) about objects which no longer exist or which '.
+        'you can no longer see were discarded.',
+        phutil_count($purge_keys)));
+  }
+
+
 }
diff --git a/src/applications/notification/query/PhabricatorNotificationQuery.php b/src/applications/notification/query/PhabricatorNotificationQuery.php
index aa430a2518..b40bdee066 100644
--- a/src/applications/notification/query/PhabricatorNotificationQuery.php
+++ b/src/applications/notification/query/PhabricatorNotificationQuery.php
@@ -1,114 +1,114 @@
 <?php
 
 /**
  * @task config Configuring the Query
  * @task exec   Query Execution
  */
 final class PhabricatorNotificationQuery
   extends PhabricatorCursorPagedPolicyAwareQuery {
 
   private $userPHIDs;
   private $keys;
   private $unread;
 
 
 /* -(  Configuring the Query  )---------------------------------------------- */
 
 
   public function withUserPHIDs(array $user_phids) {
     $this->userPHIDs = $user_phids;
     return $this;
   }
 
   public function withKeys(array $keys) {
     $this->keys = $keys;
     return $this;
   }
 
 
   /**
    * Filter results by read/unread status. Note that `true` means to return
    * only unread notifications, while `false` means to return only //read//
    * notifications. The default is `null`, which returns both.
    *
    * @param mixed True or false to filter results by read status. Null to remove
    *              the filter.
    * @return this
    * @task config
    */
   public function withUnread($unread) {
     $this->unread = $unread;
     return $this;
   }
 
 
 /* -(  Query Execution  )---------------------------------------------------- */
 
 
   protected function loadPage() {
     $story_table = new PhabricatorFeedStoryData();
     $notification_table = new PhabricatorFeedStoryNotification();
 
     $conn = $story_table->establishConnection('r');
 
     $data = queryfx_all(
       $conn,
       'SELECT story.*, notif.hasViewed FROM %T notif
          JOIN %T story ON notif.chronologicalKey = story.chronologicalKey
          %Q
          ORDER BY notif.chronologicalKey DESC
          %Q',
       $notification_table->getTableName(),
       $story_table->getTableName(),
       $this->buildWhereClause($conn),
       $this->buildLimitClause($conn));
 
     $viewed_map = ipull($data, 'hasViewed', 'chronologicalKey');
 
     $stories = PhabricatorFeedStory::loadAllFromRows(
       $data,
       $this->getViewer());
 
     foreach ($stories as $key => $story) {
       $story->setHasViewed($viewed_map[$key]);
     }
 
     return $stories;
   }
 
-  protected function buildWhereClause(AphrontDatabaseConnection $conn_r) {
-    $where = array();
+  protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
+    $where = parent::buildWhereClauseParts($conn);
 
     if ($this->userPHIDs !== null) {
       $where[] = qsprintf(
-        $conn_r,
+        $conn,
         'notif.userPHID IN (%Ls)',
         $this->userPHIDs);
     }
 
     if ($this->unread !== null) {
       $where[] = qsprintf(
-        $conn_r,
+        $conn,
         'notif.hasViewed = %d',
         (int)!$this->unread);
     }
 
     if ($this->keys) {
       $where[] = qsprintf(
-        $conn_r,
+        $conn,
         'notif.chronologicalKey IN (%Ls)',
         $this->keys);
     }
 
-    return $this->formatWhereClause($where);
+    return $where;
   }
 
   protected function getResultCursor($item) {
     return $item->getChronologicalKey();
   }
 
   public function getQueryApplicationClass() {
     return 'PhabricatorNotificationsApplication';
   }
 
 }
diff --git a/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php b/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
index eb74f8debf..d33f042d0b 100644
--- a/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
+++ b/src/infrastructure/internationalization/translation/PhabricatorUSEnglishTranslation.php
@@ -1,1657 +1,1665 @@
 <?php
 
 final class PhabricatorUSEnglishTranslation
   extends PhutilTranslation {
 
   public function getLocaleCode() {
     return 'en_US';
   }
 
   protected function getTranslations() {
     return array(
       'No daemon(s) with id(s) "%s" exist!' => array(
         'No daemon with id %s exists!',
         'No daemons with ids %s exist!',
       ),
       'These %d configuration value(s) are related:' => array(
         'This configuration value is related:',
         'These configuration values are related:',
       ),
       '%s Task(s)' => array('Task', 'Tasks'),
 
       '%s ERROR(S)' => array('ERROR', 'ERRORS'),
       '%d Error(s)' => array('%d Error', '%d Errors'),
       '%d Warning(s)' => array('%d Warning', '%d Warnings'),
       '%d Auto-Fix(es)' => array('%d Auto-Fix', '%d Auto-Fixes'),
       '%d Advice(s)' => array('%d Advice', '%d Pieces of Advice'),
       '%d Detail(s)' => array('%d Detail', '%d Details'),
 
       '(%d line(s))' => array('(%d line)', '(%d lines)'),
 
       '%d line(s)' => array('%d line', '%d lines'),
       '%d path(s)' => array('%d path', '%d paths'),
       '%d diff(s)' => array('%d diff', '%d diffs'),
 
       '%s Answer(s)' => array('%s Answer', '%s Answers'),
       'Show %d Comment(s)' => array('Show %d Comment', 'Show %d Comments'),
 
       '%s DIFF LINK(S)' => array('DIFF LINK', 'DIFF LINKS'),
       'You successfully created %d diff(s).' => array(
         'You successfully created %d diff.',
         'You successfully created %d diffs.',
       ),
       'Diff creation failed; see body for %s error(s).' => array(
         'Diff creation failed; see body for error.',
         'Diff creation failed; see body for errors.',
       ),
 
       'There are %d raw fact(s) in storage.' => array(
         'There is %d raw fact in storage.',
         'There are %d raw facts in storage.',
       ),
 
       'There are %d aggregate fact(s) in storage.' => array(
         'There is %d aggregate fact in storage.',
         'There are %d aggregate facts in storage.',
       ),
 
       '%s Commit(s) Awaiting Audit' => array(
         '%s Commit Awaiting Audit',
         '%s Commits Awaiting Audit',
       ),
 
       '%s Problem Commit(s)' => array(
         '%s Problem Commit',
         '%s Problem Commits',
       ),
 
       '%s Review(s) Blocking Others' => array(
         '%s Review Blocking Others',
         '%s Reviews Blocking Others',
       ),
 
       '%s Review(s) Need Attention' => array(
         '%s Review Needs Attention',
         '%s Reviews Need Attention',
       ),
 
       '%s Review(s) Waiting on Others' => array(
         '%s Review Waiting on Others',
         '%s Reviews Waiting on Others',
       ),
 
       '%s Active Review(s)' => array(
         '%s Active Review',
         '%s Active Reviews',
       ),
 
       '%s Flagged Object(s)' => array(
         '%s Flagged Object',
         '%s Flagged Objects',
       ),
 
       '%s Object(s) Tracked' => array(
         '%s Object Tracked',
         '%s Objects Tracked',
       ),
 
       '%s Assigned Task(s)' => array(
         '%s Assigned Task',
         '%s Assigned Tasks',
       ),
 
       'Show %d Lint Message(s)' => array(
         'Show %d Lint Message',
         'Show %d Lint Messages',
       ),
       'Hide %d Lint Message(s)' => array(
         'Hide %d Lint Message',
         'Hide %d Lint Messages',
       ),
 
       'This is a binary file. It is %s byte(s) in length.' => array(
         'This is a binary file. It is %s byte in length.',
         'This is a binary file. It is %s bytes in length.',
       ),
 
       '%s Action(s) Have No Effect' => array(
         'Action Has No Effect',
         'Actions Have No Effect',
       ),
 
       '%s Action(s) With No Effect' => array(
         'Action With No Effect',
         'Actions With No Effect',
       ),
 
       'Some of your %s action(s) have no effect:' => array(
         'One of your actions has no effect:',
         'Some of your actions have no effect:',
       ),
 
       'Apply remaining %d action(s)?' => array(
         'Apply remaining action?',
         'Apply remaining actions?',
       ),
 
       'Apply %d Other Action(s)' => array(
         'Apply Remaining Action',
         'Apply Remaining Actions',
       ),
 
       'The %s action(s) you are taking have no effect:' => array(
         'The action you are taking has no effect:',
         'The actions you are taking have no effect:',
       ),
 
       '%s edited member(s), added %d: %s; removed %d: %s.' =>
         '%s edited members, added: %3$s; removed: %5$s.',
 
       '%s added %s member(s): %s.' => array(
         array(
           '%s added a member: %3$s.',
           '%s added members: %3$s.',
         ),
       ),
 
       '%s removed %s member(s): %s.' => array(
         array(
           '%s removed a member: %3$s.',
           '%s removed members: %3$s.',
         ),
       ),
 
       '%s edited project(s), added %s: %s; removed %s: %s.' =>
         '%s edited projects, added: %3$s; removed: %5$s.',
 
       '%s added %s project(s): %s.' => array(
         array(
           '%s added a project: %3$s.',
           '%s added projects: %3$s.',
         ),
       ),
 
       '%s removed %s project(s): %s.' => array(
         array(
           '%s removed a project: %3$s.',
           '%s removed projects: %3$s.',
         ),
       ),
 
       '%s merged %s task(s): %s.' => array(
         array(
           '%s merged a task: %3$s.',
           '%s merged tasks: %3$s.',
         ),
       ),
 
       '%s merged %s task(s) %s into %s.' => array(
         array(
           '%s merged %3$s into %4$s.',
           '%s merged tasks %3$s into %4$s.',
         ),
       ),
 
       '%s added %s voting user(s): %s.' => array(
         array(
           '%s added a voting user: %3$s.',
           '%s added voting users: %3$s.',
         ),
       ),
 
       '%s removed %s voting user(s): %s.' => array(
         array(
           '%s removed a voting user: %3$s.',
           '%s removed voting users: %3$s.',
         ),
       ),
 
       '%s added %s subtask(s): %s.' => array(
         array(
           '%s added a subtask: %3$s.',
           '%s added subtasks: %3$s.',
         ),
       ),
 
       '%s added %s parent task(s): %s.' => array(
         array(
           '%s added a parent task: %3$s.',
           '%s added parent tasks: %3$s.',
         ),
       ),
 
       '%s removed %s subtask(s): %s.' => array(
         array(
           '%s removed a subtask: %3$s.',
           '%s removed subtasks: %3$s.',
         ),
       ),
 
       '%s removed %s parent task(s): %s.' => array(
         array(
           '%s removed a parent task: %3$s.',
           '%s removed parent tasks: %3$s.',
         ),
       ),
 
       '%s added %s subtask(s) for %s: %s.' => array(
         array(
           '%s added a subtask for %3$s: %4$s.',
           '%s added subtasks for %3$s: %4$s.',
         ),
       ),
 
       '%s added %s parent task(s) for %s: %s.' => array(
         array(
           '%s added a parent task for %3$s: %4$s.',
           '%s added parent tasks for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s subtask(s) for %s: %s.' => array(
         array(
           '%s removed a subtask for %3$s: %4$s.',
           '%s removed subtasks for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s parent task(s) for %s: %s.' => array(
         array(
           '%s removed a parent task for %3$s: %4$s.',
           '%s removed parent tasks for %3$s: %4$s.',
         ),
       ),
 
       '%s edited subtask(s), added %s: %s; removed %s: %s.' =>
         '%s edited subtasks, added: %3$s; removed: %5$s.',
 
       '%s edited subtask(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited subtasks for %s, added: %4$s; removed: %6$s.',
 
       '%s edited parent task(s), added %s: %s; removed %s: %s.' =>
         '%s edited parent tasks, added: %3$s; removed: %5$s.',
 
       '%s edited parent task(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited parent tasks for %s, added: %4$s; removed: %6$s.',
 
       '%s edited answer(s), added %s: %s; removed %d: %s.' =>
         '%s edited answers, added: %3$s; removed: %5$s.',
 
       '%s added %s answer(s): %s.' => array(
         array(
           '%s added an answer: %3$s.',
           '%s added answers: %3$s.',
         ),
       ),
 
       '%s removed %s answer(s): %s.' => array(
         array(
           '%s removed a answer: %3$s.',
           '%s removed answers: %3$s.',
         ),
       ),
 
      '%s edited question(s), added %s: %s; removed %s: %s.' =>
         '%s edited questions, added: %3$s; removed: %5$s.',
 
       '%s added %s question(s): %s.' => array(
         array(
           '%s added a question: %3$s.',
           '%s added questions: %3$s.',
         ),
       ),
 
       '%s removed %s question(s): %s.' => array(
         array(
           '%s removed a question: %3$s.',
           '%s removed questions: %3$s.',
         ),
       ),
 
       '%s edited mock(s), added %s: %s; removed %s: %s.' =>
         '%s edited mocks, added: %3$s; removed: %5$s.',
 
       '%s added %s mock(s): %s.' => array(
         array(
           '%s added a mock: %3$s.',
           '%s added mocks: %3$s.',
         ),
       ),
 
       '%s removed %s mock(s): %s.' => array(
         array(
           '%s removed a mock: %3$s.',
           '%s removed mocks: %3$s.',
         ),
       ),
 
       '%s added %s task(s): %s.' => array(
         array(
           '%s added a task: %3$s.',
           '%s added tasks: %3$s.',
         ),
       ),
 
       '%s removed %s task(s): %s.' => array(
         array(
           '%s removed a task: %3$s.',
           '%s removed tasks: %3$s.',
         ),
       ),
 
       '%s edited file(s), added %s: %s; removed %s: %s.' =>
         '%s edited files, added: %3$s; removed: %5$s.',
 
       '%s added %s file(s): %s.' => array(
         array(
           '%s added a file: %3$s.',
           '%s added files: %3$s.',
         ),
       ),
 
       '%s removed %s file(s): %s.' => array(
         array(
           '%s removed a file: %3$s.',
           '%s removed files: %3$s.',
         ),
       ),
 
       '%s edited contributor(s), added %s: %s; removed %s: %s.' =>
         '%s edited contributors, added: %3$s; removed: %5$s.',
 
       '%s added %s contributor(s): %s.' => array(
         array(
           '%s added a contributor: %3$s.',
           '%s added contributors: %3$s.',
         ),
       ),
 
       '%s removed %s contributor(s): %s.' => array(
         array(
           '%s removed a contributor: %3$s.',
           '%s removed contributors: %3$s.',
         ),
       ),
 
       '%s edited %s reviewer(s), added %s: %s; removed %s: %s.' =>
         '%s edited reviewers, added: %4$s; removed: %6$s.',
 
       '%s edited %s reviewer(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited reviewers for %3$s, added: %5$s; removed: %7$s.',
 
       '%s added %s reviewer(s): %s.' => array(
         array(
           '%s added a reviewer: %3$s.',
           '%s added reviewers: %3$s.',
         ),
       ),
 
       '%s added %s reviewer(s) for %s: %s.' => array(
         array(
           '%s added a reviewer for %3$s: %4$s.',
           '%s added reviewers for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s reviewer(s): %s.' => array(
         array(
           '%s removed a reviewer: %3$s.',
           '%s removed reviewers: %3$s.',
         ),
       ),
 
       '%s removed %s reviewer(s) for %s: %s.' => array(
         array(
           '%s removed a reviewer for %3$s: %4$s.',
           '%s removed reviewers for %3$s: %4$s.',
         ),
       ),
 
       '%d other(s)' => array(
         '1 other',
         '%d others',
       ),
 
       '%s edited subscriber(s), added %d: %s; removed %d: %s.' =>
         '%s edited subscribers, added: %3$s; removed: %5$s.',
 
       '%s added %d subscriber(s): %s.' => array(
         array(
           '%s added a subscriber: %3$s.',
           '%s added subscribers: %3$s.',
         ),
       ),
 
       '%s removed %d subscriber(s): %s.' => array(
         array(
           '%s removed a subscriber: %3$s.',
           '%s removed subscribers: %3$s.',
         ),
       ),
 
       '%s edited watcher(s), added %s: %s; removed %d: %s.' =>
         '%s edited watchers, added: %3$s; removed: %5$s.',
 
       '%s added %s watcher(s): %s.' => array(
         array(
           '%s added a watcher: %3$s.',
           '%s added watchers: %3$s.',
         ),
       ),
 
       '%s removed %s watcher(s): %s.' => array(
         array(
           '%s removed a watcher: %3$s.',
           '%s removed watchers: %3$s.',
         ),
       ),
 
       '%s edited participant(s), added %d: %s; removed %d: %s.' =>
         '%s edited participants, added: %3$s; removed: %5$s.',
 
       '%s added %d participant(s): %s.' => array(
         array(
           '%s added a participant: %3$s.',
           '%s added participants: %3$s.',
         ),
       ),
 
       '%s removed %d participant(s): %s.' => array(
         array(
           '%s removed a participant: %3$s.',
           '%s removed participants: %3$s.',
         ),
       ),
 
       '%s edited image(s), added %d: %s; removed %d: %s.' =>
         '%s edited images, added: %3$s; removed: %5$s',
 
       '%s added %d image(s): %s.' => array(
         array(
           '%s added an image: %3$s.',
           '%s added images: %3$s.',
         ),
       ),
 
       '%s removed %d image(s): %s.' => array(
         array(
           '%s removed an image: %3$s.',
           '%s removed images: %3$s.',
         ),
       ),
 
       '%s Line(s)' => array(
         '%s Line',
         '%s Lines',
       ),
 
       'Indexing %d object(s) of type %s.' => array(
         'Indexing %d object of type %s.',
         'Indexing %d object of type %s.',
       ),
 
       'Run these %d command(s):' => array(
         'Run this command:',
         'Run these commands:',
       ),
 
       'Install these %d PHP extension(s):' => array(
         'Install this PHP extension:',
         'Install these PHP extensions:',
       ),
 
       'The current Phabricator configuration has these %d value(s):' => array(
         'The current Phabricator configuration has this value:',
         'The current Phabricator configuration has these values:',
       ),
 
       'The current MySQL configuration has these %d value(s):' => array(
         'The current MySQL configuration has this value:',
         'The current MySQL configuration has these values:',
       ),
 
       'You can update these %d value(s) here:' => array(
         'You can update this value here:',
         'You can update these values here:',
       ),
 
       'The current PHP configuration has these %d value(s):' => array(
         'The current PHP configuration has this value:',
         'The current PHP configuration has these values:',
       ),
 
       'To update these %d value(s), edit your PHP configuration file.' => array(
         'To update this %d value, edit your PHP configuration file.',
         'To update these %d values, edit your PHP configuration file.',
       ),
 
       'To update these %d value(s), edit your PHP configuration file, located '.
       'here:' => array(
         'To update this value, edit your PHP configuration file, located '.
         'here:',
         'To update these values, edit your PHP configuration file, located '.
         'here:',
       ),
 
       'PHP also loaded these %s configuration file(s):' => array(
         'PHP also loaded this configuration file:',
         'PHP also loaded these configuration files:',
       ),
 
       '%s added %d inline comment(s).' => array(
         array(
           '%s added an inline comment.',
           '%s added inline comments.',
         ),
       ),
 
       '%s comment(s)' => array('%s comment', '%s comments'),
       '%s rejection(s)' => array('%s rejection', '%s rejections'),
       '%s update(s)' => array('%s update', '%s updates'),
 
       'This configuration value is defined in these %d '.
       'configuration source(s): %s.' => array(
         'This configuration value is defined in this '.
         'configuration source: %2$s.',
         'This configuration value is defined in these %d '.
         'configuration sources: %s.',
       ),
 
       '%s Open Pull Request(s)' => array(
         '%s Open Pull Request',
         '%s Open Pull Requests',
       ),
 
       'Stale (%s day(s))' => array(
         'Stale (%s day)',
         'Stale (%s days)',
       ),
 
       'Old (%s day(s))' => array(
         'Old (%s day)',
         'Old (%s days)',
       ),
 
       '%s Commit(s)' => array(
         '%s Commit',
         '%s Commits',
       ),
 
       '%s attached %d file(s): %s.' => array(
         array(
           '%s attached a file: %3$s.',
           '%s attached files: %3$s.',
         ),
       ),
 
       '%s detached %d file(s): %s.' => array(
         array(
           '%s detached a file: %3$s.',
           '%s detached files: %3$s.',
         ),
       ),
 
       '%s changed file(s), attached %d: %s; detached %d: %s.' =>
         '%s changed files, attached: %3$s; detached: %5$s.',
 
 
       '%s added %s dependencie(s): %s.' => array(
         array(
           '%s added a dependency: %3$s.',
           '%s added dependencies: %3$s.',
         ),
       ),
 
       '%s added %s dependencie(s) for %s: %s.' => array(
         array(
           '%s added a dependency for %3$s: %4$s.',
           '%s added dependencies for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s dependencie(s): %s.' => array(
         array(
           '%s removed a dependency: %3$s.',
           '%s removed dependencies: %3$s.',
         ),
       ),
 
       '%s removed %s dependencie(s) for %s: %s.' => array(
         array(
           '%s removed a dependency for %3$s: %4$s.',
           '%s removed dependencies for %3$s: %4$s.',
         ),
       ),
 
       '%s edited dependencie(s), added %s: %s; removed %s: %s.' => array(
         '%s edited dependencies, added: %3$s; removed: %5$s.',
       ),
 
       '%s edited dependencie(s) for %s, added %s: %s; removed %s: %s.' => array(
         '%s edited dependencies for %s, added: %3$s; removed: %5$s.',
       ),
 
       '%s added %s dependent revision(s): %s.' => array(
         array(
           '%s added a dependent revision: %3$s.',
           '%s added dependent revisions: %3$s.',
         ),
       ),
 
       '%s added %s dependent revision(s) for %s: %s.' => array(
         array(
           '%s added a dependent revision for %3$s: %4$s.',
           '%s added dependent revisions for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s dependent revision(s): %s.' => array(
         array(
           '%s removed a dependent revision: %3$s.',
           '%s removed dependent revisions: %3$s.',
         ),
       ),
 
       '%s removed %s dependent revision(s) for %s: %s.' => array(
         array(
           '%s removed a dependent revision for %3$s: %4$s.',
           '%s removed dependent revisions for %3$s: %4$s.',
         ),
       ),
 
       '%s added %s commit(s): %s.' => array(
         array(
           '%s added a commit: %3$s.',
           '%s added commits: %3$s.',
         ),
       ),
 
       '%s removed %s commit(s): %s.' => array(
         array(
           '%s removed a commit: %3$s.',
           '%s removed commits: %3$s.',
         ),
       ),
 
       '%s edited commit(s), added %s: %s; removed %s: %s.' =>
         '%s edited commits, added %3$s; removed %5$s.',
 
       '%s added %s reverted change(s): %s.' => array(
         array(
           '%s added a reverted change: %3$s.',
           '%s added reverted changes: %3$s.',
         ),
       ),
 
       '%s removed %s reverted change(s): %s.' => array(
         array(
           '%s removed a reverted change: %3$s.',
           '%s removed reverted changes: %3$s.',
         ),
       ),
 
       '%s edited reverted change(s), added %s: %s; removed %s: %s.' =>
         '%s edited reverted changes, added %3$s; removed %5$s.',
 
       '%s added %s reverted change(s) for %s: %s.' => array(
         array(
           '%s added a reverted change for %3$s: %4$s.',
           '%s added reverted changes for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s reverted change(s) for %s: %s.' => array(
         array(
           '%s removed a reverted change for %3$s: %4$s.',
           '%s removed reverted changes for %3$s: %4$s.',
         ),
       ),
 
       '%s edited reverted change(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited reverted changes for %2$s, added %4$s; removed %6$s.',
 
       '%s added %s reverting change(s): %s.' => array(
         array(
           '%s added a reverting change: %3$s.',
           '%s added reverting changes: %3$s.',
         ),
       ),
 
       '%s removed %s reverting change(s): %s.' => array(
         array(
           '%s removed a reverting change: %3$s.',
           '%s removed reverting changes: %3$s.',
         ),
       ),
 
       '%s edited reverting change(s), added %s: %s; removed %s: %s.' =>
         '%s edited reverting changes, added %3$s; removed %5$s.',
 
       '%s added %s reverting change(s) for %s: %s.' => array(
         array(
           '%s added a reverting change for %3$s: %4$s.',
           '%s added reverting changes for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s reverting change(s) for %s: %s.' => array(
         array(
           '%s removed a reverting change for %3$s: %4$s.',
           '%s removed reverting changes for %3$s: %4$s.',
         ),
       ),
 
       '%s edited reverting change(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited reverting changes for %s, added %4$s; removed %6$s.',
 
       '%s changed project member(s), added %d: %s; removed %d: %s.' =>
         '%s changed project members, added %3$s; removed %5$s.',
 
       '%s added %d project member(s): %s.' => array(
         array(
           '%s added a member: %3$s.',
           '%s added members: %3$s.',
         ),
       ),
 
       '%s removed %d project member(s): %s.' => array(
         array(
           '%s removed a member: %3$s.',
           '%s removed members: %3$s.',
         ),
       ),
 
       '%s project hashtag(s) are already used by other projects: %s.' => array(
         'Project hashtag "%2$s" is already used by another project.',
         'Some project hashtags are already used by other projects: %2$s.',
       ),
 
       '%s changed project hashtag(s), added %d: %s; removed %d: %s.' =>
         '%s changed project hashtags, added %3$s; removed %5$s.',
 
       'Hashtags must contain at least one letter or number. %s '.
       'project hashtag(s) are invalid: %s.' => array(
         'Hashtags must contain at least one letter or number. The '.
         'hashtag "%2$s" is not valid.',
         'Hashtags must contain at least one letter or number. These '.
         'hashtags are invalid: %2$s.',
       ),
 
       '%s added %d project hashtag(s): %s.' => array(
         array(
           '%s added a hashtag: %3$s.',
           '%s added hashtags: %3$s.',
         ),
       ),
 
       '%s removed %d project hashtag(s): %s.' => array(
         array(
           '%s removed a hashtag: %3$s.',
           '%s removed hashtags: %3$s.',
         ),
       ),
 
       '%s changed %s hashtag(s), added %d: %s; removed %d: %s.' =>
         '%s changed hashtags for %s, added %4$s; removed %6$s.',
 
       '%s added %d %s hashtag(s): %s.' => array(
         array(
           '%s added a hashtag to %3$s: %4$s.',
           '%s added hashtags to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %d %s hashtag(s): %s.' => array(
         array(
           '%s removed a hashtag from %3$s: %4$s.',
           '%s removed hashtags from %3$s: %4$s.',
         ),
       ),
 
       '%d User(s) Need Approval' => array(
         '%d User Needs Approval',
         '%d Users Need Approval',
       ),
 
       '%s, %s line(s)' => array(
         array(
           '%s, %s line',
           '%s, %s lines',
         ),
       ),
 
       '%s pushed %d commit(s) to %s.' => array(
         array(
           '%s pushed a commit to %3$s.',
           '%s pushed %d commits to %s.',
         ),
       ),
 
       '%s commit(s)' => array(
         '1 commit',
         '%s commits',
       ),
 
       '%s removed %s JIRA issue(s): %s.' => array(
         array(
           '%s removed a JIRA issue: %3$s.',
           '%s removed JIRA issues: %3$s.',
         ),
       ),
 
       '%s added %s JIRA issue(s): %s.' => array(
         array(
           '%s added a JIRA issue: %3$s.',
           '%s added JIRA issues: %3$s.',
         ),
       ),
 
       '%s added %s required legal document(s): %s.' => array(
         array(
           '%s added a required legal document: %3$s.',
           '%s added required legal documents: %3$s.',
         ),
       ),
 
       '%s updated JIRA issue(s): added %s %s; removed %d %s.' =>
         '%s updated JIRA issues: added %3$s; removed %5$s.',
 
       '%s edited %s task(s), added %s: %s; removed %s: %s.' =>
         '%s edited tasks, added %4$s; removed %6$s.',
 
       '%s added %s task(s) to %s: %s.' => array(
         array(
           '%s added a task to %3$s: %4$s.',
           '%s added tasks to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s task(s) from %s: %s.' => array(
         array(
           '%s removed a task from %3$s: %4$s.',
           '%s removed tasks from %3$s: %4$s.',
         ),
       ),
 
       '%s edited %s task(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited tasks for %3$s, added: %5$s; removed %7$s.',
 
       '%s edited %s commit(s), added %s: %s; removed %s: %s.' =>
         '%s edited commits, added %4$s; removed %6$s.',
 
       '%s added %s commit(s) to %s: %s.' => array(
         array(
           '%s added a commit to %3$s: %4$s.',
           '%s added commits to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s commit(s) from %s: %s.' => array(
         array(
           '%s removed a commit from %3$s: %4$s.',
           '%s removed commits from %3$s: %4$s.',
         ),
       ),
 
       '%s edited %s commit(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited commits for %3$s, added: %5$s; removed %7$s.',
 
       '%s added %s revision(s): %s.' => array(
         array(
           '%s added a revision: %3$s.',
           '%s added revisions: %3$s.',
         ),
       ),
 
       '%s removed %s revision(s): %s.' => array(
         array(
           '%s removed a revision: %3$s.',
           '%s removed revisions: %3$s.',
         ),
       ),
 
       '%s edited %s revision(s), added %s: %s; removed %s: %s.' =>
         '%s edited revisions, added %4$s; removed %6$s.',
 
       '%s added %s revision(s) to %s: %s.' => array(
         array(
           '%s added a revision to %3$s: %4$s.',
           '%s added revisions to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s revision(s) from %s: %s.' => array(
         array(
           '%s removed a revision from %3$s: %4$s.',
           '%s removed revisions from %3$s: %4$s.',
         ),
       ),
 
       '%s edited %s revision(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited revisions for %3$s, added: %5$s; removed %7$s.',
 
       '%s edited %s project(s), added %s: %s; removed %s: %s.' =>
         '%s edited projects, added %4$s; removed %6$s.',
 
       '%s added %s project(s) to %s: %s.' => array(
         array(
           '%s added a project to %3$s: %4$s.',
           '%s added projects to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s project(s) from %s: %s.' => array(
         array(
           '%s removed a project from %3$s: %4$s.',
           '%s removed projects from %3$s: %4$s.',
         ),
       ),
 
       '%s edited %s project(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited projects for %3$s, added: %5$s; removed %7$s.',
 
       '%s added %s panel(s): %s.' => array(
         array(
           '%s added a panel: %3$s.',
           '%s added panels: %3$s.',
         ),
       ),
 
       '%s removed %s panel(s): %s.' => array(
         array(
           '%s removed a panel: %3$s.',
           '%s removed panels: %3$s.',
         ),
       ),
 
       '%s edited %s panel(s), added %s: %s; removed %s: %s.' =>
         '%s edited panels, added %4$s; removed %6$s.',
 
       '%s added %s dashboard(s): %s.' => array(
         array(
           '%s added a dashboard: %3$s.',
           '%s added dashboards: %3$s.',
         ),
       ),
 
       '%s removed %s dashboard(s): %s.' => array(
         array(
           '%s removed a dashboard: %3$s.',
           '%s removed dashboards: %3$s.',
         ),
       ),
 
       '%s edited %s dashboard(s), added %s: %s; removed %s: %s.' =>
         '%s edited dashboards, added %4$s; removed %6$s.',
 
       '%s added %s edge(s): %s.' => array(
         array(
           '%s added an edge: %3$s.',
           '%s added edges: %3$s.',
         ),
       ),
 
       '%s added %s edge(s) to %s: %s.' => array(
         array(
           '%s added an edge to %3$s: %4$s.',
           '%s added edges to %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s edge(s): %s.' => array(
         array(
           '%s removed an edge: %3$s.',
           '%s removed edges: %3$s.',
         ),
       ),
 
       '%s removed %s edge(s) from %s: %s.' => array(
         array(
           '%s removed an edge from %3$s: %4$s.',
           '%s removed edges from %3$s: %4$s.',
         ),
       ),
 
       '%s edited edge(s), added %s: %s; removed %s: %s.' =>
         '%s edited edges, added: %3$s; removed: %5$s.',
 
       '%s edited %s edge(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited edges for %3$s, added: %5$s; removed %7$s.',
 
       '%s added %s member(s) for %s: %s.' => array(
         array(
           '%s added a member for %3$s: %4$s.',
           '%s added members for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s member(s) for %s: %s.' => array(
         array(
           '%s removed a member for %3$s: %4$s.',
           '%s removed members for %3$s: %4$s.',
         ),
       ),
 
       '%s edited %s member(s) for %s, added %s: %s; removed %s: %s.' =>
         '%s edited members for %3$s, added: %5$s; removed %7$s.',
 
       '%d related link(s):' => array(
         'Related link:',
         'Related links:',
       ),
 
       'You have %d unpaid invoice(s).' => array(
         'You have an unpaid invoice.',
         'You have unpaid invoices.',
       ),
 
       'The configurations differ in the following %s way(s):' => array(
         'The configurations differ:',
         'The configurations differ in these ways:',
       ),
 
       'Phabricator is configured with an email domain whitelist (in %s), so '.
       'only users with a verified email address at one of these %s '.
       'allowed domain(s) will be able to register an account: %s' => array(
         array(
           'Phabricator is configured with an email domain whitelist (in %s), '.
           'so only users with a verified email address at %3$s will be '.
           'allowed to register an account.',
           'Phabricator is configured with an email domain whitelist (in %s), '.
           'so only users with a verified email address at one of these '.
           'allowed domains will be able to register an account: %3$s',
         ),
       ),
 
       'Show First %d Line(s)' => array(
         'Show First Line',
         'Show First %d Lines',
       ),
 
       "\xE2\x96\xB2 Show %d Line(s)" => array(
         "\xE2\x96\xB2 Show Line",
         "\xE2\x96\xB2 Show %d Lines",
       ),
 
       'Show All %d Line(s)' => array(
         'Show Line',
         'Show All %d Lines',
       ),
 
       "\xE2\x96\xBC Show %d Line(s)" => array(
         "\xE2\x96\xBC Show Line",
         "\xE2\x96\xBC Show %d Lines",
       ),
 
       'Show Last %d Line(s)' => array(
         'Show Last Line',
         'Show Last %d Lines',
       ),
 
       '%s marked %s inline comment(s) as done and %s inline comment(s) as '.
       'not done.' => array(
         array(
           array(
             '%s marked an inline comment as done and an inline comment '.
             'as not done.',
             '%s marked an inline comment as done and %3$s inline comments '.
             'as not done.',
           ),
           array(
             '%s marked %s inline comments as done and an inline comment '.
             'as not done.',
             '%s marked %s inline comments as done and %s inline comments '.
             'as done.',
           ),
         ),
       ),
 
       '%s marked %s inline comment(s) as done.' => array(
         array(
           '%s marked an inline comment as done.',
           '%s marked %s inline comments as done.',
         ),
       ),
 
       '%s marked %s inline comment(s) as not done.' => array(
         array(
           '%s marked an inline comment as not done.',
           '%s marked %s inline comments as not done.',
         ),
       ),
 
       'These %s object(s) will be destroyed forever:' => array(
         'This object will be destroyed forever:',
         'These objects will be destroyed forever:',
       ),
 
       'Are you absolutely certain you want to destroy these %s '.
       'object(s)?' => array(
         'Are you absolutely certain you want to destroy this object?',
         'Are you absolutely certain you want to destroy these objects?',
       ),
 
       '%s added %s owner(s): %s.' => array(
         array(
           '%s added an owner: %3$s.',
           '%s added owners: %3$s.',
         ),
       ),
 
       '%s removed %s owner(s): %s.' => array(
         array(
           '%s removed an owner: %3$s.',
           '%s removed owners: %3$s.',
         ),
       ),
 
       '%s changed %s package owner(s), added %s: %s; removed %s: %s.' => array(
         '%s changed package owners, added: %4$s; removed: %6$s.',
       ),
 
       'Found %s book(s).' => array(
         'Found %s book.',
         'Found %s books.',
       ),
       'Found %s file(s)...' => array(
         'Found %s file...',
         'Found %s files...',
       ),
       'Found %s file(s) in project.' => array(
         'Found %s file in project.',
         'Found %s files in project.',
       ),
       'Found %s unatomized, uncached file(s).' => array(
         'Found %s unatomized, uncached file.',
         'Found %s unatomized, uncached files.',
       ),
       'Found %s file(s) to atomize.' => array(
         'Found %s file to atomize.',
         'Found %s files to atomize.',
       ),
       'Atomizing %s file(s).' => array(
         'Atomizing %s file.',
         'Atomizing %s files.',
       ),
       'Creating %s document(s).' => array(
         'Creating %s document.',
         'Creating %s documents.',
       ),
       'Deleting %s document(s).' => array(
         'Deleting %s document.',
         'Deleting %s documents.',
       ),
       'Found %s obsolete atom(s) in graph.' => array(
         'Found %s obsolete atom in graph.',
         'Found %s obsolete atoms in graph.',
       ),
       'Found %s new atom(s) in graph.' => array(
         'Found %s new atom in graph.',
         'Found %s new atoms in graph.',
       ),
       'This call takes %s parameter(s), but only %s are documented.' => array(
         array(
           'This call takes %s parameter, but only %s is documented.',
           'This call takes %s parameter, but only %s are documented.',
         ),
         array(
           'This call takes %s parameters, but only %s is documented.',
           'This call takes %s parameters, but only %s are documented.',
         ),
       ),
 
       '%s Passed Test(s)' => '%s Passed',
       '%s Failed Test(s)' => '%s Failed',
       '%s Skipped Test(s)' => '%s Skipped',
       '%s Broken Test(s)' => '%s Broken',
       '%s Unsound Test(s)' => '%s Unsound',
       '%s Other Test(s)' => '%s Other',
 
       '%s Bulk Task(s)' => array(
         '%s Task',
         '%s Tasks',
       ),
 
       '%s added %s badge(s) for %s: %s.' => array(
         array(
           '%s added a badge for %s: %3$s.',
           '%s added badges for %s: %3$s.',
         ),
       ),
       '%s added %s badge(s): %s.' => array(
         array(
           '%s added a badge: %3$s.',
           '%s added badges: %3$s.',
         ),
       ),
       '%s awarded %s recipient(s) for %s: %s.' => array(
         array(
           '%s awarded %3$s to %4$s.',
           '%s awarded %3$s to multiple recipients: %4$s.',
         ),
       ),
       '%s awarded %s recipients(s): %s.' => array(
         array(
           '%s awarded a recipient: %3$s.',
           '%s awarded multiple recipients: %3$s.',
         ),
       ),
       '%s edited badge(s) for %s, added %s: %s; revoked %s: %s.' => array(
         array(
           '%s edited badges for %s, added %s: %s; revoked %s: %s.',
           '%s edited badges for %s, added %s: %s; revoked %s: %s.',
         ),
       ),
       '%s edited badge(s), added %s: %s; revoked %s: %s.' => array(
         array(
           '%s edited badges, added %s: %s; revoked %s: %s.',
           '%s edited badges, added %s: %s; revoked %s: %s.',
         ),
       ),
       '%s edited recipient(s) for %s, awarded %s: %s; revoked %s: %s.' => array(
         array(
           '%s edited recipients for %s, awarded %s: %s; revoked %s: %s.',
           '%s edited recipients for %s, awarded %s: %s; revoked %s: %s.',
         ),
       ),
       '%s edited recipient(s), awarded %s: %s; revoked %s: %s.' => array(
         array(
           '%s edited recipients, awarded %s: %s; revoked %s: %s.',
           '%s edited recipients, awarded %s: %s; revoked %s: %s.',
         ),
       ),
       '%s revoked %s badge(s) for %s: %s.' => array(
         array(
           '%s revoked a badge for %3$s: %4$s.',
           '%s revoked multiple badges for %3$s: %4$s.',
         ),
       ),
       '%s revoked %s badge(s): %s.' => array(
         array(
           '%s revoked a badge: %3$s.',
           '%s revoked multiple badges: %3$s.',
         ),
       ),
       '%s revoked %s recipient(s) for %s: %s.' => array(
         array(
           '%s revoked %3$s from %4$s.',
           '%s revoked multiple recipients for %3$s: %4$s.',
         ),
       ),
 
       '%s revoked %s recipients(s): %s.' => array(
         array(
           '%s revoked a recipient: %3$s.',
           '%s revoked multiple recipients: %3$s.',
         ),
       ),
 
       '%s automatically subscribed target(s) were not affected: %s.' => array(
         'An automatically subscribed target was not affected: %2$s.',
         'Automatically subscribed targets were not affected: %2$s.',
       ),
 
       'Declined to resubscribe %s target(s) because they previously '.
       'unsubscribed: %s.' => array(
         'Delined to resubscribe a target because they previously '.
         'unsubscribed: %2$s.',
         'Declined to resubscribe targets because they previously '.
         'unsubscribed: %2$s.',
       ),
 
       '%s target(s) are not subscribed: %s.' => array(
         'A target is not subscribed: %2$s.',
         'Targets are not subscribed: %2$s.',
       ),
 
       '%s target(s) are already subscribed: %s.' => array(
         'A target is already subscribed: %2$s.',
         'Targets are already subscribed: %2$s.',
       ),
 
       'Added %s subscriber(s): %s.' => array(
         'Added a subscriber: %2$s.',
         'Added subscribers: %2$s.',
       ),
 
       'Removed %s subscriber(s): %s.' => array(
         'Removed a subscriber: %2$s.',
         'Removed subscribers: %2$s.',
       ),
 
       'Queued email to be delivered to %s target(s): %s.' => array(
         'Queued email to be delivered to target: %2$s.',
         'Queued email to be delivered to targets: %2$s.',
       ),
 
       'Queued email to be delivered to %s target(s), ignoring their '.
       'notification preferences: %s.' => array(
         'Queued email to be delivered to target, ignoring notification '.
         'preferences: %2$s.',
         'Queued email to be delivered to targets, ignoring notification '.
         'preferences: %2$s.',
       ),
 
       '%s project(s) are not associated: %s.' => array(
         'A project is not associated: %2$s.',
         'Projects are not associated: %2$s.',
       ),
 
       '%s project(s) are already associated: %s.' => array(
         'A project is already associated: %2$s.',
         'Projects are already associated: %2$s.',
       ),
 
       'Added %s project(s): %s.' => array(
         'Added a project: %2$s.',
         'Added projects: %2$s.',
       ),
 
       'Removed %s project(s): %s.' => array(
         'Removed a project: %2$s.',
         'Removed projects: %2$s.',
       ),
 
       'Added %s reviewer(s): %s.' => array(
         'Added a reviewer: %2$s.',
         'Added reviewers: %2$s.',
       ),
 
       'Added %s blocking reviewer(s): %s.' => array(
         'Added a blocking reviewer: %2$s.',
         'Added blocking reviewers: %2$s.',
       ),
 
       'Required %s signature(s): %s.' => array(
         'Required a signature: %2$s.',
         'Required signatures: %2$s.',
       ),
 
       'Started %s build(s): %s.' => array(
         'Started a build: %2$s.',
         'Started builds: %2$s.',
       ),
 
       'Added %s auditor(s): %s.' => array(
         'Added an auditor: %2$s.',
         'Added auditors: %2$s.',
       ),
 
       '%s target(s) do not have permission to see this object: %s.' => array(
         'A target does not have permission to see this object: %2$s.',
         'Targets do not have permission to see this object: %2$s.',
       ),
 
       'This action has no effect on %s target(s): %s.' => array(
         'This action has no effect on a target: %2$s.',
         'This action has no effect on targets: %2$s.',
       ),
 
       'Mail sent in the last %s day(s).' => array(
         'Mail sent in the last day.',
         'Mail sent in the last %s days.',
       ),
 
       '%s Day(s)' => array(
         '%s Day',
         '%s Days',
       ),
       '%s Day(s) Ago' => array(
         '%s Day Ago',
         '%s Days Ago',
       ),
 
       'Setting retention policy for "%s" to %s day(s).' => array(
         array(
           'Setting retention policy for "%s" to one day.',
           'Setting retention policy for "%s" to %s days.',
         ),
       ),
 
       'Waiting %s second(s) for lease to activate.' => array(
         'Waiting a second for lease to activate.',
         'Waiting %s seconds for lease to activate.',
       ),
 
       '%s changed %s automation blueprint(s), added %s: %s; removed %s: %s.' =>
         '%s changed automation blueprints, added: %4$s; removed: %6$s.',
 
       '%s added %s automation blueprint(s): %s.' => array(
         array(
           '%s added an automation blueprint: %3$s.',
           '%s added automation blueprints: %3$s.',
         ),
       ),
 
       '%s removed %s automation blueprint(s): %s.' => array(
         array(
           '%s removed an automation blueprint: %3$s.',
           '%s removed automation blueprints: %3$s.',
         ),
       ),
 
       'WARNING: There are %s unapproved authorization(s)!' => array(
         'WARNING: There is an unapproved authorization!',
         'WARNING: There are unapproved authorizations!',
       ),
 
       'Found %s Open Resource(s)' => array(
         'Found %s Open Resource',
         'Found %s Open Resources',
       ),
 
       '%s Open Resource(s) Remain' => array(
         '%s Open Resource Remain',
         '%s Open Resources Remain',
       ),
 
       'Found %s Blueprint(s)' => array(
         'Found %s Blueprint',
         'Found %s Blueprints',
       ),
 
       '%s Blueprint(s) Can Allocate' => array(
         '%s Blueprint Can Allocate',
         '%s Blueprints Can Allocate',
       ),
 
       '%s Blueprint(s) Enabled' => array(
         '%s Blueprint Enabled',
         '%s Blueprints Enabled',
       ),
 
       '%s Event(s)' => array(
         '%s Event',
         '%s Events',
       ),
 
       '%s Unit(s)' => array(
         '%s Unit',
         '%s Units',
       ),
 
       'QUEUEING TASKS (%s Commit(s)):' => array(
         'QUEUEING TASKS (%s Commit):',
         'QUEUEING TASKS (%s Commits):',
       ),
 
       'Found %s total commit(s); updating...' => array(
         'Found %s total commit; updating...',
         'Found %s total commits; updating...',
       ),
 
       'Not enough process slots to schedule the other %s '.
       'repository(s) for updates yet.' => array(
         'Not enough process slots to schedule the other '.'
         repository for update yet.',
         'Not enough process slots to schedule the other %s '.
         'repositories for updates yet.',
       ),
 
 
       '%s updated %s, added %d: %s.' =>
         '%s updated %s, added: %4$s.',
 
       '%s updated %s, removed %s: %s.' =>
         '%s updated %s, removed: %4$s.',
 
       '%s updated %s, added %s: %s; removed %s: %s.' =>
         '%s updated %s, added: %4$s; removed: %6$s.',
 
       '%s updated %s for %s, added %d: %s.' =>
         '%s updated %s for %s, added: %5$s.',
 
       '%s updated %s for %s, removed %s: %s.' =>
         '%s updated %s for %s, removed: %5$s.',
 
       '%s updated %s for %s, added %s: %s; removed %s: %s.' =>
         '%s updated %s for %s, added: %5$s; removed; %7$s.',
 
       'Permanently destroyed %s object(s).' => array(
         'Permanently destroyed %s object.',
         'Permanently destroyed %s objects.',
       ),
 
       '%s added %s watcher(s) for %s: %s.' => array(
         array(
           '%s added a watcher for %3$s: %4$s.',
           '%s added watchers for %3$s: %4$s.',
         ),
       ),
 
       '%s removed %s watcher(s) for %s: %s.' => array(
         array(
           '%s removed a watcher for %3$s: %4$s.',
           '%s removed watchers for %3$s: %4$s.',
         ),
       ),
 
       '%s awarded this badge to %s recipient(s): %s.' => array(
         array(
           '%s awarded this badge to recipient: %3$s.',
           '%s awarded this badge to recipients: %3$s.',
         ),
       ),
 
       '%s revoked this badge from %s recipient(s): %s.' => array(
         array(
           '%s revoked this badge from recipient: %3$s.',
           '%s revoked this badge from recipients: %3$s.',
         ),
       ),
 
       '%s awarded %s to %s recipient(s): %s.' => array(
         array(
           array(
             '%s awarded %s to recipient: %4$s.',
             '%s awarded %s to recipients: %4$s.',
           ),
         ),
       ),
 
       '%s revoked %s from %s recipient(s): %s.' => array(
         array(
           array(
             '%s revoked %s from recipient: %4$s.',
             '%s revoked %s from recipients: %4$s.',
           ),
         ),
       ),
 
       '%s invited %s attendee(s): %s.' =>
         '%s invited: %3$s.',
 
       '%s uninvited %s attendee(s): %s.' =>
         '%s uninvited: %3$s.',
 
       '%s invited %s attendee(s): %s; uninvited %s attendee(s): %s.' =>
         '%s invited: %3$s; uninvited: %5$s.',
 
       '%s invited %s attendee(s) to %s: %s.' =>
         '%s added invites for %3$s: %4$s.',
 
       '%s uninvited %s attendee(s) to %s: %s.' =>
         '%s removed invites for %3$s: %4$s.',
 
       '%s updated the invite list for %s, invited %s: %s; uninvited %s: %s.' =>
         '%s updated the invite list for %s, invited: %4$s; uninvited: %6$s.',
 
       'Restart %s build(s)?' => array(
         'Restart %s build?',
         'Restart %s builds?',
       ),
 
       '%s is starting in %s minute(s), at %s.' => array(
         array(
           '%s is starting in one minute, at %3$s.',
           '%s is starting in %s minutes, at %s.',
         ),
       ),
 
       '%s added %s auditor(s): %s.' => array(
         array(
           '%s added an auditor: %3$s.',
           '%s added auditors: %3$s.',
         ),
       ),
 
       '%s removed %s auditor(s): %s.' => array(
         array(
           '%s removed an auditor: %3$s.',
           '%s removed auditors: %3$s.',
         ),
       ),
 
       '%s edited %s auditor(s), removed %s: %s; added %s: %s.' => array(
         array(
           '%s edited auditors, removed: %4$s; added: %6$s.',
         ),
       ),
 
       '%s accepted this revision as %s reviewer(s): %s.' =>
         '%s accepted this revision as: %3$s.',
 
       '%s added %s merchant manager(s): %s.' => array(
         array(
           '%s added a merchant manager: %3$s.',
           '%s added merchant managers: %3$s.',
         ),
       ),
 
       '%s removed %s merchant manager(s): %s.' => array(
         array(
           '%s removed a merchant manager: %3$s.',
           '%s removed merchant managers: %3$s.',
         ),
       ),
 
       '%s added %s account manager(s): %s.' => array(
         array(
           '%s added an account manager: %3$s.',
           '%s added account managers: %3$s.',
         ),
       ),
 
       '%s removed %s account manager(s): %s.' => array(
         array(
           '%s removed an account manager: %3$s.',
           '%s removed account managers: %3$s.',
         ),
       ),
 
       'You are about to apply a bulk edit which will affect '.
       '%s object(s).' => array(
         'You are about to apply a bulk edit to a single object.',
         'You are about to apply a bulk edit which will affect '.
         '%s objects.',
       ),
 
       'Destroyed %s credential(s) of type "%s".' => array(
         'Destroyed one credential of type "%2$s".',
         'Destroyed %s credentials of type "%s".',
       ),
 
+      '%s notification(s) about objects which no longer exist or which '.
+      'you can no longer see were discarded.' => array(
+        'One notification about an object which no longer exists or which '.
+        'you can no longer see was discarded.',
+        '%s notifications about objects which no longer exist or which '.
+        'you can no longer see were discarded.',
+      ),
+
     );
   }
 
 }
diff --git a/webroot/rsrc/css/application/base/notification-menu.css b/webroot/rsrc/css/application/base/notification-menu.css
index 8e2391d57c..8db2436891 100644
--- a/webroot/rsrc/css/application/base/notification-menu.css
+++ b/webroot/rsrc/css/application/base/notification-menu.css
@@ -1,160 +1,164 @@
 /**
  * @provides phabricator-notification-menu-css
  */
 
 .phabricator-notification-menu {
   background: {$page.content};
   font-size: {$smallerfontsize};
   line-height: 18px;
   word-wrap: break-word;
   overflow-y: auto;
   box-shadow: {$dropshadow};
   border: 1px solid {$lightgreyborder};
   border-radius: 3px;
 }
 
 .phabricator-notification {
   padding: 8px 12px;
 }
 
 .phabricator-notification-menu-loading {
   text-align: center;
   padding: 10px 0;
   color: {$lightgreytext};
 }
 
 .device-desktop .phabricator-notification-menu,
 .device-tablet .phabricator-notification-menu {
   position: absolute;
   width: 360px;
   top: 42px;
 }
 
 .device-phone .phabricator-notification-menu {
   border-bottom: 1px solid {$thinblueborder};
   width: 94%;
   max-width: 390px;
   top: 42px !important;
   left: 3% !important;
   position: absolute;
 }
 
 .phabricator-notification-list.pm {
   padding: 0;
 }
 
 .phabricator-notification-list .phabricator-notification {
   padding: 8px;
 }
 
 .phabricator-notification-menu .phabricator-notification {
   cursor: pointer;
 }
 
 .device-desktop .phabricator-notification-menu .phabricator-notification:hover {
   background: {$lightgreybackground};
 }
 
 .device-desktop .phabricator-notification-menu
  .phabricator-notification-unread.phabricator-notification:hover {
   background: {$hoverselectedblue};
 }
 
 .phabricator-notification + .phabricator-notification {
   border-top: 1px solid {$thinblueborder};
 }
 
 .no-notifications {
   color: {$lightgreytext};
 }
 
+.phabricator-notification-warning {
+  background: {$sh-yellowbackground};
+}
+
 .phabricator-notification-list .phabricator-notification-unread,
 .phabricator-notification-menu .phabricator-notification-unread {
   background: {$hoverblue};
 }
 
 .phabricator-notification-read {
   color: {$lightgreytext};
 }
 
 .phabricator-notification-foot {
   color: {$lightgreytext};
   font-size: {$smallestfontsize};
   line-height: 18px;
   position: relative;
 }
 
 .phabricator-notification-unread .phabricator-notification-foot {
   padding-left: 10px;
 }
 
 .phabricator-notification-foot .phabricator-notification-status {
   display: none;
 }
 
 .phabricator-notification-unread .phabricator-notification-foot
   .phabricator-notification-status {
     font-size: 7px;
-    color: {$lightgreytext};
+    color: {$lightbluetext};
     position: absolute;
     display: inline-block;
     top: 6px;
     left: 0;
 }
 
 .phabricator-notification-header {
   font-weight: bold;
   padding: 10px 12px;
   font-size: {$smallerfontsize};
   border-bottom: 1px solid {$thinblueborder};
 }
 
 .phabricator-notification-header a {
   color: {$darkgreytext};
 }
 
 .phabricator-notification-header a:hover {
   text-decoration: underline;
 }
 
 .phabricator-notification-header .phabricator-notification-clear-all {
   color: {$anchor};
   float: right;
   font-weight: normal;
 }
 
 .phabricator-notification-footer {
   background: {$greybackground};
   border-top: 1px solid {$thinblueborder};
   border-bottom-left-radius: 3px;
   border-bottom-right-radius: 3px;
   padding: 8px;
   font-size: {$smallerfontsize};
   color: {$darkgreytext};
 }
 
 .phabricator-notification-footer a {
   color: {$darkgreytext};
 }
 
 .phabricator-notification-footer a:hover {
   text-decoration: underline;
 }
 
 .phabricator-notification-menu .aphlict-connection-status {
   color: {$lightgreytext};
 }
 
 .aphlict-connection-status {
   position: relative;
 }
 
 .aphlict-connection-status .phui-icon-view {
   font-size: 9px;
   position: absolute;
   top: 4px;
 }
 
 .aphlict-connection-status .connection-status-text {
   margin-left: 12px;
 }