From 22cb8f5d08a6244b6638c2f9f23ac773559b056d Mon Sep 17 00:00:00 2001 From: vrana Date: Fri, 5 Oct 2012 16:06:16 -0700 Subject: [PATCH] Require canonical numbers in routes Summary: D03646 works, I don't want it to work. Theoretically, it can cause us some troubles if we use this string in JS number context where 030 is 24. Test Plan: D03646, D3646 Reviewers: epriestley, edward Reviewed By: edward CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D3646 --- .../application/PhabricatorApplicationAudit.php | 2 +- .../PhabricatorApplicationCountdown.php | 6 +++--- .../PhabricatorApplicationDaemons.php | 9 +++++---- .../PhabricatorApplicationDifferential.php | 17 +++++++++-------- .../application/PhabricatorApplicationFiles.php | 4 ++-- .../application/PhabricatorApplicationFlags.php | 2 +- .../PhabricatorApplicationHerald.php | 8 ++++---- .../application/PhabricatorApplicationMacro.php | 4 ++-- .../PhabricatorApplicationMailingLists.php | 3 ++- .../PhabricatorApplicationManiphest.php | 13 +++++++------ .../PhabricatorApplicationMetaMTA.php | 2 +- .../PhabricatorApplicationOwners.php | 6 +++--- .../application/PhabricatorApplicationPaste.php | 4 ++-- .../PhabricatorApplicationPeople.php | 2 +- .../PhabricatorApplicationPhriction.php | 6 +++--- .../PhabricatorApplicationPonder.php | 2 +- .../PhabricatorApplicationProject.php | 9 +++++---- .../PhabricatorApplicationRepositories.php | 8 ++++---- .../PhabricatorApplicationSlowvote.php | 2 +- .../PhabricatorApplicationPHPAST.php | 10 +++++----- 20 files changed, 62 insertions(+), 57 deletions(-) diff --git a/src/applications/audit/application/PhabricatorApplicationAudit.php b/src/applications/audit/application/PhabricatorApplicationAudit.php index a229f0d990..af7b6a28a7 100644 --- a/src/applications/audit/application/PhabricatorApplicationAudit.php +++ b/src/applications/audit/application/PhabricatorApplicationAudit.php @@ -37,7 +37,7 @@ final class PhabricatorApplicationAudit extends PhabricatorApplication { 'view/(?P[^/]+)/(?:(?P[^/]+)/)?' => 'PhabricatorAuditListController', 'addcomment/' => 'PhabricatorAuditAddCommentController', - 'preview/(?P\d+)/' => 'PhabricatorAuditPreviewController', + 'preview/(?P[1-9]\d*)/' => 'PhabricatorAuditPreviewController', ), ); } diff --git a/src/applications/countdown/application/PhabricatorApplicationCountdown.php b/src/applications/countdown/application/PhabricatorApplicationCountdown.php index f7e9868086..39434f5a34 100644 --- a/src/applications/countdown/application/PhabricatorApplicationCountdown.php +++ b/src/applications/countdown/application/PhabricatorApplicationCountdown.php @@ -47,11 +47,11 @@ final class PhabricatorApplicationCountdown extends PhabricatorApplication { '/countdown/' => array( '' => 'PhabricatorCountdownListController', - '(?P\d+)/' + '(?P[1-9]\d*)/' => 'PhabricatorCountdownViewController', - 'edit/(?:(?P\d+)/)?' + 'edit/(?:(?P[1-9]\d*)/)?' => 'PhabricatorCountdownEditController', - 'delete/(?P\d+)/' + 'delete/(?P[1-9]\d*)/' => 'PhabricatorCountdownDeleteController' ), ); diff --git a/src/applications/daemon/application/PhabricatorApplicationDaemons.php b/src/applications/daemon/application/PhabricatorApplicationDaemons.php index 841afe1463..0421546a5f 100644 --- a/src/applications/daemon/application/PhabricatorApplicationDaemons.php +++ b/src/applications/daemon/application/PhabricatorApplicationDaemons.php @@ -45,16 +45,17 @@ final class PhabricatorApplicationDaemons extends PhabricatorApplication { public function getRoutes() { return array( '/daemon/' => array( - 'task/(?P\d+)/' => 'PhabricatorWorkerTaskDetailController', - 'task/(?P\d+)/(?P[^/]+)/' + 'task/(?P[1-9]\d*)/' => 'PhabricatorWorkerTaskDetailController', + 'task/(?P[1-9]\d*)/(?P[^/]+)/' => 'PhabricatorWorkerTaskUpdateController', 'log/' => array( '(?Prunning/)?' => 'PhabricatorDaemonLogListController', 'combined/' => 'PhabricatorDaemonCombinedLogController', - '(?P\d+)/' => 'PhabricatorDaemonLogViewController', + '(?P[1-9]\d*)/' => 'PhabricatorDaemonLogViewController', ), 'timeline/' => 'PhabricatorDaemonTimelineConsoleController', - 'timeline/(?P\d+)/' => 'PhabricatorDaemonTimelineEventController', + 'timeline/(?P[1-9]\d*)/' + => 'PhabricatorDaemonTimelineEventController', '' => 'PhabricatorDaemonConsoleController', ), ); diff --git a/src/applications/differential/application/PhabricatorApplicationDifferential.php b/src/applications/differential/application/PhabricatorApplicationDifferential.php index b327153aa8..66ec206f39 100644 --- a/src/applications/differential/application/PhabricatorApplicationDifferential.php +++ b/src/applications/differential/application/PhabricatorApplicationDifferential.php @@ -38,29 +38,30 @@ final class PhabricatorApplicationDifferential extends PhabricatorApplication { public function getRoutes() { return array( - '/D(?P\d+)' => 'DifferentialRevisionViewController', + '/D(?P[1-9]\d*)' => 'DifferentialRevisionViewController', '/differential/' => array( '' => 'DifferentialRevisionListController', 'filter/(?P\w+)/(?:(?P[\w\.-_]+)/)?' => 'DifferentialRevisionListController', 'stats/(?P\w+)/' => 'DifferentialRevisionStatsController', 'diff/' => array( - '(?P\d+)/' => 'DifferentialDiffViewController', + '(?P[1-9]\d*)/' => 'DifferentialDiffViewController', 'create/' => 'DifferentialDiffCreateController', ), 'changeset/' => 'DifferentialChangesetViewController', - 'revision/edit/(?:(?P\d+)/)?' + 'revision/edit/(?:(?P[1-9]\d*)/)?' => 'DifferentialRevisionEditController', 'comment/' => array( - 'preview/(?P\d+)/' => 'DifferentialCommentPreviewController', + 'preview/(?P[1-9]\d*)/' => 'DifferentialCommentPreviewController', 'save/' => 'DifferentialCommentSaveController', 'inline/' => array( - 'preview/(?P\d+)/' => - 'DifferentialInlineCommentPreviewController', - 'edit/(?P\d+)/' => 'DifferentialInlineCommentEditController', + 'preview/(?P[1-9]\d*)/' + => 'DifferentialInlineCommentPreviewController', + 'edit/(?P[1-9]\d*)/' + => 'DifferentialInlineCommentEditController', ), ), - 'subscribe/(?Padd|rem)/(?P\d+)/' + 'subscribe/(?Padd|rem)/(?P[1-9]\d*)/' => 'DifferentialSubscribeController', ), ); diff --git a/src/applications/files/application/PhabricatorApplicationFiles.php b/src/applications/files/application/PhabricatorApplicationFiles.php index 77e3fdbffc..b26ccad3a2 100644 --- a/src/applications/files/application/PhabricatorApplicationFiles.php +++ b/src/applications/files/application/PhabricatorApplicationFiles.php @@ -44,13 +44,13 @@ final class PhabricatorApplicationFiles extends PhabricatorApplication { public function getRoutes() { return array( - '/F(?P\d+)' => 'PhabricatorFileShortcutController', + '/F(?P[1-9]\d*)' => 'PhabricatorFileShortcutController', '/file/' => array( '' => 'PhabricatorFileListController', 'filter/(?P\w+)/' => 'PhabricatorFileListController', 'upload/' => 'PhabricatorFileUploadController', 'dropupload/' => 'PhabricatorFileDropUploadController', - 'delete/(?P\d+)/' => 'PhabricatorFileDeleteController', + 'delete/(?P[1-9]\d*)/' => 'PhabricatorFileDeleteController', 'info/(?P[^/]+)/' => 'PhabricatorFileInfoController', 'data/(?P[^/]+)/(?P[^/]+)/.*' => 'PhabricatorFileDataController', diff --git a/src/applications/flag/application/PhabricatorApplicationFlags.php b/src/applications/flag/application/PhabricatorApplicationFlags.php index 63471a62f9..6a9e95e3fb 100644 --- a/src/applications/flag/application/PhabricatorApplicationFlags.php +++ b/src/applications/flag/application/PhabricatorApplicationFlags.php @@ -65,7 +65,7 @@ final class PhabricatorApplicationFlags extends PhabricatorApplication { '' => 'PhabricatorFlagListController', 'view/(?P[^/]+)/' => 'PhabricatorFlagListController', 'edit/(?P[^/]+)/' => 'PhabricatorFlagEditController', - 'delete/(?P\d+)/' => 'PhabricatorFlagDeleteController', + 'delete/(?P[1-9]\d*)/' => 'PhabricatorFlagDeleteController', ), ); } diff --git a/src/applications/herald/application/PhabricatorApplicationHerald.php b/src/applications/herald/application/PhabricatorApplicationHerald.php index 41dea836fc..6cd96b8f92 100644 --- a/src/applications/herald/application/PhabricatorApplicationHerald.php +++ b/src/applications/herald/application/PhabricatorApplicationHerald.php @@ -54,12 +54,12 @@ final class PhabricatorApplicationHerald extends PhabricatorApplication { => 'HeraldHomeController', 'new/(?:(?P[^/]+)/(?:(?P[^/]+)/)?)?' => 'HeraldNewController', - 'rule/(?:(?P\d+)/)?' => 'HeraldRuleController', - 'history/(?:(?P\d+)/)?' => 'HeraldRuleEditHistoryController', - 'delete/(?P\d+)/' => 'HeraldDeleteController', + 'rule/(?:(?P[1-9]\d*)/)?' => 'HeraldRuleController', + 'history/(?:(?P[1-9]\d*)/)?' => 'HeraldRuleEditHistoryController', + 'delete/(?P[1-9]\d*)/' => 'HeraldDeleteController', 'test/' => 'HeraldTestConsoleController', 'transcript/' => 'HeraldTranscriptListController', - 'transcript/(?P\d+)/(?:(?P\w+)/)?' + 'transcript/(?P[1-9]\d*)/(?:(?P\w+)/)?' => 'HeraldTranscriptController', ), ); diff --git a/src/applications/macro/application/PhabricatorApplicationMacro.php b/src/applications/macro/application/PhabricatorApplicationMacro.php index 343ac047db..3d9f5c0407 100644 --- a/src/applications/macro/application/PhabricatorApplicationMacro.php +++ b/src/applications/macro/application/PhabricatorApplicationMacro.php @@ -42,8 +42,8 @@ final class PhabricatorApplicationMacro extends PhabricatorApplication { return array( '/macro/' => array( '' => 'PhabricatorMacroListController', - 'edit/(?:(?P\d+)/)?' => 'PhabricatorMacroEditController', - 'delete/(?P\d+)/' => 'PhabricatorMacroDeleteController', + 'edit/(?:(?P[1-9]\d*)/)?' => 'PhabricatorMacroEditController', + 'delete/(?P[1-9]\d*)/' => 'PhabricatorMacroDeleteController', ), ); } diff --git a/src/applications/mailinglists/application/PhabricatorApplicationMailingLists.php b/src/applications/mailinglists/application/PhabricatorApplicationMailingLists.php index 129e5fdeaf..2262ffffa8 100644 --- a/src/applications/mailinglists/application/PhabricatorApplicationMailingLists.php +++ b/src/applications/mailinglists/application/PhabricatorApplicationMailingLists.php @@ -42,7 +42,8 @@ final class PhabricatorApplicationMailingLists extends PhabricatorApplication { return array( '/mailinglists/' => array( '' => 'PhabricatorMailingListsListController', - 'edit/(?:(?P\d+)/)?' => 'PhabricatorMailingListsEditController', + 'edit/(?:(?P[1-9]\d*)/)?' + => 'PhabricatorMailingListsEditController', ), ); } diff --git a/src/applications/maniphest/application/PhabricatorApplicationManiphest.php b/src/applications/maniphest/application/PhabricatorApplicationManiphest.php index c225044ce2..f4d40a709d 100644 --- a/src/applications/maniphest/application/PhabricatorApplicationManiphest.php +++ b/src/applications/maniphest/application/PhabricatorApplicationManiphest.php @@ -50,7 +50,7 @@ final class PhabricatorApplicationManiphest extends PhabricatorApplication { public function getRoutes() { return array( - '/T(?P\d+)' => 'ManiphestTaskDetailController', + '/T(?P[1-9]\d*)' => 'ManiphestTaskDetailController', '/maniphest/' => array( '' => 'ManiphestTaskListController', 'view/(?P\w+)/' => 'ManiphestTaskListController', @@ -58,22 +58,23 @@ final class PhabricatorApplicationManiphest extends PhabricatorApplication { 'batch/' => 'ManiphestBatchEditController', 'task/' => array( 'create/' => 'ManiphestTaskEditController', - 'edit/(?P\d+)/' => 'ManiphestTaskEditController', - 'descriptionchange/(?:(?P\d+)/)?' => + 'edit/(?P[1-9]\d*)/' => 'ManiphestTaskEditController', + 'descriptionchange/(?:(?P[1-9]\d*)/)?' => 'ManiphestTaskDescriptionChangeController', 'descriptionpreview/' => 'ManiphestTaskDescriptionPreviewController', ), 'transaction/' => array( 'save/' => 'ManiphestTransactionSaveController', - 'preview/(?P\d+)/' => 'ManiphestTransactionPreviewController', + 'preview/(?P[1-9]\d*)/' + => 'ManiphestTransactionPreviewController', ), 'export/(?P[^/]+)/' => 'ManiphestExportController', 'subpriority/' => 'ManiphestSubpriorityController', 'custom/' => array( '' => 'ManiphestSavedQueryListController', - 'edit/(?:(?P\d+)/)?' => 'ManiphestSavedQueryEditController', - 'delete/(?P\d+)/' => 'ManiphestSavedQueryDeleteController', + 'edit/(?:(?P[1-9]\d*)/)?' => 'ManiphestSavedQueryEditController', + 'delete/(?P[1-9]\d*)/' => 'ManiphestSavedQueryDeleteController', ), ), ); diff --git a/src/applications/metamta/application/PhabricatorApplicationMetaMTA.php b/src/applications/metamta/application/PhabricatorApplicationMetaMTA.php index 130a5f89ef..ae27f27ca6 100644 --- a/src/applications/metamta/application/PhabricatorApplicationMetaMTA.php +++ b/src/applications/metamta/application/PhabricatorApplicationMetaMTA.php @@ -43,7 +43,7 @@ final class PhabricatorApplicationMetaMTA extends PhabricatorApplication { $this->getBaseURI() => array( '' => 'PhabricatorMetaMTAListController', 'send/' => 'PhabricatorMetaMTASendController', - 'view/(?P\d+)/' => 'PhabricatorMetaMTAViewController', + 'view/(?P[1-9]\d*)/' => 'PhabricatorMetaMTAViewController', 'receive/' => 'PhabricatorMetaMTAReceiveController', 'received/' => 'PhabricatorMetaMTAReceivedListController', 'sendgrid/' => 'PhabricatorMetaMTASendGridReceiveController', diff --git a/src/applications/owners/application/PhabricatorApplicationOwners.php b/src/applications/owners/application/PhabricatorApplicationOwners.php index bf4a40ce70..8568c56f91 100644 --- a/src/applications/owners/application/PhabricatorApplicationOwners.php +++ b/src/applications/owners/application/PhabricatorApplicationOwners.php @@ -51,10 +51,10 @@ final class PhabricatorApplicationOwners extends PhabricatorApplication { '/owners/' => array( '' => 'PhabricatorOwnersListController', 'view/(?P[^/]+)/' => 'PhabricatorOwnersListController', - 'edit/(?P\d+)/' => 'PhabricatorOwnersEditController', + 'edit/(?P[1-9]\d*)/' => 'PhabricatorOwnersEditController', 'new/' => 'PhabricatorOwnersEditController', - 'package/(?P\d+)/' => 'PhabricatorOwnersDetailController', - 'delete/(?P\d+)/' => 'PhabricatorOwnersDeleteController', + 'package/(?P[1-9]\d*)/' => 'PhabricatorOwnersDetailController', + 'delete/(?P[1-9]\d*)/' => 'PhabricatorOwnersDeleteController', ), ); } diff --git a/src/applications/paste/application/PhabricatorApplicationPaste.php b/src/applications/paste/application/PhabricatorApplicationPaste.php index 655d78608d..0a83fdcc21 100644 --- a/src/applications/paste/application/PhabricatorApplicationPaste.php +++ b/src/applications/paste/application/PhabricatorApplicationPaste.php @@ -36,10 +36,10 @@ final class PhabricatorApplicationPaste extends PhabricatorApplication { public function getRoutes() { return array( - '/P(?P\d+)' => 'PhabricatorPasteViewController', + '/P(?P[1-9]\d*)' => 'PhabricatorPasteViewController', '/paste/' => array( '' => 'PhabricatorPasteEditController', - 'edit/(?P\d+)/' => 'PhabricatorPasteEditController', + 'edit/(?P[1-9]\d*)/' => 'PhabricatorPasteEditController', 'filter/(?P\w+)/' => 'PhabricatorPasteListController', ), ); diff --git a/src/applications/people/application/PhabricatorApplicationPeople.php b/src/applications/people/application/PhabricatorApplicationPeople.php index 91facadc36..7b9820c9ba 100644 --- a/src/applications/people/application/PhabricatorApplicationPeople.php +++ b/src/applications/people/application/PhabricatorApplicationPeople.php @@ -47,7 +47,7 @@ final class PhabricatorApplicationPeople extends PhabricatorApplication { '/people/' => array( '' => 'PhabricatorPeopleListController', 'logs/' => 'PhabricatorPeopleLogsController', - 'edit/(?:(?P\d+)/(?:(?P\w+)/)?)?' + 'edit/(?:(?P[1-9]\d*)/(?:(?P\w+)/)?)?' => 'PhabricatorPeopleEditController', 'ldap/' => 'PhabricatorPeopleLdapController', ), diff --git a/src/applications/phriction/application/PhabricatorApplicationPhriction.php b/src/applications/phriction/application/PhabricatorApplicationPhriction.php index 7bfe8febdc..3f546f7fef 100644 --- a/src/applications/phriction/application/PhabricatorApplicationPhriction.php +++ b/src/applications/phriction/application/PhabricatorApplicationPhriction.php @@ -48,11 +48,11 @@ final class PhabricatorApplicationPhriction extends PhabricatorApplication { 'history(?P/)' => 'PhrictionHistoryController', 'history/(?P.+/)' => 'PhrictionHistoryController', - 'edit/(?:(?P\d+)/)?' => 'PhrictionEditController', - 'delete/(?P\d+)/' => 'PhrictionDeleteController', + 'edit/(?:(?P[1-9]\d*)/)?' => 'PhrictionEditController', + 'delete/(?P[1-9]\d*)/' => 'PhrictionDeleteController', 'preview/' => 'PhrictionDocumentPreviewController', - 'diff/(?P\d+)/' => 'PhrictionDiffController', + 'diff/(?P[1-9]\d*)/' => 'PhrictionDiffController', ), ); } diff --git a/src/applications/ponder/application/PhabricatorApplicationPonder.php b/src/applications/ponder/application/PhabricatorApplicationPonder.php index 16e64059ac..e362213301 100644 --- a/src/applications/ponder/application/PhabricatorApplicationPonder.php +++ b/src/applications/ponder/application/PhabricatorApplicationPonder.php @@ -49,7 +49,7 @@ final class PhabricatorApplicationPonder extends PhabricatorApplication { public function getroutes() { return array( - '/Q(?P\d+)' => 'PonderQuestionViewController', + '/Q(?P[1-9]\d*)' => 'PonderQuestionViewController', '/ponder/' => array( '(?Pfeed/)?' => 'PonderFeedController', '(?Pquestions)/' => 'PonderFeedController', diff --git a/src/applications/project/application/PhabricatorApplicationProject.php b/src/applications/project/application/PhabricatorApplicationProject.php index 49594817d0..f673e20ada 100644 --- a/src/applications/project/application/PhabricatorApplicationProject.php +++ b/src/applications/project/application/PhabricatorApplicationProject.php @@ -47,12 +47,13 @@ final class PhabricatorApplicationProject extends PhabricatorApplication { '/project/' => array( '' => 'PhabricatorProjectListController', 'filter/(?P[^/]+)/' => 'PhabricatorProjectListController', - 'edit/(?P\d+)/' => 'PhabricatorProjectProfileEditController', - 'members/(?P\d+)/' => 'PhabricatorProjectMembersEditController', - 'view/(?P\d+)/(?:(?P\w+)/)?' + 'edit/(?P[1-9]\d*)/' => 'PhabricatorProjectProfileEditController', + 'members/(?P[1-9]\d*)/' + => 'PhabricatorProjectMembersEditController', + 'view/(?P[1-9]\d*)/(?:(?P\w+)/)?' => 'PhabricatorProjectProfileController', 'create/' => 'PhabricatorProjectCreateController', - 'update/(?P\d+)/(?P[^/]+)/' + 'update/(?P[1-9]\d*)/(?P[^/]+)/' => 'PhabricatorProjectUpdateController', ), ); diff --git a/src/applications/repository/application/PhabricatorApplicationRepositories.php b/src/applications/repository/application/PhabricatorApplicationRepositories.php index 8b1a61c48d..022fd0ed87 100644 --- a/src/applications/repository/application/PhabricatorApplicationRepositories.php +++ b/src/applications/repository/application/PhabricatorApplicationRepositories.php @@ -43,12 +43,12 @@ final class PhabricatorApplicationRepositories extends PhabricatorApplication { '/repository/' => array( '' => 'PhabricatorRepositoryListController', 'create/' => 'PhabricatorRepositoryCreateController', - 'edit/(?P\d+)/(?:(?P\w+)/)?' => + 'edit/(?P[1-9]\d*)/(?:(?P\w+)/)?' => 'PhabricatorRepositoryEditController', - 'delete/(?P\d+)/' => 'PhabricatorRepositoryDeleteController', - 'project/edit/(?P\d+)/' => + 'delete/(?P[1-9]\d*)/' => 'PhabricatorRepositoryDeleteController', + 'project/edit/(?P[1-9]\d*)/' => 'PhabricatorRepositoryArcanistProjectEditController', - 'project/delete/(?P\d+)/' => + 'project/delete/(?P[1-9]\d*)/' => 'PhabricatorRepositoryArcanistProjectDeleteController', ), ); diff --git a/src/applications/slowvote/application/PhabricatorApplicationSlowvote.php b/src/applications/slowvote/application/PhabricatorApplicationSlowvote.php index 7424b156af..b95d802228 100644 --- a/src/applications/slowvote/application/PhabricatorApplicationSlowvote.php +++ b/src/applications/slowvote/application/PhabricatorApplicationSlowvote.php @@ -48,7 +48,7 @@ final class PhabricatorApplicationSlowvote extends PhabricatorApplication { public function getRoutes() { return array( - '/V(?P\d+)' => 'PhabricatorSlowvotePollController', + '/V(?P[1-9]\d*)' => 'PhabricatorSlowvotePollController', '/vote/' => array( '(?:view/(?P\w+)/)?' => 'PhabricatorSlowvoteListController', 'create/' => 'PhabricatorSlowvoteCreateController', diff --git a/src/applications/xhpastview/application/PhabricatorApplicationPHPAST.php b/src/applications/xhpastview/application/PhabricatorApplicationPHPAST.php index 4e8bd1c920..9ec07b403b 100644 --- a/src/applications/xhpastview/application/PhabricatorApplicationPHPAST.php +++ b/src/applications/xhpastview/application/PhabricatorApplicationPHPAST.php @@ -42,15 +42,15 @@ final class PhabricatorApplicationPHPAST extends PhabricatorApplication { return array( '/xhpast/' => array( '' => 'PhabricatorXHPASTViewRunController', - 'view/(?P\d+)/' + 'view/(?P[1-9]\d*)/' => 'PhabricatorXHPASTViewFrameController', - 'frameset/(?P\d+)/' + 'frameset/(?P[1-9]\d*)/' => 'PhabricatorXHPASTViewFramesetController', - 'input/(?P\d+)/' + 'input/(?P[1-9]\d*)/' => 'PhabricatorXHPASTViewInputController', - 'tree/(?P\d+)/' + 'tree/(?P[1-9]\d*)/' => 'PhabricatorXHPASTViewTreeController', - 'stream/(?P\d+)/' + 'stream/(?P[1-9]\d*)/' => 'PhabricatorXHPASTViewStreamController', ), );