CINXE.COM
Just a moment...
<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="390"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "area51.phpbb.com",cType: 'managed',cRay: '913a138f7b4b3e56',cH: '3h9vuyxNFBrv8MEGZdrhHpVbMBfIWy_a7Ho4DOErGC0-1739840386-1.2.1.1-J2SHBgc63j5_4chdsqORQw7wozPzQgbM5UDy4qTSaQY7DBC2BAJcKKVIKKZDEDgo',cUPMDTk: "\/docs\/dev\/3.2.x\/development\/coding_guidelines.html?__cf_chl_tk=XcdVtmfjAU41be7UcX1YZ7J9t5Tcd9JQh0M_WGTI53s-1739840386-1.0.1.1-49esBpHdxv20ZCz1rmEB8VHZbG2Exhqgd_CTrs2TgSo",cFPWv: 'g',cITimeS: '1739840386',cTTimeMs: '1000',cMTimeMs: '390000',cTplC: 0,cTplV: 5,cTplB: 'cf',cK: "",fa: "\/docs\/dev\/3.2.x\/development\/coding_guidelines.html?__cf_chl_f_tk=XcdVtmfjAU41be7UcX1YZ7J9t5Tcd9JQh0M_WGTI53s-1739840386-1.0.1.1-49esBpHdxv20ZCz1rmEB8VHZbG2Exhqgd_CTrs2TgSo",md: "T3Hk13RuDrziZuMnURKVJV354CsYqcnzhSPrnyNvkU4-1739840386-1.2.1.1-oCYhbBDlRtFLqmDIsS0xJWCDS_bi6EHQ7rXYCReCaGXYAR5bEeGgLA1nfsPn6Z6FfqjhR9Gl9QcjU2zZ.kE3oIXOCB_WKk3pIexdI2nYwAbU7vrV.w7vJ2Mr_dvXDF4BvI1TJld.pa23wbClaDzdDCF5GAIx4d0Zrkz.Q.K2xZuy1FK5goWul7JXCXwIwu3eNwdcYrJCYc.lj.xpqLhC1FKyYSRzWQ4A3rk7BdztqTFt3OkO_XCrLx7VRaCjnw3dMKH.RQY4PHMHJR.TjHidre1JpIFrXKv4IgICPNYDXv9Oz8tSMXpxPEkTArwDVc9oK6KgzMcqLRU0Z.V0uy7rVb7EbBM9wr8lJj.Z9x4o4LGddmbI5PK1T6bZqYvrYSF6WEVxUPKuf8J9cKdeYn0E4854ylAQmNjwQ90awANC.MHtZBcroPokoQkFXGsKzjKDg1uGo2ud8PmlQWyNixlAX1.vbP8y03nQkKX.G0nJymwqPPEkFYj76EIP3S4LpOSrjtNfQXkPDSt.U_ni9vBW1S5xZPBwPbNKUBPaknhkzTx0kXEAlb3JSWCAvz3MZx_iu5zqChu3rOKmFoWPP3RdCsRqO_xsV.7J3vdkoC3D2OH5v9yAdZvjLwidNL0eGZYsS5EXKOKh7UAIavBQYfbnt4Uz_DzVQxs1m7bIMP8UZpU7HEhBIBTzfet2FhbOAsAxPJXRZBgBWGSBBszbiqr1xh47McJqSJcfxIh6l2VC_aNrwS7CB.cSX1AutgvHM1GY01EnmaP73UvR7N2LdiWC3kzFCY8mJ_kjmI33g1aO3.ehvW8eaVOPtNz6trxv8cOiqCJB9.iHrusgxkCtKuThRZO93WSy7iPjeI.8xIFW31fPQBpFn2Ljos49.kN.OzI_dbGE84hgEV6_3OuKIWZH63Xq0TLzYvhrGeRMFQCficbIphpCS8k5JVQPp_1Bpd9B3IS3hBvQlfB8xFVwoAF.MCFc2a44FER01IzN0mNQEgm2rC6HTMCiqkHcfMBuMnd9Wg5SUJEiFYQfgyGm7Fr7L24Z2dPhAK3mVP0E60OD7YhsKqz3yx6hgH7oUl4rnHZlp7QelXHftp8oU5ZUaaMLwUpmck6yMhml1q4wqAXH3Lwqfuo3IYgYtwQZAzgAEwVk50qCeP5Sg.Ck9q7HmkmruS9Jzix_vUnw3BcRi24PXbl8Fbt9Uts2hS2xp5cYn4d0ER3hNHgRlbOvlelmPLtL6H32AAQ.CeEvKEYtUB12GaKJm2mQyHFswsH4AevEwuhibT7EsCO5dtJqkXM9A5CerUu.JU8m4dZu3xoDWCeVGuiAlNAT6Wod93s5Q275AlYJWJ.ESNwC7FRawuAhRzABRNWKpZGJCx2D44RBdsPzmnE0wrPr93hQe2E2sncTOgve7tsvgLjj80kBe4Ps_1bdnv.qlbotrZlVd.0ktf88Q8QXpG2V6iqCHxrI5eDblZhYLCCo_bgP.3VoIcCtucsTC3tUhUq2nVdmTvQ_fWMD1CHaSFg9_jmncbs8io.MJ70s0ZSTsHCMQwP0V_ClzXFSrH5q3LOHszbyubEu50UM3jrSHZKVLohDlXgHt10m6OoeI2zKrTkIVhKyRmvRavpP_ou4BEgY36Y617hBY3nPy3NCBfh1FjH.z6h1rx36VSJQm6RLxzTVgNXMpE0Zph2OYYrg70KawuuDbtKsw8ByoLId8JCfYzh4gGgBSknea8.PtDFac_jK7XMQ5IlXf80TfdA_918I55hY4po6duRrKWYkWtY9kLMu7ZKQTfz50aLsXlkiwhw2Oz7cQHCGgaVwXhsxSYE5W8gpd9sBYzKdIf8hfTNY7M6LBgmvXIeTxsKVRpPkHwVEKUFVoTgaZHfKV_v.s76XeN9.1T8gsNVIYt6zqBNtkMDXJU1Uyxjdx2uaI7KubjgZfHLSaue.uPWhM3PcLocaMhK.7k8TYrYHxliD6ig2igxVjE4TqLU_VxlsA8YNT8I8Z5FooylT2fmktP34dE0OJ_9USHz4ACNB8M2HawEKgqGliEYXchgYh8X7RRWvumxYLnkeMbr0Gw_GnTcwOm0E4EgUyVDyftpXqUGMwHV3t1nLEdv2z6MiLLSh43jWW_FoNEgmgl2X_caQZMUXovq8GXb_dFSGSbctsTvG_WVCKwcERGVyrmOt5exx2nc7sJXBVraBNJrzPUOgtCa9ZVUgp5JxrBxNENlH11lDomPTMqyUp5lffnVAsU4dgoww.HnH9Ht_YYBLMPZVTqx6iYvnQ.zKcn4xdlybuP5h8gVOvfQ1V2yHDT6VPaP.VRPc2dHmBB5kbDuxwnyVVGP_zfNpR9_HZnhN310ut4ASkIM1wAGFdK5Nv6Adr85oJD7B4uDhIEb1Xn9Y0_KQtq..pOUx7afXWk2mjbCBhiCefQdsDUR4Hfh4z8eCJu1E4B_gXOtWsIs5QH0jET2v2MgQt6YSk8dyl5GdsTmm60pVpbM3A.nrMjuLlDi7w54JcEoPRYucv2XNqZG4NE8n.ATAh4TPW5n1RqH._FCEjocMhkZknpj2fiRUuTklQHO9O5dzhL9Sy6_AXkhcKJakQWCZ0rQnXk049bc3wm9ojvM",mdrd: "ClisDqdBgy4pUC_udi_AO0TqVKR3sUNnFZ072Qh6CWI-1739840386-1.2.1.1-EUG9.G7.cM0qLvj22jBM9j5T9PERHHPME1nUfgJ3BZzYfA_d0F0lG5Tup2M_sPTkqw.EhML8xvyRQtrZ9YVCSUgwQ7lXCCjIb6O255XAbxLgG7_6eVmLFvdPezGRRgHiKY3tmER4.Snle74Bt1.fhqgboMUcywfolhlPqx16CiCDhrElE1lx1ergJgH0l_YDsGdDyV7fRRUSZRqgsl3fld4K0V3.knJxOMD0BqPwA3Il8P9AwdNgWr5arGpLKn2L85b04TTr4xzCJWppApqv.RJOnQvCZvJiqXMVviRyYLVwWDm1V8Y.xHdwchFQ9qayFlPaRH6Z5LSA7KQQEOuj1U1uUAdZ5AwuJ7K4L0xpISwlqP14owG.NPdflcAPXoXChWRPo1Sly76Xc6mgEYHO8iEMkvykTq8zmuOJyPTa_jIVM8tJiptvnuC4pdYl9Zbb4ofA_JA_wdz0wTVwePrvrOtgoIW676UHdh74AilNAR2881fwQ10aDv4k41M7XwGltv2Gay8NA.GfOBDoaTRk388eTFyo3cF8JAGYjS3tFBa2Hs4HOV0zwRDFyvqX8w9fgwCd7i2NcmW.lxyWFKzwqat.HsGqcELt8feyOTQuevBLgxmcxT2SVUxxjvwlLJSBxtjVPF6J3JgdumQSGGVFXIQPpOcbHSd1aagRUA9AW2Sb_siSWo5FQNH3kKJ533MocMtWj7CHJNC3Ew4ZNdCFmvaVcYlT70tC2HHmStZRd1FkrzlZM6TmJmUhkbsZ_IhS1HNIyzqNi_fW4W0cxLFbks8k8liLD3Mjkyoha7FlJvR9wzSWccUCQaXyUU8_PlqM0h_FmUyXuAgJyl19D1shgyfUq59cgokpHjDehCKLz9ruBAYprgPMIjO9mVuGWypE5bJBcoZ.KQGtOAwvZKYMe05UVn0rVshETPbW2P9Y222uFhxovkaNOtQzl_p4mcO3ViCVXcyDDRH93ex8op7D5Wu0gY_Ob4iMQ_R3tr7jVe4O5wSee4_ERsYG5JvqUzweHjRhjgb1IkcsbLNOdjk_xn.RBdfTs5rbrtEAXgw02tUGd8mgz8dYdMF.wzneKQkdbic7NeBKlWoZ_qbm32qVEU5wP25WPyYeHQ1bkf6Ppo78f4K2QTOR99nMwsQrDBzlQmCGGmPzIXEuc.9HONli58Z2s2AAPlH57moxmyl57n3S3Tstoa714aQFZv5Kz9PxXvvTzEebOXO7KNz4MChLU.hO4UgVPEnXM1ubAy6dPLiCm.nmxsoRaXxsyruaxlgq6_TfqFvB_K6MyP5W7KmVbVbs19YZWehGqTz9yqCyBI4Ile62htRPnuZbrD2k.fLbsDZ_8dFSP.mUBU0QyJejouvzsaWxvgp7TSISMij2tjZlf8H.hBmJW0BTmmU2uK4JfnbF53mvN64EqNYtC.CDM52vMq9P8Ttcmwk38uCtSv53XZARiW0N0iGC4wYVpL9b32DYS3x1fMNqhDoxErAxV79oQg_7fr.fYAplWEOTKQf4840IC.aI2gdJgJa70xsoB3XHO5Gqg2LRbuXJuOYnLLUu2P0So5gLSiodchunrsQmgZo9eE4UHUItkJhOLUMLGvdk.SZnsh2CZnOxiq94a4YXEHXywIuEzv0H.cJtctE9B2QWxqKx52davBcaoPfHJE_auBGAaxlEToVQpEGpUuXp3NOQcBvTlI0PuEcITEcR7LMtl6W3IjooLuWO7sNg3IYYqGRIYo5WnvWldh_gQp8QYGSE_jMZ96SIXpshEvzFCz5L_DXDI8G0ljSkBdzs1qLjUwg33UGCFlAHBXZ8fKIoZrxmXigNbm1Uh7ooebE3TreaZei2E6HdLVFRDT22Of7B6VfplNilTU6q4c5ZjXcfQczbC_4LA1b464p9IrMIBIZqU2EY5pqreZAQnH5wxsMmfKtCgZtjZqDuZ0Y_lHNYVnLVR0r8axyqds1_0kY"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=913a138f7b4b3e56';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/docs\/dev\/3.2.x\/development\/coding_guidelines.html?__cf_chl_rt_tk=XcdVtmfjAU41be7UcX1YZ7J9t5Tcd9JQh0M_WGTI53s-1739840386-1.0.1.1-49esBpHdxv20ZCz1rmEB8VHZbG2Exhqgd_CTrs2TgSo" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>