text: 
  
  
  
  
  
  <!DOCTYPE html>
  <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark">
    <head>
      <meta charset="utf-8">
    <link rel="dns-prefetch" href="https://github.githubassets.com">
    <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
    <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
    <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  
  
  
    <link crossorigin="anonymous" media="all" integrity="sha512-hsKC3ypJkUX/imnakufPNinmC1hvlGtwN80bcJ9eo6idrtk/bKAiSmsjspBviwNrFmFlEsjycjUAtT4Ae+x0rQ==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-86c282df2a499145ff8a69da92e7cf36.css" />
    
      <link crossorigin="anonymous" media="all" integrity="sha512-ODG6mt8VrPLP1iF4673MMcI5N2uyooaJ910iorfWKXm6F/XCsJMunCed2+SV1sWVbNRIchvkDmFGDXRP9WJHRg==" rel="stylesheet" href="https://github.githubassets.com/assets/behaviors-3831ba9adf15acf2cfd62178ebbdcc31.css" />
      
      
      
      <link crossorigin="anonymous" media="all" integrity="sha512-luK3bSniT+BRa3+oVSfzZYcXvrm1ZSHbnS152Alx43dX3CLVIWmfG1xLreMBFHHkEJmO7cl2ILVUKHDm2oGLiQ==" rel="stylesheet" href="https://github.githubassets.com/assets/github-96e2b76d29e24fe0516b7fa85527f365.css" />
  
    <script crossorigin="anonymous" defer="defer" integrity="sha512-CzeY4A6TiG4fGZSWZU8FxmzFFmcQFoPpArF0hkH0/J/S7UL4eed/LKEXMQXfTwiG5yEJBI+9BdKG8KQJNbhcIQ==" type="application/javascript" src="https://github.githubassets.com/assets/environment-0b3798e0.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-hj4gBCzfBV2jwA/7yKXddRVpCFofKW+wQVTp2TGzxjcPDvfVMXOnYo+yUjupKswUmrxEZps+xX+JM+xzO4RYaA==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-frameworks-863e2004.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-rAayX+tAGbFvAwJW7fDoX+NNhMtMEh/AERlttmVRsk3Vk4kl27vs8D6s8IEJs7dMixb+J1VNqDLcAjlssMguJw==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-vendor-ac06b25f.js"></script>
    
    <script crossorigin="anonymous" defer="defer" integrity="sha512-qPi5hh9n372trWzRp2OnsYbbL/ioCFrAcf8Udxayqw6iqHKrO4BJHGJPD2TMGE5qMJcu7craDDSucWJvCz6Ydw==" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-a8f8b986.js"></script>
    
      <script crossorigin="anonymous" defer="defer" integrity="sha512-VuP/2HeHlwuxYb9sV0y9/hgN869dWIQDX2WZrvh4VAQjo6tb7PXzbBz0nOYROez0xFLxRc/u6sVU6fuYgcpN8w==" type="application/javascript" data-module-id="./chunk-animate-on-scroll.js" data-src="https://github.githubassets.com/assets/chunk-animate-on-scroll-56e3ffd8.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-ct3QiK2mvpg7zor9R2psdWnNMM2K32RU4RGRB/7yA5FyZ8H4iY6SNynXc7UaJqzBx6NaReg3GsWJPwW3kgAAig==" type="application/javascript" data-module-id="./chunk-codemirror.js" data-src="https://github.githubassets.com/assets/chunk-codemirror-72ddd088.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-9UuJ//O9hwCOI7MwzyVAJXn1D9B0WaQFktu5Qzw+7mg18URfaXXS7LsQVNirCGlgrmKe20UCtbj/4aGmw9Wk7g==" type="application/javascript" data-module-id="./chunk-color-modes.js" data-src="https://github.githubassets.com/assets/chunk-color-modes-f54b89ff.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-zkYZSjUFqSifB+Lt76jclFMrfqpcPqevT801RZcoBNCZHRTBKcFrW9OyJoPOzKFv+fZVDRnqdqGsuIv5KOIgZg==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-ce46194a.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-6j/oSF+kbW+yetNPvI684VzAu9pzug6Vj2h+3u1LdCuRhR4jnuiHZfeQKls3nxcT/S3H+oIt7FtigE/aeoj+gg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-ea3fe848.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-VSSd+Yzi2iMS+pibY6hD/WdypxAEdob5F2RMKxuKcAHS2EpFYJPeTXoVxt0NXg03tfj2dka2mEtHS+vjpYSaDw==" type="application/javascript" data-module-id="./chunk-edit-hook-secret-element.js" data-src="https://github.githubassets.com/assets/chunk-edit-hook-secret-element-55249df9.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-N+ziqJjVMfWiqeVHdayDHpNRlG5HsF+cgV+pFnMDoTJuvBzgw+ndsepe4NcKAxIS3WMvzMaQcYmd2vrIaoAJVg==" type="application/javascript" data-module-id="./chunk-edit.js" data-src="https://github.githubassets.com/assets/chunk-edit-37ece2a8.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-aiqMIGGZGo8AQMjcoImKPMTsZVVRl6htCSY7BpRmpGPG/AF+Wq+P/Oj/dthWQOIk9cCNMPEas7O2zAR6oqn0tA==" type="application/javascript" data-module-id="./chunk-emoji-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-emoji-picker-element-6a2a8c20.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-ejCT9r9E93nir+wK3PibZdMK0J3VXEkbwlgdnOnaUNoiJDI60BMtFt1QwjMU/rLXcjnH0xvgVFINGBFkzvTmRw==" type="application/javascript" data-module-id="./chunk-filter-input.js" data-src="https://github.githubassets.com/assets/chunk-filter-input-7a3093f6.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-Z1wcyOFQHzyMSPqp5DLKrobr3DN2Q6Dz31cfPtw4b2vPs9PX0PrxyDXHpTbIlcZ9qT1M1BNAypHKKw8Lp6Yx/Q==" type="application/javascript" data-module-id="./chunk-insights-graph.js" data-src="https://github.githubassets.com/assets/chunk-insights-graph-675c1cc8.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-4iRI95LO0kKcZLWUoOzqI6w8IVGppDVluR4dL7yyz8zgBu/7JAib0MkRN5LUVxXv0KIT6mQ2m5jbKa1NeZoD5A==" type="application/javascript" data-module-id="./chunk-invitations.js" data-src="https://github.githubassets.com/assets/chunk-invitations-e22448f7.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-S5FIOkadGN34UNgwHnVlWaGU6QTjnXIgIhNC1KiRoPIJ1lr3bm+RyU+ar06Dijh10mCX7Gi2+B2oMe8XYJpcHg==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-4b91483a.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-0DSZHh/iD27pAOXl4AWcxPqgRsJAVr1M8SnaN4gKYH2ZplPywvL5oalqN4Qj03FsB5Ll0pytD5kiTMibgGq0BA==" type="application/javascript" data-module-id="./chunk-launch-code-element.js" data-src="https://github.githubassets.com/assets/chunk-launch-code-element-d034991e.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-Lo0j1owPfYM0txt85KwGzF1PQJLvLFGbRJoASd5ZKMQAV9ZSDg5bVm5UWBAz7glGzw1pkiUD2bCMs2wqyf+CEA==" type="application/javascript" data-module-id="./chunk-notification-list-focus.js" data-src="https://github.githubassets.com/assets/chunk-notification-list-focus-2e8d23d6.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-ma0OOy3nj0c1cqBx0BkcmIFsLqcSZ+MIukQxyEFM/OWTzZpG+QMgOoWPAHZz43M6fyjAUG1jH6c/6LPiiKPCyw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-99ad0e3b.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-/kPLzWIe41nxla5A+wcKKPIw4xiAsuITdjbXGVCycmUYnADfCids8FdV+TCA68gr4jAhKIws7flLpL12MoouBA==" type="application/javascript" data-module-id="./chunk-readme-toc-element.js" data-src="https://github.githubassets.com/assets/chunk-readme-toc-element-fe43cbcd.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-F0E2A5YYSz+7eA/RyQ/vYtJzeK2sjNyyneVBqru/CPoRXGBiAcJ2tpN2MWLxkNCqirt88h/BMCAF/7YTZ2qZJA==" type="application/javascript" data-module-id="./chunk-ref-selector.js" data-src="https://github.githubassets.com/assets/chunk-ref-selector-17413603.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-Zii9oRdZ6q2QDNjL5A+me7jwJjMLvs1NiQNHmajUZnn4t9shcBDb4F8l/PQZW26eYfe5065oM7lIOSmbMinA7Q==" type="application/javascript" data-module-id="./chunk-responsive-underlinenav.js" data-src="https://github.githubassets.com/assets/chunk-responsive-underlinenav-6628bda1.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-9WNXtB07IyWypiPmkuucspwog4mme9q5GKGMSgd7FI0DPimmg/pEw+aaAofFV1vuWMt9I8H5QpsVtlbHGg1YBA==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-f56357b4.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-fIq9Mn7jY/bHQXnsmh+VejpDnaO+d/FDxsp+4CuZtdNLrLuO+dQCjh+m6Yd8GCYD2Cy6DWbCEyM+mH2dkB2H9A==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-7c8abd32.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-WK8VXw3lfUQ/VRW0zlgKPhcMUqH0uTnB/KzePUPdZhCm/HpxfXXHKTGvj5C0Oex7+zbIM2ECzULbtTCT4ug3yg==" type="application/javascript" data-module-id="./chunk-toast.js" data-src="https://github.githubassets.com/assets/chunk-toast-58af155f.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-vgHJEmEJxNmHucGbVY8bEUoOYo5/ZwpQ69rU8Dld89daWJ54uad9lNptxq32F8pnbHhdngw9lohNEbMbjmj5AQ==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-be01c912.js"></script>
      <script crossorigin="anonymous" defer="defer" integrity="sha512-a+Pr9qPUoA3j8O0EiWfWwxWH4ZiB1fweLkYrjYlvyy/SeJbcjR1B4UyYjypFb9kvoy7I2bwXU9ctjZInmlyBXg==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-6be3ebf6.js"></script>
    
    <script crossorigin="anonymous" defer="defer" integrity="sha512-+ENy3aqRqLrVzimPscwGcF8nAVSMcGWs7rqA/7B8Cj0ZpfA4oK5QzghzMMDVTM3pVEKtOYNdnzl3+N1/crdv+g==" type="application/javascript" src="https://github.githubassets.com/assets/repositories-f84372dd.js"></script>
  <script crossorigin="anonymous" defer="defer" integrity="sha512-LuxBgyY2ZOF1Yi1Hz1+o0TMTHvhTWdE1RwYP0dEg+O8Hy9Y34bM5U9IWzvMBA2v/JRF4wKCE+HPc72tAvINZOw==" type="application/javascript" src="https://github.githubassets.com/assets/diffs-2eec4183.js"></script>
  
    <meta name="viewport" content="width=device-width">
    
    <title>ghost/helper.py at main · EntySec/ghost</title>
      <meta name="description" content="Ghost Framework is an Android post-exploitation framework that exploits the Android Debug Bridge to remotely access an Android device. - EntySec/ghost">
      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905" />
      <meta name="twitter:image:src" content="https://opengraph.githubassets.com/89039f5702fefd1b4e51ad4136736b71e831e2d5bfdf52bacda802d77c9be1d8/EntySec/ghost" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="EntySec/ghost" /><meta name="twitter:description" content="Ghost Framework is an Android post-exploitation framework that exploits the Android Debug Bridge to remotely access an Android device. - EntySec/ghost" />
      <meta property="og:image" content="https://opengraph.githubassets.com/89039f5702fefd1b4e51ad4136736b71e831e2d5bfdf52bacda802d77c9be1d8/EntySec/ghost" /><meta property="og:image:alt" content="Ghost Framework is an Android post-exploitation framework that exploits the Android Debug Bridge to remotely access an Android device. - EntySec/ghost" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="EntySec/ghost" /><meta property="og:url" content="https://github.com/EntySec/ghost" /><meta property="og:description" content="Ghost Framework is an Android post-exploitation framework that exploits the Android Debug Bridge to remotely access an Android device. - EntySec/ghost" />
  
  
  
      
  
    <link rel="assets" href="https://github.githubassets.com/">
      <link rel="shared-web-socket" href="wss://alive.github.com/_sockets/u/83532886/ws?session=eyJ2IjoiVjMiLCJ1Ijo4MzUzMjg4NiwicyI6NjkxNDc2NjY1LCJjIjo0OTQ3NTczNDUsInQiOjE2MjIzNTM4NTV9--d5d347e53a8e6ccad8c00e82ee9f1b67a3203a61fbb1df3fc5351a8ebedd427c" data-refresh-url="/_alive" data-session-id="11cb60be8733f7425258314403936ba93b4985b38d435bf9155146c9d5e7fb6f">
      <link rel="shared-web-socket-src" href="/socket-worker-3f088aa2.js">
    <link rel="sudo-modal" href="/sessions/sudo_modal">
  
    <meta name="request-id" content="CB1D:6CAC:19EB531:268C217:60B327B9" data-pjax-transient="true" /><meta name="html-safe-nonce" content="73274825e2723fec5fd1e4d8e4e269f1546700891aa5dfec59a0c525d11a22c6" data-pjax-transient="true" /><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS9FbnR5U2VjL2dob3N0L2ZpbmQvbWFpbiIsInJlcXVlc3RfaWQiOiJDQjFEOjZDQUM6MTlFQjUzMToyNjhDMjE3OjYwQjMyN0I5IiwidmlzaXRvcl9pZCI6IjYyMTU5Mzc0NzczODgyMjg2NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9" data-pjax-transient="true" /><meta name="visitor-hmac" content="65e8e11aa5325ad9bb9b981b4c8047e0bfd65c7819e7f708cc04ddb3bfbb0021" data-pjax-transient="true" />
  
      <meta name="hovercard-subject-tag" content="repository:225918779" data-pjax-transient>
  
  
    <meta name="github-keyboard-shortcuts" content="repository,source-code" data-pjax-transient="true" />
  
    
  
    <meta name="selected-link" value="repo_source" data-pjax-transient>
  
      <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
    <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
    <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
    <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
  
    <meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-actor-id" content="83532886" /><meta name="octolytics-actor-login" content="squishysquirter-69" /><meta name="octolytics-actor-hash" content="bc7791b51de3ffffd766d96ef16221fe2bbf2b51d03cb3e484b314b9055bc4db" />
  
    <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" />
  
    
  
  
  
    <meta name="optimizely-datafile" content="{&quot;version&quot;: &quot;4&quot;, &quot;rollouts&quot;: [], &quot;typedAudiences&quot;: [], &quot;anonymizeIP&quot;: true, &quot;projectId&quot;: &quot;16737760170&quot;, &quot;variables&quot;: [], &quot;featureFlags&quot;: [], &quot;experiments&quot;: [{&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20106410318&quot;, &quot;key&quot;: &quot;en&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20122000362&quot;, &quot;key&quot;: &quot;ko&quot;}], &quot;id&quot;: &quot;20121990335&quot;, &quot;key&quot;: &quot;ko_homepage_translation&quot;, &quot;layerId&quot;: &quot;20100420349&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20106410318&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20122000362&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {}}, {&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20227754799&quot;, &quot;key&quot;: &quot;control&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20233267869&quot;, &quot;key&quot;: &quot;treatment&quot;}], &quot;id&quot;: &quot;20194668672&quot;, &quot;key&quot;: &quot;recommended_plan_in_signup&quot;, &quot;layerId&quot;: &quot;20231804245&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20233267869&quot;, &quot;endOfRange&quot;: 2500}, {&quot;entityId&quot;: &quot;&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20227754799&quot;, &quot;endOfRange&quot;: 7500}, {&quot;entityId&quot;: &quot;&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;d0c8cbf56b61c99517936207d280de0c&quot;: &quot;treatment&quot;}}, {&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20233300304&quot;, &quot;key&quot;: &quot;launch_code_variation&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20227370325&quot;, &quot;key&quot;: &quot;control&quot;}], &quot;id&quot;: &quot;20206000276&quot;, &quot;key&quot;: &quot;launch_code_verification&quot;, &quot;layerId&quot;: &quot;20233240262&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20233300304&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20233300304&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {}}, {&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20236992340&quot;, &quot;key&quot;: &quot;usd&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20184442182&quot;, &quot;key&quot;: &quot;localized_currency&quot;}], &quot;id&quot;: &quot;20233233507&quot;, &quot;key&quot;: &quot;local_currency_pricing&quot;, &quot;layerId&quot;: &quot;20212472765&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20184442182&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20236992340&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;667685045.1617740930&quot;: &quot;localized_currency&quot;}}], &quot;audiences&quot;: [{&quot;conditions&quot;: &quot;[\&quot;or\&quot;, {\&quot;match\&quot;: \&quot;exact\&quot;, \&quot;name\&quot;: \&quot;$opt_dummy_attribute\&quot;, \&quot;type\&quot;: \&quot;custom_attribute\&quot;, \&quot;value\&quot;: \&quot;$opt_dummy_value\&quot;}]&quot;, &quot;id&quot;: &quot;$opt_dummy_audience&quot;, &quot;name&quot;: &quot;Optimizely-Generated Audience for Backwards Compatibility&quot;}], &quot;groups&quot;: [], &quot;attributes&quot;: [{&quot;id&quot;: &quot;16822470375&quot;, &quot;key&quot;: &quot;user_id&quot;}, {&quot;id&quot;: &quot;17143601254&quot;, &quot;key&quot;: &quot;spammy&quot;}, {&quot;id&quot;: &quot;18175660309&quot;, &quot;key&quot;: &quot;organization_plan&quot;}, {&quot;id&quot;: &quot;18813001570&quot;, &quot;key&quot;: &quot;is_logged_in&quot;}, {&quot;id&quot;: &quot;19073851829&quot;, &quot;key&quot;: &quot;geo&quot;}, {&quot;id&quot;: &quot;20175462351&quot;, &quot;key&quot;: &quot;requestedCurrency&quot;}], &quot;botFiltering&quot;: false, &quot;accountId&quot;: &quot;16737760170&quot;, &quot;events&quot;: [{&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;17911811441&quot;, &quot;key&quot;: &quot;hydro_click.dashboard.teacher_toolbox_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18124116703&quot;, &quot;key&quot;: &quot;submit.organizations.complete_sign_up&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18145892387&quot;, &quot;key&quot;: &quot;no_metric.tracked_outside_of_optimizely&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18178755568&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.add_repo&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18180553241&quot;, &quot;key&quot;: &quot;submit.repository_imports.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18186103728&quot;, &quot;key&quot;: &quot;click.help.learn_more_about_repository_creation&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18188530140&quot;, &quot;key&quot;: &quot;test_event.do_not_use_in_production&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18191963644&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.transfer_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18195612788&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.import_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18210945499&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.invite_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18211063248&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.create_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18215721889&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.update_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18224360785&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.dismiss&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18234832286&quot;, &quot;key&quot;: &quot;submit.organization_activation.complete&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18252392383&quot;, &quot;key&quot;: &quot;submit.org_repository.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18257551537&quot;, &quot;key&quot;: &quot;submit.org_member_invitation.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18259522260&quot;, &quot;key&quot;: &quot;submit.organization_profile.update&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18564603625&quot;, &quot;key&quot;: &quot;view.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18568612016&quot;, &quot;key&quot;: &quot;click.classroom_sign_in_click&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18572592540&quot;, &quot;key&quot;: &quot;view.classroom_name&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18574203855&quot;, &quot;key&quot;: &quot;click.classroom_create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18582053415&quot;, &quot;key&quot;: &quot;click.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18589463420&quot;, &quot;key&quot;: &quot;click.classroom_create_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591323364&quot;, &quot;key&quot;: &quot;click.classroom_create_first_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591652321&quot;, &quot;key&quot;: &quot;click.classroom_grant_access&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18607131425&quot;, &quot;key&quot;: &quot;view.classroom_creation&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;18831680583&quot;, &quot;key&quot;: &quot;upgrade_account_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19064064515&quot;, &quot;key&quot;: &quot;click.signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19075373687&quot;, &quot;key&quot;: &quot;click.view_account_billing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19077355841&quot;, &quot;key&quot;: &quot;click.dismiss_signup_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19079713938&quot;, &quot;key&quot;: &quot;click.contact_sales&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19120963070&quot;, &quot;key&quot;: &quot;click.compare_account_plans&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;19151690317&quot;, &quot;key&quot;: &quot;click.upgrade_account_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19424193129&quot;, &quot;key&quot;: &quot;click.open_account_switcher&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19520330825&quot;, &quot;key&quot;: &quot;click.visit_account_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19540970635&quot;, &quot;key&quot;: &quot;click.switch_account_context&quot;}, {&quot;experimentIds&quot;: [&quot;20121990335&quot;], &quot;id&quot;: &quot;19730198868&quot;, &quot;key&quot;: &quot;submit.homepage_signup&quot;}, {&quot;experimentIds&quot;: [&quot;20121990335&quot;], &quot;id&quot;: &quot;19820830627&quot;, &quot;key&quot;: &quot;click.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19988571001&quot;, &quot;key&quot;: &quot;click.create_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;20036538294&quot;, &quot;key&quot;: &quot;click.create_organization_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20040653299&quot;, &quot;key&quot;: &quot;click.input_enterprise_trial_form&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;20062030003&quot;, &quot;key&quot;: &quot;click.continue_with_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20068947153&quot;, &quot;key&quot;: &quot;click.create_organization_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20086636658&quot;, &quot;key&quot;: &quot;click.signup_continue.username&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20091648988&quot;, &quot;key&quot;: &quot;click.signup_continue.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20103637615&quot;, &quot;key&quot;: &quot;click.signup_continue.email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20111574253&quot;, &quot;key&quot;: &quot;click.signup_continue.password&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;20120044111&quot;, &quot;key&quot;: &quot;view.pricing_page&quot;}, {&quot;experimentIds&quot;: [&quot;20121990335&quot;, &quot;20233233507&quot;], &quot;id&quot;: &quot;20152062109&quot;, &quot;key&quot;: &quot;submit.create_account&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;20165800992&quot;, &quot;key&quot;: &quot;submit.upgrade_payment_form&quot;}, {&quot;experimentIds&quot;: [&quot;20233233507&quot;], &quot;id&quot;: &quot;20171520319&quot;, &quot;key&quot;: &quot;submit.create_organization&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;20222645674&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.discuss_your_needs&quot;}, {&quot;experimentIds&quot;: [&quot;20206000276&quot;], &quot;id&quot;: &quot;20227443657&quot;, &quot;key&quot;: &quot;submit.verify_primary_user_email&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;20234607160&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.try_enterprise&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;20238175784&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.team&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;20239847212&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.continue_free&quot;}, {&quot;experimentIds&quot;: [&quot;20194668672&quot;], &quot;id&quot;: &quot;20251097193&quot;, &quot;key&quot;: &quot;recommended_plan&quot;}], &quot;revision&quot;: &quot;686&quot;}" />
    <!-- To prevent page flashing, the optimizely JS needs to be loaded in the
      <head> tag before the DOM renders -->
    <script crossorigin="anonymous" defer="defer" integrity="sha512-yDmmCGyENqEePvF9X9A4omxWCNcbS6qK2h8HZPdnvXd02Vzhtqd0zRd/pgTgqQ/xOA02F3H225VpJvDXrnfNbA==" type="application/javascript" src="https://github.githubassets.com/assets/optimizely-c839a608.js"></script>
  
  
  
    
  
        <meta name="hostname" content="github.com">
      <meta name="user-login" content="squishysquirter-69">
  
  
        <meta name="expected-hostname" content="github.com">
  
        <meta name="js-proxy-site-detection-payload" content="NWFjYzhlYzQ2NjcyMjA5NjQ0NTIzZjJmM2ZlZTQyYWQ2MTc2ZjY0NmY0NjYzNTgxZWU3Yzk4YjU1NDViZmI2Znx7InJlbW90ZV9hZGRyZXNzIjoiNTAuMjcuMjEuNDgiLCJyZXF1ZXN0X2lkIjoiQ0IxRDo2Q0FDOjE5RUI1MzE6MjY4QzIxNzo2MEIzMjdCOSIsInRpbWVzdGFtcCI6MTYyMjM1Mzg1NSwiaG9zdCI6ImdpdGh1Yi5jb20ifQ==">
  
      <meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS,AUTOCOMPLETE_EMOJIS_IN_MARKDOWN_EDITOR,GITHUB_TOKEN_PERMISSION,ACTIONS_CONCURRENCY_UI">
  
    <meta http-equiv="x-pjax-version" content="be5b171e15c0a196872e95a02357b275c8b7ba4d6520ecb5941074607c0f1c63">
    
  
      
    <meta name="go-import" content="github.com/EntySec/ghost git https://github.com/EntySec/ghost.git">
  
    <meta name="octolytics-dimension-user_id" content="72795305" /><meta name="octolytics-dimension-user_login" content="EntySec" /><meta name="octolytics-dimension-repository_id" content="225918779" /><meta name="octolytics-dimension-repository_nwo" content="EntySec/ghost" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="225918779" /><meta name="octolytics-dimension-repository_network_root_nwo" content="EntySec/ghost" />
  
  
  
      <link rel="canonical" href="https://github.com/EntySec/ghost/blob/main/core/helper.py" data-pjax-transient>
  
  
    <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
  
    <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
  
    <meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
  
    <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
    <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
    <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
  
  <meta name="theme-color" content="#1e2327">
  <meta name="color-scheme" content="light dark" />
  
  
    <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
  
  <meta name="enabled-homepage-translation-languages" content="ko">
  
    </head>
  
    <body class="logged-in env-production page-responsive page-blob" style="word-wrap: break-word;">
      
  
      <div class="position-relative js-header-wrapper ">
        <a href="#start-of-content" class="p-3 color-bg-info-inverse color-text-white show-on-focus js-skip-to-content">Skip to content</a>
        <span data-view-component="true" class="progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed">
      <span style="background-color: #79b8ff;width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar"></span>
  </span>      
        
  
  
          
              <header class="Header js-details-container Details px-3 px-md-4 px-lg-5 flex-wrap flex-md-nowrap" role="banner" >
      <div class="Header-item mt-n1 mb-n1  d-none d-md-flex">
        <a class="Header-link " href="https://github.com/" data-hotkey="g d"
    aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
    <svg class="octicon octicon-mark-github v-align-middle" height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
  </a>
  
      </div>
  
      <div class="Header-item d-md-none">
        <button class="Header-link btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
          <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="24" width="24" class="octicon octicon-three-bars">
      <path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path>
  </svg>
        </button>
      </div>
  
      <div class="Header-item Header-item--full flex-column flex-md-row width-full flex-order-2 flex-md-order-none mr-0 mr-md-3 mt-3 mt-md-0 Details-content--hidden-not-important d-md-flex">
            
    <div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to"
      role="combobox"
      aria-owns="jump-to-results"
      aria-label="Search or jump to"
      aria-haspopup="listbox"
      aria-expanded="false"
    >
      <div class="position-relative">
        <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="225918779" data-scoped-search-url="/EntySec/ghost/search" data-owner-scoped-search-url="/orgs/EntySec/search" data-unscoped-search-url="/search" action="/EntySec/ghost/search" accept-charset="UTF-8" method="get">
          <label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
            <input type="text"
              class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
              data-hotkey="s,/"
              name="q"
              value=""
              placeholder="Search or jump to…"
              data-unscoped-placeholder="Search or jump to…"
              data-scoped-placeholder="Search or jump to…"
              autocapitalize="off"
              aria-autocomplete="list"
              aria-controls="jump-to-results"
              aria-label="Search or jump to…"
              data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
              spellcheck="false"
              autocomplete="off"
            >
            <input type="hidden" value="zUXzxgqKiZQ+WmAyO7ZG5CF39zAtgyY/z46WVjOBqlM6yFIgOLipCLIIxraiR7nbMeDOHYGsUUdJ4OFHYPfvnQ==" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" />
            <input type="hidden" class="js-site-search-type-field" name="type" >
              <img src="https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
  
              <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
                
  <ul class="d-none js-jump-to-suggestions-template-container">
    
  
  <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
    <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
      <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
        <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
      </div>
  
      <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  
      <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
      </div>
  
      <div class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none js-jump-to-badge-search">
        <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
          In this repository
        </span>
        <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
          All GitHub
        </span>
        <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
  
      <div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
        Jump to
        <span class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
    </a>
  </li>
  
  </ul>
  
  <ul class="d-none js-jump-to-no-results-template-container">
    <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
      <span class="color-text-secondary">No suggested jump to results</span>
    </li>
  </ul>
  
  <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
    
  
  <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
    <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
      <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
        <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
      </div>
  
      <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  
      <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
      </div>
  
      <div class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none js-jump-to-badge-search">
        <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
          In this repository
        </span>
        <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
          All GitHub
        </span>
        <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
  
      <div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
        Jump to
        <span class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
    </a>
  </li>
  
    
  
  <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
    <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
      <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
        <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
      </div>
  
      <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  
      <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
      </div>
  
      <div class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none js-jump-to-badge-search">
        <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
          In this organization
        </span>
        <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
          All GitHub
        </span>
        <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
  
      <div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
        Jump to
        <span class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
    </a>
  </li>
  
    
  
  <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
    <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
      <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
        <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
        <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
      </div>
  
      <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  
      <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
      </div>
  
      <div class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none js-jump-to-badge-search">
        <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
          In this repository
        </span>
        <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
          All GitHub
        </span>
        <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
  
      <div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-tertiary px-1 color-text-tertiary ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
        Jump to
        <span class="d-inline-block ml-1 v-align-middle">↵</span>
      </div>
    </a>
  </li>
  
  
      <li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion">
        <svg style="box-sizing: content-box; color: var(--color-icon-primary);" viewBox="0 0 16 16" fill="none" data-view-component="true" width="32" height="32" class="m-3 anim-rotate">
    <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
    <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  </svg>
      </li>
  </ul>
  
              </div>
          </label>
  </form>    </div>
    </div>
  
          <nav class="d-flex flex-column flex-md-row flex-self-stretch flex-md-self-auto" aria-label="Global">
        <a class="Header-link py-md-3 d-block d-md-none py-2 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:dashboard:user" aria-label="Dashboard" href="/dashboard">
          Dashboard
  </a>
      <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-hotkey="g p" data-ga-click="Header, click, Nav menu - item:pulls context:user" aria-label="Pull requests you created" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls" href="/pulls">
          Pull<span class="d-inline d-md-none d-lg-inline"> request</span>s
  </a>
      <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-hotkey="g i" data-ga-click="Header, click, Nav menu - item:issues context:user" aria-label="Issues you created" data-selected-links="/issues /issues/assigned /issues/mentioned /issues" href="/issues">
        Issues
  </a>
        <div class="d-flex position-relative">
          <a class="js-selected-navigation-item Header-link flex-auto mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:marketplace context:user" data-octo-click="marketplace_click" data-octo-dimensions="location:nav_bar" data-selected-links=" /marketplace" href="/marketplace">
            Marketplace
  </a>      </div>
  
      <a class="js-selected-navigation-item Header-link mt-md-n3 mb-md-n3 py-2 py-md-3 mr-0 mr-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
        Explore
  </a>
      <a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:workspaces context:user" data-selected-links="/codespaces /codespaces" href="/codespaces">
        Codespaces
  </a>
        <a class="js-selected-navigation-item Header-link d-block d-md-none py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" data-ga-click="Header, click, Nav menu - item:Sponsors" data-hydro-click="{&quot;event_type&quot;:&quot;sponsors.button_click&quot;,&quot;payload&quot;:{&quot;button&quot;:&quot;HEADER_SPONSORS_DASHBOARD&quot;,&quot;sponsorable_login&quot;:&quot;squishysquirter-69&quot;,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="53fae6b4067c7044f86b6ac8ea3684ce57479afc7331c1487e39f2efac02ea7f" data-selected-links=" /sponsors/accounts" href="/sponsors/accounts">Sponsors</a>
  
      <a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" href="/settings/profile">
        Settings
  </a>
      <a class="Header-link d-block d-md-none mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15" href="/squishysquirter-69">
        <img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/83532886?s=40&amp;v=4" width="20" height="20" alt="@squishysquirter-69" />
        squishysquirter-69
  </a>
      <!-- '"` --><!-- </textarea></xmp> --></option></form><form action="/logout" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="vztAYD+wXlrC7RdoxTrqu9+xYmMxEeozLFGEaYAi09N5R/K9wB3yXK3k9FKOWFbrVu46JXmX+O8Z6C/F3PEk2g==" />
        <button type="submit" class="Header-link mr-0 mr-md-3 py-2 py-md-3 border-top border-md-top-0 border-white-fade-15 d-md-none btn-link d-block width-full text-left" data-ga-click="Header, sign out, icon:logout" style="padding-left: 2px;">
          <svg class="octicon octicon-sign-out v-align-middle" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.75C2 1.784 2.784 1 3.75 1h2.5a.75.75 0 010 1.5h-2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h2.5a.75.75 0 010 1.5h-2.5A1.75 1.75 0 012 13.25V2.75zm10.44 4.5H6.75a.75.75 0 000 1.5h5.69l-1.97 1.97a.75.75 0 101.06 1.06l3.25-3.25a.75.75 0 000-1.06l-3.25-3.25a.75.75 0 10-1.06 1.06l1.97 1.97z"></path></svg>
          Sign out
        </button>
  </form></nav>
  
      </div>
  
      <div class="Header-item Header-item--full flex-justify-center d-md-none position-relative">
          <a class="Header-link " href="https://github.com/" data-hotkey="g d"
    aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
    <svg class="octicon octicon-mark-github v-align-middle" height="32" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
  </a>
  
      </div>
  
      <div class="Header-item mr-0 mr-md-3 flex-order-1 flex-md-order-none">
          
  
  
        <notification-indicator
          class="js-socket-channel"
          data-test-selector="notifications-indicator"
          data-channel="eyJjIjoibm90aWZpY2F0aW9uLWNoYW5nZWQ6ODM1MzI4ODYiLCJ0IjoxNjIyMzUzODU1fQ==--777ff80213614d832a621b1fc3699ef90d9db65d4e3ba69e83dacf6c9fd3c280">
          <a href="/notifications"
            class="Header-link notification-indicator position-relative tooltipped tooltipped-sw"
            
            aria-label="You have unread notifications"
            data-hotkey="g n"
            data-ga-click="Header, go to notifications, icon:unread"
            data-target="notification-indicator.link">
            <span class="mail-status unread " data-target="notification-indicator.modifier"></span>
            <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-bell">
      <path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path>
  </svg>
          </a>
        </notification-indicator>
  
      </div>
  
  
      <div class="Header-item position-relative d-none d-md-flex">
          <details class="details-overlay details-reset">
    <summary class="Header-link"
        aria-label="Create new…"
        data-ga-click="Header, create new, icon:add">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-plus">
      <path fill-rule="evenodd" d="M7.75 2a.75.75 0 01.75.75V7h4.25a.75.75 0 110 1.5H8.5v4.25a.75.75 0 11-1.5 0V8.5H2.75a.75.75 0 010-1.5H7V2.75A.75.75 0 017.75 2z"></path>
  </svg> <span class="dropdown-caret"></span>
    </summary>
    <details-menu class="dropdown-menu dropdown-menu-sw">
      
  <a role="menuitem" class="dropdown-item" href="/new" data-ga-click="Header, create new repository">
    New repository
  </a>
  
    <a role="menuitem" class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository">
      Import repository
    </a>
  
  <a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
    New gist
  </a>
  
    <a role="menuitem" class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization">
      New organization
    </a>
  
  
    <div role="none" class="dropdown-divider"></div>
    <div class="dropdown-header">
      <span title="EntySec/ghost">This repository</span>
    </div>
      <a role="menuitem" class="dropdown-item" href="/EntySec/ghost/issues/new/choose" data-ga-click="Header, create new issue" data-skip-pjax>
        New issue
      </a>
  
  
    </details-menu>
  </details>
  
      </div>
  
      <div class="Header-item position-relative mr-0 d-none d-md-flex">
          
    <details class="details-overlay details-reset js-feature-preview-indicator-container" data-feature-preview-indicator-src="/users/squishysquirter-69/feature_preview/indicator_check">
  
    <summary class="Header-link"
      aria-label="View profile and more"
      data-ga-click="Header, show menu, icon:avatar">
      <img src="https://avatars.githubusercontent.com/u/83532886?s=60&amp;v=4" alt="@squishysquirter-69" size="20" data-view-component="true" height="20" width="20" class="avatar-user avatar avatar-small"></img>
        <span class="feature-preview-indicator js-feature-preview-indicator" style="top: 1px;" hidden></span>
      <span class="dropdown-caret"></span>
    </summary>
    <details-menu class="dropdown-menu dropdown-menu-sw" style="width: 180px" 
        src="/users/83532886/menu" preload>
        <include-fragment>
          <p class="text-center mt-3" data-hide-on-error>
            <svg style="box-sizing: content-box; color: var(--color-icon-primary);" viewBox="0 0 16 16" fill="none" data-view-component="true" width="32" height="32" class="anim-rotate">
    <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
    <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  </svg>
          </p>
          <p class="ml-1 mb-2 mt-2 color-text-primary" data-show-on-error>
            <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-alert">
      <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  </svg>
            Sorry, something went wrong.
          </p>
        </include-fragment>
    </details-menu>
  </details>
  
      </div>
  </header>
  
              
      </div>
  
    <div id="start-of-content" class="show-on-focus"></div>
  
  
  
  
  
      <div data-pjax-replace id="js-flash-container">
  
  
    <template class="js-flash-template">
      <div class="flash flash-full  {{ className }}">
    <div class=" px-2" >
      <button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
      </button>
      
        <div>{{ message }}</div>
  
    </div>
  </div>
    </template>
  </div>
  
  
      
  
    <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
  
  
  
  
    <div
      class="application-main "
      data-commit-hovercards-enabled
      data-discussion-hovercards-enabled
      data-issue-and-pr-hovercards-enabled
    >
          <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
      <main id="js-repo-pjax-container" data-pjax-container >
        
  
        
      
  
  
  
  
  
  
    
  
  
    <div class="color-bg-secondary pt-3 hide-full-screen mb-5">
  
        <div class="d-flex mb-3 px-3 px-md-4 px-lg-5">
  
          <div class="flex-auto min-width-0 width-fit mr-3">
              <h1 class=" d-flex flex-wrap flex-items-center break-word f3 text-normal">
      <svg class="octicon octicon-repo color-text-secondary mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
    <span class="author flex-self-stretch" itemprop="author">
      <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/EntySec/hovercard" href="/EntySec">EntySec</a>
    </span>
    <span class="mx-1 flex-self-stretch color-text-secondary">/</span>
    <strong itemprop="name" class="mr-2 flex-self-stretch">
      <a data-pjax="#js-repo-pjax-container" href="/EntySec/ghost">ghost</a>
    </strong>
    
  </h1>
  
  
          </div>
  
            <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
  
    <li>
          <notifications-list-subscription-form class="f5 position-relative d-flex">
        <details
          class="details-reset details-overlay f5 position-relative"
          data-target="notifications-list-subscription-form.details"
          data-action="toggle:notifications-list-subscription-form#detailsToggled"
        >
  
        <summary class="btn btn-sm rounded-right-0" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;WATCH_BUTTON&quot;,&quot;repository_id&quot;:225918779,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="e46a65460fc968e47c2a26cdc6c6ef8f21303359a393945790231cf59fd149d3" data-ga-click="Repository, click Watch settings, action:blob#show" aria-label="Notifications settings">
            <span data-menu-button>
              <span
                hidden
                
                data-target="notifications-list-subscription-form.unwatchButtonCopy"
              >
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-eye">
      <path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>
  </svg>
                Unwatch
              </span>
              <span
                hidden
                
                data-target="notifications-list-subscription-form.stopIgnoringButtonCopy"
              >
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-bell-slash">
      <path fill-rule="evenodd" d="M8 1.5c-.997 0-1.895.416-2.534 1.086A.75.75 0 014.38 1.55 5 5 0 0113 5v2.373a.75.75 0 01-1.5 0V5A3.5 3.5 0 008 1.5zM4.182 4.31L1.19 2.143a.75.75 0 10-.88 1.214L3 5.305v2.642a.25.25 0 01-.042.139L1.255 10.64A1.518 1.518 0 002.518 13h11.108l1.184.857a.75.75 0 10.88-1.214l-1.375-.996a1.196 1.196 0 00-.013-.01L4.198 4.321a.733.733 0 00-.016-.011zm7.373 7.19L4.5 6.391v1.556c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01.015.015 0 00.005.012.017.017 0 00.006.004l.007.001h9.037zM8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path>
  </svg>
                Stop ignoring
              </span>
              <span
                
                
                data-target="notifications-list-subscription-form.watchButtonCopy"
              >
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-eye">
      <path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>
  </svg>
                Watch
              </span>
            </span>
            <span class="dropdown-caret"></span>
  </summary>
          <details-menu
            class="SelectMenu  "
            role="menu"
            data-target="notifications-list-subscription-form.menu"
            
          >
            <div class="SelectMenu-modal notifications-component-menu-modal">
              <header class="SelectMenu-header">
                <h3 class="SelectMenu-title">Notifications</h3>
                <button class="SelectMenu-closeButton" type="button" aria-label="Close menu" data-action="click:notifications-list-subscription-form#closeMenu">
                  <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
                </button>
              </header>
  
              <div class="SelectMenu-list">
                <form data-target="notifications-list-subscription-form.form" data-action="submit:notifications-list-subscription-form#submitForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="9f0+owV4tgQJjLX7NhzmZJQXMsxtzs4WjcIQtmIgahcatEWpE7O9LTNclFt3yZT9w8d8LCq94swJQJuz8B9hXw==" />
  
                  <input type="hidden" name="repository_id" value="225918779">
  
                  <button
                    type="submit"
                    name="do"
                    value="included"
                    class="SelectMenu-item flex-items-start"
                    role="menuitemradio"
                    aria-checked="true"
                    data-targets="notifications-list-subscription-form.subscriptionButtons"
                    
                  >
                    <span class="f5">
                      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
                    </span>
                    <div>
                      <div class="f5 text-bold">
                        Participating and @mentions
                      </div>
                      <div class="text-small color-text-secondary text-normal pb-1">
                        Only receive notifications from this repository when participating or @mentioned.
                      </div>
                    </div>
                  </button>
  
                  <button
                    type="submit"
                    name="do"
                    value="subscribed"
                    class="SelectMenu-item flex-items-start"
                    role="menuitemradio"
                    aria-checked="false"
                    data-targets="notifications-list-subscription-form.subscriptionButtons"
                  >
                    <span class="f5">
                      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
                    </span>
                    <div>
                      <div class="f5 text-bold">
                        All Activity
                      </div>
                      <div class="text-small color-text-secondary text-normal pb-1">
                        Notified of all notifications on this repository.
                      </div>
                    </div>
                  </button>
  
                  <button
                    type="submit"
                    name="do"
                    value="ignore"
                    class="SelectMenu-item flex-items-start"
                    role="menuitemradio"
                    aria-checked="false"
                    data-targets="notifications-list-subscription-form.subscriptionButtons"
                  >
                    <span class="f5">
                      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
                    </span>
                    <div>
                      <div class="f5 text-bold">
                        Ignore
                      </div>
                      <div class="text-small color-text-secondary text-normal pb-1">
                        Never be notified.
                      </div>
                    </div>
                  </button>
  </form>
                <button
                  class="SelectMenu-item flex-items-start pr-3"
                  type="button"
                  role="menuitemradio"
                  data-target="notifications-list-subscription-form.customButton"
                  data-action="click:notifications-list-subscription-form#openCustomDialog"
                  aria-haspopup="true"
                  aria-checked="false"
                  
                >
                  <span class="f5">
                    <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
                  </span>
                  <div>
                    <div class="d-flex flex-items-start flex-justify-between">
                      <div class="f5 text-bold">Custom</div>
                      <div class="f5 pr-1">
                        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-arrow-right">
      <path fill-rule="evenodd" d="M8.22 2.97a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06l2.97-2.97H3.75a.75.75 0 010-1.5h7.44L8.22 4.03a.75.75 0 010-1.06z"></path>
  </svg>
                      </div>
                    </div>
                    <div class="text-small color-text-secondary text-normal pb-1">
                      Select events you want to be notified of in addition to participating and @mentions.
                    </div>
                  </div>
                </button>
              </div>
            </div>
          </details-menu>
  
          <details-dialog class="notifications-component-dialog " data-target="notifications-list-subscription-form.customDialog" hidden>
            <div class="SelectMenu-modal notifications-component-dialog-modal overflow-visible">
              <form data-target="notifications-list-subscription-form.customform" data-action="submit:notifications-list-subscription-form#submitCustomForm" action="/notifications/subscribe" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="hcrAgNJWni1KdX2ebWmWqWBRWflDtUsseNcgYEi7LOhqg7uKxJ2VBHClXD4svOQwN4EXGQTGZ/b8Vatl2oQnoA==" />
  
                <input type="hidden" name="repository_id" value="225918779">
  
                <header class="d-sm-none SelectMenu-header pb-0 border-bottom-0 px-2 px-sm-3">
                  <h1 class="f3 SelectMenu-title d-inline-flex">
                    <button
                      class="color-bg-primary border-0 px-2 py-0 m-0 Link--secondary f5"
                      aria-label="Return to menu"
                      type="button"
                      data-action="click:notifications-list-subscription-form#closeCustomDialog"
                    >
                      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-arrow-left">
      <path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path>
  </svg>
                    </button>
                    Custom
                  </h1>
                </header>
  
                <header class="d-none d-sm-flex flex-items-start pt-1">
                  <button
                    class="border-0 px-2 pt-1 m-0 Link--secondary f5"
                    style="background-color: transparent;"
                    aria-label="Return to menu"
                    type="button"
                    data-action="click:notifications-list-subscription-form#closeCustomDialog"
                  >
                    <svg style="position: relative; left: 2px; top: 1px" aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-arrow-left">
      <path fill-rule="evenodd" d="M7.78 12.53a.75.75 0 01-1.06 0L2.47 8.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 1.06L4.81 7h7.44a.75.75 0 010 1.5H4.81l2.97 2.97a.75.75 0 010 1.06z"></path>
  </svg>
                  </button>
  
                  <h1 class="pt-1 pr-4 pb-0 pl-0 f5 text-bold">
                    Custom
                  </h1>
                </header>
  
                <fieldset>
                  <legend>
                    <div class="text-small color-text-secondary pt-0 pr-3 pb-3 pl-6 pl-sm-5 border-bottom mb-3">
                      Select events you want to be notified of in addition to participating and @mentions.
                    </div>
                  </legend>
                    <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
                      <label class="f5 text-normal">
                        <input
                          type="checkbox"
                          name="thread_types[]"
                          value="Issue"
                          data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
                          data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
                          
                        >
                        Issues
                      </label>
  
                    </div>
                    <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
                      <label class="f5 text-normal">
                        <input
                          type="checkbox"
                          name="thread_types[]"
                          value="PullRequest"
                          data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
                          data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
                          
                        >
                        Pull requests
                      </label>
  
                    </div>
                    <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
                      <label class="f5 text-normal">
                        <input
                          type="checkbox"
                          name="thread_types[]"
                          value="Release"
                          data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
                          data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
                          
                        >
                        Releases
                      </label>
  
                    </div>
                    <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
                      <label class="f5 text-normal">
                        <input
                          type="checkbox"
                          name="thread_types[]"
                          value="Discussion"
                          data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
                          data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
                          
                        >
                        Discussions
                      </label>
  
                        <span
                          class="tooltipped tooltipped-nw mr-2 p-1 float-right"
                          
                          aria-label="Discussions are not enabled for this repo">
                          <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-info color-icon-secondary">
      <path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"></path>
  </svg>
                        </span>
                    </div>
                    <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
                      <label class="f5 text-normal">
                        <input
                          type="checkbox"
                          name="thread_types[]"
                          value="SecurityAlert"
                          data-targets="notifications-list-subscription-form.threadTypeCheckboxes"
                          data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated"
                          
                        >
                        Security alerts
                      </label>
  
                    </div>
                </fieldset>
                <div class="pt-2 pb-3 px-3 d-flex flex-justify-start flex-row-reverse">
                  <button
                    type="submit"
                    name="do"
                    value="custom"
                    class="btn btn-sm btn-primary ml-2"
                    data-target="notifications-list-subscription-form.customSubmit"
                    disabled
                  >Apply</button>
  
                  <button
                    class="btn btn-sm"
                    type="button"
                    data-action="click:notifications-list-subscription-form#resetForm"
                    data-close-dialog="">Cancel</button>
                </div>
  </form>          </div>
          </details-dialog>
          <div class="notifications-component-dialog-overlay"></div>
        </details>
          <a class="social-count"
            href="/EntySec/ghost/watchers"
            aria-label="133 users are watching this repository"
            data-target="notifications-list-subscription-form.socialCount"
          >
            133
          </a>
      </notifications-list-subscription-form>
  
  
  
    </li>
  
    <li>
          <div class="d-block js-toggler-container js-social-container starring-container ">
      <form class="starred js-social-form" action="/EntySec/ghost/unstar" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="P/SgO4FGhX+5K5Lk+6CchPmvfidAQ7+hbGciXg1mzwXK3/dGyuZQGWTva20kc60qJ0QZzjvXs2EBVnUehEazZw==" />
        <input type="hidden" name="context" value="repository">
        <button type="submit" class="btn btn-sm btn-with-count  js-toggler-target" aria-label="Unstar this repository" title="Unstar EntySec/ghost" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;UNSTAR_BUTTON&quot;,&quot;repository_id&quot;:225918779,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="b48ed3e8fe62f7139b0a9d922f553586e313ec5f0062af18fd79bd7fd0f9e3a9" data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar">        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-star-fill mr-1">
      <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25z"></path>
  </svg>
          <span data-view-component="true">
            Unstar
  </span></button>        <a class="social-count js-social-count" href="/EntySec/ghost/stargazers"
             aria-label="1114 users starred this repository">
             1.1k
          </a>
  </form>
      <form class="unstarred js-social-form" action="/EntySec/ghost/star" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="7urw/9pSfAVCMnxTj1ZWX3nznjJW0Ryd2Bffv5oIRphY35F100TweqegWhETDbIlR6Ty+ijyk1QR375wH59dTw==" />
        <input type="hidden" name="context" value="repository">
        <button type="submit" class="btn btn-sm btn-with-count  js-toggler-target" aria-label="Unstar this repository" title="Star EntySec/ghost" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;STAR_BUTTON&quot;,&quot;repository_id&quot;:225918779,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="691e79638ec3c9a968225979f6463f9698249aaa78bca18c2ba7a900351df97e" data-ga-click="Repository, click star button, action:blob#show; text:Star">        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-star mr-1">
      <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
  </svg>
          <span data-view-component="true">
            Star
  </span></button>        <a class="social-count js-social-count" href="/EntySec/ghost/stargazers"
             aria-label="1114 users starred this repository">
            1.1k
          </a>
  </form>  </div>
  
    </li>
  
    <li>
              <div class="float-left">
                <details class="details-reset details-overlay details-overlay-dark " >
                        <summary
                      class="btn btn-sm btn-with-count"
                      title="Fork your own copy of EntySec/ghost to your account"
                      data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FORK_BUTTON&quot;,&quot;repository_id&quot;:225918779,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="19e34700c36c8eb098fd4cb09c47e3f22f8ae69f98b3e5be896192568d813e4a" data-ga-click="Repository, show fork modal, action:blob#show; text:Fork">
                      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-repo-forked">
      <path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
  </svg>
                      Fork
                    </summary>
  
    <details-dialog
      class="Box d-flex flex-column anim-fade-in fast Box--overlay "
        aria-label="Fork ghost"
        src="/EntySec/ghost/fork?fragment=1"
        preload
      >
      <div class="Box-header">
        <button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog>
          <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
        </button>
        <h1 class="Box-title">Fork ghost</h1>
      </div>
        
                  <div class="text-center overflow-auto">
                    <include-fragment>
                      <div class="octocat-spinner my-5" aria-label="Loading..."></div>
                      <p class="f5 color-text-secondary">If this dialog fails to load, you can visit <a href="/EntySec/ghost/fork">the fork page</a> directly.</p>
                    </include-fragment>
                  </div>
  
    </details-dialog>
  </details>
              </div>
  
        <a href="/EntySec/ghost/network/members" class="social-count"
           aria-label="535 users forked this repository">
          535
        </a>
    </li>
  </ul>
  
        </div>
          
  
    <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 color-bg-secondary">
  
      <ul data-view-component="true" class="UnderlineNav-body list-style-none">
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /EntySec/ghost" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item selected">
      
                    <svg class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
            <span data-content="Code">Code</span>
              <span title="Not available" data-view-component="true" class="Counter"></span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /EntySec/ghost/issues" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"/></svg>
            <span data-content="Issues">Issues</span>
              <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /EntySec/ghost/pulls" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path></svg>
            <span data-content="Pull requests">Pull requests</span>
              <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /EntySec/ghost/actions" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path></svg>
            <span data-content="Actions">Actions</span>
              <span title="Not available" data-view-component="true" class="Counter"></span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /EntySec/ghost/projects" data-hotkey="g b" data-ga-click="Repository, Navigation click, Projects tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-project UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
            <span data-content="Projects">Projects</span>
              <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /EntySec/ghost/wiki" data-hotkey="g w" data-ga-click="Repository, Navigation click, Wikis tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path></svg>
            <span data-content="Wiki">Wiki</span>
              <span title="Not available" data-view-component="true" class="Counter"></span>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /EntySec/ghost/security" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path></svg>
            <span data-content="Security">Security</span>
              <include-fragment src="/EntySec/ghost/security/overall-count" accept="text/fragment+html"></include-fragment>
  
      
  </a></li>
          <li data-view-component="true" class="d-flex">
    <a href="/EntySec/ghost/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /EntySec/ghost/pulse" data-ga-click="Repository, Navigation click, Insights tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item">
      
                    <svg class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path></svg>
            <span data-content="Insights">Insights</span>
              <span title="Not available" data-view-component="true" class="Counter"></span>
  
      
  </a></li>
  </ul>
        <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions  js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0">      <details data-view-component="true" class="details-overlay details-reset position-relative">
    <summary role="button" data-view-component="true">          <div class="UnderlineNav-item mr-0 border-0">
              <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-kebab-horizontal">
      <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
  </svg>
              <span class="sr-only">More</span>
            </div>
  </summary>
    <div data-view-component="true">          <details-menu role="menu" data-view-component="true" class="dropdown-menu dropdown-menu-sw">
    
              <ul>
                  <li data-menu-item="i0code-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost" href="/EntySec/ghost">
                      Code
  </a>                </li>
                  <li data-menu-item="i1issues-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/issues" href="/EntySec/ghost/issues">
                      Issues
  </a>                </li>
                  <li data-menu-item="i2pull-requests-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/pulls" href="/EntySec/ghost/pulls">
                      Pull requests
  </a>                </li>
                  <li data-menu-item="i3actions-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/actions" href="/EntySec/ghost/actions">
                      Actions
  </a>                </li>
                  <li data-menu-item="i4projects-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/projects" href="/EntySec/ghost/projects">
                      Projects
  </a>                </li>
                  <li data-menu-item="i5wiki-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/wiki" href="/EntySec/ghost/wiki">
                      Wiki
  </a>                </li>
                  <li data-menu-item="i6security-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/security" href="/EntySec/ghost/security">
                      Security
  </a>                </li>
                  <li data-menu-item="i7insights-tab" hidden>
                    <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /EntySec/ghost/pulse" href="/EntySec/ghost/pulse">
                      Insights
  </a>                </li>
              </ul>
  
  </details-menu></div>
  </details></div>
  </nav>
  
    </div>
  
  
  <div class="container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5">
    <div id="repo-content-pjax-container" class="repository-content " >
  
      
        
      
  <div>
    
  
  
      <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/EntySec/ghost/blob/29c0a4b38da11d4e48607bef0903d1b7c8e58b29/core/helper.py">Permalink</a>
  
      <!-- blob contrib key: blob_contributors:v22:f90744cb0c9c1959f8498123d1ff58ed2f1681fe9c4df136de1ecae6a9931d13 -->
  
      <div class="d-flex flex-items-start flex-shrink-0 pb-3 flex-wrap flex-md-nowrap flex-justify-between flex-md-justify-start">
        
  <div class="position-relative">
    <details class="details-reset details-overlay mr-0 mb-0 " id="branch-select-menu">
      <summary class="btn css-truncate"
              data-hotkey="w"
              title="Switch branches or tags">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-git-branch text-gray">
      <path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path>
  </svg>
        <span class="css-truncate-target" data-menu-button>main</span>
        <span class="dropdown-caret"></span>
      </summary>
  
        
  <div class="SelectMenu">
    <div class="SelectMenu-modal">
      <header class="SelectMenu-header">
        <span class="SelectMenu-title">Switch branches/tags</span>
        <button class="SelectMenu-closeButton" type="button" data-toggle-for="branch-select-menu"><svg aria-label="Close menu" aria-hidden="false" role="img" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg></button>
      </header>
  
      <input-demux data-action="tab-container-change:input-demux#storeInput tab-container-changed:input-demux#updateInput">
        <tab-container class="d-flex flex-column js-branches-tags-tabs" style="min-height: 0;">
          <div class="SelectMenu-filter">
            <input data-target="input-demux.source"
                   id="context-commitish-filter-field"
                   class="SelectMenu-input form-control"
                   aria-owns="ref-list-branches"
                   data-controls-ref-menu-id="ref-list-branches"
                   autofocus
                   autocomplete="off"
                   aria-label="Filter branches/tags"
                   placeholder="Filter branches/tags"
                   type="text"
            >
          </div>
  
          <div class="SelectMenu-tabs" role="tablist" data-target="input-demux.control" >
            <button class="SelectMenu-tab" type="button" role="tab" aria-selected="true">Branches</button>
            <button class="SelectMenu-tab" type="button" role="tab">Tags</button>
          </div>
  
          <div role="tabpanel" id="ref-list-branches" data-filter-placeholder="Filter branches/tags" class="d-flex flex-column flex-auto overflow-auto" tabindex="">
            <ref-selector
              type="branch"
              data-targets="input-demux.sinks"
              data-action="
                input-entered:ref-selector#inputEntered
                tab-selected:ref-selector#tabSelected
                focus-list:ref-selector#focusFirstListMember
              "
              query-endpoint="/EntySec/ghost/refs"
              
              cache-key="v0:1619821529.322708"
              current-committish="bWFpbg=="
              default-branch="bWFpbg=="
              name-with-owner="RW50eVNlYy9naG9zdA=="
            >
  
              <template data-target="ref-selector.fetchFailedTemplate">
                <div class="SelectMenu-message" data-index="{{ index }}">Could not load branches</div>
              </template>
  
                <template data-target="ref-selector.noMatchTemplate">
      <div class="SelectMenu-message">Nothing to show</div>
  </template>
  
  
              <!-- TODO: this max-height is necessary or else the branch list won't scroll.  why? -->
              <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list " style="max-height: 330px">
                <div class="SelectMenu-loading pt-3 pb-0" aria-label="Menu is loading">
                  <svg style="box-sizing: content-box; color: var(--color-icon-primary);" viewBox="0 0 16 16" fill="none" data-view-component="true" width="32" height="32" class="anim-rotate">
    <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
    <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  </svg>
                </div>
              </div>
  
                <template data-target="ref-selector.itemTemplate">
    <a href="https://github.com/EntySec/ghost/blob/{{ urlEncodedRefName }}/core/helper.py" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
      <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
      <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
    </a>
  </template>
  
  
                <footer class="SelectMenu-footer"><a href="/EntySec/ghost/branches">View all branches</a></footer>
            </ref-selector>
  
          </div>
  
          <div role="tabpanel" id="tags-menu" data-filter-placeholder="Find a tag" class="d-flex flex-column flex-auto overflow-auto" tabindex="" hidden>
            <ref-selector
              type="tag"
              data-action="
                input-entered:ref-selector#inputEntered
                tab-selected:ref-selector#tabSelected
                focus-list:ref-selector#focusFirstListMember
              "
              data-targets="input-demux.sinks"
              query-endpoint="/EntySec/ghost/refs"
              cache-key="v0:1619821529.322708"
              current-committish="bWFpbg=="
              default-branch="bWFpbg=="
              name-with-owner="RW50eVNlYy9naG9zdA=="
            >
  
              <template data-target="ref-selector.fetchFailedTemplate">
                <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div>
              </template>
  
              <template data-target="ref-selector.noMatchTemplate">
                <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div>
              </template>
  
                <template data-target="ref-selector.itemTemplate">
    <a href="https://github.com/EntySec/ghost/blob/{{ urlEncodedRefName }}/core/helper.py" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
      <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
      <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
    </a>
  </template>
  
  
              <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px">
                <div class="SelectMenu-loading pt-3 pb-0" aria-label="Menu is loading">
                  <svg style="box-sizing: content-box; color: var(--color-icon-primary);" viewBox="0 0 16 16" fill="none" data-view-component="true" width="32" height="32" class="anim-rotate">
    <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
    <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  </svg>
                </div>
              </div>
                <footer class="SelectMenu-footer"><a href="/EntySec/ghost/tags">View all tags</a></footer>
            </ref-selector>
          </div>
        </tab-container>
      </input-demux>
    </div>
  </div>
  
    </details>
  
  </div>
  
        <h2 id="blob-path" class="breadcrumb flex-auto flex-self-center min-width-0 text-normal mx-2 width-full width-md-auto flex-order-1 flex-md-order-none mt-3 mt-md-0">
          <span class="js-repo-root text-bold"><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/EntySec/ghost"><span>ghost</span></a></span></span><span class="separator">/</span><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/EntySec/ghost/tree/main/core"><span>core</span></a></span><span class="separator">/</span><strong class="final-path">helper.py</strong>
            <span class="separator">/</span><details class="details-reset details-overlay d-inline" id="jumpto-symbol-select-menu">
    <summary class="btn-link Link--secondary css-truncate" aria-haspopup="true" data-hotkey="r" data-hydro-click="{&quot;event_type&quot;:&quot;code_navigation.click_on_blob_definitions&quot;,&quot;payload&quot;:{&quot;action&quot;:&quot;click_on_blob_definitions&quot;,&quot;repository_id&quot;:225918779,&quot;ref&quot;:&quot;main&quot;,&quot;language&quot;:&quot;Python&quot;,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="8d9eb6a15f2c5dd94cfacb59f9155c720414a288ca10e0ea624af77ceea847e9">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-code">
      <path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path>
  </svg>
      <span data-menu-button>Jump to</span>
      <span class="dropdown-caret"></span>
    </summary>
    <details-menu class="SelectMenu SelectMenu--hasFilter" role="menu">
      <div class="SelectMenu-modal">
        <header class="SelectMenu-header">
          <span class="SelectMenu-title">Code definitions</span>
          <button class="SelectMenu-closeButton" type="button" data-toggle-for="jumpto-symbol-select-menu">
            <svg aria-label="Close menu" role="img" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
          </button>
        </header>
        <div class="SelectMenu-list">
            <div class="SelectMenu-blankslate">
              <p class="mb-0 color-text-secondary">
                No definitions found in this file.
              </p>
            </div>
          <div data-filterable-for="jumpto-symbols-filter-field" data-filterable-type="substring">
          </div>
        </div>
        <footer class="SelectMenu-footer">
          <div class="d-flex flex-justify-between">
            Code navigation not available for this commit
            <svg class="octicon octicon-dot-fill text-light-gray" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path></svg>
          </div>
        </footer>
      </div>
    </details-menu>
  </details>
  
        </h2>
        <a href="/EntySec/ghost/find/main"
              class="js-pjax-capture-input btn mr-2 d-none d-md-block"
              data-pjax
              data-hotkey="t">
          Go to file
        </a>
  
        <details id="blob-more-options-details" data-view-component="true" class="details-overlay details-reset position-relative">
    <summary role="button" data-view-component="true" class="btn">
    
              <svg aria-label="More options" role="img" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-kebab-horizontal">
      <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
  </svg>
  
    
  
  </summary>
    <div data-view-component="true">          <ul class="dropdown-menu dropdown-menu-sw">
              <li class="d-block d-md-none">
                <a class="dropdown-item d-flex flex-items-baseline" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FIND_FILE_BUTTON&quot;,&quot;repository_id&quot;:225918779,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}" data-hydro-click-hmac="67f21bfe7d409a01267bf57efe7ba83a007d4aa27dfffd752ea4673ea6c09ffb" data-ga-click="Repository, find file, location:repo overview" data-hotkey="t" data-pjax="true" href="/EntySec/ghost/find/main">
                  <span class="flex-auto">Go to file</span>
                  <span class="text-small color-text-secondary" aria-hidden="true">T</span>
  </a>            </li>
              <li data-toggle-for="blob-more-options-details">
                <button type="button" data-toggle-for="jumpto-line-details-dialog" class="btn-link dropdown-item">
                  <span class="d-flex flex-items-baseline">
                    <span class="flex-auto">Go to line</span>
                    <span class="text-small color-text-secondary" aria-hidden="true">L</span>
                  </span>
                </button>
              </li>
              <li data-toggle-for="blob-more-options-details">
                <button type="button" data-toggle-for="jumpto-symbol-select-menu" class="btn-link dropdown-item">
                  <span class="d-flex flex-items-baseline">
                    <span class="flex-auto">Go to definition</span>
                    <span class="text-small color-text-secondary" aria-hidden="true">R</span>
                  </span>
                </button>
              </li>
              <li class="dropdown-divider" role="none"></li>
              <li>
                <clipboard-copy value="core/helper.py" class="dropdown-item cursor-pointer" data-toggle-for="blob-more-options-details">
                  Copy path
                </clipboard-copy>
              </li>
              <li>
                <clipboard-copy value="https://github.com/EntySec/ghost/blob/29c0a4b38da11d4e48607bef0903d1b7c8e58b29/core/helper.py" class="dropdown-item cursor-pointer" data-toggle-for="blob-more-options-details" >
                  <span class="d-flex flex-items-baseline">
                    <span class="flex-auto">Copy permalink</span>
                  </span>
                </clipboard-copy>
              </li>
            </ul>
  </div>
  </details>    </div>
  
  
  
      <div class="Box d-flex flex-column flex-shrink-0 mb-3">
        <include-fragment src="/EntySec/ghost/contributors/main/core/helper.py" class="commit-loader">
          <div class="Box-header Box-header--blue d-flex flex-items-center">
            <div class="Skeleton avatar avatar-user flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1" style="width:24px;height:24px;"></div>
            <div class="Skeleton Skeleton--text col-5 ml-2">&nbsp;</div>
          </div>
  
          <div class="Box-body d-flex flex-items-center" >
            <div class="Skeleton Skeleton--text col-1">&nbsp;</div>
            <span class="color-text-danger h6 loader-error">Cannot retrieve contributors at this time</span>
          </div>
  </include-fragment>    </div>
  
  
  
  
        
  
  
  
  
  
  
  
    
      <div data-target="readme-toc.content" class="Box mt-3 position-relative
      ">
        
    <div
      class="Box-header py-2 pr-2 d-flex flex-shrink-0 flex-md-row flex-items-center"
      
    >
  
  
    <div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1">
  
        <span class="file-mode" title="File mode">executable file</span>
        <span class="file-info-divider"></span>
        173 lines (148 sloc)
        <span class="file-info-divider"></span>
      6.58 KB
    </div>
  
    <div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between hide-sm hide-md">
  
      <div class="BtnGroup">
        <a href="/EntySec/ghost/raw/main/core/helper.py" id="raw-url" role="button" data-view-component="true" class="btn-sm btn BtnGroup-item">
    
    Raw
    
  
  </a>
          <a href="/EntySec/ghost/blame/main/core/helper.py" data-hotkey="b" role="button" data-view-component="true" class="js-update-url-with-hash btn-sm btn BtnGroup-item">
    
    Blame
    
  
  </a>
      </div>
  
      <div>
            <a class="btn-octicon tooltipped tooltipped-nw js-remove-unless-platform"
               data-platforms="windows,mac"
               href="x-github-client://openRepo/https://github.com/EntySec/ghost?branch=main&amp;filepath=core%2Fhelper.py"
               aria-label="Open this file in GitHub Desktop"
               data-ga-click="Repository, open with desktop">
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-device-desktop">
      <path fill-rule="evenodd" d="M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"></path>
  </svg>
            </a>
  
            <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form js-update-url-with-hash" action="/EntySec/ghost/edit/main/core/helper.py" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="/yFEKVdNnqKvgzU/8KA5bae46NVZhAbFiA+/1x0J7FZ/A2yooNc1aIAgydc0t3XjOejoaHjgl6BMu+G/+FxtbQ==" />
              <button class="btn-octicon tooltipped tooltipped-nw" type="submit"
                aria-label="Fork this project and edit the file" data-hotkey="e" data-disable-with>
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-pencil">
      <path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path>
  </svg>
              </button>
  </form>
            <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="inline-form" action="/EntySec/ghost/delete/main/core/helper.py" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="67caC/RtbRrgloBhkVayRUvAlr7YXzJwVQH6PIXKbXSphtAS0XbAfvEtpnRINNiGnxoCddn3cl4+Ocv3oEjvnw==" />
              <button class="btn-octicon btn-octicon-danger tooltipped tooltipped-nw" type="submit"
                aria-label="Fork this project and delete the file" data-disable-with>
                <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-trash">
      <path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path>
  </svg>
              </button>
  </form>    </div>
    </div>
  
      <div class="d-flex hide-lg hide-xl flex-order-2 flex-grow-0">
        <details class="dropdown details-reset details-overlay d-inline-block">
          <summary class="btn-octicon" aria-haspopup="true" aria-label="possible actions">
            <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-kebab-horizontal">
      <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
  </svg>
          </summary>
  
          <ul class="dropdown-menu dropdown-menu-sw">
              <li>
                  <a class="dropdown-item tooltipped tooltipped-nw js-remove-unless-platform"
                     data-platforms="windows,mac"
                     href="x-github-client://openRepo/https://github.com/EntySec/ghost?branch=main&amp;filepath=core%2Fhelper.py"
                     data-ga-click="Repository, open with desktop">
                    Open with Desktop
                  </a>
              </li>
            <li>
              <a class="dropdown-item" href="/EntySec/ghost/raw/main/core/helper.py">
                View raw
              </a>
            </li>
              <li>
                <a class="dropdown-item" href="/EntySec/ghost/blame/main/core/helper.py">
                  View blame
                </a>
              </li>
  
                <li class="dropdown-divider" role="none"></li>
                <li>
                  <a class="dropdown-item" href="/EntySec/ghost/edit/main/core/helper.py">Edit file</a>
                </li>
                <li>
                  <a class="dropdown-item menu-item-danger" href="/EntySec/ghost/delete/main/core/helper.py">Delete file</a>
                </li>
          </ul>
        </details>
      </div>
  </div>
  
  
        
    <div itemprop="text" class="Box-body p-0 blob-wrapper data type-python  gist-border-0">
        
  <table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip>
        <tr>
          <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
          <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#!/usr/bin/env python3</span></td>
        </tr>
        <tr>
          <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
          <td id="LC2" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
          <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
          <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class=pl-c># MIT License</span></td>
        </tr>
        <tr>
          <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
          <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
          <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class=pl-c># Copyright (c) 2020 EntySec</span></td>
        </tr>
        <tr>
          <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
          <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
          <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class=pl-c># Permission is hereby granted, free of charge, to any person obtaining a copy</span></td>
        </tr>
        <tr>
          <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
          <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class=pl-c># of this software and associated documentation files (the &quot;Software&quot;), to deal</span></td>
        </tr>
        <tr>
          <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
          <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class=pl-c># in the Software without restriction, including without limitation the rights</span></td>
        </tr>
        <tr>
          <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
          <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class=pl-c># to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></td>
        </tr>
        <tr>
          <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
          <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class=pl-c># copies of the Software, and to permit persons to whom the Software is</span></td>
        </tr>
        <tr>
          <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
          <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class=pl-c># furnished to do so, subject to the following conditions:</span></td>
        </tr>
        <tr>
          <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
          <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
          <td id="LC15" class="blob-code blob-code-inner js-file-line"><span class=pl-c># The above copyright notice and this permission notice shall be included in all</span></td>
        </tr>
        <tr>
          <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
          <td id="LC16" class="blob-code blob-code-inner js-file-line"><span class=pl-c># copies or substantial portions of the Software.</span></td>
        </tr>
        <tr>
          <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
          <td id="LC17" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
          <td id="LC18" class="blob-code blob-code-inner js-file-line"><span class=pl-c># THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></td>
        </tr>
        <tr>
          <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
          <td id="LC19" class="blob-code blob-code-inner js-file-line"><span class=pl-c># IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></td>
        </tr>
        <tr>
          <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
          <td id="LC20" class="blob-code blob-code-inner js-file-line"><span class=pl-c># FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></td>
        </tr>
        <tr>
          <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
          <td id="LC21" class="blob-code blob-code-inner js-file-line"><span class=pl-c># AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></td>
        </tr>
        <tr>
          <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
          <td id="LC22" class="blob-code blob-code-inner js-file-line"><span class=pl-c># LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></td>
        </tr>
        <tr>
          <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
          <td id="LC23" class="blob-code blob-code-inner js-file-line"><span class=pl-c># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></td>
        </tr>
        <tr>
          <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
          <td id="LC24" class="blob-code blob-code-inner js-file-line"><span class=pl-c># SOFTWARE.</span></td>
        </tr>
        <tr>
          <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
          <td id="LC25" class="blob-code blob-code-inner js-file-line"><span class=pl-c>#</span></td>
        </tr>
        <tr>
          <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
          <td id="LC26" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
          <td id="LC27" class="blob-code blob-code-inner js-file-line"><span class=pl-k>import</span> <span class=pl-s1>subprocess</span></td>
        </tr>
        <tr>
          <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
          <td id="LC28" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
          <td id="LC29" class="blob-code blob-code-inner js-file-line"><span class=pl-k>from</span> <span class=pl-s1>core</span>.<span class=pl-s1>badges</span> <span class=pl-k>import</span> <span class=pl-s1>badges</span></td>
        </tr>
        <tr>
          <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
          <td id="LC30" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
          <td id="LC31" class="blob-code blob-code-inner js-file-line"><span class=pl-k>class</span> <span class=pl-s1>helper</span>:</td>
        </tr>
        <tr>
          <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
          <td id="LC32" class="blob-code blob-code-inner js-file-line">    <span class=pl-k>def</span> <span class=pl-en>__init__</span>(<span class=pl-s1>self</span>):</td>
        </tr>
        <tr>
          <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
          <td id="LC33" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>self</span>.<span class=pl-s1>badges</span> <span class=pl-c1>=</span> <span class=pl-en>badges</span>()</td>
        </tr>
        <tr>
          <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
          <td id="LC34" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
          <td id="LC35" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>self</span>.<span class=pl-s1>rport</span> <span class=pl-c1>=</span> <span class=pl-c1>5555</span></td>
        </tr>
        <tr>
          <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
          <td id="LC36" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>self</span>.<span class=pl-s1>version</span> <span class=pl-c1>=</span> <span class=pl-s>&quot;v6.0&quot;</span></td>
        </tr>
        <tr>
          <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
          <td id="LC37" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
          <td id="LC38" class="blob-code blob-code-inner js-file-line">    <span class=pl-k>def</span> <span class=pl-en>check_adb_installation</span>(<span class=pl-s1>self</span>):</td>
        </tr>
        <tr>
          <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
          <td id="LC39" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>command_output</span> <span class=pl-c1>=</span> <span class=pl-s1>subprocess</span>.<span class=pl-en>getoutput</span>(<span class=pl-s>&quot;command -v adb&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
          <td id="LC40" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-s1>command_output</span>.<span class=pl-en>strip</span>() <span class=pl-c1>==</span> <span class=pl-s>&quot;&quot;</span>:</td>
        </tr>
        <tr>
          <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
          <td id="LC41" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s1>self</span>.<span class=pl-s1>badges</span>.<span class=pl-v>E</span> <span class=pl-c1>+</span> <span class=pl-s>&quot;Failed to execute adb!&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
          <td id="LC42" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>return</span> <span class=pl-c1>False</span></td>
        </tr>
        <tr>
          <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
          <td id="LC43" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>return</span> <span class=pl-c1>True</span></td>
        </tr>
        <tr>
          <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
          <td id="LC44" class="blob-code blob-code-inner js-file-line">        </td>
        </tr>
        <tr>
          <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
          <td id="LC45" class="blob-code blob-code-inner js-file-line">    <span class=pl-k>def</span> <span class=pl-en>show_commands</span>(<span class=pl-s1>self</span>, <span class=pl-s1>target_commands</span>):</td>
        </tr>
        <tr>
          <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
          <td id="LC46" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>settings_commands</span> <span class=pl-c1>=</span> []</td>
        </tr>
        <tr>
          <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
          <td id="LC47" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>managing_commands</span> <span class=pl-c1>=</span> []</td>
        </tr>
        <tr>
          <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
          <td id="LC48" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>stealing_commands</span> <span class=pl-c1>=</span> []</td>
        </tr>
        <tr>
          <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
          <td id="LC49" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>trolling_commands</span> <span class=pl-c1>=</span> []</td>
        </tr>
        <tr>
          <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
          <td id="LC50" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>boot_commands</span> <span class=pl-c1>=</span> []</td>
        </tr>
        <tr>
          <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
          <td id="LC51" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
          <td id="LC52" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>commands</span> <span class=pl-c1>=</span> <span class=pl-en>dict</span>()</td>
        </tr>
        <tr>
          <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
          <td id="LC53" class="blob-code blob-code-inner js-file-line">        <span class=pl-s1>commands</span>.<span class=pl-en>update</span>(<span class=pl-s1>target_commands</span>)</td>
        </tr>
        <tr>
          <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
          <td id="LC54" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
          <td id="LC55" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-en>sorted</span>(<span class=pl-s1>commands</span>):</td>
        </tr>
        <tr>
          <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
          <td id="LC56" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>commands</span>[<span class=pl-s1>i</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;type&#39;</span>] <span class=pl-c1>==</span> <span class=pl-s>&quot;settings&quot;</span>: <span class=pl-s1>settings_commands</span>.<span class=pl-en>append</span>(<span class=pl-s1>commands</span>[<span class=pl-s1>i</span>])</td>
        </tr>
        <tr>
          <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
          <td id="LC57" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>commands</span>[<span class=pl-s1>i</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;type&#39;</span>] <span class=pl-c1>==</span> <span class=pl-s>&quot;managing&quot;</span>: <span class=pl-s1>managing_commands</span>.<span class=pl-en>append</span>(<span class=pl-s1>commands</span>[<span class=pl-s1>i</span>])</td>
        </tr>
        <tr>
          <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
          <td id="LC58" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>commands</span>[<span class=pl-s1>i</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;type&#39;</span>] <span class=pl-c1>==</span> <span class=pl-s>&quot;stealing&quot;</span>: <span class=pl-s1>stealing_commands</span>.<span class=pl-en>append</span>(<span class=pl-s1>commands</span>[<span class=pl-s1>i</span>])</td>
        </tr>
        <tr>
          <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
          <td id="LC59" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>commands</span>[<span class=pl-s1>i</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;type&#39;</span>] <span class=pl-c1>==</span> <span class=pl-s>&quot;trolling&quot;</span>: <span class=pl-s1>trolling_commands</span>.<span class=pl-en>append</span>(<span class=pl-s1>commands</span>[<span class=pl-s1>i</span>])</td>
        </tr>
        <tr>
          <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
          <td id="LC60" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>commands</span>[<span class=pl-s1>i</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;type&#39;</span>] <span class=pl-c1>==</span> <span class=pl-s>&quot;boot&quot;</span>: <span class=pl-s1>boot_commands</span>.<span class=pl-en>append</span>(<span class=pl-s1>commands</span>[<span class=pl-s1>i</span>])</td>
        </tr>
        <tr>
          <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
          <td id="LC61" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
          <td id="LC62" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
          <td id="LC63" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;Core Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
          <td id="LC64" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;=============&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
          <td id="LC65" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
          <td id="LC66" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command        Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
          <td id="LC67" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------        -----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
          <td id="LC68" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    clear          Clear terminal window.&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
          <td id="LC69" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    details        Show module command details.&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
          <td id="LC70" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    exec           Execute local system command.&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
          <td id="LC71" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    exit           Exit and close current session.&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
          <td id="LC72" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;    help           Show available session commands.&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
          <td id="LC73" class="blob-code blob-code-inner js-file-line">        <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
          <td id="LC74" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
          <td id="LC75" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>settings_commands</span>) <span class=pl-c1>&gt;</span> <span class=pl-c1>0</span>:</td>
        </tr>
        <tr>
          <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
          <td id="LC76" class="blob-code blob-code-inner js-file-line">            <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>settings_commands</span>[<span class=pl-c1>0</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
          <td id="LC77" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>settings_commands</span>:</td>
        </tr>
        <tr>
          <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
          <td id="LC78" class="blob-code blob-code-inner js-file-line">                <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>&gt;</span> <span class=pl-s1>bigger</span>:</td>
        </tr>
        <tr>
          <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
          <td id="LC79" class="blob-code blob-code-inner js-file-line">                    <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
          <td id="LC80" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
          <td id="LC81" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>bigger</span> <span class=pl-c1>&gt;=</span> <span class=pl-c1>14</span>:</td>
        </tr>
        <tr>
          <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
          <td id="LC82" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-s1>bigger</span> <span class=pl-c1>-</span> <span class=pl-c1>5</span></td>
        </tr>
        <tr>
          <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
          <td id="LC83" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>else</span>:</td>
        </tr>
        <tr>
          <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
          <td id="LC84" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-c1>8</span></td>
        </tr>
        <tr>
          <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
          <td id="LC85" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
          <td id="LC86" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;Settings Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
          <td id="LC87" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;=================&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
          <td id="LC88" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
          <td id="LC89" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
          <td id="LC90" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;-----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
          <td id="LC91" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>settings_commands</span>:</td>
        </tr>
        <tr>
          <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
          <td id="LC92" class="blob-code blob-code-inner js-file-line">                <span class=pl-en>print</span>(<span class=pl-s>&quot;    &quot;</span> <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>] <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-c1>7</span> <span class=pl-c1>-</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>+</span> <span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;description&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
          <td id="LC93" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
          <td id="LC94" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
          <td id="LC95" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>managing_commands</span>) <span class=pl-c1>&gt;</span> <span class=pl-c1>0</span>:</td>
        </tr>
        <tr>
          <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
          <td id="LC96" class="blob-code blob-code-inner js-file-line">            <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>managing_commands</span>[<span class=pl-c1>0</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
          <td id="LC97" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>managing_commands</span>:</td>
        </tr>
        <tr>
          <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
          <td id="LC98" class="blob-code blob-code-inner js-file-line">                <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>&gt;</span> <span class=pl-s1>bigger</span>:</td>
        </tr>
        <tr>
          <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
          <td id="LC99" class="blob-code blob-code-inner js-file-line">                    <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
          <td id="LC100" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
          <td id="LC101" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>bigger</span> <span class=pl-c1>&gt;=</span> <span class=pl-c1>14</span>:</td>
        </tr>
        <tr>
          <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
          <td id="LC102" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-s1>bigger</span> <span class=pl-c1>-</span> <span class=pl-c1>5</span></td>
        </tr>
        <tr>
          <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
          <td id="LC103" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>else</span>:</td>
        </tr>
        <tr>
          <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
          <td id="LC104" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-c1>8</span></td>
        </tr>
        <tr>
          <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
          <td id="LC105" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
          <td id="LC106" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;Managing Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
          <td id="LC107" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;=================&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
          <td id="LC108" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
          <td id="LC109" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
          <td id="LC110" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;-----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
          <td id="LC111" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>managing_commands</span>:</td>
        </tr>
        <tr>
          <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
          <td id="LC112" class="blob-code blob-code-inner js-file-line">                <span class=pl-en>print</span>(<span class=pl-s>&quot;    &quot;</span> <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>] <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-c1>7</span> <span class=pl-c1>-</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>+</span> <span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;description&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
          <td id="LC113" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
          <td id="LC114" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
          <td id="LC115" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>stealing_commands</span>) <span class=pl-c1>&gt;</span> <span class=pl-c1>0</span>:</td>
        </tr>
        <tr>
          <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
          <td id="LC116" class="blob-code blob-code-inner js-file-line">            <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>stealing_commands</span>[<span class=pl-c1>0</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
          <td id="LC117" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>stealing_commands</span>:</td>
        </tr>
        <tr>
          <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
          <td id="LC118" class="blob-code blob-code-inner js-file-line">                <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>&gt;</span> <span class=pl-s1>bigger</span>:</td>
        </tr>
        <tr>
          <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
          <td id="LC119" class="blob-code blob-code-inner js-file-line">                    <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
          <td id="LC120" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
          <td id="LC121" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>bigger</span> <span class=pl-c1>&gt;=</span> <span class=pl-c1>14</span>:</td>
        </tr>
        <tr>
          <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
          <td id="LC122" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-s1>bigger</span> <span class=pl-c1>-</span> <span class=pl-c1>5</span></td>
        </tr>
        <tr>
          <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
          <td id="LC123" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>else</span>:</td>
        </tr>
        <tr>
          <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
          <td id="LC124" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-c1>8</span></td>
        </tr>
        <tr>
          <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
          <td id="LC125" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
          <td id="LC126" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;Stealing Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
          <td id="LC127" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;=================&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
          <td id="LC128" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
          <td id="LC129" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
          <td id="LC130" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;-----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
          <td id="LC131" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>stealing_commands</span>:</td>
        </tr>
        <tr>
          <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
          <td id="LC132" class="blob-code blob-code-inner js-file-line">                <span class=pl-en>print</span>(<span class=pl-s>&quot;    &quot;</span> <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>] <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-c1>7</span> <span class=pl-c1>-</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>+</span> <span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;description&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
          <td id="LC133" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
          <td id="LC134" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
          <td id="LC135" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>trolling_commands</span>) <span class=pl-c1>&gt;</span> <span class=pl-c1>0</span>:</td>
        </tr>
        <tr>
          <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
          <td id="LC136" class="blob-code blob-code-inner js-file-line">            <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>trolling_commands</span>[<span class=pl-c1>0</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
          <td id="LC137" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>trolling_commands</span>:</td>
        </tr>
        <tr>
          <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
          <td id="LC138" class="blob-code blob-code-inner js-file-line">                <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>&gt;</span> <span class=pl-s1>bigger</span>:</td>
        </tr>
        <tr>
          <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
          <td id="LC139" class="blob-code blob-code-inner js-file-line">                    <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
          <td id="LC140" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
          <td id="LC141" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>bigger</span> <span class=pl-c1>&gt;=</span> <span class=pl-c1>14</span>:</td>
        </tr>
        <tr>
          <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
          <td id="LC142" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-s1>bigger</span> <span class=pl-c1>-</span> <span class=pl-c1>5</span></td>
        </tr>
        <tr>
          <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
          <td id="LC143" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>else</span>:</td>
        </tr>
        <tr>
          <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
          <td id="LC144" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-c1>8</span></td>
        </tr>
        <tr>
          <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
          <td id="LC145" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
          <td id="LC146" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;Trolling Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
          <td id="LC147" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;=================&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
          <td id="LC148" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
          <td id="LC149" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
          <td id="LC150" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;-----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
          <td id="LC151" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>trolling_commands</span>:</td>
        </tr>
        <tr>
          <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
          <td id="LC152" class="blob-code blob-code-inner js-file-line">                <span class=pl-en>print</span>(<span class=pl-s>&quot;    &quot;</span> <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>] <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-c1>7</span> <span class=pl-c1>-</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>+</span> <span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;description&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
          <td id="LC153" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
          <td id="LC154" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
          <td id="LC155" class="blob-code blob-code-inner js-file-line">        <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>boot_commands</span>) <span class=pl-c1>&gt;</span> <span class=pl-c1>0</span>:</td>
        </tr>
        <tr>
          <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
          <td id="LC156" class="blob-code blob-code-inner js-file-line">            <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>boot_commands</span>[<span class=pl-c1>0</span>].<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
          <td id="LC157" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>boot_commands</span>:</td>
        </tr>
        <tr>
          <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
          <td id="LC158" class="blob-code blob-code-inner js-file-line">                <span class=pl-k>if</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>&gt;</span> <span class=pl-s1>bigger</span>:</td>
        </tr>
        <tr>
          <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
          <td id="LC159" class="blob-code blob-code-inner js-file-line">                    <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
          <td id="LC160" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
          <td id="LC161" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>if</span> <span class=pl-s1>bigger</span> <span class=pl-c1>&gt;=</span> <span class=pl-c1>14</span>:</td>
        </tr>
        <tr>
          <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
          <td id="LC162" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-s1>bigger</span> <span class=pl-c1>-</span> <span class=pl-c1>5</span></td>
        </tr>
        <tr>
          <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
          <td id="LC163" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>else</span>:</td>
        </tr>
        <tr>
          <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
          <td id="LC164" class="blob-code blob-code-inner js-file-line">                <span class=pl-s1>bigger</span> <span class=pl-c1>=</span> <span class=pl-c1>8</span></td>
        </tr>
        <tr>
          <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
          <td id="LC165" class="blob-code blob-code-inner js-file-line">
  </td>
        </tr>
        <tr>
          <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
          <td id="LC166" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;Boot Commands&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
          <td id="LC167" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;=============&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
          <td id="LC168" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
          <td id="LC169" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    Command&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;Description&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
          <td id="LC170" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;    -------&quot;</span> <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s>&quot;-----------&quot;</span>)</td>
        </tr>
        <tr>
          <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
          <td id="LC171" class="blob-code blob-code-inner js-file-line">            <span class=pl-k>for</span> <span class=pl-s1>i</span> <span class=pl-c1>in</span> <span class=pl-s1>boot_commands</span>:</td>
        </tr>
        <tr>
          <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
          <td id="LC172" class="blob-code blob-code-inner js-file-line">                <span class=pl-en>print</span>(<span class=pl-s>&quot;    &quot;</span> <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>] <span class=pl-c1>+</span> <span class=pl-s>&quot; &quot;</span> <span class=pl-c1>*</span> (<span class=pl-c1>7</span> <span class=pl-c1>-</span> <span class=pl-en>len</span>(<span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;name&#39;</span>]) <span class=pl-c1>+</span> <span class=pl-s1>bigger</span>) <span class=pl-c1>+</span> <span class=pl-s1>i</span>.<span class=pl-s1>details</span>[<span class=pl-s>&#39;description&#39;</span>])</td>
        </tr>
        <tr>
          <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
          <td id="LC173" class="blob-code blob-code-inner js-file-line">            <span class=pl-en>print</span>(<span class=pl-s>&quot;&quot;</span>)</td>
        </tr>
  </table>
  
    <details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
      <summary class="btn-octicon ml-0 px-2 p-0 color-bg-primary border color-border-tertiary rounded-1" aria-label="Inline file action toolbar">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-kebab-horizontal">
      <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
  </svg>
      </summary>
      <details-menu>
        <ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2" style="width:185px">
          <li>
            <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;">
              Copy lines
            </clipboard-copy>
          </li>
          <li>
            <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;">
              Copy permalink
            </clipboard-copy>
          </li>
          <li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/EntySec/ghost/blame/29c0a4b38da11d4e48607bef0903d1b7c8e58b29/core/helper.py">View git blame</a></li>
            <li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/EntySec/ghost/issues/new">Reference in new issue</a></li>
        </ul>
      </details-menu>
    </details>
  
    </div>
  
      </div>
  
  
    
  
    <details class="details-reset details-overlay details-overlay-dark" id="jumpto-line-details-dialog">
      <summary data-hotkey="l" aria-label="Jump to line"></summary>
      <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
        <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get">
          <input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
          <button type="submit" class="btn" data-close-dialog>Go</button>
  </form>    </details-dialog>
    </details>
  
      <div class="Popover anim-scale-in js-tagsearch-popover"
       hidden
       data-tagsearch-url="/EntySec/ghost/find-definition"
       data-tagsearch-ref="main"
       data-tagsearch-path="core/helper.py"
       data-tagsearch-lang="Python"
       data-hydro-click="{&quot;event_type&quot;:&quot;code_navigation.click_on_symbol&quot;,&quot;payload&quot;:{&quot;action&quot;:&quot;click_on_symbol&quot;,&quot;repository_id&quot;:225918779,&quot;ref&quot;:&quot;main&quot;,&quot;language&quot;:&quot;Python&quot;,&quot;originating_url&quot;:&quot;https://github.com/EntySec/ghost/blob/main/core/helper.py&quot;,&quot;user_id&quot;:83532886}}"
       data-hydro-click-hmac="771852f1b508bbb217b389777c00f88c6e8e4a415dd8ae8049ae0dd8d8f2e3a7">
    <div class="Popover-message Popover-message--large Popover-message--top-left TagsearchPopover mt-1 mb-4 mx-auto Box color-shadow-large">
      <div class="TagsearchPopover-content js-tagsearch-popover-content overflow-auto" style="will-change:transform;">
      </div>
    </div>
  </div>
  
  
  </div>
  
  
  
    </div>
  </div>
  
      </main>
    </div>
  
    </div>
  
            
  <div class="footer container-xl width-full p-responsive" role="contentinfo">
    <div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 color-text-secondary border-top color-border-secondary ">
      <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
        <li class="mr-3 mr-lg-0">&copy; 2021 GitHub, Inc.</li>
          <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-terms-of-service" data-ga-click="Footer, go to terms, text:terms">Terms</a></li>
          <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-privacy-statement" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li>
          <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
          <li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
          <li><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com">Docs</a></li>
      </ul>
  
      <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="24" width="24" class="octicon octicon-mark-github">
      <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
  </svg>
  </a>
      <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
          <li class="mr-3 mr-lg-0"><a href="https://support.github.com" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li>
          <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
        <li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
        <li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
          <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
          <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
      </ul>
    </div>
    <div class="d-flex flex-justify-center pb-6">
      <span class="f6 color-text-tertiary"></span>
    </div>
  
    
  </div>
  
  
  
    <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-alert">
      <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  </svg>
      <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
      </button>
      You can’t perform that action at this time.
    </div>
  
    <div class="js-stale-session-flash flash flash-warn flash-banner" hidden
      >
      <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-alert">
      <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  </svg>
      <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
      <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
    </div>
      <template id="site-details-dialog">
    <details class="details-reset details-overlay details-overlay-dark lh-default color-text-primary hx_rsm" open>
      <summary role="button" aria-label="Close dialog"></summary>
      <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
        <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
          <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-x">
      <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  </svg>
        </button>
        <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
      </details-dialog>
    </details>
  </template>
  
      <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
    <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
    </div>
  </div>
  
      <template id="snippet-clipboard-copy-button">
    <div class="zeroclipboard-container position-absolute right-0 top-0">
      <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0 tooltipped-no-delay" data-copy-feedback="Copied!" data-tooltip-direction="w">
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-clippy js-clipboard-clippy-icon m-2">
      <path fill-rule="evenodd" d="M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z"></path>
  </svg>
        <svg aria-hidden="true" viewBox="0 0 16 16" version="1.1" data-view-component="true" height="16" width="16" class="octicon octicon-check js-clipboard-check-icon color-text-success d-none m-2">
      <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  </svg>
      </clipboard-copy>
    </div>
  </template>
  
  
  
    
  
    </body>
  </html>
  
  