how-does-xorshift32-works (185284B)
1 <!DOCTYPE html> 2 3 4 <html itemscope itemtype="https://schema.org/QAPage" class="html__responsive " lang="en"> 5 6 <head> 7 8 <title>c - How does XorShift32 works? - Stack Overflow</title> 9 <link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196"> 10 <link rel="apple-touch-icon" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a"> 11 <link rel="image_src" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a"> 12 <link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml"> 13 <link rel="canonical" href="https://stackoverflow.com/questions/53886131/how-does-xorshift32-works" /> 14 <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0"> 15 <meta property="og:type" content= "website" /> 16 <meta property="og:url" content="https://stackoverflow.com/questions/53886131/how-does-xorshift32-works"/> 17 <meta property="og:site_name" content="Stack Overflow" /> 18 <meta property="og:image" itemprop="image primaryImageOfPage" content="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon@2.png?v=73d79a89bded" /> 19 <meta name="twitter:card" content="summary"/> 20 <meta name="twitter:domain" content="stackoverflow.com"/> 21 <meta name="twitter:title" property="og:title" itemprop="name" content="How does XorShift32 works?" /> 22 <meta name="twitter:description" property="og:description" itemprop="description" content="I have this homework where i need to implement xorshift32(i can t use anything else) so i can generate some numbers but i don t understand how the algorithm works or how to implement it. 

