r17473 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r17472‎ | r17473 | r17474 >
Date:05:37, 7 November 2006
Author:simetrical
Status:old
Tags:
Comment:
Add some documentation to OutputPage.php and specify public/private for most of its member functions (practically all public anyway). And replace one gratuitous use of strcmp with good old ===.
Modified paths:
  • /trunk/phase3/includes/OutputPage.php (modified) (history)

Diff [purge]

Index: trunk/phase3/includes/OutputPage.php
@@ -54,12 +54,18 @@
5555 $this->mNewSectionLink = false;
5656 }
5757
58 - function redirect( $url, $responsecode = '302' ) {
 58+ public function redirect( $url, $responsecode = '302' ) {
5959 # Strip newlines as a paranoia check for header injection in PHP<5.1.2
6060 $this->mRedirect = str_replace( "\n", '', $url );
6161 $this->mRedirectCode = $responsecode;
6262 }
6363
 64+ /**
 65+ * Set the HTTP status code to send with the output.
 66+ *
 67+ * @param int $statusCode
 68+ * @return nothing
 69+ */
6470 function setStatusCode( $statusCode ) { $this->mStatusCode = $statusCode; }
6571
6672 # To add an http-equiv meta tag, precede the name with "http:"
@@ -88,8 +94,9 @@
8995 /**
9096 * checkLastModified tells the client to use the client-cached page if
9197 * possible. If sucessful, the OutputPage is disabled so that
92 - * any future call to OutputPage->output() have no effect. The method
93 - * returns true iff cache-ok headers was sent.
 98+ * any future call to OutputPage->output() have no effect.
 99+ *
 100+ * @return bool True iff cache-ok headers was sent.
94101 */
95102 function checkLastModified ( $timestamp ) {
96103 global $wgCachePages, $wgCacheEpoch, $wgUser, $wgRequest;
@@ -165,9 +172,9 @@
166173 }
167174 }
168175
169 - function setRobotpolicy( $str ) { $this->mRobotpolicy = $str; }
170 - function setHTMLTitle( $name ) {$this->mHTMLtitle = $name; }
171 - function setPageTitle( $name ) {
 176+ public function setRobotpolicy( $str ) { $this->mRobotpolicy = $str; }
 177+ public function setHTMLTitle( $name ) {$this->mHTMLtitle = $name; }
 178+ public function setPageTitle( $name ) {
172179 global $action, $wgContLang;
173180 $name = $wgContLang->convert($name, true);
174181 $this->mPagetitle = $name;
@@ -180,50 +187,50 @@
181188
182189 $this->setHTMLTitle( wfMsg( 'pagetitle', $name ) );
183190 }
184 - function getHTMLTitle() { return $this->mHTMLtitle; }
185 - function getPageTitle() { return $this->mPagetitle; }
186 - function setSubtitle( $str ) { $this->mSubtitle = /*$this->parse(*/$str/*)*/; } // @bug 2514
187 - function getSubtitle() { return $this->mSubtitle; }
188 - function isArticle() { return $this->mIsarticle; }
189 - function setPrintable() { $this->mPrintable = true; }
190 - function isPrintable() { return $this->mPrintable; }
191 - function setSyndicated( $show = true ) { $this->mShowFeedLinks = $show; }
192 - function isSyndicated() { return $this->mShowFeedLinks; }
193 - function setOnloadHandler( $js ) { $this->mOnloadHandler = $js; }
194 - function getOnloadHandler() { return $this->mOnloadHandler; }
195 - function disable() { $this->mDoNothing = true; }
 191+ public function getHTMLTitle() { return $this->mHTMLtitle; }
 192+ public function getPageTitle() { return $this->mPagetitle; }
 193+ public function setSubtitle( $str ) { $this->mSubtitle = /*$this->parse(*/$str/*)*/; } // @bug 2514
 194+ public function getSubtitle() { return $this->mSubtitle; }
 195+ public function isArticle() { return $this->mIsarticle; }
 196+ public function setPrintable() { $this->mPrintable = true; }
 197+ public function isPrintable() { return $this->mPrintable; }
 198+ public function setSyndicated( $show = true ) { $this->mShowFeedLinks = $show; }
 199+ public function isSyndicated() { return $this->mShowFeedLinks; }
 200+ public function setOnloadHandler( $js ) { $this->mOnloadHandler = $js; }
 201+ public function getOnloadHandler() { return $this->mOnloadHandler; }
 202+ public function disable() { $this->mDoNothing = true; }
196203
197 - function setArticleRelated( $v ) {
 204+ public function setArticleRelated( $v ) {
198205 $this->mIsArticleRelated = $v;
199206 if ( !$v ) {
200207 $this->mIsarticle = false;
201208 }
202209 }
203 - function setArticleFlag( $v ) {
 210+ public function setArticleFlag( $v ) {
204211 $this->mIsarticle = $v;
205212 if ( $v ) {
206213 $this->mIsArticleRelated = $v;
207214 }
208215 }
209216
210 - function isArticleRelated() { return $this->mIsArticleRelated; }
 217+ public function isArticleRelated() { return $this->mIsArticleRelated; }
211218
212 - function getLanguageLinks() { return $this->mLanguageLinks; }
213 - function addLanguageLinks($newLinkArray) {
 219+ public function getLanguageLinks() { return $this->mLanguageLinks; }
 220+ public function addLanguageLinks($newLinkArray) {
214221 $this->mLanguageLinks += $newLinkArray;
215222 }
216 - function setLanguageLinks($newLinkArray) {
 223+ public function setLanguageLinks($newLinkArray) {
217224 $this->mLanguageLinks = $newLinkArray;
218225 }
219226
220 - function getCategoryLinks() {
 227+ public function getCategoryLinks() {
221228 return $this->mCategoryLinks;
222229 }
223230
224231 /**
225232 * Add an array of categories, with names in the keys
226233 */
227 - function addCategoryLinks($categories) {
 234+ public function addCategoryLinks($categories) {
228235 global $wgUser, $wgContLang;
229236
230237 if ( !is_array( $categories ) ) {
@@ -243,25 +250,25 @@
244251 }
245252 }
246253
247 - function setCategoryLinks($categories) {
 254+ public function setCategoryLinks($categories) {
248255 $this->mCategoryLinks = array();
249256 $this->addCategoryLinks($categories);
250257 }
251258
252 - function suppressQuickbar() { $this->mSuppressQuickbar = true; }
253 - function isQuickbarSuppressed() { return $this->mSuppressQuickbar; }
 259+ public function suppressQuickbar() { $this->mSuppressQuickbar = true; }
 260+ public function isQuickbarSuppressed() { return $this->mSuppressQuickbar; }
254261
255 - function addHTML( $text ) { $this->mBodytext .= $text; }
256 - function clearHTML() { $this->mBodytext = ''; }
257 - function getHTML() { return $this->mBodytext; }
258 - function debug( $text ) { $this->mDebugtext .= $text; }
 262+ public function addHTML( $text ) { $this->mBodytext .= $text; }
 263+ public function clearHTML() { $this->mBodytext = ''; }
 264+ public function getHTML() { return $this->mBodytext; }
 265+ public function debug( $text ) { $this->mDebugtext .= $text; }
259266
260267 /* @deprecated */
261 - function setParserOptions( $options ) {
 268+ public function setParserOptions( $options ) {
262269 return $this->parserOptions( $options );
263270 }
264271
265 - function parserOptions( $options = null ) {
 272+ public function parserOptions( $options = null ) {
266273 if ( !$this->mParserOptions ) {
267274 $this->mParserOptions = new ParserOptions;
268275 }
@@ -274,7 +281,7 @@
275282 * @param mixed $revid an integer, or NULL
276283 * @return mixed previous value
277284 */
278 - function setRevisionId( $revid ) {
 285+ public function setRevisionId( $revid ) {
279286 $val = is_null( $revid ) ? null : intval( $revid );
280287 return wfSetVar( $this->mRevisionId, $val );
281288 }
@@ -283,17 +290,20 @@
284291 * Convert wikitext to HTML and add it to the buffer
285292 * Default assumes that the current page title will
286293 * be used.
 294+ *
 295+ * @param string $text
 296+ * @param bool $linestart
287297 */
288 - function addWikiText( $text, $linestart = true ) {
 298+ public function addWikiText( $text, $linestart = true ) {
289299 global $wgTitle;
290300 $this->addWikiTextTitle($text, $wgTitle, $linestart);
291301 }
292302
293 - function addWikiTextWithTitle($text, &$title, $linestart = true) {
 303+ public function addWikiTextWithTitle($text, &$title, $linestart = true) {
294304 $this->addWikiTextTitle($text, $title, $linestart);
295305 }
296306
297 - function addWikiTextTitle($text, &$title, $linestart) {
 307+ private function addWikiTextTitle($text, &$title, $linestart) {
298308 global $wgParser;
299309 $fname = 'OutputPage:addWikiTextTitle';
300310 wfProfileIn($fname);
@@ -304,7 +314,11 @@
305315 wfProfileOut($fname);
306316 }
307317
308 - function addParserOutputNoText( &$parserOutput ) {
 318+ /**
 319+ * @todo document
 320+ * @param ParserOutput object &$parserOutput
 321+ */
 322+ public function addParserOutputNoText( &$parserOutput ) {
309323 $this->mLanguageLinks += $parserOutput->getLanguageLinks();
310324 $this->addCategoryLinks( $parserOutput->getCategories() );
311325 $this->mNewSectionLink = $parserOutput->getNewSection();
@@ -322,6 +336,10 @@
323337 wfRunHooks( 'OutputPageParserOutput', array( &$this, $parserOutput ) );
324338 }
325339
 340+ /**
 341+ * @todo document
 342+ * @param ParserOutput &$parserOutput
 343+ */
326344 function addParserOutput( &$parserOutput ) {
327345 $this->addParserOutputNoText( $parserOutput );
328346 $text = $parserOutput->getText();
@@ -331,9 +349,13 @@
332350
333351 /**
334352 * Add wikitext to the buffer, assuming that this is the primary text for a page view
335 - * Saves the text into the parser cache if possible
 353+ * Saves the text into the parser cache if possible.
 354+ *
 355+ * @param string $text
 356+ * @param Article $article
 357+ * @param bool $cache
336358 */
337 - function addPrimaryWikiText( $text, $article, $cache = true ) {
 359+ public function addPrimaryWikiText( $text, $article, $cache = true ) {
338360 global $wgParser, $wgUser;
339361
340362 $popts = $this->parserOptions();
@@ -351,8 +373,11 @@
352374
353375 /**
354376 * For anything that isn't primary text or interface message
 377+ *
 378+ * @param string $text
 379+ * @param bool $linestart Is this the start of a line?
355380 */
356 - function addSecondaryWikiText( $text, $linestart = true ) {
 381+ public function addSecondaryWikiText( $text, $linestart = true ) {
357382 global $wgTitle;
358383 $popts = $this->parserOptions();
359384 $popts->setTidy(true);
@@ -363,9 +388,10 @@
364389
365390 /**
366391 * Add the output of a QuickTemplate to the output buffer
 392+ *
367393 * @param QuickTemplate $template
368394 */
369 - function addTemplate( &$template ) {
 395+ public function addTemplate( &$template ) {
370396 ob_start();
371397 $template->execute();
372398 $this->addHTML( ob_get_contents() );
@@ -374,8 +400,12 @@
375401
376402 /**
377403 * Parse wikitext and return the HTML.
 404+ *
 405+ * @param string $text
 406+ * @param bool $linestart Is this the start of a line?
 407+ * @param bool $interface ??
378408 */
379 - function parse( $text, $linestart = true, $interface = false ) {
 409+ public function parse( $text, $linestart = true, $interface = false ) {
380410 global $wgParser, $wgTitle;
381411 $popts = $this->parserOptions();
382412 if ( $interface) { $popts->setInterfaceMessage(true); }
@@ -386,12 +416,12 @@
387417 }
388418
389419 /**
390 - * @param $article
391 - * @param $user
 420+ * @param Article $article
 421+ * @param User $user
392422 *
393 - * @return bool
 423+ * @return bool True if successful, else false.
394424 */
395 - function tryParserCache( &$article, $user ) {
 425+ public function tryParserCache( &$article, $user ) {
396426 $parserCache =& ParserCache::singleton();
397427 $parserOutput = $parserCache->get( $article, $user );
398428 if ( $parserOutput !== false ) {
@@ -403,18 +433,17 @@
404434 }
405435
406436 /**
407 - * Set the maximum cache time on the Squid in seconds
408 - * @param $maxage
 437+ * @param int $maxage Maximum cache time on the Squid, in seconds.
409438 */
410 - function setSquidMaxage( $maxage ) {
 439+ public function setSquidMaxage( $maxage ) {
411440 $this->mSquidMaxage = $maxage;
412441 }
413442
414443 /**
415444 * Use enableClientCache(false) to force it to send nocache headers
416 - * @param $state
 445+ * @param $state ??
417446 */
418 - function enableClientCache( $state ) {
 447+ public function enableClientCache( $state ) {
419448 return wfSetVar( $this->mEnableClientCache, $state );
420449 }
421450
@@ -424,7 +453,7 @@
425454 && $wgRequest->getText('uselang', false) === false;
426455 }
427456
428 - function sendCacheControl() {
 457+ public function sendCacheControl() {
429458 global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgRequest;
430459 $fname = 'OutputPage::sendCacheControl';
431460
@@ -480,7 +509,7 @@
481510 * Finally, all the text has been munged and accumulated into
482511 * the object, let's actually output it:
483512 */
484 - function output() {
 513+ public function output() {
485514 global $wgUser, $wgOutputEncoding, $wgRequest;
486515 global $wgContLanguageCode, $wgDebugRedirects, $wgMimeType;
487516 global $wgJsMimeType, $wgStylePath, $wgUseAjax, $wgAjaxSearch, $wgScriptPath, $wgServer;
@@ -605,7 +634,11 @@
606635 wfProfileOut( $fname );
607636 }
608637
609 - function out( $ins ) {
 638+ /**
 639+ * @todo document
 640+ * @param string $ins
 641+ */
 642+ public function out( $ins ) {
610643 global $wgInputEncoding, $wgOutputEncoding, $wgContLang;
611644 if ( 0 == strcmp( $wgInputEncoding, $wgOutputEncoding ) ) {
612645 $outs = $ins;
@@ -616,7 +649,10 @@
617650 print $outs;
618651 }
619652
620 - function setEncodings() {
 653+ /**
 654+ * @todo document
 655+ */
 656+ public function setEncodings() {
621657 global $wgInputEncoding, $wgOutputEncoding;
622658 global $wgUser, $wgContLang;
623659
@@ -630,19 +666,20 @@
631667 }
632668
633669 /**
634 - * Returns a HTML comment with the elapsed time since request.
635 - * This method has no side effects.
636 - * Use wfReportTime() instead.
 670+ * Deprecated, use wfReportTime() instead.
637671 * @return string
638672 * @deprecated
639673 */
640 - function reportTime() {
 674+ public function reportTime() {
641675 $time = wfReportTime();
642676 return $time;
643677 }
644678
645679 /**
646 - * Produce a "user is blocked" page
 680+ * Produce a "user is blocked" page.
 681+ *
 682+ * @param bool $return Whether to have a "return to $wgTitle" message or not.
 683+ * @return nothing
647684 */
648685 function blockedPage( $return = true ) {
649686 global $wgUser, $wgContLang, $wgTitle;
@@ -672,9 +709,13 @@
673710 }
674711
675712 /**
676 - * Note: these arguments are keys into wfMsg(), not text!
 713+ * Outputs a pretty page to explain why the request exploded.
 714+ *
 715+ * @param string $title Message key for page title.
 716+ * @param string $msg Message key for page text.
 717+ * @return nothing
677718 */
678 - function showErrorPage( $title, $msg ) {
 719+ public function showErrorPage( $title, $msg ) {
679720 global $wgTitle;
680721
681722 $this->mDebugtext .= 'Original title: ' .
@@ -692,7 +733,7 @@
693734 }
694735
695736 /** @obsolete */
696 - function errorpage( $title, $msg ) {
 737+ public function errorpage( $title, $msg ) {
697738 throw new ErrorPageError( $title, $msg );
698739 }
699740
@@ -702,7 +743,7 @@
703744 *
704745 * @param mixed $version The version of MediaWiki needed to use the page
705746 */
706 - function versionRequired( $version ) {
 747+ public function versionRequired( $version ) {
707748 $this->setPageTitle( wfMsg( 'versionrequired', $version ) );
708749 $this->setHTMLTitle( wfMsg( 'versionrequired', $version ) );
709750 $this->setRobotpolicy( 'noindex,nofollow' );
@@ -715,9 +756,10 @@
716757
717758 /**
718759 * Display an error page noting that a given permission bit is required.
 760+ *
719761 * @param string $permission key required
720762 */
721 - function permissionRequired( $permission ) {
 763+ public function permissionRequired( $permission ) {
722764 global $wgGroupPermissions, $wgUser;
723765
724766 $this->setPageTitle( wfMsg( 'badaccess' ) );
@@ -755,23 +797,25 @@
756798 }
757799
758800 /**
 801+ * Use permissionRequired.
759802 * @deprecated
760803 */
761 - function sysopRequired() {
 804+ public function sysopRequired() {
762805 throw new MWException( "Call to deprecated OutputPage::sysopRequired() method\n" );
763806 }
764807
765808 /**
 809+ * Use permissionRequired.
766810 * @deprecated
767811 */
768 - function developerRequired() {
 812+ public function developerRequired() {
769813 throw new MWException( "Call to deprecated OutputPage::developerRequired() method\n" );
770814 }
771815
772816 /**
773817 * Produce the stock "please login to use the wiki" page
774818 */
775 - function loginToUse() {
 819+ public function loginToUse() {
776820 global $wgUser, $wgTitle, $wgContLang;
777821
778822 if( $wgUser->isLoggedIn() ) {
@@ -799,11 +843,16 @@
800844 }
801845
802846 /** @obsolete */
803 - function databaseError( $fname, $sql, $error, $errno ) {
 847+ public function databaseError( $fname, $sql, $error, $errno ) {
804848 throw new MWException( "OutputPage::databaseError is obsolete\n" );
805849 }
806850
807 - function readOnlyPage( $source = null, $protected = false ) {
 851+ /**
 852+ * @todo document
 853+ * @param bool $protected Is the reason the page can't be reached because it's protected?
 854+ * @param mixed $source
 855+ */
 856+ public function readOnlyPage( $source = null, $protected = false ) {
808857 global $wgUser, $wgReadOnlyFile, $wgReadOnly, $wgTitle;
809858
810859 $this->setRobotpolicy( 'noindex,nofollow' );
@@ -813,7 +862,7 @@
814863 $skin = $wgUser->getSkin();
815864 $this->setPageTitle( wfMsg( 'viewsource' ) );
816865 $this->setSubtitle( wfMsg( 'viewsourcefor', $skin->makeKnownLinkObj( $wgTitle ) ) );
817 -
 866+
818867 # Determine if protection is due to the page being a system message
819868 # and show an appropriate explanation
820869 if( $wgTitle->getNamespace() == NS_MEDIAWIKI && !$wgUser->isAllowed( 'editinterface' ) ) {
@@ -832,7 +881,7 @@
833882 }
834883
835884 if( is_string( $source ) ) {
836 - if( strcmp( $source, '' ) == 0 ) {
 885+ if( $source === '' ) {
837886 global $wgTitle;
838887 if ( $wgTitle->getNamespace() == NS_MEDIAWIKI ) {
839888 $source = wfMsgWeirdKey ( $wgTitle->getText() );
@@ -852,36 +901,36 @@
853902 }
854903
855904 /** @obsolete */
856 - function fatalError( $message ) {
 905+ public function fatalError( $message ) {
857906 throw new FatalError( $message );
858907 }
859908
860909 /** @obsolete */
861 - function unexpectedValueError( $name, $val ) {
 910+ public function unexpectedValueError( $name, $val ) {
862911 throw new FatalError( wfMsg( 'unexpected', $name, $val ) );
863912 }
864913
865914 /** @obsolete */
866 - function fileCopyError( $old, $new ) {
 915+ public function fileCopyError( $old, $new ) {
867916 throw new FatalError( wfMsg( 'filecopyerror', $old, $new ) );
868917 }
869918
870919 /** @obsolete */
871 - function fileRenameError( $old, $new ) {
 920+ public function fileRenameError( $old, $new ) {
872921 throw new FatalError( wfMsg( 'filerenameerror', $old, $new ) );
873922 }
874923
875924 /** @obsolete */
876 - function fileDeleteError( $name ) {
 925+ public function fileDeleteError( $name ) {
877926 throw new FatalError( wfMsg( 'filedeleteerror', $name ) );
878927 }
879928
880929 /** @obsolete */
881 - function fileNotFoundError( $name ) {
 930+ public function fileNotFoundError( $name ) {
882931 throw new FatalError( wfMsg( 'filenotfound', $name ) );
883932 }
884933
885 - function showFatalError( $message ) {
 934+ public function showFatalError( $message ) {
886935 $this->setPageTitle( wfMsg( "internalerror" ) );
887936 $this->setRobotpolicy( "noindex,nofollow" );
888937 $this->setArticleRelated( false );
@@ -890,23 +939,23 @@
891940 $this->mBodytext = $message;
892941 }
893942
894 - function showUnexpectedValueError( $name, $val ) {
 943+ public function showUnexpectedValueError( $name, $val ) {
895944 $this->showFatalError( wfMsg( 'unexpected', $name, $val ) );
896945 }
897946
898 - function showFileCopyError( $old, $new ) {
 947+ public function showFileCopyError( $old, $new ) {
899948 $this->showFatalError( wfMsg( 'filecopyerror', $old, $new ) );
900949 }
901950
902 - function showFileRenameError( $old, $new ) {
 951+ public function showFileRenameError( $old, $new ) {
903952 $this->showFatalError( wfMsg( 'filerenameerror', $old, $new ) );
904953 }
905954
906 - function showFileDeleteError( $name ) {
 955+ public function showFileDeleteError( $name ) {
907956 $this->showFatalError( wfMsg( 'filedeleteerror', $name ) );
908957 }
909958
910 - function showFileNotFoundError( $name ) {
 959+ public function showFileNotFoundError( $name ) {
911960 $this->showFatalError( wfMsg( 'filenotfound', $name ) );
912961 }
913962
@@ -915,7 +964,7 @@
916965 * @param $auto automatically redirect the user after 10 seconds
917966 * @param $returnto page title to return to. Default is Main Page.
918967 */
919 - function returnToMain( $auto = true, $returnto = NULL ) {
 968+ public function returnToMain( $auto = true, $returnto = NULL ) {
920969 global $wgUser, $wgOut, $wgRequest;
921970
922971 if ( $returnto == NULL ) {
@@ -948,8 +997,10 @@
949998 /**
950999 * This function takes the title (first item of mGoodLinks), categories, existing and broken links for the page
9511000 * and uses the first 10 of them for META keywords
 1001+ *
 1002+ * @param ParserOutput &$parserOutput
9521003 */
953 - function addKeywords( &$parserOutput ) {
 1004+ private function addKeywords( &$parserOutput ) {
9541005 global $wgTitle;
9551006 $this->addKeyword( $wgTitle->getPrefixedText() );
9561007 $count = 1;
@@ -968,10 +1019,9 @@
9691020 }
9701021
9711022 /**
972 - * @access private
973 - * @return string
 1023+ * @return string The doctype, opening <html>, and head element.
9741024 */
975 - function headElement() {
 1025+ public function headElement() {
9761026 global $wgDocType, $wgDTD, $wgContLanguageCode, $wgOutputEncoding, $wgMimeType;
9771027 global $wgUser, $wgContLang, $wgUseTrackbacks, $wgTitle, $wgStyleVersion;
9781028
@@ -1014,7 +1064,10 @@
10151065 return $ret;
10161066 }
10171067
1018 - function getHeadLinks() {
 1068+ /**
 1069+ * @return string HTML tag links to be put in the header.
 1070+ */
 1071+ public function getHeadLinks() {
10191072 global $wgRequest;
10201073 $ret = '';
10211074 foreach ( $this->mMetatags as $tag ) {
@@ -1064,9 +1117,8 @@
10651118 * Turn off regular page output and return an error reponse
10661119 * for when rate limiting has triggered.
10671120 * @todo i18n
1068 - * @access public
10691121 */
1070 - function rateLimited() {
 1122+ public function rateLimited() {
10711123 global $wgOut;
10721124 $wgOut->disable();
10731125 wfHttpError( 500, 'Internal Server Error',
@@ -1079,7 +1131,7 @@
10801132 *
10811133 * @return bool True if the parser output instructs us to add one
10821134 */
1083 - function showNewSectionLink() {
 1135+ public function showNewSectionLink() {
10841136 return $this->mNewSectionLink;
10851137 }
10861138