I am try..." /> 23 <script id="webpack-public-path" type="text/uri-list">https://cdn.sstatic.net/</script> 24 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 25 <script defer src="https://cdn.sstatic.net/Js/third-party/npm/@stackoverflow/stacks/dist/js/stacks.min.js?v=d5f780ae3281"></script> 26 <script src="https://cdn.sstatic.net/Js/stub.en.js?v=fa8bcab580cd"></script> 27 28 <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/stacks.css?v=5d83236da4e2"> 29 <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/stackoverflow/primary.css?v=89d00f6d5eec"> 30 31 32 33 <link rel="alternate" type="application/atom+xml" title="Feed for question 'How does XorShift32 works?'" href="/feeds/question/53886131"> 34 <script> 35 StackExchange.ready(function () { 36 37 StackExchange.using("snippets", function () { 38 StackExchange.snippets.initSnippetRenderer(); 39 }); 40 41 StackExchange.using("postValidation", function () { 42 StackExchange.postValidation.initOnBlurAndSubmit($('#post-form'), 2, 'answer'); 43 }); 44 45 46 StackExchange.question.init({showAnswerHelp:true,showTrendingSortLaunchPopover:false,showTrendingSortPostLaunchPopover:false,totalCommentCount:4,shownCommentCount:4,enableTables:true,questionId:53886131}); 47 48 styleCode(); 49 50 StackExchange.realtime.subscribeToQuestion('1', '53886131'); 51 StackExchange.using("gps", function () { StackExchange.gps.trackOutboundClicks('#content', '.js-post-body'); }); 52 53 54 }); 55 </script> 56 57 58 59 60 <link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/Channels/channels.css?v=64256d36becc"> 61 62 63 64 65 66 <script type="application/json" data-role="module-args" data-module-name="Shared/options.mod">{"options":{"locale":"en","serverTime":1701628339,"routeName":"Questions/Show","stackAuthUrl":"https://stackauth.com","networkMetaHostname":"meta.stackexchange.com","site":{"name":"Stack Overflow","description":"Q\u0026A for professional and enthusiast programmers","isNoticesTabEnabled":true,"enableNewTagCreationWarning":true,"insertSpaceAfterNameTabCompletion":false,"id":1,"cookieDomain":".stackoverflow.com","childUrl":"https://meta.stackoverflow.com","negativeVoteScoreFloor":null,"enableSocialMediaInSharePopup":true,"protocol":"https"},"user":{"fkey":"d8a1f9f0d8241e1b245c6f93920897c7b1457a3e09f1f846dafb3a27efbe14a3","tid":"8a770d33-a55e-48cc-a9f4-463e18d8e6eb","rep":0,"isAnonymous":true,"isAnonymousNetworkWide":true,"ab":{"job_search_status":{"v":"ai_policy_banner_v1","g":1}}},"events":{"postType":{"question":1},"postEditionSection":{"title":1,"body":2,"tags":3}}}}</script> 67 <script type="application/json" data-role="module-args" data-module-name="Shared/settings.mod">{"settings":{"userMessaging":{"showNewFeatureNotice":true},"tags":{},"subscriptions":{"defaultBasicMaxTrueUpSeats":250,"defaultFreemiumMaxTrueUpSeats":50,"defaultMaxTrueUpSeats":1000},"snippets":{"renderDomain":"stacksnippets.net","snippetsEnabled":true},"site":{"allowImageUploads":true,"enableImgurHttps":true,"enableUserHovercards":true,"forceHttpsImages":true,"stacksEditorPreviewEnabled":true,"styleCode":true},"search":{},"questions":{"enableQuestionTitleLengthLiveWarning":true,"enableSavesFeature":true,"maxTitleSize":150,"questionTitleLengthStartLiveWarningChars":50},"intercom":{"appId":"inf0secd","enableJavascriptImplementationFor":true,"hostBaseUrl":"https://stacksnippets.net"},"paths":{"jQueryUICSSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/smoothness/jquery-ui.css","jQueryUIJSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js"},"mentions":{"maxNumUsersInDropdown":50},"markdown":{"enableTables":true},"legal":{"oneTrustConfigId":"c3d9f1e3-55f3-4eba-b268-46cee4c6789c"},"flags":{"allowRetractingCommentFlags":true,"allowRetractingFlags":true},"elections":{"opaVoteResultsBaseUrl":"https://www.opavote.com/results/"},"comments":{},"accounts":{"currentPasswordRequiredForChangingStackIdPassword":true}}}</script> 68 <script>StackExchange.init();</script> 69 70 <script> 71 StackExchange.using.setCacheBreakers({"Js/adops.en.js":"6da43f5e0a84","Js/ask.en.js":"","Js/begin-edit-event.en.js":"20edbaccceae","Js/copy-transpiled.en.js":"d31dc7eba3bc","Js/events.en.js":"","Js/explore-qlist.en.js":"2b1f34938b8b","Js/full-anon.en.js":"192ecaea0c9d","Js/full.en.js":"efb11489a333","Js/highlightjs-loader.en.js":"510e2f94c2bf","Js/inline-tag-editing.en.js":"3e8cc64ee9d6","Js/keyboard-shortcuts.en.js":"107c2ac31497","Js/markdown-it-loader.en.js":"5818ef89ff9d","Js/mentions-transpiled.en.js":"36b8cabd2c12","Js/moderator.en.js":"bd04c908e875","Js/postCollections-transpiled.en.js":"ea1228154a76","Js/post-validation.en.js":"8fd6c83cea6c","Js/question-editor.en.js":"","Js/review-v2-transpiled.en.js":"7b6b513b5808","Js/revisions.en.js":"47b4d5ac24c9","Js/stacks-editor.en.js":"45ddc00eb16e","Js/tageditor.en.js":"dc13482a67f8","Js/tageditornew.en.js":"b11be3ff22c6","Js/tagsuggestions.en.js":"bd6ec908f2a7","Js/unlimited-transpiled.en.js":"f26a1d5f3365","Js/wmd.en.js":"033a0412fcae","Js/snippet-javascript-codemirror.en.js":"ae1dcf38deb7"}); 72 StackExchange.using("gps", function() { 73 StackExchange.gps.init(false); 74 }); 75 </script> 76 <noscript id="noscript-css"><style>body,.s-topbar{margin-top:1.9em}</style></noscript> 77 </head> 78 <body class="question-page unified-theme"> 79 <div id="notify-container"></div> 80 <div id="custom-header"></div> 81 82 83 <header class="s-topbar ps-fixed t0 l0 js-top-bar"> 84 <div class="s-topbar--container"> 85 <a href="#" class="s-topbar--menu-btn js-left-sidebar-toggle" role="menuitem" aria-haspopup="true" aria-controls="left-sidebar" aria-expanded="false"><span></span></a> 86 <div class="topbar-dialog leftnav-dialog js-leftnav-dialog dno"> 87 <div class="left-sidebar js-unpinned-left-sidebar" data-can-be="left-sidebar" data-is-here-when="sm"></div> 88 </div> 89 <a href="https://stackoverflow.com" class="s-topbar--logo js-gps-track" 90 data-gps-track="top_nav.click({is_current:false, location:2, destination:8})"> 91 <span class="-img _glyph">Stack Overflow</span> 92 </a> 93 94 95 96 <ol class="s-navigation" role="presentation"> 97 98 <li class="md:d-none"> 99 <a href="https://stackoverflow.co/" class="s-navigation--item js-gps-track" 100 data-gps-track="top_nav.products.click({location:2, destination:7})" 101 data-ga="["top navigation","about menu click",null,null,null]">About</a> 102 </li> 103 104 <li> 105 <a href="#" 106 class="s-navigation--item js-gps-track js-products-menu" 107 aria-controls="products-popover" 108 data-controller="s-popover" 109 data-action="s-popover#toggle" 110 data-s-popover-placement="bottom" 111 data-s-popover-toggle-class="is-selected" 112 data-gps-track="top_nav.products.click({location:2, destination:1})" 113 data-ga="["top navigation","products menu click",null,null,null]"> 114 Products 115 </a> 116 </li> 117 118 <li class="md:d-none"> 119 <a href="https://stackoverflow.co/teams/" class="s-navigation--item js-gps-track" 120 data-gps-track="top_nav.products.click({location:2, destination:7})" 121 data-ga="["top navigation","learn more - teams",null,null,null]">For Teams</a> 122 </li> 123 </ol> 124 <div class="s-popover ws2 mtn2 p0" 125 id="products-popover" 126 role="menu" 127 aria-hidden="true"> 128 <div class="s-popover--arrow"></div> 129 <ol class="list-reset s-anchors s-anchors__inherit"> 130 <li class="m6"> 131 <a href="/questions" class="bar-sm p6 d-block h:bg-black-225 js-gps-track" 132 data-gps-track="top_nav.products.click({location:2, destination:2})" 133 data-ga="["top navigation","public qa submenu click",null,null,null]"> 134 <span class="fs-body1 d-block">Stack Overflow</span> 135 <span class="fs-caption d-block fc-black-400">Public questions & answers</span> 136 </a> 137 </li> 138 <li class="m6"> 139 <a href="https://stackoverflow.co/teams/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track" 140 data-gps-track="top_nav.products.click({location:2, destination:3})" 141 data-ga="["top navigation","teams submenu click",null,null,null]"> 142 <span class="fs-body1 d-block">Stack Overflow for Teams</span> 143 <span class="fs-caption d-block fc-black-400">Where developers & technologists share private knowledge with coworkers</span> 144 </a> 145 </li> 146 <li class="m6"> 147 <a href="https://stackoverflow.co/talent/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track" 148 data-gps-track="top_nav.products.click({location:2, destination:5})" 149 data-ga="["top navigation","talent submenu click",null,null,null]"> 150 <span class="fs-body1 d-block">Talent</span> 151 <span class="fs-caption d-block fc-black-400"> 152 Build your employer brand 153 </span> 154 </a> 155 </li> 156 <li class="m6"> 157 <a href="https://stackoverflow.co/advertising/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track" 158 data-gps-track="top_nav.products.click({location:2, destination:6})" 159 data-ga="["top navigation","advertising submenu click",null,null,null]"> 160 <span class="fs-body1 d-block">Advertising</span> 161 <span class="fs-caption d-block fc-black-400">Reach developers & technologists worldwide</span> 162 </a> 163 </li> 164 <li class="bt bc-black-200 py6 px6 bbr-md"> 165 <a href="https://stackoverflow.co/labs/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track" 166 data-gps-track="top_nav.products.click({location:2, destination:7})" 167 data-ga="["top navigation","labs submenu click",null,null,null]"> 168 <span class="fs-body1 d-block">Labs</span> 169 <span class="fs-caption d-block fc-black-400">The future of collective knowledge sharing</span> 170 </a> 171 </li> 172 <li class="bg-black-100 bt bc-black-200 py6 px6 bbr-md"> 173 <a href="https://stackoverflow.co/" class="fc-black-400 d-block py6 px6 h:fc-black-600 js-gps-track" 174 data-gps-track="top_nav.products.click({location:2, destination:7})" 175 data-ga="["top navigation","about submenu click",null,null,null]">About the company</a> 176 </li> 177 </ol> 178 </div> 179 180 181 <form id="search" role="search" action=/search class="s-topbar--searchbar js-searchbar " autocomplete="off"> 182 <div class="s-topbar--searchbar--input-group"> 183 <input name="q" 184 type="text" 185 role="combobox" 186 placeholder="Search…" 187 value="" 188 autocomplete="off" 189 maxlength="240" 190 class="s-input s-input__search js-search-field " 191 aria-label="Search" 192 aria-controls="top-search" 193 data-controller="s-popover" 194 data-action="focus->s-popover#show" 195 data-s-popover-placement="bottom-start" /> 196 <svg aria-hidden="true" class="s-input-icon s-input-icon__search svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18l1.5-1.5ZM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0Z"/></svg> 197 <div class="s-popover p0 wmx100 wmn4 sm:wmn-initial js-top-search-popover" id="top-search" role="menu"> 198 <div class="s-popover--arrow"></div> 199 <div class="js-spinner p24 d-flex ai-center jc-center d-none"> 200 <div class="s-spinner s-spinner__sm fc-orange-400"> 201 <div class="v-visible-sr">Loading…</div> 202 </div> 203 </div> 204 205 <span class="v-visible-sr js-screen-reader-info"></span> 206 <div class="js-ac-results overflow-y-auto hmx3 d-none"></div> 207 208 <div class="js-search-hints" aria-describedby="Tips for searching"></div> 209 </div> 210 </div> 211 </form> 212 213 <nav class="h100 ml-auto overflow-x-auto pr12"> 214 <ol class="s-topbar--content" role="menubar"> 215 216 217 218 <li class="js-topbar-dialog-corral" role="presentation"> 219 220 221 <div class="topbar-dialog siteSwitcher-dialog dno" role="menu"> 222 <div class="header fw-wrap"> 223 <h3 class="flex--item"> 224 <a href="https://stackoverflow.com">current community</a> 225 </h3> 226 <div class="flex--item fl1"> 227 <div class="ai-center d-flex jc-end"> 228 <button 229 class="js-close-button s-btn s-btn__muted p0 ml8 d-none sm:d-block" 230 type="button" 231 aria-label="Close" 232 > 233 <svg aria-hidden="true" class="svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9 15 4.41Z"/></svg> 234 </button> 235 </div> 236 </div> 237 </div> 238 <div class="modal-content bg-blue-200 current-site-container"> 239 <ul class="current-site "> 240 <li class="d-flex"> 241 <div class="fl1"> 242 <a href="https://stackoverflow.com" 243 class="current-site-link site-link js-gps-track d-flex gs8 gsx" 244 data-id="1" 245 data-gps-track="site_switcher.click({ item_type:3 })"> 246 <div class="favicon favicon-stackoverflow site-icon flex--item" title="Stack Overflow"></div> 247 <span class="flex--item fl1"> 248 Stack Overflow 249 </span> 250 </a> 251 252 </div> 253 <div class="related-links"> 254 <a href="https://stackoverflow.com/help" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:14 })">help</a> 255 <a href="https://chat.stackoverflow.com/?tab=site&host=stackoverflow.com" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:6 })">chat</a> 256 </div> 257 258 </li> 259 <li class="related-site d-flex"> 260 <div class="L-shaped-icon-container"> 261 <span class="L-shaped-icon"></span> 262 </div> 263 264 <a href="https://meta.stackoverflow.com" 265 class=" site-link js-gps-track d-flex gs8 gsx" 266 data-id="552" 267 data-gps-track="site.switch({ target_site:552, item_type:3 }),site_switcher.click({ item_type:4 })"> 268 <div class="favicon favicon-stackoverflowmeta site-icon flex--item" title="Meta Stack Overflow"></div> 269 <span class="flex--item fl1"> 270 Meta Stack Overflow 271 </span> 272 </a> 273 274 </li> 275 </ul> 276 </div> 277 278 <div class="header" id="your-communities-header"> 279 <h3> 280 your communities </h3> 281 282 </div> 283 <div class="modal-content" id="your-communities-section"> 284 285 <div class="call-to-login"> 286 <a href="https://stackoverflow.com/users/signup?ssrc=site_switcher&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:10 })">Sign up</a> or <a href="https://stackoverflow.com/users/login?ssrc=site_switcher&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:11 })">log in</a> to customize your list. </div> 287 </div> 288 289 <div class="header"> 290 <h3><a href="https://stackexchange.com/sites">more stack exchange communities</a> 291 </h3> 292 <a href="https://stackoverflow.blog" class="float-right">company blog</a> 293 </div> 294 <div class="modal-content"> 295 <div class="child-content"></div> 296 </div> 297 </div> 298 299 </li> 300 301 <li role="none"><button class="s-topbar--item s-btn s-btn__icon s-btn__muted d-none sm:d-inline-flex js-searchbar-trigger" role="menuitem" aria-label="Search" aria-haspopup="true" aria-controls="search" title="Click to show search"><svg aria-hidden="true" class="svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18l1.5-1.5ZM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0Z"/></svg></button></li> 302 <li role="none"> 303 <a href="https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works" class="s-topbar--item s-topbar--item__unset s-btn s-btn__outlined ws-nowrap js-gps-track" role="menuitem" rel="nofollow" 304 data-gps-track="login.click" data-ga="["top navigation","login button click",null,null,null]">Log in</a> 305 </li> 306 <li role="none"><a href="https://stackoverflow.com/users/signup?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works" class="s-topbar--item s-topbar--item__unset ml4 s-btn s-btn__filled ws-nowrap" role="menuitem" rel="nofollow" data-ga="["sign up","Sign Up Navigation","Header",null,null]">Sign up</a></li> 307 </ol> 308 </nav> 309 310 311 </div> 312 </header> 313 314 <script> 315 StackExchange.ready(function () { StackExchange.topbar.init(); }); 316 StackExchange.scrollPadding.setPaddingTop(50, 10); 317 </script> 318 319 320 321 322 323 <div class="container"> 324 325 326 <div id="left-sidebar" data-is-here-when="md lg" class="left-sidebar js-pinned-left-sidebar ps-relative"> 327 <div class="left-sidebar--sticky-container js-sticky-leftnav"> 328 <nav role="navigation"> 329 <ol class="nav-links"> 330 <li> 331 <ol class="nav-links"> 332 333 334 <li class="ps-relative" aria-current="false"> 335 336 337 <a 338 href="/" 339 class="pl8 js-gps-track nav-links--link -link__with-icon" 340 341 data-gps-track="top_nav.click({is_current: false, location:2, destination:8, has_activity_notification:False})" 342 aria-controls="" data-controller="" data-s-popover-placement="right" 343 aria-current="false" 344 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 345 > 346 <svg aria-hidden="true" class="svg-icon iconHome" width="18" height="18" viewBox="0 0 18 18"><path d="M15 10v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5H0l9-9 9 9h-3Zm-8 1v6h4v-6H7Z"/></svg> <span class="-link--channel-name pl6">Home</span> 347 </a> 348 </li> 349 350 351 352 353 <li class="ps-relative youarehere" aria-current="true"> 354 355 356 <a id="nav-questions" 357 href="/questions" 358 class="pl8 js-gps-track nav-links--link -link__with-icon" 359 360 data-gps-track="top_nav.click({is_current: true, location:2, destination:1, has_activity_notification:False})" 361 aria-controls="" data-controller="" data-s-popover-placement="right" 362 aria-current="false" 363 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 364 > 365 <svg aria-hidden="true" class="svg-icon iconQuestion" width="18" height="18" viewBox="0 0 18 18"><path d="m4 15-3 3V4c0-1.1.9-2 2-2h12c1.09 0 2 .91 2 2v9c0 1.09-.91 2-2 2H4Zm7.75-3.97c.72-.83.98-1.86.98-2.94 0-1.65-.7-3.22-2.3-3.83a4.41 4.41 0 0 0-3.02 0 3.8 3.8 0 0 0-2.32 3.83c0 1.29.35 2.29 1.03 3a3.8 3.8 0 0 0 2.85 1.07c.62 0 1.2-.11 1.71-.34.65.44 1 .68 1.06.7.23.13.46.23.7.3l.59-1.13a5.2 5.2 0 0 1-1.28-.66Zm-1.27-.9a5.4 5.4 0 0 0-1.5-.8l-.45.9c.33.12.66.29.98.5-.2.07-.42.11-.65.11-.61 0-1.12-.23-1.52-.68-.86-1-.86-3.12 0-4.11.8-.9 2.35-.9 3.15 0 .9 1.01.86 3.03-.01 4.08Z"/></svg> <span class="-link--channel-name pl6">Questions</span> 366 </a> 367 </li> 368 369 370 371 372 373 374 <li class="ps-relative" aria-current="false"> 375 376 377 <a 378 href="/tags" 379 class="pl8 js-gps-track nav-links--link -link__with-icon" 380 381 data-gps-track="top_nav.click({is_current: false, location:2, destination:2, has_activity_notification:False})" 382 aria-controls="" data-controller="" data-s-popover-placement="right" 383 aria-current="false" 384 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 385 > 386 <svg aria-hidden="true" class="svg-icon iconTags" width="18" height="18" viewBox="0 0 18 18"><path d="M9.24 1a3 3 0 0 0-2.12.88l-5.7 5.7a2 2 0 0 0-.38 2.31 3 3 0 0 1 .67-1.01l6-6A3 3 0 0 1 9.83 2H14a3 3 0 0 1 .79.1A2 2 0 0 0 13 1H9.24Z" opacity=".4"/><path d="M9.83 3a2 2 0 0 0-1.42.59l-6 6a2 2 0 0 0 0 2.82L6.6 16.6a2 2 0 0 0 2.82 0l6-6A2 2 0 0 0 16 9.17V5a2 2 0 0 0-2-2H9.83ZM12 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z"/></svg> <span class="-link--channel-name pl6">Tags</span> 387 </a> 388 </li> 389 390 391 <li class="pb24"></li> 392 393 394 395 396 <li class="ps-relative" aria-current="false"> 397 398 399 <a id="nav-users" 400 href="/users" 401 class="pl8 js-gps-track nav-links--link -link__with-icon" 402 403 data-gps-track="top_nav.click({is_current: false, location:2, destination:3, has_activity_notification:False})" 404 aria-controls="" data-controller="" data-s-popover-placement="right" 405 aria-current="false" 406 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 407 > 408 <svg aria-hidden="true" class="svg-icon iconPeople" width="18" height="18" viewBox="0 0 18 18"><path d="M17 14c0 .44-.45 1-1 1H9a1 1 0 0 1-1-1H2c-.54 0-1-.56-1-1 0-2.63 3-4 3-4s.23-.4 0-1c-.84-.62-1.06-.59-1-3 .06-2.42 1.37-3 2.5-3s2.44.58 2.5 3c.06 2.41-.16 2.38-1 3-.23.59 0 1 0 1s1.55.71 2.42 2.09c.78-.72 1.58-1.1 1.58-1.1s.23-.4 0-1c-.84-.61-1.06-.58-1-3 .06-2.41 1.37-3 2.5-3s2.44.59 2.5 3c.05 2.42-.16 2.39-1 3-.23.6 0 1 0 1s3 1.38 3 4Z"/></svg> <span class="-link--channel-name pl6">Users</span> 409 </a> 410 </li> 411 412 413 414 415 <li class="ps-relative" aria-current="false"> 416 417 418 <a id="nav-companies" 419 href="https://stackoverflow.com/jobs/companies?so_medium=stackoverflow&so_source=SiteNav" 420 class="pl8 js-gps-track nav-links--link -link__with-icon" 421 422 data-gps-track="top_nav.click({is_current: false, location:2, destination:12, has_activity_notification:False})" 423 aria-controls="" data-controller="" data-s-popover-placement="right" 424 aria-current="false" 425 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 426 > 427 <svg aria-hidden="true" class="svg-icon iconBriefcase" width="18" height="18" viewBox="0 0 18 18"><path d="M5 4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h1a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7c0-1.1.9-2 2-2h1V4Zm7 0H6v1h6V4Z"/></svg> <span class="-link--channel-name pl6">Companies</span> 428 </a> 429 </li> 430 431 432 433 <li class="ml8 mt32 mb8"> 434 <div class="d-flex jc-space-between ai-center"> 435 <a 436 class="s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine js-collectives-navcta-toggle" 437 href="javascript:void(0)" 438 role="button" 439 aria-controls="popover-discover-collectives" 440 data-controller="s-popover" 441 data-action="s-popover#toggle" 442 data-s-popover-placement="top" 443 data-s-popover-toggle-class="is-selected" 444 data-gps-track="top_nav.click({is_current:false, location:2, destination:17})" 445 > 446 <div class="flex--item fl-grow1 tt-uppercase fc-black-600 fw-bold">Collectives</div> 447 <div class="flex--item px12"> 448 <svg aria-hidden="true" class="svg-icon iconPlusSm" width="14" height="14" viewBox="0 0 14 14"><path d="M8 2H6v4H2v2h4v4h2V8h4V6H8V2Z"/></svg> </div> 449 </a> 450 451 </div> 452 453 </li> 454 455 456 <li class="ps-relative" aria-current="false"> 457 458 459 <a id="nav-collective-discover" 460 href="/collectives" 461 class="pl8 ai-center js-collectives-navcta-toggle js-gps-track nav-links--link -link__with-icon" 462 463 data-gps-track="top_nav.click({is_current: false, location:2, destination:18, has_activity_notification:False})" 464 aria-controls="" data-controller="" data-s-popover-placement="right" 465 aria-current="false" 466 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 467 > 468 <svg aria-hidden="true" class="mt-auto fc-orange-400 svg-icon iconStarVerified" width="18" height="18" viewBox="0 0 18 18"><path d="M9.86.89a1.14 1.14 0 0 0-1.72 0l-.5.58c-.3.35-.79.48-1.23.33l-.72-.25a1.14 1.14 0 0 0-1.49.85l-.14.76c-.1.45-.45.8-.9.9l-.76.14c-.67.14-1.08.83-.85 1.49l.25.72c.15.44.02.92-.33 1.23l-.58.5a1.14 1.14 0 0 0 0 1.72l.58.5c.35.3.48.79.33 1.23l-.25.72c-.23.66.18 1.35.85 1.49l.76.14c.45.1.8.45.9.9l.14.76c.14.67.83 1.08 1.49.85l.72-.25c.44-.15.92-.02 1.23.33l.5.58c.46.52 1.26.52 1.72 0l.5-.58c.3-.35.79-.48 1.23-.33l.72.25c.66.23 1.35-.18 1.49-.85l.14-.76c.1-.45.45-.8.9-.9l.76-.14c.67-.14 1.08-.83.85-1.49l-.25-.72c-.15-.44-.02-.92.33-1.23l.58-.5c.52-.46.52-1.26 0-1.72l-.58-.5c-.35-.3-.48-.79-.33-1.23l.25-.72a1.14 1.14 0 0 0-.85-1.49l-.76-.14c-.45-.1-.8-.45-.9-.9l-.14-.76a1.14 1.14 0 0 0-1.49-.85l-.72.25c-.44.15-.92.02-1.23-.33l-.5-.58Zm-.49 2.67L10.6 6.6c.05.15.19.24.34.25l3.26.22c.36.03.5.48.23.71l-2.5 2.1a.4.4 0 0 0-.14.4l.8 3.16a.4.4 0 0 1-.6.44L9.2 12.13a.4.4 0 0 0-.42 0l-2.77 1.74a.4.4 0 0 1-.6-.44l.8-3.16a.4.4 0 0 0-.13-.4l-2.5-2.1a.4.4 0 0 1 .22-.7l3.26-.23a.4.4 0 0 0 .34-.25l1.22-3.03a.4.4 0 0 1 .74 0Z"/></svg> <span class="-link--channel-name pl6">Explore Collectives</span> 469 </a> 470 </li> 471 472 473 <li class="ml8 mt32 mb8"> 474 <a href="javascript:void(0)" 475 class="s-link s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine" 476 role="button" 477 aria-controls="popover-labs-left-nav" 478 data-controller="s-popover" 479 data-action="s-popover#toggle" 480 data-s-popover-placement="top" 481 data-s-popover-toggle-class="is-selected" 482 > 483 <div class="flex--item fl-grow1 tt-uppercase fc-black-600 fw-bold">Labs</div> 484 <div class="flex--item px12"> 485 <svg aria-hidden="true" class="svg-icon iconInfoSm" width="14" height="14" viewBox="0 0 14 14"><path d="M7 1a6 6 0 1 1 0 12A6 6 0 0 1 7 1Zm1 10V6H6v5h2Zm0-6V3H6v2h2Z"/></svg> 486 </div> 487 </a> 488 </li> 489 490 491 <li class="ps-relative" aria-current="false"> 492 493 494 <a id="nav-labs-discussions" 495 href="/collectives/beta/discussions" 496 class="pl8 ai-center js-gps-track nav-links--link -link__with-icon" 497 498 data-gps-track="top_nav.click({is_current: false, location:2, destination:24, has_activity_notification:False})" 499 aria-controls="" data-controller="" data-s-popover-placement="right" 500 aria-current="false" 501 data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never" 502 > 503 <svg aria-hidden="true" class="fc-black-400 w16 svg-icon iconSpeechBubble" width="18" height="18" viewBox="0 0 18 18"><path d="m4 15-3 3V4c0-1.1.9-2 2-2h12a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4Z"/></svg> <span class="-link--channel-name pl6">Discussions</span> 504 </a> 505 </li> 506 507 </ol> 508 </li> 509 510 511 512 513 514 <li class="js-freemium-cta ps-relative"> 515 516 <div class="fs-fine tt-uppercase fc-black-600 fw-bold ml8 mt16 mb8">Teams</div> 517 518 <div class="bt bl bb bc-black-200 p12 pb6 fc-black-500 blr-sm overflow-hidden"> 519 <strong class="fc-black-600 mb6">Stack Overflow for Teams</strong> 520 – Start collaborating and sharing organizational knowledge. 521 522 <img class="wmx100 mx-auto my8 h-auto d-block" width="139" height="114" src="https://cdn.sstatic.net/Img/teams/teams-illo-free-sidebar-promo.svg?v=47faa659a05e" alt=""> 523 524 <a href="https://try.stackoverflow.co/why-teams/?utm_source=so-owned&utm_medium=side-bar&utm_campaign=campaign-38&utm_content=cta" 525 class="w100 s-btn s-btn__filled s-btn__xs bg-orange-400 js-gps-track" 526 data-gps-track="teams.create.left-sidenav.click({ Action: 6 })" 527 data-ga="["teams left navigation - anonymous","left nav free cta","stackoverflow.com/teams/create/free",null,null]">Create a free Team</a> 528 <a href="https://stackoverflow.co/teams/" 529 class="w100 s-btn s-btn__muted s-btn__xs js-gps-track" 530 data-gps-track="teams.create.left-sidenav.click({ Action: 5 })" 531 data-ga="["teams left navigation - anonymous","left nav free cta","stackoverflow.com/teams",null,null]">Why Teams?</a> 532 533 </div> 534 </li> 535 536 537 <li class="d-flex ai-center jc-space-between ml8 mt32 mb8 js-create-team-cta d-none"> 538 <a href="javascript:void(0)" 539 class="s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine js-gps-track" 540 role="button" 541 aria-controls="popover-teams-create-cta" 542 data-controller="s-popover" 543 data-action="s-popover#toggle" 544 data-s-popover-placement="bottom-start" 545 data-s-popover-toggle-class="is-selected" 546 data-gps-track="teams.create.left-sidenav.click({ Action: ShowInfo })" 547 data-ga="["teams left navigation - anonymous","left nav show teams info",null,null,null]" 548 > 549 <div class="flex--item fl-grow1 fc-black-600 fw-bold tt-uppercase">Teams</div> 550 <div class="flex--item px12"> 551 <svg aria-hidden="true" class="svg-icon iconPlusSm" width="14" height="14" viewBox="0 0 14 14"><path d="M8 2H6v4H2v2h4v4h2V8h4V6H8V2Z"/></svg> 552 </div> 553 </a> 554 </li> 555 <li class="ps-relative js-create-team-cta d-none"> 556 <a href="https://stackoverflowteams.com/teams/create/free/?utm_source=so-owned&utm_medium=side-bar&utm_campaign=campaign-38&utm_content=cta" 557 class="pl8 js-gps-track nav-links--link" 558 title="Stack Overflow for Teams is a private, secure spot for your organization's questions and answers." 559 data-gps-track="teams.create.left-sidenav.click({ Action: FreemiumTeamsCreateClick })" 560 data-ga="["teams left navigation - anonymous","left nav team click","stackoverflow.com/teams/create/free",null,null]"> 561 <div class="d-flex ai-center"> 562 <div class="flex--item s-avatar va-middle bg-orange-400"> 563 <div class="s-avatar--letter mtn1"> 564 <svg aria-hidden="true" class="svg-icon iconBriefcaseSm" width="14" height="14" viewBox="0 0 14 14"><path d="M4 3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v1h.5c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5h-7A1.5 1.5 0 0 1 2 10.5v-5C2 4.67 2.67 4 3.5 4H4V3Zm5 1V3H5v1h4Z"/></svg> 565 </div> 566 <svg aria-hidden="true" class="native s-avatar--badge svg-icon iconShieldXSm" width="9" height="10" viewBox="0 0 9 10"><path fill="var(--white)" d="M0 1.84 4.5 0 9 1.84v3.17C9 7.53 6.3 10 4.5 10 2.7 10 0 7.53 0 5.01V1.84Z"/><path fill="var(--black-400)" d="M1 2.5 4.5 1 8 2.5v2.51C8 7.34 5.34 9 4.5 9 3.65 9 1 7.34 1 5.01V2.5Zm2.98 3.02L3.2 7h2.6l-.78-1.48a.4.4 0 0 1 .15-.38c.34-.24.73-.7.73-1.14 0-.71-.5-1.23-1.41-1.23-.92 0-1.39.52-1.39 1.23 0 .44.4.9.73 1.14.12.08.18.23.15.38Z"/></svg> 567 </div> 568 <div class="flex--item pl6"> 569 Create free Team 570 </div> 571 </div> 572 </a> 573 </li> 574 575 </ol> 576 </nav> 577 </div> 578 579 580 <div class="s-popover ws2" id="popover-discover-collectives" role="menu"> 581 <div class="s-popover--arrow"></div> 582 <div> 583 <svg aria-hidden="true" class="fc-orange-400 float-right ml24 svg-spot spotCollective" width="48" height="48" viewBox="0 0 48 48"><path d="M25.5 7a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM14 18.25c0-.69.56-1.25 1.25-1.25h22.5c.69 0 1.25.56 1.25 1.25V37.5a1 1 0 0 1-1.6.8l-4.07-3.05a1.25 1.25 0 0 0-.75-.25H15.25c-.69 0-1.25-.56-1.25-1.25v-15.5ZM7 24.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM25.5 48a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM48 24.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z" opacity=".2"/><path d="M21 3.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM24.5 2a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM0 23.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM3.5 22a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM21 44.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0Zm3.5-1.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm20-23a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM43 23.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm-23.23-3.14a1 1 0 0 1-.13 1.4l-2.08 1.74 2.08 1.73a1 1 0 1 1-1.28 1.54l-2.42-2.02a1.63 1.63 0 0 1 0-2.5l2.42-2.02a1 1 0 0 1 1.4.13Zm7.59 1.41a1 1 0 1 1 1.28-1.54l2.42 2.02c.78.65.78 1.85 0 2.5l-2.42 2.02a1 1 0 1 1-1.28-1.54l2.08-1.73-2.08-1.73ZM24.12 18a1 1 0 0 1 .87 1.12l-1 8a1 1 0 1 1-1.98-.24l1-8a1 1 0 0 1 1.11-.87Zm-11.87-5C11.01 13 10 14 10 15.25v15.5c0 1.24 1 2.25 2.25 2.25h17.33c.06 0 .11.02.15.05l4.07 3.05a2 2 0 0 0 3.2-1.6V15.25c0-1.24-1-2.25-2.25-2.25h-22.5ZM12 15.25c0-.14.11-.25.25-.25h22.5c.14 0 .25.11.25.25V34.5l-4.07-3.05a2.2 2.2 0 0 0-1.35-.45H12.25a.25.25 0 0 1-.25-.25v-15.5Zm7.24-10.68a1 1 0 1 0-.48-1.94A22.04 22.04 0 0 0 2.91 17.7a1 1 0 1 0 1.92.58 20.04 20.04 0 0 1 14.4-13.72Zm11.05-1.66a1 1 0 0 0-.58 1.92c6.45 1.92 11.54 7 13.46 13.46a1 1 0 1 0 1.92-.58 22.05 22.05 0 0 0-14.8-14.8ZM4.57 28.76a1 1 0 0 0-1.94.48 22.03 22.03 0 0 0 16.13 16.13 1 1 0 1 0 .48-1.94A20.03 20.03 0 0 1 4.57 28.76Zm40.8.48a1 1 0 1 0-1.94-.48 20.04 20.04 0 0 1-13.72 14.41 1 1 0 0 0 .58 1.92 22.04 22.04 0 0 0 15.08-15.85Z"/></svg> 584 <h5 class="pt4 fw-bold">Collectives™ on Stack Overflow</h5> 585 <p class="my16 fs-caption fc-black-500">Find centralized, trusted content and collaborate around the technologies you use most.</p> 586 <a href="/collectives" 587 class="js-gps-track s-btn s-btn__filled s-btn__xs" 588 data-gps-track="top_nav.click({is_current:false, location:2, destination:18})"> 589 Learn more about Collectives 590 </a> 591 </div> 592 </div> 593 594 <div class="s-popover ws2" 595 id="popover-teams-create-cta" 596 role="menu" 597 aria-hidden="true"> 598 <div class="s-popover--arrow"></div> 599 600 <div class="ps-relative overflow-hidden"> 601 <p class="mb2"><strong>Teams</strong></p> 602 <p class="mb12 fs-caption fc-black-400">Q&A for work</p> 603 <p class="mb12 fs-caption fc-black-500">Connect and share knowledge within a single location that is structured and easy to search.</p> 604 <a href="https://stackoverflow.co/teams/" 605 class="js-gps-track s-btn s-btn__filled s-btn__xs" 606 data-gps-track="teams.create.left-sidenav.click({ Action: CtaClick })" 607 data-ga="["teams left navigation - anonymous","left nav cta","stackoverflow.com/teams",null,null]"> 608 Learn more about Teams 609 </a> 610 </div> 611 612 <div class="ps-absolute t8 r8"> 613 <svg aria-hidden="true" class="fc-orange-400 svg-spot spotPeople" width="48" height="48" viewBox="0 0 48 48"><path d="M13.5 28a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9ZM7 30a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v5h11v-5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v10a2 2 0 0 1-2 2H33v5a1 1 0 0 1-1 1H20a1 1 0 0 1-1-1v-5H8a1 1 0 0 1-1-1V30Zm25-6.5a4.5 4.5 0 1 0 9 0 4.5 4.5 0 0 0-9 0ZM24.5 34a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Z" opacity=".2"/><path d="M16.4 26.08A6 6 0 1 0 7.53 26C5.64 26.06 4 27.52 4 29.45V40a1 1 0 0 0 1 1h9a1 1 0 1 0 0-2h-4v-7a1 1 0 1 0-2 0v7H6v-9.55c0-.73.67-1.45 1.64-1.45H16a1 1 0 0 0 .4-1.92ZM12 18a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm16.47 14a6 6 0 1 0-8.94 0A3.6 3.6 0 0 0 16 35.5V46a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V35.5c0-1.94-1.64-3.42-3.53-3.5ZM20 28a4 4 0 1 1 8 0 4 4 0 0 1-8 0Zm-.3 6h8.6c1 0 1.7.75 1.7 1.5V45h-2v-7a1 1 0 1 0-2 0v7h-4v-7a1 1 0 1 0-2 0v7h-2v-9.5c0-.75.7-1.5 1.7-1.5ZM42 22c0 1.54-.58 2.94-1.53 4A3.5 3.5 0 0 1 44 29.45V40a1 1 0 0 1-1 1h-9a1 1 0 1 1 0-2h4v-7a1 1 0 1 1 2 0v7h2v-9.55A1.5 1.5 0 0 0 40.48 28H32a1 1 0 0 1-.4-1.92A6 6 0 1 1 42 22Zm-2 0a4 4 0 1 0-8 0 4 4 0 0 0 8 0Z"/><g opacity=".35"><path d="M17 10a1 1 0 011-1h12a1 1 0 110 2H18a1 1 0 01-1-1Zm1-5a1 1 0 100 2h12a1 1 0 100-2H18ZM14 1a1 1 0 00-1 1v12a1 1 0 001 1h5.09l4.2 4.2a1 1 0 001.46-.04l3.7-4.16H34a1 1 0 001-1V2a1 1 0 00-1-1H14Zm1 12V3h18v10h-5a1 1 0 00-.75.34l-3.3 3.7-3.74-3.75a1 1 0 00-.71-.29H15Z"/></g></svg> 614 </div> 615 </div> 616 617 <div class="s-popover ws2" 618 id="popover-labs-left-nav" 619 role="menu" 620 aria-hidden="true"> 621 <div class="s-popover--arrow"></div> 622 <svg aria-hidden="true" class="fc-black-600 mb8 svg-icon iconLabs" width="42" height="18"><path d="M11.5 13.624a.374.374 0 0 1-.37.376H5.361a.374.374 0 0 1-.37-.376V4.376c0-.207.165-.376.37-.376H6.62c.204 0 .37.169.37.376v7.611h4.138c.205 0 .371.169.371.377v1.26zm9.432.215c-.07.1-.185.161-.308.161H19.13a.376.376 0 0 1-.356-.254l-.55-1.7h-3.111l-.55 1.7a.377.377 0 0 1-.355.254h-1.494a.376.376 0 0 1-.353-.506l3.39-9.247A.376.376 0 0 1 16.103 4h1.13c.158 0 .299.099.353.247l3.39 9.247a.376.376 0 0 1-.045.345zm-4.157-7.386l-1.219 3.531h2.266l-1.047-3.53zm13.335 5.71a.37.37 0 0 0-.003.524c.956.971 2.047 1.313 3.486 1.313 1.014 0 1.92-.265 2.582-.788.67-.53 1.063-1.306 1.063-2.255 0-.855-.268-1.622-.867-2.145-.456-.41-1.008-.633-1.89-.767l-1.037-.153c-.377-.057-.672-.19-.832-.332-.146-.132-.221-.315-.221-.568 0-.309.11-.56.306-.737.199-.179.518-.312.986-.312.708 0 1.254.151 1.726.601a.37.37 0 0 0 .516-.004l.883-.87a.37.37 0 0 0-.008-.534C35.942 4.334 35.004 4 33.721 4c-1.016 0-1.872.292-2.479.836-.61.548-.935 1.32-.935 2.207 0 .82.243 1.502.781 2.01h.001c.468.437 1.135.716 1.93.826l1.072.153c.508.073.647.147.795.286l.008.007c.14.125.234.34.234.67 0 .332-.124.567-.344.73-.235.174-.617.293-1.165.293-.867 0-1.49-.185-2.066-.76a.37.37 0 0 0-.522-.003l-.92.908zM22.37 14a.374.374 0 0 1-.37-.376V4.376c0-.207.166-.376.37-.376h3.543c.913 0 1.697.264 2.257.78.564.519.863 1.259.863 2.129 0 .845-.377 1.524-.87 1.947.57.433 1.01 1.145 1.01 2.157 0 .941-.317 1.702-.894 2.224-.57.517-1.354.763-2.225.763H22.37zm3.543-1.977c.96 0 .959-1.01.959-1.01s0-1.013-.959-1.013H24v2.023h1.913zm-.115-4.063c1.074 0 1.074-1.015 1.074-1.015s0-1.016-1.074-1.016H24V7.96h1.798z" fill="var(--black-600)"/><path d="M0 4v10a4 4 0 0 0 4 4h34a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4H4a4 4 0 0 0-4 4zm4-2h34a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z" fill="var(--black-600)"/></svg> 623 <p class="fs-caption">Get early access and see previews of new features.</p> 624 <a class="s-btn s-btn__filled s-btn__xs s-btn__icon fs-fine" href="https://stackoverflow.co/labs/"><svg aria-hidden="true" class="svg-icon iconShareSm" width="14" height="14" viewBox="0 0 14 14"><path d="M5 1H3a2 2 0 0 0-2 2v8c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V9h-2v2H3V3h2V1Zm2 0h6v6h-2V4.5L6.5 9 5 7.5 9.5 3H7V1Z"/></svg> Learn more about Labs</a> 625 </div> 626 627 628 </div> 629 630 631 632 <div id="content" class="snippet-hidden"> 633 634 635 636 <div itemprop="mainEntity" itemscope itemtype="https://schema.org/Question"> 637 <link itemprop="image" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a"> 638 639 <div class="inner-content clearfix"> 640 641 642 643 <div id="question-header" class="d-flex sm:fd-column"> 644 <h1 itemprop="name" class="fs-headline1 ow-break-word mb8 flex--item fl1"><a href="/questions/53886131/how-does-xorshift32-works" class="question-hyperlink">How does XorShift32 works?</a></h1> 645 <div class="ml12 aside-cta flex--item print:d-none sm:ml0 sm:mb12 sm:order-first sm:as-end"> 646 <a href="/questions/ask" class="ws-nowrap s-btn s-btn__filled"> 647 Ask Question 648 </a> 649 650 </div> 651 </div> 652 <div class="d-flex fw-wrap pb8 mb16 bb bc-black-200"> 653 <div class="flex--item ws-nowrap mr16 mb8" title="2018-12-21 14:06:10Z"> 654 <span class="fc-black-400 mr2">Asked</span> 655 <time itemprop="dateCreated" datetime="2018-12-21T14:06:10">4 years, 11 months ago</time> 656 </div> 657 <div class="flex--item ws-nowrap mr16 mb8"> 658 <span class="fc-black-400 mr2">Modified</span> 659 <a href="?lastactivity" class="s-link s-link__inherit" title="2018-12-23 01:02:09Z">4 years, 11 months ago</a> 660 </div> 661 <div class="flex--item ws-nowrap mb8" title="Viewed 6,038 times"> 662 <span class="fc-black-400 mr2">Viewed</span> 663 6k times 664 </div> 665 </div> 666 <div id="mainbar" role="main" aria-label="question and answers"> 667 668 669 <div class="question js-question" data-questionid="53886131" data-position-on-page="0" data-score="1" id="question"> 670 <style> 671 </style> 672 <div class="js-zone-container zone-container-main"> 673 <div id="dfp-tlb" class="everyonelovesstackoverflow everyoneloves__top-leaderboard everyoneloves__leaderboard"></div> 674 <div class="js-report-ad-button-container " style="width: 728px"></div> 675 </div> 676 677 <div class="post-layout "> 678 <div class="votecell post-layout--left"> 679 <div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="53886131" data-referrer="None"> 680 <button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 681 data-controller="s-tooltip" 682 data-s-tooltip-placement="right" 683 title="This question shows research effort; it is useful and clear" 684 aria-pressed="false" 685 aria-label="Up vote" 686 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 687 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 688 <svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg> 689 </button> 690 <div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4" 691 itemprop="upvoteCount" 692 data-value="1"> 693 1 694 </div> 695 <button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 696 data-controller="s-tooltip" 697 data-s-tooltip-placement="right" 698 title="This question does not show any research effort; it is unclear or not useful" 699 aria-pressed="false" 700 aria-label="Down vote" 701 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 702 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 703 <svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg> 704 </button> 705 706 707 708 <button class="js-saves-btn s-btn s-btn__unset c-pointer py4" 709 type="button" 710 id="saves-btn-53886131" 711 data-controller="s-tooltip" 712 data-s-tooltip-placement="right" 713 data-s-popover-placement="" 714 title="Save this question." 715 aria-pressed="false" 716 data-post-id="53886131" 717 data-post-type-id="1" 718 data-user-privilege-for-post-click="0" 719 aria-controls="" 720 data-s-popover-auto-show="false" 721 > 722 <svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 723 <svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 724 </button> 725 726 727 728 729 730 731 732 733 734 <a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/53886131/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a> 735 736 </div> 737 738 </div> 739 740 741 742 <div class="postcell post-layout--right"> 743 744 <div class="s-prose js-post-body" itemprop="text"> 745 746 <p>I have this homework where i need to implement xorshift32(i can t use anything else) so i can generate some numbers but i don t understand how the algorithm works or how to implement it. </p> 747 748 <p>I am trying to print the generated number but i don t know how to call the xorshift32 function because of the state[static 1] argument.</p> 749 750 <pre><code>uint32_t xorshift32(uint32_t state[static 1]) 751 { 752 uint32_t x = state[0]; 753 x ^= x << 13; 754 x ^= x >> 17; 755 x ^= x << 5; 756 state[0] = x; 757 return x; 758 } 759 </code></pre> 760 761 <p>I do not have much information on xorshft32 other that what is on wikipedia(en.wikipedia.org/wiki/Xorshift).</p> 762 </div> 763 764 <div class="mt24 mb12"> 765 <div class="post-taglist d-flex gs4 gsy fd-column"> 766 <div class="d-flex ps-relative fw-wrap"> 767 768 <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/c" class="post-tag" title="show questions tagged 'c'" aria-label="show questions tagged 'c'" rel="tag" aria-labelledby="tag-c-tooltip-container">c</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/static" class="post-tag" title="show questions tagged 'static'" aria-label="show questions tagged 'static'" rel="tag" aria-labelledby="tag-static-tooltip-container">static</a></li></ul> 769 </div> 770 </div> 771 </div> 772 773 <div class="mb0 "> 774 <div class="mt16 d-flex gs8 gsy fw-wrap jc-end ai-start pt4 mb16"> 775 <div class="flex--item mr16 fl1 w96"> 776 777 778 779 <div class="js-post-menu pt2" data-post-id="53886131" data-post-type-id="1"> 780 781 <div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap"> 782 783 <div class="flex--item"> 784 <a href="/q/53886131" 785 rel="nofollow" 786 itemprop="url" 787 class="js-share-link js-gps-track" 788 title="Short permalink to this question" 789 data-gps-track="post.click({ item: 2, priv: 0, post_type: 1 })" 790 data-controller="se-share-sheet" 791 data-se-share-sheet-title="Share a link to this question" 792 data-se-share-sheet-subtitle="" 793 data-se-share-sheet-post-type="question" 794 data-se-share-sheet-social="facebook twitter devto" 795 data-se-share-sheet-location="1" 796 data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" 797 data-se-share-sheet-license-name="CC BY-SA 4.0" 798 data-s-popover-placement="bottom-start">Share</a> 799 </div> 800 801 802 803 <div class="flex--item"> 804 <button type="button" 805 id="btnFollowPost-53886131" class="s-btn s-btn__link js-follow-post js-follow-question js-gps-track" 806 data-gps-track="post.click({ item: 14, priv: 0, post_type: 1 })" 807 data-controller="s-tooltip " data-s-tooltip-placement="bottom" 808 data-s-popover-placement="bottom" aria-controls="" 809 title="Follow this question to receive notifications"> 810 Follow 811 </button> 812 </div> 813 814 815 816 817 818 819 </div> 820 <div class="js-menu-popup-container"></div> 821 </div> 822 </div> 823 824 <div class="post-signature flex--item"> 825 <div class="user-info "> 826 <div class="user-action-time"> 827 <a href="/posts/53886131/revisions" title="show all edits to this post" 828 class="js-gps-track" 829 data-gps-track="post.click({ item: 4, priv: 0, post_type: 1 })">edited <span title='2018-12-21 14:34:30Z' class='relativetime'>Dec 21, 2018 at 14:34</span></a> 830 </div> 831 <div class="user-gravatar32"> 832 833 </div> 834 <div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person"> 835 <span class="d-none" itemprop="name">Predescu Eduard</span> 836 <div class="-flair"> 837 838 </div> 839 </div> 840 </div> 841 </div> 842 <div class="post-signature owner flex--item"> 843 <div class="user-info "> 844 <div class="user-action-time"> 845 asked <span title='2018-12-21 14:06:10Z' class='relativetime'>Dec 21, 2018 at 14:06</span> 846 </div> 847 <div class="user-gravatar32"> 848 <a href="/users/10774990/predescu-eduard"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/ba8527c5bc13c3ea52e3f87ed1c75660?s=64&d=identicon&r=PG&f=y&so-version=2" alt="Predescu Eduard's user avatar" width="32" height="32" class="bar-sm"></div></a> 849 </div> 850 <div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person"> 851 <a href="/users/10774990/predescu-eduard">Predescu Eduard</a><span class="d-none" itemprop="name">Predescu Eduard</span> 852 <div class="-flair"> 853 <span class="reputation-score" title="reputation score " dir="ltr">13</span><span title="1 silver badge" aria-hidden="true"><span class="badge2"></span><span class="badgecount">1</span></span><span class="v-visible-sr">1 silver badge</span><span title="7 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">7</span></span><span class="v-visible-sr">7 bronze badges</span> 854 </div> 855 </div> 856 </div> 857 858 859 </div> 860 </div> 861 </div> 862 863 </div> 864 865 866 867 868 <span class="d-none" itemprop="commentCount">4</span> 869 <div class="post-layout--right js-post-comments-component"> 870 <div id="comments-53886131" class="comments js-comments-container bt bc-black-200 mt12 " data-post-id="53886131" data-min-length="15"> 871 <ul class="comments-list js-comments-list" 872 data-remaining-comments-count="0" 873 data-canpost="false" 874 data-cansee="true" 875 data-comments-unavailable="false" 876 data-addlink-disabled="true"> 877 878 <li id="comment-94618978" class="comment js-comment " data-comment-id="94618978" data-comment-owner-id="2402272" data-comment-score="1"> 879 <div class="js-comment-actions comment-actions"> 880 <div class="comment-score js-comment-score js-comment-edit-hide"> 881 <span title="number of 'useful comment' votes received" 882 class="cool">1</span> 883 </div> 884 </div> 885 <div class="comment-text js-comment-text-and-form"> 886 <div class="comment-body js-comment-edit-hide"> 887 888 <span class="comment-copy">Can you even <i>compile</i> that function? It does not conform to standard C (with respect to the function parameter), so if your compiler accepts it then some language extension is in play. You'll need to check your implementation's documentation (or maybe your class notes) to find out what it means. On the other hand, maybe there's simply a typo there. It would make more sense if the <code>static</code> keyword were removed, or perhaps moved to the beginning of the function declaration.</span> 889 890 <div class="d-inline-flex ai-center"> 891 – <a href="/users/2402272/john-bollinger" 892 title="163,152 reputation" 893 class="comment-user">John Bollinger</a> 894 </div> 895 <span class="comment-date" dir="ltr"><span title='2018-12-21 14:16:36Z, License: CC BY-SA 4.0' class='relativetime-clean'>Dec 21, 2018 at 14:16</span></span> 896 </div> 897 </div> 898 </li> 899 <li id="comment-94619133" class="comment js-comment " data-comment-id="94619133" data-comment-owner-id="898348" data-comment-score="0"> 900 <div class="js-comment-actions comment-actions"> 901 <div class="comment-score js-comment-score js-comment-edit-hide"> 902 </div> 903 </div> 904 <div class="comment-text js-comment-text-and-form"> 905 <div class="comment-body js-comment-edit-hide"> 906 907 <span class="comment-copy">You need to tell us what the <code>xorshift32</code> is supposed to do.</span> 908 909 <div class="d-inline-flex ai-center"> 910 – <a href="/users/898348/jabberwocky" 911 title="48,830 reputation" 912 class="comment-user">Jabberwocky</a> 913 </div> 914 <span class="comment-date" dir="ltr"><span title='2018-12-21 14:21:56Z, License: CC BY-SA 4.0' class='relativetime-clean'>Dec 21, 2018 at 14:21</span></span> 915 </div> 916 </div> 917 </li> 918 <li id="comment-94619390" class="comment js-comment " data-comment-id="94619390" data-comment-owner-id="10774990" data-comment-score="0"> 919 <div class="js-comment-actions comment-actions"> 920 <div class="comment-score js-comment-score js-comment-edit-hide"> 921 </div> 922 </div> 923 <div class="comment-text js-comment-text-and-form"> 924 <div class="comment-body js-comment-edit-hide"> 925 926 <span class="comment-copy">@Jabberwocky here is the wikipeda: <a href="https://en.wikipedia.org/wiki/Xorshift" rel="nofollow noreferrer">en.wikipedia.org/wiki/Xorshift</a> . I don t even know to explain it to you. It s a number generator using xor and shift made by a guy. The teacher didn t tell us much either</span> 927 928 <div class="d-inline-flex ai-center"> 929 – <a href="/users/10774990/predescu-eduard" 930 title="13 reputation" 931 class="comment-user owner">Predescu Eduard</a> 932 </div> 933 <span class="comment-date" dir="ltr"><span title='2018-12-21 14:30:37Z, License: CC BY-SA 4.0' class='relativetime-clean'>Dec 21, 2018 at 14:30</span></span> 934 </div> 935 </div> 936 </li> 937 <li id="comment-94619420" class="comment js-comment " data-comment-id="94619420" data-comment-owner-id="898348" data-comment-score="0"> 938 <div class="js-comment-actions comment-actions"> 939 <div class="comment-score js-comment-score js-comment-edit-hide"> 940 </div> 941 </div> 942 <div class="comment-text js-comment-text-and-form"> 943 <div class="comment-body js-comment-edit-hide"> 944 945 <span class="comment-copy">@PredescuEduard that information belongs <i>into</i> the question. You can <a href="https://stackoverflow.com/posts/53886131/edit">edit</a> your question.</span> 946 947 <div class="d-inline-flex ai-center"> 948 – <a href="/users/898348/jabberwocky" 949 title="48,830 reputation" 950 class="comment-user">Jabberwocky</a> 951 </div> 952 <span class="comment-date" dir="ltr"><span title='2018-12-21 14:31:42Z, License: CC BY-SA 4.0' class='relativetime-clean'>Dec 21, 2018 at 14:31</span></span> 953 </div> 954 </div> 955 </li> 956 957 </ul> 958 </div> 959 960 <div id="comments-link-53886131" data-rep=50 data-anon=true> 961 <a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid answering questions in comments." href="#" role="button">Add a comment</a> 962 <span class="js-link-separator dno"> | </span> 963 <a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a> 964 </div> 965 </div> 966 </div> 967 968 </div> 969 970 971 <div class="js-zone-container zone-container-responsive"> 972 <div id="dfp-isb" class="everyonelovesstackoverflow everyoneloves__inline-sidebar mx-auto"></div> 973 <div class="js-report-ad-button-container mx-auto" style="width: 300px"></div> 974 </div> 975 976 977 978 <div id="answers"> 979 <a name="tab-top"></a> 980 <div id="answers-header"> 981 <div class="answers-subheader d-flex ai-center mb8"> 982 <div class="flex--item fl1"> 983 <h2 class="mb0" data-answercount="2"> 984 2 Answers 985 <span style="display:none;" itemprop="answerCount">2</span> 986 </h2> 987 </div> 988 <div class="flex--item"> 989 990 991 <div class="d-flex g4 gsx ai-center sm:fd-column sm:ai-start"> 992 <div class="d-flex fd-column ai-end sm:ai-start"> 993 <label class="flex--item fs-caption" for="answer-sort-dropdown-select-menu"> 994 Sorted by: 995 </label> 996 <a 997 class="js-sort-preference-change s-link flex--item fs-fine d-none" 998 data-value="ScoreDesc" 999 href="/questions/53886131/how-does-xorshift32-works?answertab=scoredesc#tab-top" 1000 > 1001 Reset to default 1002 </a> 1003 </div> 1004 <div class="flex--item s-select"> 1005 <select id="answer-sort-dropdown-select-menu"> 1006 <option 1007 value=scoredesc 1008 selected=selected 1009 > 1010 Highest score (default) 1011 </option> 1012 <option 1013 value=trending 1014 > 1015 Trending (recent votes count more) 1016 </option> 1017 <option 1018 value=modifieddesc 1019 > 1020 Date modified (newest first) 1021 </option> 1022 <option 1023 value=createdasc 1024 > 1025 Date created (oldest first) 1026 </option> 1027 </select> 1028 </div> 1029 </div> 1030 1031 1032 </div> 1033 </div> 1034 1035 </div> 1036 1037 1038 1039 <a name="53900430"></a> 1040 <div id="answer-53900430" class="answer js-answer" data-answerid="53900430" data-parentid="53886131" data-score="3" data-position-on-page="1" data-highest-scored="1" data-question-has-accepted-highest-score="0" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer"> 1041 <div class="post-layout"> 1042 <div class="votecell post-layout--left"> 1043 <div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="53900430" data-referrer="None"> 1044 <button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 1045 data-controller="s-tooltip" 1046 data-s-tooltip-placement="right" 1047 title="This answer is useful" 1048 aria-pressed="false" 1049 aria-label="Up vote" 1050 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 1051 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 1052 <svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg> 1053 </button> 1054 <div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4" 1055 itemprop="upvoteCount" 1056 data-value="3"> 1057 3 1058 </div> 1059 <button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 1060 data-controller="s-tooltip" 1061 data-s-tooltip-placement="right" 1062 title="This answer is not useful" 1063 aria-pressed="false" 1064 aria-label="Down vote" 1065 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 1066 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 1067 <svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg> 1068 </button> 1069 1070 1071 1072 <button class="js-saves-btn s-btn s-btn__unset c-pointer py4" 1073 type="button" 1074 id="saves-btn-53900430" 1075 data-controller="s-tooltip" 1076 data-s-tooltip-placement="right" 1077 data-s-popover-placement="" 1078 title="Save this answer." 1079 aria-pressed="false" 1080 data-post-id="53900430" 1081 data-post-type-id="2" 1082 data-user-privilege-for-post-click="0" 1083 aria-controls="" 1084 data-s-popover-auto-show="false" 1085 > 1086 <svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 1087 <svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 1088 </button> 1089 1090 1091 1092 1093 1094 1095 1096 <div class="js-accepted-answer-indicator flex--item fc-green-400 py6 mtn8 d-none" data-s-tooltip-placement="right" title="Loading when this answer was accepted…" tabindex="0" role="note" aria-label="Accepted"> 1097 <div class="ta-center"> 1098 <svg aria-hidden="true" class="svg-icon iconCheckmarkLg" width="36" height="36" viewBox="0 0 36 36"><path d="m6 14 8 8L30 6v8L14 30l-8-8v-8Z"/></svg> 1099 </div> 1100 </div> 1101 1102 1103 <a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/53900430/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a> 1104 1105 </div> 1106 1107 </div> 1108 1109 1110 1111 <div class="answercell post-layout--right"> 1112 1113 <div class="s-prose js-post-body" itemprop="text"> 1114 <p>This is an extended comment to the good <a href="https://stackoverflow.com/a/53886716/1475978">answer by Jabberwocky</a>.</p> 1115 1116 <p>The Xorshift variants, <code>rand()</code>, and basically all random number generator functions, are actually <a href="https://en.wikipedia.org/wiki/Pseudorandom_number_generator" rel="nofollow noreferrer">pseudorandom number generators</a>. They are not "real random", because the sequence of numbers they generate depends on their internal state; but they are <a href="https://en.wikipedia.org/wiki/Pseudorandomness" rel="nofollow noreferrer">"pseudorandom"</a>, because if you do not know the generator internal state, the sequence of numbers they generate is random in the statistical sense.</p> 1117 1118 <p><a href="https://en.wikipedia.org/wiki/George_Marsaglia" rel="nofollow noreferrer">George Marsaglia</a>, the author of the Xorshift family of pseudorandom number generators, also developed a set of statistical tools called <a href="https://en.wikipedia.org/wiki/Diehard_tests" rel="nofollow noreferrer">Diehard tests</a> that can be used to analyse the "randomness" of the sequences generated. Currently, the <a href="https://en.wikipedia.org/wiki/TestU01" rel="nofollow noreferrer">TestU01</a> tests are probably the most widely used and trusted; in particular, the 160-test BigCrush set.</p> 1119 1120 <p>The sequence generated by ordinary pseudorandom number generators often allows one to determine the internal state of the generator. This means that observing a long enough generated sequence, allows one to fairly reliably predict the future sequence. <a href="https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator" rel="nofollow noreferrer">Cryptographically secure pseudorandom number generators</a> avoid that, usually by applying a cryptographically secure hash function to the output; one would need a catalog of the entire sequence to be able to follow it. When the periods are longer than 2<sup>256</sup> or so, there is not enough baryonic matter in the entire observable universe to store the sequence.</p> 1121 1122 <p>My own favourite PRNG is Xorshift64*, which has a period of 2<sup>64</sup>-1, and passes all but the MatrixRank test in BigCrush. In C99 and later, you can implement it using</p> 1123 1124 <pre><code>#include <inttypes.h> 1125 1126 typedef struct { 1127 uint64_t state; 1128 } prng_state; 1129 1130 static inline uint64_t prng_u64(prng_state *const p) 1131 { 1132 uint64_t state = p->state; 1133 state ^= state >> 12; 1134 state ^= state << 25; 1135 state ^= state >> 27; 1136 p->state = state; 1137 return state * UINT64_C(2685821657736338717); 1138 } 1139 </code></pre> 1140 1141 <p>The state can be initialized to any nonzero <code>uint64_t</code>. (A zero state will lead the generator to generate all zeros till infinity. The period is 2<sup>64</sup>-1, because the generator will have each 64-bit state (excluding zero) exactly once during each period.)</p> 1142 1143 <p>It is good enough for most use cases, and extremely fast. It belongs to the class of <a href="https://en.wikipedia.org/wiki/Linear-feedback_shift_register" rel="nofollow noreferrer">linear-feedback shift register</a> pseudorandom number generators.</p> 1144 1145 <p>Note that the variant which returns an uniform distribution between 0 and 1,</p> 1146 1147 <pre><code>static inline double prng_one(prng_state *p) 1148 { 1149 return prng_u64(p) / 18446744073709551616.0; 1150 } 1151 </code></pre> 1152 1153 <p>uses the high bits; the high 32 bits of the sequence does pass all BigCrunch tests in TestU01 suite, so this is a surprisingly good (randomness and efficiency) generator for double-precision uniform random numbers -- my typical use case.</p> 1154 1155 <p>The format above allows multiple independent generators in a single process, by specifying the generator state as a parameter. If the basic generator is implemented in a header file (thus the <code>static inline</code>; it is a preprocessor macro-like function), you can switch between generators by switching between header files, and recompiling the binary.</p> 1156 1157 <p>(You are usually better off by using a single generator, unless you use multiple threads in a pseudorandom number heavy simulator, in which case using a separate generator for each thread will help a lot; avoids cacheline ping-pong between threads competing for the generator state, in particular.)</p> 1158 1159 <p>The <code>rand()</code> function in most C standard library implementations is a <a href="https://en.wikipedia.org/wiki/Linear_congruential_generator" rel="nofollow noreferrer">linear-congruential generator</a>. They often suffer from poor choices of the coefficients, and nowadays, also from the relative slowness of the modulo operator (when the modulus is not a power of two).</p> 1160 1161 <p>The most widely used pseudorandom number generator is the <a href="https://en.wikipedia.org/wiki/Mersenne_Twister" rel="nofollow noreferrer">Mersenne Twister</a>, by Makoto Matsumoto (松本 眞) and Takuji Nishimura (西村 拓士). It is a twisted generalized linear feedback shift register, and has quite a large state (about 2500 bytes) and very long period (2<sup>19937</sup>-1).</p> 1162 1163 <hr> 1164 1165 <p>When we talk of <em>true</em> random number generators, we usually mean a combination of a pseudorandom number generator (usually a cryptographically secure one), and a source of <a href="https://en.wikipedia.org/wiki/Entropy_(computing)" rel="nofollow noreferrer">entropy</a>; random bits with at least some degree of true physical randomness.</p> 1166 1167 <p>In Linux, Mac OS, and BSDs at least, the operating system kernel exposes a source of pseudorandom numbers (<a href="http://man7.org/linux/man-pages/man2/getrandom.2.html" rel="nofollow noreferrer"><code>getentropy()</code></a> in Linux and OpenBSD, <a href="http://man7.org/linux/man-pages/man2/getrandom.2.html" rel="nofollow noreferrer"><code>getrandom()</code></a> in Linux, <code>/dev/urandom</code>, <code>/dev/arandom</code>, <code>/dev/random</code> in many Unixes, and so on). Entropy is gathered from physical electronic sources, like internal processor latencies, physical interrupt line timings, (spinning disk) hard drive timings, possibly even keyboard and mice. Many motherboards and some processors even have <a href="https://en.wikipedia.org/wiki/Hardware_random_number_generator" rel="nofollow noreferrer">hardware random number sources</a> that can be used as sources for entropy (or even directly as "trusted randomness sources").</p> 1168 1169 <p>The <a href="https://en.wikipedia.org/wiki/Exclusive-or" rel="nofollow noreferrer">exclusive-or operation</a> (<code>^</code> in C) is used to mix in randomness to the generator state. This works, because exclusive-or between a known bit and a random bit results in a random bit; XOR preserves randomness. When mixing entropy pools (with some degree of randomness in the bit states) using XOR, the result will have at least as much entropy as the sources had.</p> 1170 1171 <p>Note that that does <em>not</em> mean that you get "better" random numbers by mixing the output of two or more generators. The statistics of true randomness is hard for humans to grok (just look at how poor the common early <code>rand()</code> implementations were! HORRIBLE!). It is better to pick a generator (or a set of generators to switch between at compile time, or at run time) that passes the BigCrunch tests, and ensure it has a good random initial state on every run. That way you leverage the work of many mathematicians and others who have worked on these things for decades, and can concentrate on the other stuff, what you yourself are good at.</p> 1172 </div> 1173 <div class="mt24"> 1174 <div class="d-flex fw-wrap ai-start jc-end gs8 gsy"> 1175 <time itemprop="dateCreated" datetime="2018-12-23T00:56:34"></time> 1176 <div class="flex--item mr16" style="flex: 1 1 100px;"> 1177 1178 1179 1180 <div class="js-post-menu pt2" data-post-id="53900430" data-post-type-id="2"> 1181 1182 <div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap"> 1183 1184 <div class="flex--item"> 1185 <a href="/a/53900430" 1186 rel="nofollow" 1187 itemprop="url" 1188 class="js-share-link js-gps-track" 1189 title="Short permalink to this answer" 1190 data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })" 1191 data-controller="se-share-sheet" 1192 data-se-share-sheet-title="Share a link to this answer" 1193 data-se-share-sheet-subtitle="" 1194 data-se-share-sheet-post-type="answer" 1195 data-se-share-sheet-social="facebook twitter devto" 1196 data-se-share-sheet-location="2" 1197 data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" 1198 data-se-share-sheet-license-name="CC BY-SA 4.0" 1199 data-s-popover-placement="bottom-start">Share</a> 1200 </div> 1201 1202 1203 1204 <div class="flex--item"> 1205 <button type="button" 1206 id="btnFollowPost-53900430" class="s-btn s-btn__link js-follow-post js-follow-answer js-gps-track" 1207 data-gps-track="post.click({ item: 14, priv: 0, post_type: 2 })" 1208 data-controller="s-tooltip " data-s-tooltip-placement="bottom" 1209 data-s-popover-placement="bottom" aria-controls="" 1210 title="Follow this answer to receive notifications"> 1211 Follow 1212 </button> 1213 </div> 1214 1215 1216 1217 1218 1219 1220 </div> 1221 <div class="js-menu-popup-container"></div> 1222 </div> 1223 </div> 1224 <div class="post-signature flex--item fl0"> 1225 <div class="user-info "> 1226 <div class="user-action-time"> 1227 <a href="/posts/53900430/revisions" title="show all edits to this post" 1228 class="js-gps-track" 1229 data-gps-track="post.click({ item: 4, priv: 0, post_type: 2 })">edited <span title='2018-12-23 01:02:09Z' class='relativetime'>Dec 23, 2018 at 1:02</span></a> 1230 </div> 1231 <div class="user-gravatar32"> 1232 1233 </div> 1234 <div class="user-details"> 1235 1236 <div class="-flair"> 1237 1238 </div> 1239 </div> 1240 </div> 1241 </div> 1242 1243 1244 <div class="post-signature flex--item fl0"> 1245 <div class="user-info user-hover"> 1246 <div class="user-action-time"> 1247 answered <span title='2018-12-23 00:56:34Z' class='relativetime'>Dec 23, 2018 at 0:56</span> 1248 </div> 1249 <div class="user-gravatar32"> 1250 <a href="/users/1475978/nominal-animal"><div class="gravatar-wrapper-32"><img src="https://i.stack.imgur.com/CUdQt.png?s=64&g=1" alt="Nominal Animal's user avatar" width="32" height="32" class="bar-sm"></div></a> 1251 </div> 1252 <div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person"> 1253 <a href="/users/1475978/nominal-animal">Nominal Animal</a><span class="d-none" itemprop="name">Nominal Animal</span> 1254 <div class="-flair"> 1255 <span class="reputation-score" title="reputation score 38,566" dir="ltr">38.6k</span><span title="5 gold badges" aria-hidden="true"><span class="badge1"></span><span class="badgecount">5</span></span><span class="v-visible-sr">5 gold badges</span><span title="60 silver badges" aria-hidden="true"><span class="badge2"></span><span class="badgecount">60</span></span><span class="v-visible-sr">60 silver badges</span><span title="89 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">89</span></span><span class="v-visible-sr">89 bronze badges</span> 1256 </div> 1257 </div> 1258 </div> 1259 1260 1261 </div> 1262 </div> 1263 1264 1265 </div> 1266 1267 </div> 1268 1269 1270 1271 1272 <span class="d-none" itemprop="commentCount"></span> 1273 <div class="post-layout--right js-post-comments-component"> 1274 <div id="comments-53900430" class="comments js-comments-container bt bc-black-200 mt12 dno" data-post-id="53900430" data-min-length="15"> 1275 <ul class="comments-list js-comments-list" 1276 data-remaining-comments-count="0" 1277 data-canpost="false" 1278 data-cansee="true" 1279 data-comments-unavailable="false" 1280 data-addlink-disabled="true"> 1281 1282 </ul> 1283 </div> 1284 1285 <div id="comments-link-53900430" data-rep=50 data-anon=true> 1286 <a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid comments like “+1” or “thanks”." href="#" role="button">Add a comment</a> 1287 <span class="js-link-separator dno"> | </span> 1288 <a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a> 1289 </div> 1290 </div> 1291 </div> 1292 </div> 1293 1294 <div class="js-zone-container zone-container-main"> 1295 <div id="dfp-mlb" class="everyonelovesstackoverflow everyoneloves__mid-leaderboard everyoneloves__leaderboard"></div> 1296 <div class="js-report-ad-button-container " style="width: 728px"></div> 1297 </div> 1298 1299 <a name="53886716"></a> 1300 <div id="answer-53886716" class="answer js-answer accepted-answer js-accepted-answer" data-answerid="53886716" data-parentid="53886131" data-score="2" data-position-on-page="2" data-highest-scored="0" data-question-has-accepted-highest-score="0" itemprop="suggestedAnswer" itemscope itemtype="https://schema.org/Answer"> 1301 <div class="post-layout"> 1302 <div class="votecell post-layout--left"> 1303 <div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="53886716" data-referrer="None"> 1304 <button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 1305 data-controller="s-tooltip" 1306 data-s-tooltip-placement="right" 1307 title="This answer is useful" 1308 aria-pressed="false" 1309 aria-label="Up vote" 1310 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 1311 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 1312 <svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg> 1313 </button> 1314 <div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4" 1315 itemprop="upvoteCount" 1316 data-value="2"> 1317 2 1318 </div> 1319 <button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200" 1320 data-controller="s-tooltip" 1321 data-s-tooltip-placement="right" 1322 title="This answer is not useful" 1323 aria-pressed="false" 1324 aria-label="Down vote" 1325 data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100" 1326 data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200"> 1327 <svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg> 1328 </button> 1329 1330 1331 1332 <button class="js-saves-btn s-btn s-btn__unset c-pointer py4" 1333 type="button" 1334 id="saves-btn-53886716" 1335 data-controller="s-tooltip" 1336 data-s-tooltip-placement="right" 1337 data-s-popover-placement="" 1338 title="Save this answer." 1339 aria-pressed="false" 1340 data-post-id="53886716" 1341 data-post-type-id="2" 1342 data-user-privilege-for-post-click="0" 1343 aria-controls="" 1344 data-s-popover-auto-show="false" 1345 > 1346 <svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 1347 <svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg> 1348 </button> 1349 1350 1351 1352 1353 1354 1355 1356 <div class="js-accepted-answer-indicator flex--item fc-green-400 py6 mtn8" data-s-tooltip-placement="right" title="Loading when this answer was accepted…" tabindex="0" role="note" aria-label="Accepted"> 1357 <div class="ta-center"> 1358 <svg aria-hidden="true" class="svg-icon iconCheckmarkLg" width="36" height="36" viewBox="0 0 36 36"><path d="m6 14 8 8L30 6v8L14 30l-8-8v-8Z"/></svg> 1359 </div> 1360 </div> 1361 1362 1363 <a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/53886716/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a> 1364 1365 </div> 1366 1367 </div> 1368 1369 1370 1371 <div class="answercell post-layout--right"> 1372 1373 <div class="s-prose js-post-body" itemprop="text"> 1374 <p>The C code in the wikipedia article is somewhat misleading:</p> 1375 1376 <p>Here is a working example that uses both the 32 bit and the 64 bit versions:</p> 1377 1378 <pre><code>#include <stdio.h> 1379 #include <stdint.h> 1380 1381 /* The state word must be initialized to non-zero */ 1382 uint32_t xorshift32(uint32_t state[]) 1383 { 1384 /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */ 1385 uint32_t x = state[0]; 1386 x ^= x << 13; 1387 x ^= x >> 17; 1388 x ^= x << 5; 1389 state[0] = x; 1390 return x; 1391 } 1392 1393 uint64_t xorshift64(uint64_t state[]) 1394 { 1395 uint64_t x = state[0]; 1396 x ^= x << 13; 1397 x ^= x >> 7; 1398 x ^= x << 17; 1399 state[0] = x; 1400 return x; 1401 } 1402 1403 int main() 1404 { 1405 uint32_t state[1] = {1234}; // "seed" (can be anthing but 0) 1406 1407 for (int i = 0; i < 50; i++) 1408 { 1409 printf("%u\n", xorshift32(state)); 1410 } 1411 1412 uint64_t state64[1] = { 1234 }; // "seed" (can be anthing but 0) 1413 1414 for (int i = 0; i < 50; i++) 1415 { 1416 printf("%llu\n", xorshift64(state64)); 1417 } 1418 } 1419 </code></pre> 1420 1421 <p>The mathematical aspects are explained in the wikipedia article and in it's footnotes.</p> 1422 1423 <p>The rest is basic C language knowledge, <code>^</code> is the C bitwise XOR operator.</p> 1424 </div> 1425 <div class="mt24"> 1426 <div class="d-flex fw-wrap ai-start jc-end gs8 gsy"> 1427 <time itemprop="dateCreated" datetime="2018-12-21T14:48:07"></time> 1428 <div class="flex--item mr16" style="flex: 1 1 100px;"> 1429 1430 1431 1432 <div class="js-post-menu pt2" data-post-id="53886716" data-post-type-id="2"> 1433 1434 <div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap"> 1435 1436 <div class="flex--item"> 1437 <a href="/a/53886716" 1438 rel="nofollow" 1439 itemprop="url" 1440 class="js-share-link js-gps-track" 1441 title="Short permalink to this answer" 1442 data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })" 1443 data-controller="se-share-sheet" 1444 data-se-share-sheet-title="Share a link to this answer" 1445 data-se-share-sheet-subtitle="" 1446 data-se-share-sheet-post-type="answer" 1447 data-se-share-sheet-social="facebook twitter devto" 1448 data-se-share-sheet-location="2" 1449 data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" 1450 data-se-share-sheet-license-name="CC BY-SA 4.0" 1451 data-s-popover-placement="bottom-start">Share</a> 1452 </div> 1453 1454 1455 1456 <div class="flex--item"> 1457 <button type="button" 1458 id="btnFollowPost-53886716" class="s-btn s-btn__link js-follow-post js-follow-answer js-gps-track" 1459 data-gps-track="post.click({ item: 14, priv: 0, post_type: 2 })" 1460 data-controller="s-tooltip " data-s-tooltip-placement="bottom" 1461 data-s-popover-placement="bottom" aria-controls="" 1462 title="Follow this answer to receive notifications"> 1463 Follow 1464 </button> 1465 </div> 1466 1467 1468 1469 1470 1471 1472 </div> 1473 <div class="js-menu-popup-container"></div> 1474 </div> 1475 </div> 1476 1477 1478 <div class="post-signature flex--item fl0"> 1479 <div class="user-info "> 1480 <div class="user-action-time"> 1481 answered <span title='2018-12-21 14:48:07Z' class='relativetime'>Dec 21, 2018 at 14:48</span> 1482 </div> 1483 <div class="user-gravatar32"> 1484 <a href="/users/898348/jabberwocky"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/13b3f2c44ba8449bd60764d07f4538dc?s=64&d=identicon&r=PG" alt="Jabberwocky's user avatar" width="32" height="32" class="bar-sm"></div></a> 1485 </div> 1486 <div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person"> 1487 <a href="/users/898348/jabberwocky">Jabberwocky</a><span class="d-none" itemprop="name">Jabberwocky</span> 1488 <div class="-flair"> 1489 <span class="reputation-score" title="reputation score 48,830" dir="ltr">48.8k</span><span title="18 gold badges" aria-hidden="true"><span class="badge1"></span><span class="badgecount">18</span></span><span class="v-visible-sr">18 gold badges</span><span title="65 silver badges" aria-hidden="true"><span class="badge2"></span><span class="badgecount">65</span></span><span class="v-visible-sr">65 silver badges</span><span title="116 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">116</span></span><span class="v-visible-sr">116 bronze badges</span> 1490 </div> 1491 </div> 1492 </div> 1493 1494 1495 </div> 1496 </div> 1497 1498 1499 </div> 1500 1501 </div> 1502 1503 1504 1505 1506 <span class="d-none" itemprop="commentCount"></span> 1507 <div class="post-layout--right js-post-comments-component"> 1508 <div id="comments-53886716" class="comments js-comments-container bt bc-black-200 mt12 dno" data-post-id="53886716" data-min-length="15"> 1509 <ul class="comments-list js-comments-list" 1510 data-remaining-comments-count="0" 1511 data-canpost="false" 1512 data-cansee="true" 1513 data-comments-unavailable="false" 1514 data-addlink-disabled="true"> 1515 1516 </ul> 1517 </div> 1518 1519 <div id="comments-link-53886716" data-rep=50 data-anon=true> 1520 <a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid comments like “+1” or “thanks”." href="#" role="button">Add a comment</a> 1521 <span class="js-link-separator dno"> | </span> 1522 <a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a> 1523 </div> 1524 </div> 1525 </div> 1526 </div> 1527 1528 1529 <a name='new-answer'></a> 1530 <form id="post-form" action="/questions/53886131/answer/submit" method="post" class="js-add-answer-component post-form"> 1531 <input type="hidden" id="post-id" value="53886131" /> 1532 <input type="hidden" id="qualityBanWarningShown" name="qualityBanWarningShown" value="false" /> 1533 <input type="hidden" name="referrer" value="" /> 1534 <h2 class="space" id="your-answer-header"> 1535 Your Answer 1536 </h2> 1537 1538 1539 <script> 1540 StackExchange.ifUsing("editor", function () { 1541 StackExchange.using("externalEditor", function () { 1542 StackExchange.using("snippets", function () { 1543 StackExchange.snippets.init(); 1544 }); 1545 }); 1546 }, "code-snippets"); 1547 </script> 1548 1549 1550 <script> 1551 StackExchange.ready(function() { 1552 var channelOptions = { 1553 tags: "".split(" "), 1554 id: "1" 1555 }; 1556 initTagRenderer("".split(" "), "".split(" "), channelOptions); 1557 1558 StackExchange.using("externalEditor", function() { 1559 // Have to fire editor after snippets, if snippets enabled 1560 if (StackExchange.settings.snippets.snippetsEnabled) { 1561 StackExchange.using("snippets", function() { 1562 createEditor(); 1563 }); 1564 } 1565 else { 1566 createEditor(); 1567 } 1568 }); 1569 1570 function createEditor() { 1571 StackExchange.prepareEditor({ 1572 useStacksEditor: false, 1573 heartbeatType: 'answer', 1574 autoActivateHeartbeat: false, 1575 convertImagesToLinks: true, 1576 noModals: true, 1577 showLowRepImageUploadWarning: true, 1578 reputationToPostImages: 10, 1579 bindNavPrevention: true, 1580 postfix: "", 1581 imageUploader: { 1582 brandingHtml: "Powered by \u003ca href=\"https://imgur.com/\"\u003e\u003csvg class=\"svg-icon\" width=\"50\" height=\"18\" viewBox=\"0 0 50 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\u003ctitle\u003eImgur Logo\u003c/title\u003e\u003cpath d=\"M46.1709 9.17788C46.1709 8.26454 46.2665 7.94324 47.1084 7.58816C47.4091 7.46349 47.7169 7.36433 48.0099 7.26993C48.9099 6.97997 49.672 6.73443 49.672 5.93063C49.672 5.22043 48.9832 4.61182 48.1414 4.61182C47.4335 4.61182 46.7256 4.91628 46.0943 5.50789C45.7307 4.9328 45.2525 4.66231 44.6595 4.66231C43.6264 4.66231 43.1481 5.28821 43.1481 6.59048V11.9512C43.1481 13.2535 43.6264 13.8962 44.6595 13.8962C45.6924 13.8962 46.1709 13.2535 46.1709 11.9512V9.17788Z\"/\u003e\u003cpath d=\"M32.492 10.1419C32.492 12.6954 34.1182 14.0484 37.0451 14.0484C39.9723 14.0484 41.5985 12.6954 41.5985 10.1419V6.59049C41.5985 5.28821 41.1394 4.66232 40.1061 4.66232C39.0732 4.66232 38.5948 5.28821 38.5948 6.59049V9.60062C38.5948 10.8521 38.2696 11.5455 37.0451 11.5455C35.8209 11.5455 35.4954 10.8521 35.4954 9.60062V6.59049C35.4954 5.28821 35.0173 4.66232 34.0034 4.66232C32.9703 4.66232 32.492 5.28821 32.492 6.59049V10.1419Z\" /\u003e\u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.6622 17.6335C27.8049 17.6335 29.3739 16.9402 30.2537 15.6379C30.8468 14.7755 30.9615 13.5579 30.9615 11.9512V6.59049C30.9615 5.28821 30.4833 4.66231 29.4502 4.66231C28.9913 4.66231 28.4555 4.94978 28.1109 5.50789C27.499 4.86533 26.7335 4.56087 25.7005 4.56087C23.1369 4.56087 21.0134 6.57349 21.0134 9.27932C21.0134 11.9852 23.003 13.913 25.3754 13.913C26.5612 13.913 27.4607 13.4902 28.1109 12.6616C28.1109 12.7229 28.1161 12.7799 28.121 12.8346C28.1256 12.8854 28.1301 12.9342 28.1301 12.983C28.1301 14.4373 27.2502 15.2321 25.777 15.2321C24.8349 15.2321 24.1352 14.9821 23.5661 14.7787C23.176 14.6393 22.8472 14.5218 22.5437 14.5218C21.7977 14.5218 21.2429 15.0123 21.2429 15.6887C21.2429 16.7375 22.9072 17.6335 25.6622 17.6335ZM24.1317 9.27932C24.1317 7.94324 24.9928 7.09766 26.1024 7.09766C27.2119 7.09766 28.0918 7.94324 28.0918 9.27932C28.0918 10.6321 27.2311 11.5116 26.1024 11.5116C24.9737 11.5116 24.1317 10.6491 24.1317 9.27932Z\"/\u003e\u003cpath d=\"M16.8045 11.9512C16.8045 13.2535 17.2637 13.8962 18.2965 13.8962C19.3298 13.8962 19.8079 13.2535 19.8079 11.9512V8.12928C19.8079 5.82936 18.4879 4.62866 16.4027 4.62866C15.1594 4.62866 14.279 4.98375 13.3609 5.88013C12.653 5.05154 11.6581 4.62866 10.3573 4.62866C9.34336 4.62866 8.57809 4.89931 7.9466 5.5079C7.58314 4.9328 7.10506 4.66232 6.51203 4.66232C5.47873 4.66232 5.00066 5.28821 5.00066 6.59049V11.9512C5.00066 13.2535 5.47873 13.8962 6.51203 13.8962C7.54479 13.8962 8.0232 13.2535 8.0232 11.9512V8.90741C8.0232 7.58817 8.44431 6.91179 9.53458 6.91179C10.5104 6.91179 10.893 7.58817 10.893 8.94108V11.9512C10.893 13.2535 11.3711 13.8962 12.4044 13.8962C13.4375 13.8962 13.9157 13.2535 13.9157 11.9512V8.90741C13.9157 7.58817 14.3365 6.91179 15.4269 6.91179C16.4027 6.91179 16.8045 7.58817 16.8045 8.94108V11.9512Z\"/\u003e\u003cpath d=\"M3.31675 6.59049C3.31675 5.28821 2.83866 4.66232 1.82471 4.66232C0.791758 4.66232 0.313354 5.28821 0.313354 6.59049V11.9512C0.313354 13.2535 0.791758 13.8962 1.82471 13.8962C2.85798 13.8962 3.31675 13.2535 3.31675 11.9512V6.59049Z\" /\u003e\u003cpath d=\"M1.87209 0.400291C0.843612 0.400291 0 1.1159 0 1.98861C0 2.87869 0.822846 3.57676 1.87209 3.57676C2.90056 3.57676 3.7234 2.87869 3.7234 1.98861C3.7234 1.1159 2.90056 0.400291 1.87209 0.400291Z\" fill=\"#1BB76E\"/\u003e\u003c/svg\u003e\u003c/a\u003e", 1583 contentPolicyHtml: "User contributions licensed under \u003ca href=\"https://stackoverflow.com/help/licensing\"\u003eCC BY-SA\u003c/a\u003e \u003ca href=\"https://stackoverflow.com/legal/acceptable-use-policy\"\u003e(content policy)\u003c/a\u003e", 1584 allowUrls: true 1585 }, 1586 onDemand: true, 1587 discardSelector: ".discard-answer", 1588 enableTables: true, 1589 isStacksEditorPreviewEnabled: false 1590 ,immediatelyShowMarkdownHelp:true,enableTables:true,enableSnippets:true 1591 }); 1592 } 1593 }); 1594 </script> 1595 <div id="post-editor" class="post-editor js-post-editor"> 1596 1597 1598 <div class="ps-relative"> 1599 <div class="wmd-container mb8"> 1600 <div id="wmd-button-bar" class="wmd-button-bar btr-sm"></div> 1601 <div class="js-stacks-validation"> 1602 <div class="ps-relative"> 1603 <textarea id="wmd-input" 1604 name="post-text" 1605 class="wmd-input s-input bar0 js-post-body-field" 1606 data-editor-type="wmd" 1607 data-post-type-id="2" 1608 cols="92" rows="15" 1609 aria-labelledby="your-answer-header" 1610 tabindex="101" 1611 data-min-length=""></textarea> 1612 </div> 1613 <div class="s-input-message mt4 d-none js-stacks-validation-message"></div> 1614 </div> 1615 </div> 1616 </div> 1617 1618 <aside class="d-flex ai-start jc-space-between js-answer-help s-notice s-notice__warning pb0 pr4 pt4 mb8 d-none" role="status" aria-hidden="true"> 1619 <div class="flex--item pt8"> 1620 <p>Thanks for contributing an answer to Stack Overflow!</p><ul><li>Please be sure to <em>answer the question</em>. Provide details and share your research!</li></ul><p>But <em>avoid</em> …</p><ul><li>Asking for help, clarification, or responding to other answers.</li><li>Making statements based on opinion; back them up with references or personal experience.</li></ul><p>To learn more, see our <a href="/help/how-to-answer">tips on writing great answers</a>.</p> 1621 </div> 1622 <button class="flex--item js-answer-help-close-btn s-btn s-btn__muted fc-black-600"> 1623 <svg aria-hidden="true" class="svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9 15 4.41Z"/></svg> 1624 </button> 1625 </aside> 1626 1627 1628 1629 <div> 1630 <div id="draft-saved" class="fc-success h24" style="display:none;">Draft saved</div> 1631 <div id="draft-discarded" class="fc-error h24" style="display:none;">Draft discarded</div> 1632 </div> 1633 1634 1635 <div id="wmd-preview" class="s-prose mb16 wmd-preview js-wmd-preview"></div> 1636 <div></div> 1637 1638 <div class="edit-block"> 1639 <input id="fkey" name="fkey" type="hidden" value="d8a1f9f0d8241e1b245c6f93920897c7b1457a3e09f1f846dafb3a27efbe14a3"> 1640 <input id="author" name="author" type="text"> 1641 </div> 1642 1643 </div> 1644 1645 1646 <div class="ps-relative"> 1647 <div class="form-item dno new-post-login p0 my16"> 1648 <div class="d-flex gs16 md:fd-column new-login-form"> 1649 <div class="d-flex fd-column w50 md:w-auto gsy gs8 jc-space-between new-login-left"> 1650 <h3 class="flex--item fs-title">Sign up or <a id="login-link" href="/users/login?ssrc=question_page&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works%23new-answer">log in</a></h3> 1651 <script> 1652 StackExchange.ready(function () { 1653 StackExchange.helpers.onClickDraftSave('#login-link'); 1654 }); 1655 </script> 1656 <div class="flex--item s-btn s-btn__muted s-btn__outlined s-btn__icon google-login" data-ga="["sign up","Sign Up Started - Google","New Post",null,null]"> 1657 <svg aria-hidden="true" class="native svg-icon iconGoogle" width="18" height="18" viewBox="0 0 18 18"><path fill="#4285F4" d="M16.51 8H8.98v3h4.3c-.18 1-.74 1.48-1.6 2.04v2.01h2.6a7.8 7.8 0 0 0 2.38-5.88c0-.57-.05-.66-.15-1.18Z"/><path fill="#34A853" d="M8.98 17c2.16 0 3.97-.72 5.3-1.94l-2.6-2a4.8 4.8 0 0 1-7.18-2.54H1.83v2.07A8 8 0 0 0 8.98 17Z"/><path fill="#FBBC05" d="M4.5 10.52a4.8 4.8 0 0 1 0-3.04V5.41H1.83a8 8 0 0 0 0 7.18l2.67-2.07Z"/><path fill="#EA4335" d="M8.98 4.18c1.17 0 2.23.4 3.06 1.2l2.3-2.3A8 8 0 0 0 1.83 5.4L4.5 7.49a4.77 4.77 0 0 1 4.48-3.3Z"/></svg> Sign up using Google 1658 </div> 1659 <div class="flex--item s-btn s-btn__muted s-btn__icon facebook-login" data-ga="["sign up","Sign Up Started - Facebook","New Post",null,null]"> 1660 <svg aria-hidden="true" class="svg-icon iconFacebook" width="18" height="18" viewBox="0 0 18 18"><path fill="#4167B2" d="M3 1a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3Zm6.55 16v-6.2H7.46V8.4h2.09V6.61c0-2.07 1.26-3.2 3.1-3.2.88 0 1.64.07 1.87.1v2.16h-1.29c-1 0-1.19.48-1.19 1.18V8.4h2.39l-.31 2.42h-2.08V17h-2.5Z"/></svg> Sign up using Facebook 1661 </div> 1662 <div class="flex--item s-btn s-btn__muted s-btn__outlined s-btn__icon stackexchange-login" data-ga="["sign up","Sign Up Navigation","New Post",null,null]"> 1663 <svg aria-hidden="true" class="native svg-icon iconLogoGlyphXSm" width="18" height="18" viewBox="0 0 18 18"><path d="M14 16v-5h2v7H2v-7h2v5h10Z" fill="#BCBBBB"/><path d="m12.09.72-1.21.9 4.5 6.07 1.22-.9L12.09.71ZM5 15h8v-2H5v2Zm9.15-5.87L8.35 4.3l.96-1.16 5.8 4.83-.96 1.16Zm-7.7-1.47 6.85 3.19.63-1.37-6.85-3.2-.63 1.38Zm6.53 5L5.4 11.39l.38-1.67 7.42 1.48-.22 1.46Z" fill="#F48024"/></svg> Sign up using Email and Password 1664 </div> 1665 </div> 1666 <input type="hidden" name="use-facebook" class="use-facebook" value="false" /> 1667 <input type="hidden" name="use-google" class="use-google" value="false" /> 1668 <button type="button" class="d-none js-submit-openid">Submit</button> 1669 <div class="d-flex gsy gs8 fd-column w50 md:w-auto new-login-right form-item p0"> 1670 <h3 class="flex--item fs-title">Post as a guest</h3> 1671 <div class="flex--item"> 1672 <div class="d-flex gs4 gsy fd-column"> 1673 <label class="s-label" for="display-name">Name</label> 1674 <div class="d-flex ps-relative"> 1675 <input class="s-input" id="display-name" name="display-name" maxlength="30" type="text" value="" tabindex="105" placeholder="" /> 1676 </div> 1677 </div> 1678 </div> 1679 <div class="flex--item"> 1680 <div class="d-flex gs4 gsy fd-column"> 1681 <div class="flex--item"> 1682 <div class="d-flex gs2 gsy fd-column"> 1683 <label class="flex--item s-label" for="m-address">Email</label> 1684 <p class="flex--item s-description">Required, but never shown</p> 1685 </div> 1686 </div> 1687 <div class="d-flex ps-relative"> 1688 <input class="s-input js-post-email-field" id="m-address" name="m-address" type="text" value="" size="40" tabindex="106" placeholder="" /> 1689 </div> 1690 </div> 1691 </div> 1692 1693 </div> 1694 </div> 1695 </div> 1696 <script> 1697 StackExchange.ready( 1698 function () { 1699 StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53886131%2fhow-does-xorshift32-works%23new-answer', 'question_page'); 1700 } 1701 ); 1702 </script> 1703 <noscript> 1704 <h3 class="flex--item fs-title">Post as a guest</h3> 1705 <div class="flex--item"> 1706 <div class="d-flex gs4 gsy fd-column"> 1707 <label class="s-label" for="display-name">Name</label> 1708 <div class="d-flex ps-relative"> 1709 <input class="s-input" id="display-name" name="display-name" maxlength="30" type="text" value="" tabindex="105" placeholder="" /> 1710 </div> 1711 </div> 1712 </div> 1713 <div class="flex--item"> 1714 <div class="d-flex gs4 gsy fd-column"> 1715 <div class="flex--item"> 1716 <div class="d-flex gs2 gsy fd-column"> 1717 <label class="flex--item s-label" for="m-address">Email</label> 1718 <p class="flex--item s-description">Required, but never shown</p> 1719 </div> 1720 </div> 1721 <div class="d-flex ps-relative"> 1722 <input class="s-input js-post-email-field" id="m-address" name="m-address" type="text" value="" size="40" tabindex="106" placeholder="" /> 1723 </div> 1724 </div> 1725 </div> 1726 1727 </noscript> 1728 1729 </div> 1730 1731 <div class="form-submit clear-both d-flex gsx gs4"> 1732 <button id="submit-button" class="flex--item s-btn s-btn__filled s-btn__icon" type="submit" tabindex="120" autocomplete="off"> 1733 Post Your Answer 1734 </button> 1735 <button class="flex--item s-btn s-btn__danger discard-answer dno"> 1736 Discard 1737 </button> 1738 <p class="privacy-policy-agreement"> 1739 By clicking “Post Your Answer”, you agree to our <a href='https://stackoverflow.com/legal/terms-of-service/public' name='tos' target='_blank' class='-link'>terms of service</a> and acknowledge that you have read and understand our <a href='https://stackoverflow.com/legal/privacy-policy' name='privacy' target='_blank' class='-link'>privacy policy</a> and <a href='/conduct' name='conduct' target='_blank' class='-link'>code of conduct</a>.<input type="hidden" name="legalLinksShown" value="1" /> 1740 </p> 1741 </div> 1742 <div class="js-general-error general-error clear-both d-none" aria-live="polite"></div> 1743 </form> 1744 1745 1746 <h2 class="bottom-notice" data-loc="1"> 1747 <div> 1748 Not the answer you're looking for? Browse other questions tagged <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/c" class="post-tag" title="show questions tagged 'c'" aria-label="show questions tagged 'c'" rel="tag" aria-labelledby="tag-c-tooltip-container">c</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/static" class="post-tag" title="show questions tagged 'static'" aria-label="show questions tagged 'static'" rel="tag" aria-labelledby="tag-static-tooltip-container">static</a></li></ul> or <a href="/questions/ask">ask your own question</a>. </div> 1749 </h2> 1750 </div> 1751 </div> 1752 1753 1754 <div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar"> 1755 1756 1757 1758 <div class="s-sidebarwidget s-sidebarwidget__yellow s-anchors s-anchors__grayscale mb16" data-tracker="cb=1"> 1759 <ul class="d-block p0 m0"> 1760 <li class="s-sidebarwidget--header s-sidebarwidget__small-bold-text d-flex fc-black-500 d:fc-black-600 bb bbw1"> 1761 The Overflow Blog 1762 </li> 1763 <li class="s-sidebarwidget--item d-flex px16"> 1764 <div class="flex--item1 fl-shrink0"> 1765 <svg aria-hidden="true" class="va-text-top svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg> </div> 1766 <div class="flex--item wmn0 ow-break-word"> 1767 <a href="https://stackoverflow.blog/2023/11/29/how-to-scale-a-business-ready-ai-platform-with-watsonx-q-and-a-with-ibm/" class="js-gps-track" data-ga="["community bulletin board","The Overflow Blog","https://stackoverflow.blog/2023/11/29/how-to-scale-a-business-ready-ai-platform-with-watsonx-q-and-a-with-ibm/",null,null]" data-gps-track="communitybulletin.click({ priority: 1, position: 0 })">How to scale a business-ready AI platform with watsonx: Q&A with IBM</a> 1768 <div class="fc-black-400 fs-italic">sponsored post</div> 1769 </div> 1770 </li> 1771 <li class="s-sidebarwidget--item d-flex px16"> 1772 <div class="flex--item1 fl-shrink0"> 1773 <svg aria-hidden="true" class="va-text-top svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg> </div> 1774 <div class="flex--item wmn0 ow-break-word"> 1775 <a href="https://stackoverflow.blog/2023/12/01/will-developers-return-to-hostile-offices/" class="js-gps-track" data-ga="["community bulletin board","The Overflow Blog","https://stackoverflow.blog/2023/12/01/will-developers-return-to-hostile-offices/",null,null]" data-gps-track="communitybulletin.click({ priority: 1, position: 1 })">Will developers return to hostile offices?</a> 1776 </div> 1777 </li> 1778 <li class="s-sidebarwidget--header s-sidebarwidget__small-bold-text d-flex fc-black-500 d:fc-black-600 bb bbw1"> 1779 Featured on Meta 1780 </li> 1781 <li class="s-sidebarwidget--item d-flex px16"> 1782 <div class="flex--item1 fl-shrink0"> 1783 <div class="favicon favicon-stackexchangemeta" title="Meta Stack Exchange"></div> </div> 1784 <div class="flex--item wmn0 ow-break-word"> 1785 <a href="https://meta.stackexchange.com/questions/394860/were-rolling-back-the-changes-to-the-acceptable-use-policy-aup" class="js-gps-track" data-ga="["community bulletin board","Featured on Meta","https://meta.stackexchange.com/questions/394860/were-rolling-back-the-changes-to-the-acceptable-use-policy-aup",null,null]" data-gps-track="communitybulletin.click({ priority: 3, position: 2 })">We're rolling back the changes to the Acceptable Use Policy (AUP)</a> 1786 </div> 1787 </li> 1788 <li class="s-sidebarwidget--item d-flex px16"> 1789 <div class="flex--item1 fl-shrink0"> 1790 <div class="favicon favicon-stackexchangemeta" title="Meta Stack Exchange"></div> </div> 1791 <div class="flex--item wmn0 ow-break-word"> 1792 <a href="https://meta.stackexchange.com/questions/395062/seeking-feedback-on-tag-colors-update" class="js-gps-track" data-ga="["community bulletin board","Featured on Meta","https://meta.stackexchange.com/questions/395062/seeking-feedback-on-tag-colors-update",null,null]" data-gps-track="communitybulletin.click({ priority: 3, position: 3 })">Seeking feedback on tag colors update</a> 1793 </div> 1794 </li> 1795 <li class="s-sidebarwidget--item d-flex px16"> 1796 <div class="flex--item1 fl-shrink0"> 1797 <div class="favicon favicon-stackoverflowmeta" title="Meta Stack Overflow"></div> </div> 1798 <div class="flex--item wmn0 ow-break-word"> 1799 <a href="https://meta.stackoverflow.com/questions/427199/collectives-updates-new-features-and-ways-to-get-started-with-discussions" class="js-gps-track" data-ga="["community bulletin board","Featured on Meta","https://meta.stackoverflow.com/questions/427199/collectives-updates-new-features-and-ways-to-get-started-with-discussions",null,null]" data-gps-track="communitybulletin.click({ priority: 6, position: 4 })">Collectives updates: new features and ways to get started with Discussions</a> 1800 </div> 1801 </li> 1802 <li class="s-sidebarwidget--item d-flex px16"> 1803 <div class="flex--item1 fl-shrink0"> 1804 <div class="favicon favicon-stackoverflowmeta" title="Meta Stack Overflow"></div> </div> 1805 <div class="flex--item wmn0 ow-break-word"> 1806 <a href="https://meta.stackoverflow.com/questions/427335/overflowai-alpha-invitation-emails-were-distributed-in-error-nov-28th" class="js-gps-track" data-ga="["community bulletin board","Featured on Meta","https://meta.stackoverflow.com/questions/427335/overflowai-alpha-invitation-emails-were-distributed-in-error-nov-28th",null,null]" data-gps-track="communitybulletin.click({ priority: 6, position: 5 })">OverflowAI Alpha invitation emails were distributed in error Nov 28th</a> 1807 </div> 1808 </li> 1809 <li class="s-sidebarwidget--item d-flex px16"> 1810 <div class="flex--item1 fl-shrink0"> 1811 <div class="favicon favicon-stackoverflowmeta" title="Meta Stack Overflow"></div> </div> 1812 <div class="flex--item wmn0 ow-break-word"> 1813 <a href="https://meta.stackoverflow.com/questions/421831/temporary-policy-generative-ai-e-g-chatgpt-is-banned" class="js-gps-track" data-ga="["community bulletin board","Featured on Meta","https://meta.stackoverflow.com/questions/421831/temporary-policy-generative-ai-e-g-chatgpt-is-banned",null,null]" data-gps-track="communitybulletin.click({ priority: 6, position: 6 })">Temporary policy: Generative AI (e.g., ChatGPT) is banned</a> 1814 </div> 1815 </li> 1816 </ul> 1817 </div> 1818 1819 1820 <div class="js-zone-container zone-container-sidebar"> 1821 <div id="dfp-tsb" class="everyonelovesstackoverflow everyoneloves__top-sidebar"></div> 1822 <div class="js-report-ad-button-container " style="width: 300px"></div> 1823 </div> 1824 <div class="js-zone-container zone-container-sidebar"> 1825 <div id="dfp-msb" class="everyonelovesstackoverflow everyoneloves__mid-sidebar"></div> 1826 <div class="js-report-ad-button-container " style="width: 300px"></div> 1827 </div> 1828 <div id="hireme"></div> <div class="module sidebar-linked"> 1829 <h4 id="h-linked">Linked</h4> 1830 <div class="linked" data-tracker="lq=1"> 1831 <div class="spacer js-gps-track" data-gps-track="linkedquestion.click({ source_post_id: 53886131, target_question_id: 53900208, position: 0 })"> 1832 <a href="/q/53900208" title="Question score (upvotes - downvotes)"> 1833 <div class="answer-votes default">-2</div> 1834 </a> 1835 <a href="/questions/53900208/does-rand-function-in-c-have-a-limit?noredirect=1" class="question-hyperlink">Does rand() function in C have a limit?</a> 1836 </div> 1837 </div> 1838 </div> 1839 1840 1841 1842 1843 1844 <div class="module sidebar-related"> 1845 <h4 id="h-related">Related</h4> 1846 <div class="related js-gps-related-questions" data-tracker="rq=3"> 1847 <div class="spacer" data-question-id="249423"> 1848 <a href="/q/249423" title="Question score (upvotes - downvotes)" > 1849 <div class="answer-votes answered-accepted default">86</div> 1850 </a> 1851 <a href="/questions/249423/how-does-xor-variable-swapping-work" class="question-hyperlink">How does XOR variable swapping work?</a> 1852 </div> 1853 <div class="spacer" data-question-id="4058339"> 1854 <a href="/q/4058339" title="Question score (upvotes - downvotes)" > 1855 <div class="answer-votes answered-accepted default">5</div> 1856 </a> 1857 <a href="/questions/4058339/what-is-0xff-and-why-is-it-shifted-24-times" class="question-hyperlink">What is 0xFF and why is it shifted 24 times?</a> 1858 </div> 1859 <div class="spacer" data-question-id="4749585"> 1860 <a href="/q/4749585" title="Question score (upvotes - downvotes)" > 1861 <div class="answer-votes answered-accepted default">54</div> 1862 </a> 1863 <a href="/questions/4749585/what-is-the-meaning-of-xor-in-x86-assembly" class="question-hyperlink">What is the meaning of XOR in x86 assembly?</a> 1864 </div> 1865 <div class="spacer" data-question-id="14713102"> 1866 <a href="/q/14713102" title="Question score (upvotes - downvotes)" > 1867 <div class="answer-votes answered-accepted default">62</div> 1868 </a> 1869 <a href="/questions/14713102/what-does-and-0xff-do" class="question-hyperlink">What does AND 0xFF do?</a> 1870 </div> 1871 <div class="spacer" data-question-id="22645109"> 1872 <a href="/q/22645109" title="Question score (upvotes - downvotes)" > 1873 <div class="answer-votes answered-accepted default">3</div> 1874 </a> 1875 <a href="/questions/22645109/what-is-bitwisexornor-in-x86-control-flow-operations" class="question-hyperlink">What is BitWiseXorNor in X86 control flow operations?</a> 1876 </div> 1877 <div class="spacer" data-question-id="26662260"> 1878 <a href="/q/26662260" title="Question score (upvotes - downvotes)" > 1879 <div class="answer-votes default">0</div> 1880 </a> 1881 <a href="/questions/26662260/confused-about-xor-usage-in-x86-assembly" class="question-hyperlink">confused about xor usage in x86 assembly</a> 1882 </div> 1883 <div class="spacer" data-question-id="34426499"> 1884 <a href="/q/34426499" title="Question score (upvotes - downvotes)" > 1885 <div class="answer-votes default">10</div> 1886 </a> 1887 <a href="/questions/34426499/what-is-the-real-definition-of-the-xorshift128-algorithm" class="question-hyperlink">What is the real definition of the xorshift128+ algorithm?</a> 1888 </div> 1889 <div class="spacer" data-question-id="35103741"> 1890 <a href="/q/35103741" title="Question score (upvotes - downvotes)" > 1891 <div class="answer-votes answered-accepted default">10</div> 1892 </a> 1893 <a href="/questions/35103741/what-is-the-purpose-of-xorps-on-the-same-register" class="question-hyperlink">What is the purpose of xorps on the same register?</a> 1894 </div> 1895 <div class="spacer" data-question-id="39034557"> 1896 <a href="/q/39034557" title="Question score (upvotes - downvotes)" > 1897 <div class="answer-votes answered-accepted default">3</div> 1898 </a> 1899 <a href="/questions/39034557/what-does-push-0xffffffff-mean-in-a-function-prologue" class="question-hyperlink">What does `PUSH 0xFFFFFFFF` mean in a function prologue?</a> 1900 </div> 1901 <div class="spacer" data-question-id="63156224"> 1902 <a href="/q/63156224" title="Question score (upvotes - downvotes)" > 1903 <div class="answer-votes default">0</div> 1904 </a> 1905 <a href="/questions/63156224/meaning-of-xor-shift" class="question-hyperlink">Meaning of XOR shift</a> 1906 </div> 1907 </div> 1908 </div> 1909 <script type="text/javascript"> 1910 $(document).ready(function() { 1911 $(".js-gps-related-questions .spacer").click(function () { 1912 fireRelatedEvent($(this).index() + 1, $(this).data('question-id')); 1913 }); 1914 1915 function fireRelatedEvent(position, questionId) { 1916 StackExchange.using("gps", function() { 1917 StackExchange.gps.track('related_questions.click', 1918 { 1919 position: position, 1920 originQuestionId: 53886131, 1921 relatedQuestionId: +questionId, 1922 location: 'sidebar', 1923 source: 'Baseline' 1924 }); 1925 }); 1926 } 1927 }); 1928 </script> 1929 1930 1931 1932 <div id="hot-network-questions" class="module tex2jax_ignore"> 1933 <h4> 1934 <a href="https://stackexchange.com/questions?tab=hot" 1935 class="js-gps-track s-link s-link__inherit" 1936 data-gps-track="posts_hot_network.click({ item_type:1, location:11 })"> 1937 Hot Network Questions 1938 </a> 1939 </h4> 1940 <ul> 1941 <li > 1942 <div class="favicon favicon-apple" title="Ask Different"></div><a href="https://apple.stackexchange.com/questions/466985/is-there-a-way-to-set-macos-accent-color-on-a-per-app-basis" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:118 }); posts_hot_network.click({ item_type:2, location:11 })"> 1943 Is there a way to set macOS' accent color on a per-app basis? 1944 </a> 1945 1946 </li> 1947 <li > 1948 <div class="favicon favicon-space" title="Space Exploration Stack Exchange"></div><a href="https://space.stackexchange.com/questions/64905/are-there-multiple-types-of-utc-time" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:508 }); posts_hot_network.click({ item_type:2, location:11 })"> 1949 Are there multiple types of UTC time? 1950 </a> 1951 1952 </li> 1953 <li > 1954 <div class="favicon favicon-skeptics" title="Skeptics Stack Exchange"></div><a href="https://skeptics.stackexchange.com/questions/56421/did-netanyahu-say-apparently-in-2001-i-actually-stopped-the-oslo-accords" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:212 }); posts_hot_network.click({ item_type:2, location:11 })"> 1955 Did Netanyahu say (apparently in 2001) "I actually stopped the Oslo Accords"? 1956 </a> 1957 1958 </li> 1959 <li > 1960 <div class="favicon favicon-unix" title="Unix & Linux Stack Exchange"></div><a href="https://unix.stackexchange.com/questions/762948/how-can-i-reformat-blocks-of-data-until-the-end-of-the-file-is-reached" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:106 }); posts_hot_network.click({ item_type:2, location:11 })"> 1961 How can I reformat blocks of data until the end of the file is reached? 1962 </a> 1963 1964 </li> 1965 <li > 1966 <div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/459586/what-are-some-toy-models-for-the-stable-homotopy-groups-of-spheres" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:504 }); posts_hot_network.click({ item_type:2, location:11 })"> 1967 What are some toy models for the stable homotopy groups of spheres? 1968 </a> 1969 1970 </li> 1971 <li class="dno js-hidden"> 1972 <div class="favicon favicon-quant" title="Quantitative Finance Stack Exchange"></div><a href="https://quant.stackexchange.com/questions/77580/us-swap-spreads" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:204 }); posts_hot_network.click({ item_type:2, location:11 })"> 1973 US swap spreads 1974 </a> 1975 1976 </li> 1977 <li class="dno js-hidden"> 1978 <div class="favicon favicon-codegolf" title="Code Golf Stack Exchange"></div><a href="https://codegolf.stackexchange.com/questions/267235/ungolf-the-wind" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:200 }); posts_hot_network.click({ item_type:2, location:11 })"> 1979 Ungolf the Wind 1980 </a> 1981 1982 </li> 1983 <li class="dno js-hidden"> 1984 <div class="favicon favicon-worldbuilding" title="Worldbuilding Stack Exchange"></div><a href="https://worldbuilding.stackexchange.com/questions/251606/what-would-the-effects-of-a-space-based-laser-weapon-system-capable-of-tracking" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:579 }); posts_hot_network.click({ item_type:2, location:11 })"> 1985 What would the effects of a space based laser weapon system capable of tracking and destroying any projectile posing a threat to human life? 1986 </a> 1987 1988 </li> 1989 <li class="dno js-hidden"> 1990 <div class="favicon favicon-scifi" title="Science Fiction & Fantasy Stack Exchange"></div><a href="https://scifi.stackexchange.com/questions/281371/sci-fi-book-where-humanoid-aliens-murder-a-researcher-by-killing-him-and-cutting" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:186 }); posts_hot_network.click({ item_type:2, location:11 })"> 1991 Sci fi book where humanoid aliens murder a researcher by killing him and cutting him open 1992 </a> 1993 1994 </li> 1995 <li class="dno js-hidden"> 1996 <div class="favicon favicon-hermeneutics" title="Biblical Hermeneutics Stack Exchange"></div><a href="https://hermeneutics.stackexchange.com/questions/88231/since-the-israelites-had-flocks-and-herds-a-very-large-number-of-livestock-in" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:320 }); posts_hot_network.click({ item_type:2, location:11 })"> 1997 Since the Israelites had flocks and herds & a very large number of livestock in Chapter 12 of Exodus, why did they complain of hunger in Chapter 16? 1998 </a> 1999 2000 </li> 2001 <li class="dno js-hidden"> 2002 <div class="favicon favicon-tex" title="TeX - LaTeX Stack Exchange"></div><a href="https://tex.stackexchange.com/questions/702952/rotate-a-set-of-points-in-tikz-figure" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:85 }); posts_hot_network.click({ item_type:2, location:11 })"> 2003 Rotate a set of points in Tikz figure 2004 </a> 2005 2006 </li> 2007 <li class="dno js-hidden"> 2008 <div class="favicon favicon-academia" title="Academia Stack Exchange"></div><a href="https://academia.stackexchange.com/questions/204530/advisor-student-collaboration-or-lack-thereof-and-paper-authorship-in-mathemat" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:415 }); posts_hot_network.click({ item_type:2, location:11 })"> 2009 Advisor-student collaboration (or lack thereof) and paper authorship in mathematics: how does it work? 2010 </a> 2011 2012 </li> 2013 <li class="dno js-hidden"> 2014 <div class="favicon favicon-rpg" title="Role-playing Games Stack Exchange"></div><a href="https://rpg.stackexchange.com/questions/209385/one-of-pcs-backstabbed-a-powerful-ally-how-do-i-punish-them-without-seeming-lik" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:122 }); posts_hot_network.click({ item_type:2, location:11 })"> 2015 One of PCs backstabbed a powerful ally. How do I punish them without seeming like singling them out? 2016 </a> 2017 2018 </li> 2019 <li class="dno js-hidden"> 2020 <div class="favicon favicon-hermeneutics" title="Biblical Hermeneutics Stack Exchange"></div><a href="https://hermeneutics.stackexchange.com/questions/88196/you-search-the-scriptures-how-has-the-democratization-of-access-to-the-scrip" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:320 }); posts_hot_network.click({ item_type:2, location:11 })"> 2021 "You Search the Scriptures" - How has the democratization of access to the scriptures affected biblical hermeneutics? (John 5:33, 39) 2022 </a> 2023 2024 </li> 2025 <li class="dno js-hidden"> 2026 <div class="favicon favicon-serverfault" title="Server Fault"></div><a href="https://serverfault.com/questions/1148998/remote-domain-dns-record-a-exists-when-ns-does-not" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:2 }); posts_hot_network.click({ item_type:2, location:11 })"> 2027 Remote domain: DNS record A exists when NS does not 2028 </a> 2029 2030 </li> 2031 <li class="dno js-hidden"> 2032 <div class="favicon favicon-superuser" title="Super User"></div><a href="https://superuser.com/questions/1819045/high-memory-usage-after-copying-1-million-small-files-win10-x64" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:3 }); posts_hot_network.click({ item_type:2, location:11 })"> 2033 High memory usage after copying 1 million small files (Win10 x64) 2034 </a> 2035 2036 </li> 2037 <li class="dno js-hidden"> 2038 <div class="favicon favicon-tex" title="TeX - LaTeX Stack Exchange"></div><a href="https://tex.stackexchange.com/questions/702984/tree-in-slide-with-pause-for-each-node" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:85 }); posts_hot_network.click({ item_type:2, location:11 })"> 2039 Tree in slide with pause for each node 2040 </a> 2041 2042 </li> 2043 <li class="dno js-hidden"> 2044 <div class="favicon favicon-stats" title="Cross Validated"></div><a href="https://stats.stackexchange.com/questions/632905/is-the-relation-not-fosd-transitive" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:65 }); posts_hot_network.click({ item_type:2, location:11 })"> 2045 Is the relation "not FOSD" transitive? 2046 </a> 2047 2048 </li> 2049 <li class="dno js-hidden"> 2050 <div class="favicon favicon-rpg" title="Role-playing Games Stack Exchange"></div><a href="https://rpg.stackexchange.com/questions/209352/can-a-creature-controlled-by-dominate-person-warn-his-allies" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:122 }); posts_hot_network.click({ item_type:2, location:11 })"> 2051 Can a creature controlled by Dominate Person warn his allies? 2052 </a> 2053 2054 </li> 2055 <li class="dno js-hidden"> 2056 <div class="favicon favicon-mathematica" title="Mathematica Stack Exchange"></div><a href="https://mathematica.stackexchange.com/questions/293501/why-does-mathematica-not-recognize-a-convergent-series" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:387 }); posts_hot_network.click({ item_type:2, location:11 })"> 2057 Why does Mathematica not recognize a convergent series? 2058 </a> 2059 2060 </li> 2061 <li class="dno js-hidden"> 2062 <div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/459657/when-are-the-chirp-signals-orthogonal" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:504 }); posts_hot_network.click({ item_type:2, location:11 })"> 2063 When are the chirp signals orthogonal? 2064 </a> 2065 2066 </li> 2067 <li class="dno js-hidden"> 2068 <div class="favicon favicon-law" title="Law Stack Exchange"></div><a href="https://law.stackexchange.com/questions/97650/can-you-ever-be-certain-that-you-will-not-be-tried-for-an-alleged-crime" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:617 }); posts_hot_network.click({ item_type:2, location:11 })"> 2069 Can you ever be certain that you will not be tried for an alleged crime? 2070 </a> 2071 2072 </li> 2073 <li class="dno js-hidden"> 2074 <div class="favicon favicon-opensource" title="Open Source Stack Exchange"></div><a href="https://opensource.stackexchange.com/questions/14461/distribute-the-code-as-closed-source-and-the-end-users-download-gplv3-dependenci" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:619 }); posts_hot_network.click({ item_type:2, location:11 })"> 2075 Distribute the code as closed source and the end users download GPLv3 dependencies separately 2076 </a> 2077 2078 </li> 2079 <li class="dno js-hidden"> 2080 <div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/459630/probabilty-measures-that-are-both-discrete-and-continuous" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:504 }); posts_hot_network.click({ item_type:2, location:11 })"> 2081 Probabilty measures that are both discrete and continuous 2082 </a> 2083 2084 </li> 2085 </ul> 2086 2087 <a href="#" 2088 class="show-more js-show-more js-gps-track" 2089 data-gps-track="posts_hot_network.click({ item_type:3, location:11 })"> 2090 more hot questions 2091 </a> 2092 </div> 2093 2094 <div id="feed-link" class="js-feed-link"> 2095 <a href="/feeds/question/53886131" title="Feed of this question and its answers"> 2096 <svg aria-hidden="true" class="fc-orange-400 svg-icon iconRss" width="18" height="18" viewBox="0 0 18 18"><path d="M3 1a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3Zm0 1.5c6.9 0 12.5 5.6 12.5 12.5H13C13 9.55 8.45 5 3 5V2.5Zm0 5c4.08 0 7.5 3.41 7.5 7.5H8c0-2.72-2.28-5-5-5V7.5Zm0 5c1.36 0 2.5 1.14 2.5 2.5H3v-2.5Z"/></svg> 2097 Question feed 2098 </a> 2099 </div> 2100 <aside class="s-modal js-feed-link-modal" tabindex="-1" role="dialog" aria-labelledby="feed-modal-title" aria-describedby="feed-modal-description" aria-hidden="true"> 2101 <div class="s-modal--dialog js-modal-dialog wmx4" role="document" data-controller="se-draggable"> 2102 <h1 class="s-modal--header fw-bold js-first-tabbable" id="feed-modal-title" data-se-draggable-target="handle" tabindex="0"> 2103 Subscribe to RSS 2104 </h1> 2105 <div class="d-flex gs4 gsy fd-column"> 2106 <div class="flex--item"> 2107 <label class="d-block s-label c-default" for="feed-url"> 2108 Question feed 2109 <p class="s-description mt2" id="feed-modal-description">To subscribe to this RSS feed, copy and paste this URL into your RSS reader.</p> 2110 </label> 2111 </div> 2112 <div class="d-flex ps-relative"> 2113 <input class="s-input" type="text" name="feed-url" id="feed-url" readonly="readonly" value="https://stackoverflow.com/feeds/question/53886131" /> 2114 <svg aria-hidden="true" class="s-input-icon fc-orange-400 svg-icon iconRss" width="18" height="18" viewBox="0 0 18 18"><path d="M3 1a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3Zm0 1.5c6.9 0 12.5 5.6 12.5 12.5H13C13 9.55 8.45 5 3 5V2.5Zm0 5c4.08 0 7.5 3.41 7.5 7.5H8c0-2.72-2.28-5-5-5V7.5Zm0 5c1.36 0 2.5 1.14 2.5 2.5H3v-2.5Z"/></svg> 2115 </div> 2116 </div> 2117 <a class="s-modal--close s-btn s-btn__muted js-modal-close js-last-tabbable" href="#" aria-label="Close"> 2118 <svg aria-hidden="true" class="svg-icon iconClearSm" width="14" height="14" viewBox="0 0 14 14"><path d="M12 3.41 10.59 2 7 5.59 3.41 2 2 3.41 5.59 7 2 10.59 3.41 12 7 8.41 10.59 12 12 10.59 8.41 7 12 3.41Z"/></svg> 2119 </a> 2120 </div> 2121 </aside> 2122 2123 </div> 2124 2125 </div> 2126 <script>StackExchange.ready(function(){$.get('/posts/53886131/ivc/44b3?prg=6dd41def-caf6-4535-a3de-9989d5b377b4');});</script> 2127 <noscript><div><img src="/posts/53886131/ivc/44b3?prg=6dd41def-caf6-4535-a3de-9989d5b377b4" class="dno" alt="" width="0" height="0"></div></noscript><div style="display:none" id="js-codeblock-lang">lang-c</div></div> 2128 2129 2130 2131 </div> 2132 </div> 2133 2134 2135 <script type="text/javascript"> 2136 var cam = cam || { opt: {} }; 2137 var clcGamLoaderOptions = cam || { opt: {} }; 2138 var opt = clcGamLoaderOptions.opt; 2139 2140 opt.omni = 'BwoLCN6N0--Gjro8EAUYs_nYGSACKAI6CnxjfHN0YXRpY3xIAApG75bjgYmyjZw'; 2141 opt.refresh = !1; 2142 opt.refreshInterval = 90; 2143 opt.sf = !0; 2144 opt.hb = !1; 2145 opt.ll = !0; 2146 opt.tlb_position = 0; 2147 opt.personalization_consent = !1; 2148 opt.targeting_consent = !1; 2149 opt.performance_consent = !1; 2150 2151 opt.targeting = {Registered:['false'],'so-tag':['c','static'],'tag-reportable':['c','static'],NumberOfAnswers:['2']}; 2152 opt.adReportEnabled = !0; 2153 opt.adReportUrl = '/ads/report-ad'; 2154 opt.adReportText = 'Report this ad'; 2155 opt.adReportFileTypeErrorMessage = 'Please select a PNG or JPG file.'; 2156 opt.adReportFileSizeErrorMessage = 'The file must be under 2 MiB.'; 2157 opt.adReportErrorText = 'Error uploading ad report.'; 2158 opt.adReportThanksText = 'Thanks for your feedback. We’ll review this against our code of conduct and take action if necessary.'; 2159 opt.adReportLoginExpiredMessage = 'Your login session has expired, please login and try again.'; 2160 opt.adReportLoginErrorMessage = 'An error occurred when loading the report form - please try again'; 2161 opt.adReportModalClass = 'js-ad-report'; 2162 opt.perRequestGuid = '6dd41def-caf6-4535-a3de-9989d5b377b4'; 2163 opt.responseHash = '9BSpUA/NmChpbbxZI7zponCzkbSH5yedwFAf7V98Pzs='; 2164 2165 2166 opt.targeting.TargetingConsent = ['False_Passive']; 2167 2168 const urlParams = new URLSearchParams(window.location.search); 2169 if (urlParams.has('dfptestads')) { 2170 const dfptestads = urlParams.get('dfptestads'); 2171 opt.targeting.DfpTestAds = dfptestads; 2172 } 2173 </script> 2174 <script>;(()=>{"use strict";var __webpack_modules__={23:(e,t,s)=>{s.d(t,{Z7:()=>d,eq:()=>a,kG:()=>r});const n=/^\/tags\//.test(location.pathname)||/^\/questions\/tagged\//.test(location.pathname)?"tag-pages":/^\/$/.test(location.pathname)||/^\/home/.test(location.pathname)?"home-page":"question-pages";let o=location.hostname;const i={slots:{lb:[[728,90]],mlb:[[728,90]],smlb:[[728,90]],bmlb:[[728,90]],sb:e=>"dfp-tsb"===e?[[300,250],[300,600]]:[[300,250]],"tag-sponsorship":[[730,135]],"mobile-below-question":[[320,50],[300,250]],msb:[[300,250],[300,600]],"talent-conversion-tracking":[[1,1]],"site-sponsorship":[[230,60]]},ids:{"dfp-tlb":"lb","dfp-mlb":"mlb","dfp-smlb":"smlb","dfp-bmlb":"bmlb","dfp-tsb":"sb","dfp-isb":"sb","dfp-tag":"tag-sponsorship","dfp-msb":"msb","dfp-sspon":"site-sponsorship","dfp-m-aq":"mobile-below-question"},idsToExcludeFromAdReports:["dfp-sspon"]};function r(){return Object.keys(i.ids)}function a(e){return i.idsToExcludeFromAdReports.indexOf(e)<0}function d(e){var t=e.split("_")[0];const s=i.ids[t];let r=i.slots[s];return"function"==typeof r&&(r=r(t)),{path:`/248424177/${o}/${s}/${n}`,sizes:r,zone:s}}},865:(e,t,s)=>{function n(e){return"string"==typeof e?document.getElementById(e):e}function o(e){return!!(e=n(e))&&"none"===getComputedStyle(e).display}function i(e){return!o(e)}function r(e){return!!e}function a(e){return/^\s*$/.test(n(e).innerHTML)}function d(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none"}function l(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none",[].forEach.call(e.children,l)}function c(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.removeProperty("display")}function g(e){const t=document.createElement("script");t.src=e,document.body.appendChild(t)}function p(e){return s=e,(t=[]).push=function(e){return s(),delete this.push,this.push(e)},t;var t,s}function h(e){let t="function"==typeof HTMLTemplateElement;var s=document.createElement(t?"template":"div");return e=e.trim(),s.innerHTML=e,t?s.content.firstChild:s.firstChild}s.d(t,{$Z:()=>c,Bv:()=>h,Gx:()=>g,Nj:()=>n,QZ:()=>p,cf:()=>d,pn:()=>i,wo:()=>l,xb:()=>a,xj:()=>o,yb:()=>r})},763:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{t:()=>AdReports});var _common_helper__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(865),_console__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(276),_ad_units__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(23);class AdReports{constructor(e,t){if(this.googletag=e,this.cam=t,this.allowedFileTypes=["image/png","image/jpg","image/jpeg"],this.ignoreValidation=!1,_console__WEBPACK_IMPORTED_MODULE_1__.cM("Ad reporting init"),this.cam=t,this.callOnButtonClick=e=>this.onButtonClick(e),this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),Array.isArray(t.slotsRenderedEvents)){_console__WEBPACK_IMPORTED_MODULE_1__.cM("Adding report button to "+t.slotsRenderedEvents.length+" events that have transpired");for(var s=0;s<t.slotsRenderedEvents.length;s++)this.handleSlotRendered(t.slotsRenderedEvents[s])}}handleSlotRendered(e){if(e&&e.slot&&!e.isEmpty&&(e.creativeId||e.lineItemId||!e.isEmpty)){var t=e.slot.getSlotElementId();if(t){var s=document.getElementById(t);if(s)if((0,_ad_units__WEBPACK_IMPORTED_MODULE_0__.eq)(t)){var n=s?.closest(".js-zone-container")?.querySelector(".js-report-ad-button-container");n.innerHTML="",n.append(this.createButton(e)),n.style.height="24px",_console__WEBPACK_IMPORTED_MODULE_1__.cM("Added report button to the bottom of "+t)}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": shouldHaveReportButton = false");else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": resolved invalid adUnit element")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid adUnitElementId")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid SlotRenderEndedEvent")}async onButtonClick(e){e.preventDefault();let t=e.target;const s=t.dataset.modalUrl,n=t.dataset.googleEventData;return await this.loadModal(s,t,n),!1}createButton(e){let t=document.createElement("button");var s=JSON.stringify(e);return t.dataset.googleEventData=s,t.dataset.modalUrl=this.cam.opt.adReportUrl,t.dataset.adUnit=e.slot.getSlotElementId(),t.classList.add("js-report-ad","s-btn","s-btn__link","fs-fine","mt2","float-right"),t.append(document.createTextNode(this.cam.opt.adReportText)),t.removeEventListener("click",this.callOnButtonClick),t.addEventListener("click",this.callOnButtonClick),t}async loadModal(url,$link,googleEventData){try{await window.StackExchange.helpers.loadModal(url,{returnElements:window.$($link)}),this.initForm(googleEventData)}catch(e){var message="",response=e.responseText?eval(`(${e.responseText})`):null;message=response&&response.isLoggedOut?this.cam.opt.adReportLoginExpiredMessage:this.cam.opt.adReportLoginErrorMessage,window.StackExchange.helpers.showToast(message,{type:"danger"})}}removeModal(){window.StackExchange.helpers.closePopups(document.querySelectorAll("."+this.cam.opt.adReportModalClass),"dismiss")}initForm(e,t=!1){this.ignoreValidation=t,this.$form=document.querySelector(".js-ad-report-form"),this.$googleEventData=this.$form.querySelector(".js-json-data"),this.$adReportReasons=this.$form.querySelectorAll(".js-ad-report-reason"),this.$adReportReasonOther=this.$form.querySelector(".js-ad-report-reason-other"),this.$fileUploaderInput=this.$form.querySelector(".js-file-uploader-input"),this.$imageUploader=this.$form.querySelector(".js-image-uploader"),this.$clearImageUpload=this.$form.querySelector(".js-clear-image-upload"),this.$imageUploaderText=this.$form.querySelector(".js-image-uploader-text"),this.$imageUploaderPreview=this.$form.querySelector(".js-image-uploader-preview"),this.$fileErrorMessage=this.$form.querySelector(".js-file-error");const s=this.$form.querySelector(".js-drag-drop-enabled"),n=this.$form.querySelector(".js-drag-drop-disabled");this.$googleEventData.value=e,this.$adReportReasons.forEach((e,t)=>e.addEventListener("change",e=>{this.$adReportReasonOther.classList.toggle("d-none","3"!==e.target.value)})),this.$fileUploaderInput.addEventListener("change",()=>{this.validateFileInput()&&this.updateImagePreview(this.$fileUploaderInput.files)}),this.$clearImageUpload.addEventListener("click",e=>{e.preventDefault(),this.clearImageUpload()});try{this.$fileUploaderInput[0].value="",this.$imageUploader.addEventListener("dragenter dragover dragleave drop",this.preventDefaults),this.$imageUploader.addEventListener("dragenter dragover",this.handleDragStart),this.$imageUploader.addEventListener("dragleave drop",this.handleDragEnd),this.$imageUploader.addEventListener("drop",this.handleDrop)}catch(e){s.classList.add("d-none"),n.classList.remove("d-none")}this.$form.removeEventListener("",this.handleDragEnd),this.$form.addEventListener("submit",async e=>(e.preventDefault(),this.submitForm(),!1))}clearImageUpload(){this.$fileUploaderInput.value="",this.$imageUploaderPreview.setAttribute("src",""),this.$imageUploaderPreview.classList.add("d-none"),this.$clearImageUpload.classList.add("d-none"),this.$imageUploaderText.classList.remove("d-none"),this.$imageUploader.classList.add("p16","ba","bas-dashed","bc-black-100")}preventDefaults(e){e.preventDefault(),e.stopPropagation()}handleDragStart(e){this.$imageUploader.classList.remove("bas-dashed"),this.$imageUploader.classList.add("bas-solid","bc-black-100")}handleDragEnd(e){this.$imageUploader.classList.remove("bas-solid","bc-black-100"),this.$imageUploader.classList.add("bas-dashed")}handleDrop(e){var t=e.originalEvent.dataTransfer.files;FileReader&&t&&1===t.length&&(this.$fileUploaderInput.files=t,this.validateFileInput()&&this.updateImagePreview(t))}setError(e){this.$fileErrorMessage.parentElement.classList.toggle("has-error",e)}updateImagePreview(e){this.$imageUploader.classList.remove("p16","ba","bas-dashed","bc-black-100"),this.$clearImageUpload.classList.remove("d-none"),this.$imageUploaderText.classList.add("d-none");var t=new FileReader;t.onload=e=>{null!=e.target&&(this.$imageUploaderPreview.setAttribute("src",e.target.result),this.$imageUploaderPreview.classList.remove("d-none"))},t.readAsDataURL(e[0])}validateFileInput(){if(this.ignoreValidation)return!0;const e=this.cam.opt.adReportFileTypeErrorMessage,t=this.cam.opt.adReportFileSizeErrorMessage;if(null==this.$fileUploaderInput.files)return!1;var s=this.$fileUploaderInput.files[0];return null==s?(this.setError(!0),!1):this.allowedFileTypes.indexOf(s.type)<0?(this.$fileErrorMessage.textContent=e,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):s.size>2097152?(this.$fileErrorMessage.textContent=t,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):(this.$fileErrorMessage.classList.add("d-none"),this.setError(!1),!0)}async gatherDiagnosticInfo(){return{BrowserVersion:await this.getBrowserVersion()}}getElementSource(e){return e.outerHTML}getNestedIFrameElement(e){var t=e.querySelector("iframe");return t.contentDocument?t.contentDocument.documentElement:t.contentWindow.document.documentElement}async getBrowserVersion(){return await navigator.userAgentData.getHighEntropyValues(["fullVersionList"]).then(e=>JSON.stringify(e.fullVersionList))}async submitForm(){if(!this.validateFileInput())return!1;this.$form.querySelector("[type=submit]").setAttribute("disabled","true");var e=JSON.parse(this.$googleEventData.value||"{}");e.Reason=parseInt(this.$form.querySelector(".js-ad-report-reason:checked").value,10),e.Description=this.$adReportReasonOther.value,this.$googleEventData.value=JSON.stringify(e);var t=new FormData(this.$form);if("1"===t.get("shareDiagnosticInfo")){var s=await this.gatherDiagnosticInfo();Object.keys(s).forEach(e=>t.append(e,s[e]))}try{const e=await window.fetch(this.$form.getAttribute("action"),{method:this.$form.getAttribute("method"),body:t,cache:"no-cache"}),s=e.headers.get("content-type")||"",o=await e.text();if(!e.ok)throw new Error("response not valid");if(0===s.indexOf("text/html")){var n=(0,_common_helper__WEBPACK_IMPORTED_MODULE_2__.Bv)(o);const e=n?n.querySelector(".js-modal-content"):null;if(_console__WEBPACK_IMPORTED_MODULE_1__.cM("$popupContent"),_console__WEBPACK_IMPORTED_MODULE_1__.cM(e),!e)throw new Error(`Could not find .js-modal-content in response from ${this.$form.getAttribute("action")}`);document.querySelector(".js-modal-content").replaceWith(e)}else window.StackExchange.helpers.showToast(this.cam.opt.adReportThanksText,{type:"success"}),this.removeModal()}catch(e){window.StackExchange.helpers.showToast(this.cam.opt.adReportErrorText,{type:"danger"})}finally{let e=this.$form.querySelector("[type=submit]");e&&e.removeAttribute("disabled")}}}},276:(e,t,s)=>{function n(...e){}function o(...e){}s.d(t,{cM:()=>n,vU:()=>o})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var s=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](s,s.exports,__webpack_require__),s.exports}__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};(()=>{var e=__webpack_require__(276),t=(e=>(e[e.Above=0]="Above",e[e.Below=1]="Below",e))(t||{});const s=Object.assign({},{"lib":"https://cdn.sstatic.net/clc/js/bundles/gam_loader_script/gam_loader_script.bundle.741.844f6c3cc28ce2d65ae9.min.js","style":null,"u":null,"wa":true,"kt":2000,"tto":true,"h":"clc.stackoverflow.com","allowed":"^(((talent\\.)?stackoverflow)|(blog\\.codinghorror)|(.*\\.googlesyndication)|(serverfault|askubuntu)|([^\\.]+\\.stackexchange))\\.com$","wv":true,"al":false,"abd":true,"cpa_liid":[5882654614],"cpa_cid":[138377597667],"dp":false,"tgt_to":1000,"tgt_u":"https://clc.stackoverflow.com/get-user-acct-tgt","tgt_e":false,"tgt_p":0});var n=__webpack_require__(23),o=__webpack_require__(865),i=__webpack_require__(763);class r{constructor(t,s){this.googletag=t,this.interval=s,e.cM("Ad refresh init. interval: "+s),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling ad refresh")}onImpressionViewable(t){var s=t.slot;e.cM("ad refresh - slot "+s.getSlotElementId()+" is viewable, initializing refresh"),this.scheduleRefresh(s)}scheduleRefresh(e){setTimeout(()=>this.refreshAdSlot(e),1e3*this.interval)}static refreshMyAd(t,s){let n=t.pubads().getSlots().find(e=>e.getSlotElementId()===s);n&&(e.cM("refreshMyAd - refreshing ad slot "+s),t.pubads().refresh([n]))}refreshAdSlot(t){var s=t.getSlotElementId();this.isElementVisibleInBrowser(s)?(e.cM("refreshing ad slot "+s),googletag.pubads().refresh([t])):(e.cM("refresh skipped this time; ad slot not viewable:"+s),this.scheduleRefresh(t))}isElementVisibleInBrowser(e){var t=document.getElementById(e);if(null!==t){var s=t.getBoundingClientRect();if(s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth))return!0}return!1}}var a=(e=>(e.Off="Off",e.PreSurvey="PreSurvey",e.Collect="Collect",e.PostSurvey="PostSurvey",e))(a||{});class d{constructor(e,t){this.lineItemImpressions=[],this.surveysIdsCompleted=[],this.lineItemImpressions=e,this.surveysIdsCompleted=t}addImpression(e,t){let s={brandId:e,lineItemId:t,timestamp:new Date};this.lineItemImpressions.push(s)}addBrandSurveyCompleted(e){-1===this.surveysIdsCompleted.indexOf(e)&&this.surveysIdsCompleted.push(e)}getTotalBrandImpressions(){let e=new Map;for(let t of this.lineItemImpressions)if(e.has(t.brandId)){let s=e.get(t.brandId);e.set(t.brandId,s+1)}else e.set(t.brandId,1);return e}getBrandLineItemImpressions(e){let t={};for(let s of this.lineItemImpressions)if(s.brandId==e)if(void 0!==t[s.lineItemId]){let e=t[s.lineItemId];t[s.lineItemId]=e+1}else t[s.lineItemId]=1;return t}}class l{constructor(){this.surveyEngagementLocalStorageKey="clc-survey-engagement"}getBrandSurveyEngagement(){let e=localStorage.getItem(this.surveyEngagementLocalStorageKey);if(null===e)return new d([],[]);let t=JSON.parse(e);return new d(t.lineItemImpressions,t.surveysIdsCompleted)}saveBrandSurveyEngagement(e){let t=JSON.stringify(e);localStorage.setItem(this.surveyEngagementLocalStorageKey,t)}}class c{constructor(){this.surveyRepository=new l}getBrandSurveyEngagement(){return this.surveyRepository.getBrandSurveyEngagement()}recordImpression(e,t){let s=this.getBrandSurveyEngagement();s.addImpression(e,t),this.surveyRepository.saveBrandSurveyEngagement(s)}recordBrandSurveyCompleted(e){let t=this.getBrandSurveyEngagement();t.addBrandSurveyCompleted(e),this.surveyRepository.saveBrandSurveyEngagement(t)}}class g{constructor(t,s){this.googletag=t,this.brandSettings=s,this.brandSlotMap=new Map,this.brandSurveyEngagementService=new c,e.cM("Brand Survey init: "+JSON.stringify(s)),void 0!==s?(this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling Brand Survey")):e.cM("Brand Survey init: brandSettings is undefined, not initializing")}handleSlotRendered(t){e.cM("Brand Survey - slot rendered - slot:"+JSON.stringify(t.slot.getSlotElementId())+" lineItem: "+t.lineItemId);let s=this.findItemWithId(t.lineItemId);if(null===s||s.mode!==a.Collect)this.brandSlotMap.delete(t.slot.getSlotElementId());else{let e={brandId:s.brandId,lineItemId:t.lineItemId};this.brandSlotMap.set(t.slot.getSlotElementId(),e)}}onImpressionViewable(t){let s=t.slot;if(e.cM("ad - Brand Survey - impression viewable. Details: "+JSON.stringify(s.getSlotElementId())),e.cM("ad - Brand Survey - slot "+s.getSlotElementId()+" is viewable"),this.brandSlotMap.has(s.getSlotElementId())){let t=this.brandSlotMap.get(s.getSlotElementId());e.cM("Brand Survey - brand "+t.brandId+" is viewable"),this.recordImpression(this.brandSlotMap.get(s.getSlotElementId()))}}recordImpression(t){e.cM("ad - Brand Survey - recording impression for brand "+t.brandId),this.brandSurveyEngagementService.recordImpression(t.brandId,t.lineItemId)}findItemWithId(t){return e.cM("brand settings: "+JSON.stringify(this.brandSettings)),this.brandSettings.find(e=>e.lineItemIds.includes(t))||null}}const p="response-brand-survey-submit|",h="request-brand-survey-metadata|",m="record-metric-on-server|",u="request-dsp-tags",f="response-dsp-tags|";class v{static refreshAdIfBrandSurveyIsDuplicated(e,t,s){this.alreadyCompletedThisBrandSurvey(t)&&r.refreshMyAd(e,s)}static alreadyCompletedThisBrandSurvey(e){return(new c).getBrandSurveyEngagement().surveysIdsCompleted.includes(e)}}window.cam=new class{constructor(t=null){if(this.gptImported=!1,this.slotsRenderedEvents=[],this.collapsed={},e.cM("constructor"),this.clc_options=s,window.clcGamLoaderOptions)Object.assign(this,window.clcGamLoaderOptions);else if(void 0===this.opt){let e=window.opt;e&&(this.opt=e)}}init(){if(e.cM("init"),void 0===this.opt)throw new Error("opt not set, required by GAM Loader");e.cM("init brand survey service"),this.getUserAccountTargetingPromise=this.getUserAccountTargeting(),e.cM("setup message handler"),window.addEventListener("message",e=>{this.onmessage(e)})}handleSlotRenderedNoAdReport(){if(googletag.pubads().addEventListener("slotRenderEnded",e=>this.applyExtraMarginBottom(e)),Array.isArray(this.slotsRenderedEvents))for(var e=0;e<this.slotsRenderedEvents.length;e++)this.applyExtraMarginBottom(this.slotsRenderedEvents[e])}onmessage(t){let s="omni";if(t.data&&("string"==typeof t.data||t.data instanceof String))if(0===t.data.indexOf("get-omni-")){e.cM("Recevied get-omni message, sending back omni");var n=t.source,i=this.opt.omni,r="string"==typeof i?i:"";n.postMessage([s,r,this.opt.perRequestGuid].join("|"),"*")}else if(0===t.data.indexOf("collapse-")){e.cM("Recevied collapse message, collapse ad iframe"),e.cM(t);for(var a=t.source.window,d=document.getElementsByTagName("IFRAME"),l=0;l<d.length;l++){var g=d[l];if(g.contentWindow==a)return void(0,o.wo)(g.parentElement.parentElement.parentElement)}}else if(0===t.data.indexOf("resize|")){e.cM("Recevied resize message, resize ad iframe"),e.cM(t);let s=this._getFrameByEvent(t),n=t.data.indexOf("|")+1,o=t.data.slice(n),i=parseFloat(o)+.5;e.cM("New iframe height "+i),s.height=i.toString(),s.parentElement.style.height=i.toString()+"px"}else if(0===t.data.indexOf("getmarkup|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied get markup message: "+n);let o=this._getFrameByEvent(t).closest(".everyonelovesstackoverflow");const i=document.createElement("script");i.dataset.adZoneId=o.id,i.src=n,document.body.appendChild(i)}else if(0===t.data.indexOf("window-location|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied window location message: "+n),n.startsWith("/")||(n="/"+n),window.open(window.location.protocol+"//"+window.location.host+n,"_blank")}else if(0===t.data.indexOf("request-brand-survey-submit|")){let s=t.data.split("|"),n=s[1],o=s[2],i=s[3],r=JSON.parse(i);e.cM(n),e.cM(o),e.cM(i),e.cM("Received brand survey "+n+" response message: "+o);var b=new FormData;for(var _ in r)b.append(_,r[_]);let a=this._getFrameByEvent(t);if(v.alreadyCompletedThisBrandSurvey(+n))return e.cM("Already completed this brand survey. Not submitting duplicate to server."),void a.contentWindow.postMessage("response-brand-survey-submit-duplicate|","*");e.cM("Send the brand survey to the server"),fetch(o,{method:"POST",body:b}).then(e=>e.json()).then(e=>a.contentWindow.postMessage(p,"*")).catch(e=>a.contentWindow.postMessage(p,"*"))}else if(0===t.data.indexOf("brand-survey-completed-store|")){let s=t.data.split("|"),n=(s[1],s[2]);if(e.cM("Received brand survey completed store message for survey ID "+n),v.alreadyCompletedThisBrandSurvey(+n))return void e.cM("Already completed this brand survey. Not recording duplicate locally.");e.cM("Record brand survey completion locally"),(new c).recordBrandSurveyCompleted(+n)}else if(0===t.data.indexOf(h)){let s=t.data.split("|"),n=s[1],o=s[2];e.cM("Received message: request-brand-survey-metadata| with Brand Survey ID "+o);let i=(new c).getBrandSurveyEngagement().getBrandLineItemImpressions(+n),r=JSON.stringify(i),a=this._getFrameByEvent(t);e.cM("sending impression data: "+r),a.contentWindow.postMessage("response-brand-survey-metadata|"+this.opt.responseHash+"|"+this.opt.perRequestGuid+"|"+r,"*")}else if(0===t.data.indexOf("refresh-if-duplicate-brand-survey|")){let e=t.data.split("|")[1],s=this.getSlotElementIdByEvent(t);v.refreshAdIfBrandSurveyIsDuplicated(googletag,+e,s)}else if(0===t.data.indexOf(m)){e.cM("Received message: record-metric-on-server| with args: "+t.data);let s=t.data.split("|"),n=s[1],o=s[2],i=s[3],r=s[4],a=new FormData;a.append("brandSurveyId",i.toString()),a.append("responseHash",this.opt.responseHash),a.append("perRequestGuid",this.opt.perRequestGuid),a.append("questionNumber",n.toString()),a.append("metricType",r.toString()),fetch(o,{method:"POST",body:a}).then(e=>e.ok).catch(t=>{e.cM("SendMetricToServer: Error sending metric to server: "+t)})}else if(0===t.data.indexOf(u)){e.cM("Received message: request-dsp-tags with args: "+t.data);let s=this._getFrameByEvent(t);if(!this.opt.targeting["so-tag"])return void s.contentWindow.postMessage(f,"*");const n=this.opt.targeting["so-tag"].join(",");e.cM("sending targeting tags: "+n),s.contentWindow.postMessage(f+n,"*")}else e.cM("Received unhandled message")}getSlotElementIdByEvent(e){let t=this._getFrameByEvent(e).parentElement?.parentElement?.id;return t||""}_getFrameByEvent(e){return Array.from(document.getElementsByTagName("iframe")).filter(t=>t.contentWindow===e.source)[0]}classifyZoneIds(e){const t=e.map(o.Nj).filter(o.yb);return{eligible:t.filter(o.xb).filter(o.pn),ineligible:t.filter(o.xj)}}applyExtraMarginBottom(t){if(t&&t.slot&&!t.isEmpty&&(t.creativeId||t.lineItemId||!t.isEmpty)){var s=t.slot.getSlotElementId();if(s){var o=document.getElementById(s);if(o)if((0,n.eq)(s)){var i=o?.closest(".js-zone-container");i.style.marginBottom="24px",e.cM("Applied extra margin to the bottom of "+s)}else e.cM("Not applying extra margin to the bottom of "+s+": shouldHaveReportButton = false");else e.cM("Not applying extra margin to the bottom of "+s+": resolved invalid adUnit element")}else e.cM("Not applying extra margin to the bottom of element: invalid adUnitElementId")}else e.cM("Not applying extra margin to the bottom of element: invalid SlotRenderEndedEvent")}async load(s=(0,n.kG)()){const a=this.opt.tlb_position===t.Above?["dfp-mlb","dfp-smlb"]:["dfp-mlb","dfp-smlb","dfp-tlb"];if(!this.isGptReady())return e.cM("Initializing..."),this.initGpt(),void googletag.cmd.push(()=>this.load(s));this.opt.adReportEnabled?(e.cM("Ad reporting enabled"),this.adReports=new i.t(googletag,this)):(e.cM("Ad reporting not enabled"),this.handleSlotRenderedNoAdReport()),this.opt.refresh?(e.cM("Ad refresh enabled"),this.adRefresh=new r(googletag,this.opt.refreshInterval)):e.cM("Ad refresh not enabled"),this.opt.brandSurveyEnabled&&(e.cM("Brand Survey enabled"),this.brandSurvey=new g(googletag,this.opt.brandSurveySettings)),e.cM("Attempting to load ads into ids: ",s);const{eligible:d,ineligible:l}=this.classifyZoneIds(s);if(this.initDebugPanel(googletag,d.concat(l)),d.forEach(e=>(0,o.cf)(e)),l.forEach(o.wo),0===d.length)return void e.cM("Found no ad ids on page");e.cM("Eligible ids:",d),this.opt.abd&&this.appendAdblockDetector();var c=googletag.pubads().getSlots();if(c){var p=c.filter(e=>s.indexOf(e.getSlotElementId())>=0);googletag.destroySlots(p)}this.opt.sf&&(googletag.pubads().setForceSafeFrame(!0),googletag.pubads().setSafeFrameConfig({allowOverlayExpansion:!0,allowPushExpansion:!0,sandbox:!0})),e.cM("Targeting consent: Checking...");let h=!1,m=!1;void 0!==this.opt.targeting_consent&&(m=!0,e.cM("Targeting consent: Parameter set"),e.cM("Targeting consent: Consent given? ",this.opt.targeting_consent),h=this.opt.targeting_consent),void 0!==this.opt.personalization_consent&&(e.cM("Personalization consent: Parameter set"),e.cM("Personalization consent: Consent given? ",this.opt.personalization_consent),h=h&&this.opt.personalization_consent),h=h&&m,this.setPrivacySettings(h),this.opt.ll||googletag.pubads().enableSingleRequest(),cam.sreEvent||(googletag.pubads().addEventListener("slotRenderEnded",e=>this.onSlotRendered(e)),cam.sreEvent=!0),await this.setTargeting();var u=d.filter(e=>!this.opt.ll||a.indexOf(e.id)<0),f=d.filter(e=>!!this.opt.ll&&a.indexOf(e.id)>=0);e.cM("Up front ids:",u),e.cM("Lazy loaded ids:",f),u.forEach(t=>{e.cM(`Defining ad for element ${t.id}`),this.defineSlot(t.id,googletag),t.setAttribute("data-dfp-zone","true")}),googletag.enableServices(),u.forEach(t=>{e.cM(`Displaying ad for element ${t.id}`),googletag.cmd.push(()=>googletag.display(t.id))}),this.opt.ll&&(e.cM("Enabling lazy loading for GAM"),googletag.pubads().enableLazyLoad({fetchMarginPercent:0,renderMarginPercent:0}),e.cM("Setting up lazy loaded ad units"),f.forEach(t=>{e.cM(`Lazy loading - Defining Slot ${t.id}`),this.defineSlot(t.id,googletag)}),f.forEach(t=>{e.cM(`Lazy loading - Displaying ad for element ${t.id}`),googletag.cmd.push(()=>googletag.display(t.id))}))}setPrivacySettings(e){e?googletag.pubads().setPrivacySettings({limitedAds:!1,nonPersonalizedAds:!1}):googletag.pubads().setPrivacySettings({limitedAds:!0,nonPersonalizedAds:!0})}async setTargeting(){if(!googletag)throw new Error("googletag not defined");let t=this.opt.targeting;if(!t)throw new Error("Targeting not defined (is "+typeof t+")");Object.keys(t).forEach(s=>{e.cM(`-> targeting - ${s}: ${t[s]}`),googletag.pubads().setTargeting(s,t[s])});let s=!1;if(void 0!==this.opt.targeting_consent&&(s=this.opt.targeting_consent),s){let t=(new c).getBrandSurveyEngagement();if(t.getTotalBrandImpressions().forEach((t,s)=>{e.cM(`-> targeting - BrandImpressions: ${s}: ${t}`),googletag.pubads().setTargeting("brand_"+s.toString()+"_impressions",t.toString())}),t.surveysIdsCompleted.forEach(t=>{e.cM(`-> targeting - SurveysTaken: ${t}`),googletag.pubads().setTargeting("survey_"+t+"_taken","true")}),this.clc_options.tgt_e&&this.getUserAccountTargetingPromise){let t=await this.getUserAccountTargetingPromise;t&&t.tgt_acct?(e.cM("-> targeting - User Account: "+t.tgt_acct),googletag.pubads().setTargeting("user-acct",t.tgt_acct)):e.cM("-> targeting - User Account: Not Found")}}}appendAdblockDetector(){const e=document.createElement("div");e.className="adsbox",e.id="clc-abd",e.style.position="absolute",e.style.pointerEvents="none",e.innerHTML=" ",document.body.appendChild(e)}onSlotRendered(s){try{const r=s.slot.getSlotElementId();let a=[];r||a.push("id=0");const d=document.getElementById(r);if(r&&!d&&a.push("el=0"),0!==a.length)return void this.stalled(a.join("&"));const{path:l,sizes:c,zone:g}=(0,n.Z7)(r);if(this.collapsed[g]&&s.isEmpty)return e.cM(`No line item for the element #${d.id}... collapsing.`),void(0,o.wo)(d);if(this.slotsRenderedEvents.push(s),s.lineItemId||s.creativeId||!s.isEmpty){e.cM(`Rendered ad for element #${d.id} [line item #${s.lineItemId}]`),e.cM(s);var i=d.parentElement;if(i.classList.contains("js-zone-container")){switch((0,o.cf)(i),r){case"dfp-tlb":this.opt.tlb_position===t.Above?i.classList.add("mb8"):i.classList.add("mt16");break;case"dfp-tag":i.classList.add("mb8");break;case"dfp-msb":i.classList.add("mt16");break;case"dfp-mlb":case"dfp-smlb":case"dfp-bmlb":i.classList.add("my8");break;case"dfp-isb":i.classList.add("mt24");break;case"dfp-m-aq":i.classList.add("my12"),i.classList.add("mx-auto")}(0,o.$Z)(i),(0,o.$Z)(d)}else e.cM(`No ad for element #${d.id}, collapsing`),e.cM(s),(0,o.wo)(d)}}catch(t){e.cM("Exception thrown onSlotRendered"),e.cM(t),this.stalled("e=1")}}stalled(e){(new Image).src=`https://${this.clc_options.h}/stalled.gif?${e}`}defineSlot(t,s){"dfp-isb"===t&&(e.cM("-> targeting - Sidebar: Inline"),s.pubads().setTargeting("Sidebar",["Inline"])),"dfp-tsb"===t&&(e.cM("-> targeting - Sidebar: Right"),s.pubads().setTargeting("Sidebar",["Right"]));const{path:o,sizes:i,zone:r}=(0,n.Z7)(t);e.cM(`Defining slot for ${t}: ${o}, sizes: ${JSON.stringify(i)}`),s.defineSlot(o,i,t).addService(s.pubads())}importGptLibrary(){this.gptImported||(this.gptImported=!0,void 0===this.opt.targeting_consent||this.opt.targeting_consent?(0,o.Gx)("https://securepubads.g.doubleclick.net/tag/js/gpt.js"):(0,o.Gx)("https://pagead2.googlesyndication.com/tag/js/gpt.js"))}isGptReady(){return"undefined"!=typeof googletag&&!!googletag.apiReady}initGpt(){"undefined"==typeof googletag&&(window.googletag={cmd:(0,o.QZ)(()=>this.importGptLibrary())})}getUserAccountTargeting(){if(this.clc_options.tgt_e&&this.clc_options.tgt_p>0){if(e.cM("Targeting enabled."),this.clc_options.tgt_p<100){e.cM("Targeting rate limit enabled. Rolling the dice...");const t=Math.floor(100*Math.random())+1;if(e.cM("Rolled "+t+" and the max is "+this.clc_options.tgt_p),t>this.clc_options.tgt_p)return void e.cM("Will not request targeting.")}return e.cM("Will request targeting."),function(e,t,s){if(e){const e=new Headers;return e.append("Accept","application/json"),async function(e,t={},s=5e3){if("number"!=typeof s&&null!=s&&!1!==s){if("string"!=typeof s)throw new Error("fetchWithTimeout: timeout must be a number");if(s=parseInt(s),isNaN(s))throw new Error("fetchWithTimeout: timeout must be a number (or string that can be parsed to a number)")}const n=new AbortController,{signal:o}=n,i=fetch(e,{...t,signal:o}),r=setTimeout(()=>n.abort(),s);try{const e=await i;return clearTimeout(r),e}catch(e){throw clearTimeout(r),e}}(t,{method:"GET",mode:"cors",headers:e},s).then(e=>e.json())}return Promise.reject("No consent")}(this.opt.targeting_consent,this.clc_options.tgt_u,this.clc_options.tgt_to).catch(t=>{e.vU("Error fetching user account targeting"),e.vU(t)})}e.cM("Targeting disabled. Will not request account targeting data.")}initDebugPanel(t,s){e.cM("initDebugPanel"),e.cM("Not showing debug panel")}},window.clcGamLoaderOptions&&(cam.init(),cam.load())})()})();</script> 2175 2176 <footer id="footer" class="site-footer js-footer theme-light__forced" role="contentinfo"> 2177 <div class="site-footer--container"> 2178 <div class="site-footer--logo"> 2179 2180 <a href="https://stackoverflow.com" aria-label="Stack Overflow"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a> 2181 </div> 2182 <nav class="site-footer--nav"> 2183 <div class="site-footer--col"> 2184 <h5 class="-title"><a href="https://stackoverflow.com" class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 15})">Stack Overflow</a></h5> 2185 <ul class="-list js-primary-footer-links"> 2186 <li><a href="/questions" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 16})">Questions</a></li> 2187 <li><a href="/help" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 3 })">Help</a></li> 2188 </ul> 2189 </div> 2190 <div class="site-footer--col"> 2191 <h5 class="-title"><a href="https://stackoverflow.co/" class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 19 })">Products</a></h5> 2192 <ul class="-list"> 2193 <li><a href="https://stackoverflow.co/teams/" class="js-gps-track -link" 2194 data-ga="["teams traffic","footer - site nav","stackoverflow.com/teams",null,{"dimension4":"teams"}]" 2195 data-gps-track="footer.click({ location: 2, link: 29 })">Teams</a></li> 2196 <li><a href="https://stackoverflow.co/advertising/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 21 })">Advertising</a></li> 2197 <li><a href="https://stackoverflow.co/collectives/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 40 })">Collectives</a></li> 2198 <li><a href="https://stackoverflow.co/talent/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 20 })">Talent</a></li> 2199 </ul> 2200 </div> 2201 <div class="site-footer--col"> 2202 <h5 class="-title"><a class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 1 })" href="https://stackoverflow.co/">Company</a></h5> 2203 <ul class="-list"> 2204 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 1 })" href="https://stackoverflow.co/">About</a></li> 2205 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 27 })" href="https://stackoverflow.co/company/press/">Press</a></li> 2206 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 9 })" href="https://stackoverflow.co/company/work-here/">Work Here</a></li> 2207 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 7 })" href="https://stackoverflow.com/legal">Legal</a></li> 2208 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 8 })" href="https://stackoverflow.com/legal/privacy-policy">Privacy Policy</a></li> 2209 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 37 })" href="https://stackoverflow.com/legal/terms-of-service/public">Terms of Service</a></li> 2210 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 13 })" href="https://stackoverflow.co/company/contact/">Contact Us</a></li> 2211 <li class="" id="consent-footer-link"><a class="js-gps-track -link js-cookie-settings" data-gps-track="footer.click({ location: 2, link: 38 })" href="#" data-consent-popup-loader="footer">Cookie Settings</a></li> 2212 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 39 })" href="https://stackoverflow.com/legal/cookie-policy">Cookie Policy</a></li> 2213 </ul> 2214 </div> 2215 <div class="site-footer--col site-footer--categories-nav"> 2216 <div> 2217 <h5 class="-title"><a href="https://stackexchange.com" data-gps-track="footer.click({ location: 2, link: 30 })">Stack Exchange Network</a></h5> 2218 <ul class="-list"> 2219 <li> 2220 <a href="https://stackexchange.com/sites#technology" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2221 Technology 2222 </a> 2223 </li> 2224 <li> 2225 <a href="https://stackexchange.com/sites#culturerecreation" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2226 Culture & recreation 2227 </a> 2228 </li> 2229 <li> 2230 <a href="https://stackexchange.com/sites#lifearts" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2231 Life & arts 2232 </a> 2233 </li> 2234 <li> 2235 <a href="https://stackexchange.com/sites#science" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2236 Science 2237 </a> 2238 </li> 2239 <li> 2240 <a href="https://stackexchange.com/sites#professional" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2241 Professional 2242 </a> 2243 </li> 2244 <li> 2245 <a href="https://stackexchange.com/sites#business" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2246 Business 2247 </a> 2248 </li> 2249 2250 <li class="mt16 md:mt0"> 2251 <a href="https://api.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2252 API 2253 </a> 2254 </li> 2255 2256 <li> 2257 <a href="https://data.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })"> 2258 Data 2259 </a> 2260 </li> 2261 </ul> 2262 </div> 2263 </div> 2264 </nav> 2265 <div class="site-footer--copyright fs-fine md:mt24"> 2266 <ul class="-list -social md:mb8"> 2267 <li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link:4 })" href="https://stackoverflow.blog?blb=1">Blog</a></li> 2268 <li><a href="https://www.facebook.com/officialstackoverflow/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 31 })">Facebook</a></li> 2269 <li><a href="https://twitter.com/stackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 32 })">Twitter</a></li> 2270 <li><a href="https://linkedin.com/company/stack-overflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 33 })">LinkedIn</a></li> 2271 <li><a href="https://www.instagram.com/thestackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 36 })">Instagram</a></li> 2272 </ul> 2273 2274 <p class="md:mb0"> 2275 Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under <span class='td-underline'><a href="https://stackoverflow.com/help/licensing">CC BY-SA</a></span>. <span id="svnrev">rev 2023.11.30.1842</span> 2276 </p> 2277 </div> 2278 </div> 2279 2280 </footer> 2281 2282 2283 2284 2285 <!-- Google tag (gtag.js) --> 2286 <script async src="https://www.googletagmanager.com/gtag/js?id=G-WCZ03SZFCQ"></script> 2287 <script> 2288 window.dataLayer = window.dataLayer || []; 2289 function gtag() { dataLayer.push(arguments); } 2290 </script> 2291 <script> 2292 StackExchange.ready(function() { 2293 2294 var ga3Settings = { 2295 autoLink: ["stackoverflow.blog","info.stackoverflowsolutions.com","stackoverflowsolutions.com"], 2296 sendTitles: true, 2297 tracker: window.ga, 2298 trackingCodes: [ 2299 'UA-108242619-1' 2300 ], 2301 checkDimension: 'dimension42' 2302 }; 2303 2304 var customGA4Dimensions = {}; 2305 2306 2307 customGA4Dimensions["routename"] = "Questions/Show"; 2308 2309 2310 customGA4Dimensions["post_id"] = "53886131"; 2311 2312 customGA4Dimensions["tags"] = "|c|static|"; 2313 2314 2315 var ga4Settings = { 2316 tracker: gtag, 2317 trackingCodes: [ 2318 'G-WCZ03SZFCQ' 2319 ], 2320 consentsToPerformanceCookies: "denied", 2321 consentsToTargetingCookies: "denied", 2322 eventParameters: customGA4Dimensions, 2323 checkForAdBlock: true, 2324 sendTitles: true, 2325 trackClicks: false, 2326 }; 2327 2328 StackExchange.ga.init({ GA3: ga3Settings, GA4: ga4Settings }); 2329 2330 2331 StackExchange.ga.setDimension('dimension2', '|c|static|'); 2332 2333 2334 StackExchange.ga.setDimension('dimension3', 'Questions/Show'); 2335 2336 2337 StackExchange.ga.setDimension('dimension7', "1701628339.1603071255"); 2338 2339 StackExchange.ga.trackPageView(); 2340 }); 2341 </script> 2342 2343 2344 <div class="ff-sans ps-fixed z-nav-fixed ws4 sm:w-auto p32 sm:p16 bg-black-600 fc-white bar-lg b16 l16 r16 js-consent-banner"> 2345 <svg aria-hidden="true" class="mln4 mb24 sm:d-none svg-spot spotCookieLg" style="color: var(--theme-button-primary-background-color, var(--theme-primary-200))" width="96" height="96" viewBox="0 0 96 96"> 2346 <path d="M35 45.5a7.5 7.5 0 11-15 0 7.5 7.5 0 0115 0zM63.5 63a7.5 7.5 0 100-15 7.5 7.5 0 000 15zm-19 19a7.5 7.5 0 100-15 7.5 7.5 0 000 15z" opacity=".2" /> 2347 <path d="M56.99 2.53a23.1 23.1 0 0114.66 6.15h.01l.01.02c.57.55.61 1.27.5 1.74v.07a10.95 10.95 0 01-3.07 4.77 9 9 0 01-6.9 2.5 10.34 10.34 0 01-9.72-10.44v-.08a10 10 0 011.03-3.74l.01-.03.02-.02c.28-.5.82-.92 1.52-.95.63-.02 1.27-.02 1.93.01zm12.04 7.83a20.1 20.1 0 00-12.2-4.83l-.92-.03c-.23.6-.38 1.25-.43 1.94a7.34 7.34 0 006.95 7.34 6 6 0 004.64-1.7c.94-.88 1.6-1.9 1.96-2.72zm15.3 8.76a6.84 6.84 0 00-5.09-.24 7.9 7.9 0 00-3.28 2.05 1.8 1.8 0 00-.3 1.95l.02.02v.02a15.16 15.16 0 008.74 7.47c.64.23 1.32.08 1.8-.33a6.63 6.63 0 001.63-1.97l.01-.03.01-.03c1.67-3.5-.12-7.32-3.54-8.91zm-5.5 3.28c.36-.25.82-.5 1.35-.67.92-.3 1.92-.35 2.89.1 2.14 1 2.92 3.14 2.11 4.88-.12.21-.26.41-.43.6l-.26-.1a12.29 12.29 0 01-5.66-4.81zM32 24a2 2 0 11-4 0 2 2 0 014 0zm12 21a2 2 0 11-4 0 2 2 0 014 0zm36 4a2 2 0 11-4 0 2 2 0 014 0zm-7 21a2 2 0 11-4 0 2 2 0 014 0zM59 81a2 2 0 11-4 0 2 2 0 014 0zM22 63a2 2 0 11-4 0 2 2 0 014 0zm27 7a9 9 0 11-18 0 9 9 0 0118 0zm-3 0a6 6 0 10-12 0 6 6 0 0012 0zM33 41a9 9 0 11-18 0 9 9 0 0118 0zm-15 0a6 6 0 1012 0 6 6 0 00-12 0zm50 11a9 9 0 11-18 0 9 9 0 0118 0zm-3 0a6 6 0 10-12 0 6 6 0 0012 0zM44.08 4.24c.31.48.33 1.09.05 1.58a17.46 17.46 0 00-2.36 8.8c0 9.55 7.58 17.24 16.85 17.24 2.97 0 5.75-.78 8.16-2.15a1.5 1.5 0 012.1.66 12.08 12.08 0 0011 6.74 12.4 12.4 0 007.85-2.75 1.5 1.5 0 012.38.74A45.76 45.76 0 0192 48.16c0 24.77-19.67 44.9-44 44.9S4 72.93 4 48.16C4 25.23 20.84 6.28 42.64 3.58a1.5 1.5 0 011.44.66zM40.22 7C21.32 10.71 7 27.7 7 48.16c0 23.17 18.39 41.9 41 41.9s41-18.73 41-41.9c0-3.52-.42-6.93-1.22-10.2a15.5 15.5 0 01-7.9 2.15c-5.5 0-10.36-2.83-12.97-7.1a19.46 19.46 0 01-8.28 1.85c-11 0-19.86-9.1-19.86-20.24 0-2.7.52-5.26 1.45-7.62zM92 91a2 2 0 100-4 2 2 0 000 4zM7 8.5a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zM82.5 90a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm9.5-7.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM13.5 8a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM80 14.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM53.5 20a1.5 1.5 0 100-3 1.5 1.5 0 000 3z" /> 2348 </svg> 2349 <p class="fs-body2 fw-bold mb4"> 2350 Your privacy 2351 </p> 2352 <p class="mb16 s-anchors s-anchors__inherit s-anchors__underlined"> 2353 By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our <a href="https://stackoverflow.com/legal/cookie-policy">Cookie Policy</a>. 2354 </p> 2355 <div class="d-flex gs8 sm:fd-column"> 2356 <button class="flex--item6 s-btn s-btn__filled js-accept-cookies js-consent-banner-hide"> 2357 Accept all cookies 2358 </button> 2359 2360 <button class="flex--item6 s-btn s-btn__filled js-reject-cookies js-consent-banner-hide"> 2361 Necessary cookies only 2362 </button> 2363 </div> 2364 2365 <div class="d-flex mt8 sm:fd-column"> 2366 <button class="flex--item12 s-btn s-btn__filled js-cookie-settings" data-consent-popup-loader="banner"> 2367 Customize settings 2368 </button> 2369 </div> 2370 </div> 2371 <div id="onetrust-consent-sdk" class="d-none"></div> 2372 <div id="onetrust-banner-sdk" data-controller="s-modal"></div> 2373 <div id="ot-pc-content" class="d-none"></div> 2374 <div id="onetrust-style" class="d-none"> </div> 2375 <div class="d-none js-consent-banner-version" data-consent-banner-version="1"></div> 2376 2377 2378 2379 </body> 2380 </html>