You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2636 lines
232 KiB

  1. <!DOCTYPE html>
  2. <html data-color-mode="light" data-light-theme="light" data-dark-theme="dark" lang="en"><head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <meta charset="utf-8">
  5. <link rel="dns-prefetch" href="https://github.githubassets.com/">
  6. <link rel="dns-prefetch" href="https://avatars.githubusercontent.com/">
  7. <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com/">
  8. <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  9. <link crossorigin="anonymous" media="all" integrity="sha512-k9NM/a2xYY6wCRcWG7f3ROm4X5CJNikViGX0N8YIxs6sUYAe/j08/RSHXr3fA9wLIy87AMFCgXm6jbvhZhIXWw==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/frameworks-93d34cfdadb1618eb00917161bb7f744.css">
  10. <link crossorigin="anonymous" media="all" integrity="sha512-FSQAq0EMs4fztkVYnaG6tYMYSthrQSMf9Yowkvapk08OAxsW4QUZZT9h9jSMmO7GB6rO1uRQdGRn8FwXE9lyyg==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/behaviors-152400ab410cb387f3b645589da1bab5.css">
  11. <link crossorigin="anonymous" media="all" integrity="sha512-ADxBGP+/Ejuf3hdfXt1DPBnGrlQ47QqWJG2/uzyeofvKQGbkHG8l5dAmbOThfWzViBmMF+vy43i5TLs2M+J+4g==" rel="stylesheet" href="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/github-003c4118ffbf123b9fde175f5edd433c.css">
  12. <script crossorigin="anonymous" defer="defer" integrity="sha512-8K2vvwbW+6H27Nad5ydg8PA2/aMD/LKq+EiK9s0U0hhVZxCI2tWBsYk9beAtisRw2j+Or5k2/F+6dk02nmj/PA==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/environment-f0adafbf.js"></script>
  13. <script crossorigin="anonymous" defer="defer" integrity="sha512-Of+WG2CISim899I88sYG7d/75B6gHRWbUDvUOJDh52ZKHoHClE8JQ4nZbvOrvIVTGKCUe68JogcDBUMVtQ7F8w==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/chunk-frameworks-39ff961b.js"></script>
  14. <script crossorigin="anonymous" defer="defer" integrity="sha512-7GvK4gfpB9Ztz8H6JMSvF2zkjlAfbaRjfl7n1VtRpOc7huXjL3iGa8FuQiFTvdPX1fd8IYbNtXZoEDZa3RVOrQ==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/chunk-vendor-ec6bcae2.js"></script>
  15. <script crossorigin="anonymous" defer="defer" integrity="sha512-CAFqUXjN32LIAgTsmlP6y/WpzDOFJvbkJpWm45xhNQyUmVa8hurwRVOEEV3fhYZbLpxPbml9zdrVssNIdav8hA==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/behaviors-08016a51.js"></script>
  16. <script crossorigin="anonymous" defer="defer" integrity="sha512-xDmMfbDOi7C1qDeTcUUIjKfOAG5qhfSNSHRf7wT0crqnTCqtHlO1jBZmRSpjbpn4RyitzX75K0wQ/dpHqO/gAg==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-c4398c7d.js"></script>
  17. <script crossorigin="anonymous" defer="defer" integrity="sha512-obMR8mPKx8OvqRe34LgnUcxeJ1qujiA4ND3H6UX13ExMlA/WfHLjEzXRmgGRcRvN/8J1nzc+Z+jgz/PLTFy6zg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-a1b311f2.js"></script>
  18. <script crossorigin="anonymous" defer="defer" integrity="sha512-TGnbT/6B5dxVwEk7iOlwSY9mfqhfq8m05ec+KjdlfEwoieq73iBeyidClQUSmFa2snukwzF9peY8c7FJf9FARA==" type="application/javascript" data-module-id="./chunk-emoji-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-emoji-picker-element-4c69db4f.js"></script>
  19. <script crossorigin="anonymous" defer="defer" integrity="sha512-NwYkwzxETzKUYRXumHDsBIuggkh86KmJ1WrwWZW5wTvVPf047+wOmOHI5b4D65bfdtd3WbXJ7k+3ZWoxpIaqcA==" type="application/javascript" data-module-id="./chunk-insights-graph.js" data-src="https://github.githubassets.com/assets/chunk-insights-graph-370624c3.js"></script>
  20. <script crossorigin="anonymous" defer="defer" integrity="sha512-o7Wgi+lb9ce+9dvjWvB30ar51Bw0wcGhFZfQIzNGZfJ/7GZwYxVCsqgA4Q2o8yRq1QDUL1G1NxR0/3o9FoQ9JQ==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-a3b5a08b.js"></script>
  21. <script crossorigin="anonymous" defer="defer" integrity="sha512-tcH4xCRuMBAh1PruDaiwGnRIbHlF6bGLhxyCQ16uqok1cV5QFMguVPWJtN9KI0jGQOgN+Pha3+uOUXhXdfK/qw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-b5c1f8c4.js"></script>
  22. <script crossorigin="anonymous" defer="defer" integrity="sha512-E+H+wAtjiqutBvn2cnXzDIvmasIhYiS7i7JzOfFUwo+Ej8zT54OrJtP//RhwixnypgOpCF4JvqzYy6zOtORDmg==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-13e1fec0.js"></script>
  23. <script crossorigin="anonymous" defer="defer" integrity="sha512-U+Pp1bYuA3fRqhike5Go//O/vsExaZLz00lrIby+rZ88yf03nQHz3wLZR9paWkakpD7TH5nS6AUpabCc7OFWpg==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-53e3e9d5.js"></script>
  24. <script crossorigin="anonymous" defer="defer" integrity="sha512-QBwrFY4kzAVN0nZmTYJLeEhi5bQ+42rE8h1g384XeZb7n62BykcUICACtaDQ473aIrRf38RSR7WDfNEIVuSlTA==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-401c2b15.js"></script>
  25. <script crossorigin="anonymous" defer="defer" integrity="sha512-su8FOuJFv0H16y8vmT+N3HiFpDQnHKiLz/UEdGxlCfgwnKBy202gaBmkcBpqXigRg+A8pMDXcSPIWSEW+IIKvQ==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-b2ef053a.js"></script>
  26. <script crossorigin="anonymous" defer="defer" integrity="sha512-Ahh1vGV9jX7qzPdC1tA1y6PaLV9AbDPSlt2q8C7SUVVKTgoB5vDsUrKvaGh7Gj2Tv594XRcr0LjJdKA8HmL8iQ==" type="application/javascript" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/diffs-021875bc.js"></script>
  27. <meta name="viewport" content="width=device-width">
  28. <title>Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862</title>
  29. <meta name="description" content="The Mullvad VPN client app for desktop and mobile. Contribute to mullvad/mullvadvpn-app development by creating an account on GitHub.">
  30. <link rel="search" type="application/opensearchdescription+xml" href="https://github.com/opensearch.xml" title="GitHub">
  31. <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
  32. <meta property="fb:app_id" content="1401488693436528">
  33. <meta name="apple-itunes-app" content="app-id=1477376905">
  34. <meta name="twitter:image:src" content="https://avatars.githubusercontent.com/u/10848549?s=400&amp;v=4"><meta name="twitter:site" content="@github"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862"><meta name="twitter:description" content="Stops an attacker on the same network from discovering the tunnel IP of
  35. the device running this app">
  36. <meta property="og:image" content="https://avatars.githubusercontent.com/u/10848549?s=400&amp;v=4"><meta property="og:site_name" content="GitHub"><meta property="og:type" content="object"><meta property="og:title" content="Stop CVE-2019-14899 by dropping packets to tunnel IP · mullvad/mullvadvpn-app@ef58862"><meta property="og:url" content="/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1"><meta property="og:description" content="Stops an attacker on the same network from discovering the tunnel IP of
  37. the device running this app"><meta property="og:updated_time" content="1575642613">
  38. <link rel="assets" href="https://github.githubassets.com/">
  39. <link rel="shared-web-socket" href="wss://alive.github.com/_sockets/u/15262083/ws?session=eyJ2IjoiVjMiLCJ1IjoxNTI2MjA4MywicyI6NjQwMDI5MzcwLCJjIjozODMxNDcyMDI4LCJ0IjoxNjExNzE3MjM1fQ==--9cb77c1c0e4dfda9668f1d699fcde8085614ded5347b40590910e8a856c9c646" data-refresh-url="/_alive">
  40. <link rel="shared-web-socket-src" href="https://github.com/socket-worker-5029ae85.js">
  41. <link rel="sudo-modal" href="https://github.com/sessions/sudo_modal">
  42. <meta name="request-id" content="D8B6:23F8:2DF96FB:3FA0884:6010DA60" data-pjax-transient="true"><meta name="html-safe-nonce" content="65f359bcd49984b78c8056aaabcb67d5f3b653dd9445821f567dfdeb3f4a7432" data-pjax-transient="true"><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/cD0yJnE9Y3ZlLTIwMTktMTQ4OTkmdHlwZT1Db21taXRzIiwicmVxdWVzdF9pZCI6IkQ4QjY6MjNGODoyREY5NkZCOjNGQTA4ODQ6NjAxMERBNjAiLCJ2aXNpdG9yX2lkIjoiMjMxMDkyMTU0MzM2NDkyMDE2MyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9" data-pjax-transient="true"><meta name="visitor-hmac" content="586d18ea2698a416df42c84dff2c312f869fc09170dda3cd18a529c35954892c" data-pjax-transient="true">
  43. <meta name="hovercard-subject-tag" content="repository:114742422" data-pjax-transient="">
  44. <meta name="github-keyboard-shortcuts" content="repository,commits" data-pjax-transient="true">
  45. <meta name="selected-link" value="repo_commits" data-pjax-transient="">
  46. <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
  47. <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
  48. <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
  49. <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
  50. <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="15262083"><meta name="octolytics-actor-login" content="wtolley"><meta name="octolytics-actor-hash" content="b5e813f81e93e6e7e0b419fb08704ba6d54fd4ebb62c842e6ac04149692f5a9d">
  51. <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/commit/show" data-pjax-transient="true">
  52. <meta name="hostname" content="github.com">
  53. <meta name="user-login" content="wtolley">
  54. <meta name="expected-hostname" content="github.com">
  55. <meta name="js-proxy-site-detection-payload" content="M2RmOWU5MTI0ZmM1NzE3ZTkzZGNjNDViMGZjYmJhMThjYTRkYjU4OGRjZjMzYzliOThmODVlOWQyZDliNmE3MHx7InJlbW90ZV9hZGRyZXNzIjoiMTc0Ljc0LjE0My43MyIsInJlcXVlc3RfaWQiOiJEOEI2OjIzRjg6MkRGOTZGQjozRkEwODg0OjYwMTBEQTYwIiwidGltZXN0YW1wIjoxNjExNzE3MjM1LCJob3N0IjoiZ2l0aHViLmNvbSJ9">
  56. <meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS,JS_HTTP_CACHE_HEADERS,ACTIONS_SHORT_SHA_WARNING,TASK_LIST_AUTOCOMPLETE,MULTI_WORD_SUGGESTER">
  57. <meta http-equiv="x-pjax-version" content="8133e064b1f142106c24ac3a9bd0c1ee4fb7901fa51550163e32af91b6a70802">
  58. <link href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1.diff" rel="alternate" type="text/plain+diff" data-pjax-transient="true">
  59. <link href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1.patch" rel="alternate" type="text/plain+patch" data-pjax-transient="true">
  60. <meta name="diff-view" content="unified" data-pjax-transient="">
  61. <link href="https://github.com/mullvad/mullvadvpn-app/commits/ef5886281dd84b450ae25a9ffca036cffd16abd1.atom" rel="alternate" title="Recent Commits to mullvadvpn-app:ef5886281dd84b450ae25a9ffca036cffd16abd1" type="application/atom+xml">
  62. <meta name="go-import" content="github.com/mullvad/mullvadvpn-app git https://github.com/mullvad/mullvadvpn-app.git">
  63. <meta name="octolytics-dimension-user_id" content="10848549"><meta name="octolytics-dimension-user_login" content="mullvad"><meta name="octolytics-dimension-repository_id" content="114742422"><meta name="octolytics-dimension-repository_nwo" content="mullvad/mullvadvpn-app"><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="114742422"><meta name="octolytics-dimension-repository_network_root_nwo" content="mullvad/mullvadvpn-app"><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false">
  64. <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
  65. <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
  66. <meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
  67. <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
  68. <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  69. <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
  70. <meta name="theme-color" content="#1e2327">
  71. <meta name="color-scheme" content="light dark">
  72. <link rel="manifest" href="https://github.com/manifest.json" crossorigin="use-credentials">
  73. </head>
  74. <body class="logged-in env-production page-responsive" data-new-gr-c-s-loaded="8.869.0">
  75. <div class="position-relative js-header-wrapper ">
  76. <a href="#start-of-content" class="p-3 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
  77. <span class="progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed">
  78. <span style="background-color: #79b8ff;width: 0%;" class="Progress-item progress-pjax-loader-bar "></span>
  79. </span>
  80. <header class="Header js-details-container Details px-3 px-md-4 px-lg-5 flex-wrap flex-md-nowrap" role="banner">
  81. <div class="Header-item mt-n1 mb-n1 d-none d-md-flex">
  82. <a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
  83. <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>
  84. </a>
  85. </div>
  86. <div class="Header-item d-md-none">
  87. <button class="Header-link btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
  88. <svg height="24" class="octicon octicon-three-bars" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><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>
  89. </button>
  90. </div>
  91. <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">
  92. <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">
  93. <div class="position-relative">
  94. <!-- '"` --><!-- </textarea></xmp> --><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="114742422" data-scoped-search-url="/mullvad/mullvadvpn-app/search" data-owner-scoped-search-url="/orgs/mullvad/search" data-unscoped-search-url="/search" action="/mullvad/mullvadvpn-app/search" accept-charset="UTF-8" method="get">
  95. <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">
  96. <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" placeholder="Search or jump to…" data-unscoped-placeholder="Search or jump to…" data-scoped-placeholder="Search or jump to…" autocapitalize="none" 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">
  97. <input type="hidden" value="/4txQe974RvF6oBOXQzrlC5+aRW+B4Ii1vyV3Uia7Uw+ftGeK/J4vK+foK86mgm7dMKgAoEmsAqbxOXqdFfX9g==" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf">
  98. <input type="hidden" class="js-site-search-type-field" name="type">
  99. <img src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
  100. <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
  101. <ul class="d-none js-jump-to-suggestions-template-container">
  102. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
  103. <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">
  104. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  105. <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>
  106. <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>
  107. <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>
  108. </div>
  109. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  110. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  111. </div>
  112. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  113. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  114. In this repository
  115. </span>
  116. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  117. All GitHub
  118. </span>
  119. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
  120. </div>
  121. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  122. Jump to
  123. <span class="d-inline-block ml-1 v-align-middle"></span>
  124. </div>
  125. </a>
  126. </li>
  127. </ul>
  128. <ul class="d-none js-jump-to-no-results-template-container">
  129. <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
  130. <span class="text-gray">No suggested jump to results</span>
  131. </li>
  132. </ul>
  133. <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">
  134. <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">
  135. <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">
  136. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  137. <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>
  138. <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>
  139. <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>
  140. </div>
  141. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  142. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  143. </div>
  144. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  145. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  146. In this repository
  147. </span>
  148. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  149. All GitHub
  150. </span>
  151. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
  152. </div>
  153. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  154. Jump to
  155. <span class="d-inline-block ml-1 v-align-middle"></span>
  156. </div>
  157. </a>
  158. </li>
  159. <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">
  160. <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">
  161. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  162. <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>
  163. <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>
  164. <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>
  165. </div>
  166. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  167. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  168. </div>
  169. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  170. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
  171. In this organization
  172. </span>
  173. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  174. All GitHub
  175. </span>
  176. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
  177. </div>
  178. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  179. Jump to
  180. <span class="d-inline-block ml-1 v-align-middle"></span>
  181. </div>
  182. </a>
  183. </li>
  184. <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">
  185. <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">
  186. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  187. <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>
  188. <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>
  189. <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>
  190. </div>
  191. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  192. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  193. </div>
  194. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  195. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  196. In this repository
  197. </span>
  198. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  199. All GitHub
  200. </span>
  201. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle"></span>
  202. </div>
  203. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  204. Jump to
  205. <span class="d-inline-block ml-1 v-align-middle"></span>
  206. </div>
  207. </a>
  208. </li>
  209. <li class="d-flex flex-justify-center flex-items-center p-0 f5 js-jump-to-suggestion">
  210. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="m-3" width="32" height="32">
  211. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  212. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  213. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  214. </path>
  215. </svg>
  216. </li>
  217. </ul>
  218. </div>
  219. </label>
  220. </form> </div>
  221. </div>
  222. <nav class="d-flex flex-column flex-md-row flex-self-stretch flex-md-self-auto" aria-label="Global">
  223. <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="https://github.com/dashboard">
  224. Dashboard
  225. </a>
  226. <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="https://github.com/pulls">
  227. Pull<span class="d-inline d-md-none d-lg-inline"> request</span>s
  228. </a>
  229. <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="https://github.com/issues">
  230. Issues
  231. </a>
  232. <div class="d-flex position-relative">
  233. <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="https://github.com/marketplace">
  234. Marketplace
  235. </a> </div>
  236. <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="https://github.com/explore">
  237. Explore
  238. </a>
  239. <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="https://github.com/settings/profile">
  240. Settings
  241. </a>
  242. <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="https://github.com/wtolley">
  243. <img class="avatar avatar-user" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083.png" alt="@wtolley" width="20" height="20">
  244. wtolley
  245. </a>
  246. <!-- '"` --><!-- </textarea></xmp> --><form action="/logout" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="a8gmUX5mHS5C0mkY27QrcUCtb8a7BLEkqWdE2PinxBvV+MmUh1BCpUqGY9jBNYrTkctM//txJrEgKfjX5KzPfg==">
  247. <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;">
  248. <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>
  249. Sign out
  250. </button>
  251. </form></nav>
  252. </div>
  253. <div class="Header-item Header-item--full flex-justify-center d-md-none position-relative">
  254. <a class="Header-link " href="https://github.com/" data-hotkey="g d" aria-label="Homepage " data-ga-click="Header, go to dashboard, icon:logo">
  255. <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>
  256. </a>
  257. </div>
  258. <div class="Header-item mr-0 mr-md-3 flex-order-1 flex-md-order-none">
  259. <notification-indicator class="js-socket-channel" data-channel="eyJjIjoibm90aWZpY2F0aW9uLWNoYW5nZWQ6MTUyNjIwODMiLCJ0IjoxNjExNzE3MjM1fQ==--a507848e13e7cf24764186b3098ecbeccde5788ffaa0c8764dc8dcb6495ddcf7" data-catalyst="">
  260. <a href="https://github.com/notifications" class="Header-link notification-indicator position-relative tooltipped tooltipped-sw" aria-label="You have no unread notifications" data-hotkey="g n" data-ga-click="Header, go to notifications, icon:read" data-target="notification-indicator.link">
  261. <span class="mail-status " data-target="notification-indicator.modifier"></span>
  262. <svg class="octicon octicon-bell" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  263. </a>
  264. </notification-indicator>
  265. </div>
  266. <div class="Header-item position-relative d-none d-md-flex">
  267. <details class="details-overlay details-reset">
  268. <summary class="Header-link" aria-label="Create new…" data-ga-click="Header, create new, icon:add" aria-haspopup="menu" role="button">
  269. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  270. </summary>
  271. <details-menu class="dropdown-menu dropdown-menu-sw" role="menu">
  272. <a role="menuitem" class="dropdown-item" href="https://github.com/new" data-ga-click="Header, create new repository">
  273. New repository
  274. </a>
  275. <a role="menuitem" class="dropdown-item" href="https://github.com/new/import" data-ga-click="Header, import a repository">
  276. Import repository
  277. </a>
  278. <a role="menuitem" class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
  279. New gist
  280. </a>
  281. <a role="menuitem" class="dropdown-item" href="https://github.com/organizations/new" data-ga-click="Header, create new organization">
  282. New organization
  283. </a>
  284. <div role="none" class="dropdown-divider"></div>
  285. <div class="dropdown-header">
  286. <span title="mullvad/mullvadvpn-app">This repository</span>
  287. </div>
  288. <a role="menuitem" class="dropdown-item" href="https://github.com/mullvad/mullvadvpn-app/issues/new/choose" data-ga-click="Header, create new issue" data-skip-pjax="">
  289. New issue
  290. </a>
  291. </details-menu>
  292. </details>
  293. </div>
  294. <div class="Header-item position-relative mr-0 d-none d-md-flex">
  295. <details class="details-overlay details-reset js-feature-preview-indicator-container" data-feature-preview-indicator-src="/users/wtolley/feature_preview/indicator_check">
  296. <summary class="Header-link" aria-label="View profile and more" data-ga-click="Header, show menu, icon:avatar" aria-haspopup="menu" role="button">
  297. <img alt="@wtolley" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083_003.png" class="avatar avatar-user " width="20" height="20">
  298. <span class="feature-preview-indicator js-feature-preview-indicator" style="top: 1px;" hidden=""></span>
  299. <span class="dropdown-caret"></span>
  300. </summary>
  301. <details-menu class="dropdown-menu dropdown-menu-sw" style="width: 180px" src="/users/15262083/menu" preload="" role="menu">
  302. <include-fragment>
  303. <p class="text-center mt-3" data-hide-on-error="">
  304. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32">
  305. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  306. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  307. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  308. </path>
  309. </svg>
  310. </p>
  311. <p class="ml-1 mb-2 mt-2 text-gray-dark" data-show-on-error="">
  312. <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  313. Sorry, something went wrong.
  314. </p>
  315. </include-fragment>
  316. </details-menu>
  317. </details>
  318. </div>
  319. </header>
  320. </div>
  321. <div id="start-of-content" class="show-on-focus"></div>
  322. <div data-pjax-replace="" id="js-flash-container">
  323. <template class="js-flash-template">
  324. <div class="flash flash-full {{ className }}">
  325. <div class=" px-2">
  326. <button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
  327. <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  328. </button>
  329. <div>{{ message }}</div>
  330. </div>
  331. </div>
  332. </template>
  333. </div>
  334. <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
  335. <div class="application-main " data-commit-hovercards-enabled="" data-discussion-hovercards-enabled="" data-issue-and-pr-hovercards-enabled="">
  336. <div itemscope="" itemtype="http://schema.org/SoftwareSourceCode" class="">
  337. <main id="js-repo-pjax-container" data-pjax-container="">
  338. <div class="bg-gray-light pt-3 hide-full-screen mb-5">
  339. <div class="d-flex mb-3 px-3 px-md-4 px-lg-5">
  340. <div class="flex-auto min-width-0 width-fit mr-3">
  341. <h1 class=" d-flex flex-wrap flex-items-center break-word f3 text-normal">
  342. <svg class="octicon octicon-repo text-gray 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>
  343. <span class="author flex-self-stretch" itemprop="author">
  344. <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/mullvad/hovercard" href="https://github.com/mullvad">mullvad</a>
  345. </span>
  346. <span class="mx-1 flex-self-stretch color-text-secondary">/</span>
  347. <strong itemprop="name" class="mr-2 flex-self-stretch">
  348. <a data-pjax="#js-repo-pjax-container" class="" href="https://github.com/mullvad/mullvadvpn-app">mullvadvpn-app</a>
  349. </strong>
  350. </h1>
  351. </div>
  352. <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
  353. <li>
  354. <notifications-list-subscription-form class="f5 position-relative d-flex" data-catalyst="">
  355. <details class="details-reset details-overlay f5 position-relative" data-target="notifications-list-subscription-form.details" data-action="toggle:notifications-list-subscription-form#detailsToggled">
  356. <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;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="fc3483b0c71d31e65d6c7f1fd8e927a16ba9f8be224f0c214691a119fe5bc206" data-ga-click="Repository, click Watch settings, action:commit#show" aria-label="Notifications settings" role="button" aria-haspopup="menu">
  357. <span data-menu-button="">
  358. <span data-target="notifications-list-subscription-form.unwatchButtonCopy" hidden="">
  359. <svg class="octicon octicon-eye" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  360. Unwatch
  361. </span>
  362. <span data-target="notifications-list-subscription-form.stopIgnoringButtonCopy" hidden="">
  363. <svg class="octicon octicon-bell-slash" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  364. Stop ignoring
  365. </span>
  366. <span data-target="notifications-list-subscription-form.watchButtonCopy">
  367. <svg class="octicon octicon-eye" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  368. Watch
  369. </span>
  370. </span>
  371. <span class="dropdown-caret"></span>
  372. </summary>
  373. <details-menu class="SelectMenu " role="menu" data-target="notifications-list-subscription-form.menu">
  374. <div class="SelectMenu-modal notifications-component-menu-modal">
  375. <header class="SelectMenu-header">
  376. <h3 class="SelectMenu-title">Notifications</h3>
  377. <button class="SelectMenu-closeButton" type="button" aria-label="Close menu" data-action="click:notifications-list-subscription-form#closeMenu">
  378. <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  379. </button>
  380. </header>
  381. <div class="SelectMenu-list">
  382. <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="hgy2qZ84+v40/BHV5N2Y7rgTlS92hF7U4qPfma9LBzCWVBXfW6G2bdPIdsSQ6CxwciSxKZQTEHbgGIi8Y59pFQ==">
  383. <input type="hidden" name="repository_id" value="114742422">
  384. <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">
  385. <span class="f5">
  386. <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  387. </span>
  388. <div>
  389. <div class="f5 text-bold">
  390. Participating and @mentions
  391. </div>
  392. <div class="text-small text-gray text-normal pb-1">
  393. Only receive notifications from this repository when participating or @mentioned.
  394. </div>
  395. </div>
  396. </button>
  397. <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">
  398. <span class="f5">
  399. <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  400. </span>
  401. <div>
  402. <div class="f5 text-bold">
  403. All Activity
  404. </div>
  405. <div class="text-small text-gray text-normal pb-1">
  406. Notified of all notifications on this repository.
  407. </div>
  408. </div>
  409. </button>
  410. <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">
  411. <span class="f5">
  412. <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  413. </span>
  414. <div>
  415. <div class="f5 text-bold">
  416. Ignore
  417. </div>
  418. <div class="text-small text-gray text-normal pb-1">
  419. Never be notified.
  420. </div>
  421. </div>
  422. </button>
  423. </form>
  424. <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">
  425. <span class="f5">
  426. <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  427. </span>
  428. <div>
  429. <div class="d-flex flex-items-start flex-justify-between">
  430. <div class="f5 text-bold">Custom</div>
  431. <div class="f5 pr-1">
  432. <svg class="octicon octicon-arrow-right" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  433. </div>
  434. </div>
  435. <div class="text-small text-gray text-normal pb-1">
  436. Select events you want to be notified of in addition to participating and @mentions.
  437. </div>
  438. </div>
  439. </button>
  440. </div>
  441. </div>
  442. </details-menu>
  443. <details-dialog class="notifications-component-dialog " data-target="notifications-list-subscription-form.customDialog" role="dialog" aria-modal="true" hidden="">
  444. <div class="SelectMenu-modal notifications-component-dialog-modal overflow-visible">
  445. <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="LiM9jTpPqU9wciDdPJXSEE5KVcL7iVrachpkaNUZR/I+e577/tbl3JdGR8xIoGaOhH1xxBkeFHhwoTNNGc0p1w==">
  446. <input type="hidden" name="repository_id" value="114742422">
  447. <header class="d-sm-none SelectMenu-header pb-0 border-bottom-0 px-2 px-sm-3">
  448. <h1 class="f3 SelectMenu-title d-inline-flex">
  449. <button class="bg-white border-0 px-2 py-0 m-0 link-gray f5" aria-label="Return to menu" type="button" data-action="click:notifications-list-subscription-form#closeCustomDialog">
  450. <svg style="" class="octicon octicon-arrow-left" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  451. </button>
  452. Custom
  453. </h1>
  454. </header>
  455. <header class="d-none d-sm-flex flex-items-start pt-1">
  456. <button class="border-0 px-2 pt-1 m-0 link-gray f5" style="background-color: transparent;" aria-label="Return to menu" type="button" data-action="click:notifications-list-subscription-form#closeCustomDialog">
  457. <svg style="position: relative; left: 2px; top: 1px" class="octicon octicon-arrow-left" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  458. </button>
  459. <h1 class="pt-1 pr-4 pb-0 pl-0 f5 text-bold">
  460. Custom
  461. </h1>
  462. </header>
  463. <fieldset>
  464. <legend>
  465. <div class="text-small text-gray pt-0 pr-3 pb-3 pl-6 pl-sm-5 border-bottom mb-3">
  466. Select events you want to be notified of in addition to participating and @mentions.
  467. </div>
  468. </legend>
  469. <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
  470. <label class="f5 text-normal">
  471. <input type="checkbox" name="thread_types[]" value="Issue" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
  472. Issues
  473. </label>
  474. </div>
  475. <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
  476. <label class="f5 text-normal">
  477. <input type="checkbox" name="thread_types[]" value="PullRequest" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
  478. Pull requests
  479. </label>
  480. </div>
  481. <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
  482. <label class="f5 text-normal">
  483. <input type="checkbox" name="thread_types[]" value="Release" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
  484. Releases
  485. </label>
  486. </div>
  487. <div class="form-checkbox mr-3 ml-6 ml-sm-5 mb-2 mt-0">
  488. <label class="f5 text-normal">
  489. <input type="checkbox" name="thread_types[]" value="Discussion" data-targets="notifications-list-subscription-form.threadTypeCheckboxes" data-action="change:notifications-list-subscription-form#threadTypeCheckboxesUpdated">
  490. Discussions
  491. </label>
  492. <span class="tooltipped tooltipped-nw mr-2 p-1 float-right" aria-label="Discussions are not enabled for this repo">
  493. <svg style="fill: var(--color-icon-tertiary)" class="octicon octicon-info" 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 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>
  494. </span>
  495. </div>
  496. </fieldset>
  497. <div class="pt-2 pb-3 px-3 d-flex flex-justify-start flex-row-reverse">
  498. <button type="submit" name="do" value="custom" class="btn btn-sm btn-primary ml-2" data-target="notifications-list-subscription-form.customSubmit" disabled="disabled">Apply</button>
  499. <button class="btn btn-sm" type="button" data-action="click:notifications-list-subscription-form#resetForm" data-close-dialog="">Cancel</button>
  500. </div>
  501. </form> </div>
  502. </details-dialog>
  503. <div class="notifications-component-dialog-overlay"></div>
  504. </details>
  505. <a class="social-count" href="https://github.com/mullvad/mullvadvpn-app/watchers" aria-label="47 users are watching this repository" data-target="notifications-list-subscription-form.socialCount">
  506. 47
  507. </a>
  508. <div class="Popover js-notice" style="top: 26px;left: -44%;">
  509. <div class="Popover-message Popover-message--large p-4 mt-2 Box box-shadow-large">
  510. <h4 class="mb-2 d-flex flex-items-center">
  511. <span>🔖 Custom notification settings</span>
  512. </h4>
  513. <p class="text-gray">
  514. Looking for a little more control? Now you can choose
  515. which types of activity you’d like to be notified about per repository.
  516. </p>
  517. <form class="js-notice-dismiss" action="/settings/dismiss-notice/custom_notification_controls_subscription_notice" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="e+NRFmGT47ikWrUNCGuVrgkWa+v7sjEy4/8hnpSgTsDWZ6HIeF2DothSyrUSRpqOxY4oVEVnqHgGNdhtlv18Gg==">
  518. <button type="submit" class="btn btn-outline mt-2 text-bold"><strong>Got it</strong></button>
  519. </form> </div>
  520. </div>
  521. </notifications-list-subscription-form>
  522. </li>
  523. <li>
  524. <div class="d-block js-toggler-container js-social-container starring-container ">
  525. <form class="starred js-social-form" action="/mullvad/mullvadvpn-app/unstar" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="mr4PDFueiFM+naggqieFMhdIeASIM4iGNtqvw8vbnglwlHF8P0fBSmRh7YD/1w4Zq5MeCdisGO4rcsObO4zRCg==">
  526. <input type="hidden" name="context" value="repository">
  527. <button type="submit" class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Unstar mullvad/mullvadvpn-app" 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;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="bd8a2f6051cd5da3e3c4bfb9caaa35e626486186e04a9ed2cec54b6a9209383e" data-ga-click="Repository, click unstar button, action:commit#show; text:Unstar"> <svg class="octicon octicon-star-fill mr-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  528. <span>
  529. Unstar
  530. </span></button> <a class="social-count js-social-count" href="https://github.com/mullvad/mullvadvpn-app/stargazers" aria-label="1313 users starred this repository">
  531. 1.3k
  532. </a>
  533. </form>
  534. <form class="unstarred js-social-form" action="/mullvad/mullvadvpn-app/star" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="Isl3ls+BT+NJjvzoxYDSNTA9jud+OBPIgDNcHB5ssdCsoG+f6dOZV+TO+3LIcPQyrRKMTrx+Zdp7bDD07uhacw==">
  535. <input type="hidden" name="context" value="repository">
  536. <button type="submit" class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Star mullvad/mullvadvpn-app" 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;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="786d60879f428afddddb6adbe9bbf9f6a928a85f49c31e68ccb629527035f6cf" data-ga-click="Repository, click star button, action:commit#show; text:Star"> <svg class="octicon octicon-star mr-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  537. <span>
  538. Star
  539. </span></button> <a class="social-count js-social-count" href="https://github.com/mullvad/mullvadvpn-app/stargazers" aria-label="1313 users starred this repository">
  540. 1.3k
  541. </a>
  542. </form> </div>
  543. </li>
  544. <li>
  545. <div class="float-left">
  546. <details class="details-reset details-overlay details-overlay-dark ">
  547. <summary class="btn btn-sm btn-with-count" title="Fork your own copy of mullvad/mullvadvpn-app 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;:114742422,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-click-hmac="d056cd78f296698ed7eda1bce6dc942dfd6511b4c8c9b8f614379ce862467e4d" data-ga-click="Repository, show fork modal, action:commit#show; text:Fork" role="button">
  548. <svg class="octicon octicon-repo-forked" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  549. Fork
  550. </summary>
  551. <details-dialog class="Box d-flex flex-column anim-fade-in fast Box--overlay " aria-label="Fork mullvadvpn-app" src="/mullvad/mullvadvpn-app/fork?fragment=1" preload="" role="dialog" aria-modal="true">
  552. <div class="Box-header">
  553. <button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog="">
  554. <svg class="octicon octicon-x" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  555. </button>
  556. <h1 class="Box-title">Fork mullvadvpn-app</h1>
  557. </div>
  558. <div class="text-center overflow-auto">
  559. <include-fragment>
  560. <div class="octocat-spinner my-5" aria-label="Loading..."></div>
  561. <p class="f5 text-gray">If this dialog fails to load, you can visit <a href="https://github.com/mullvad/mullvadvpn-app/fork">the fork page</a> directly.</p>
  562. </include-fragment>
  563. </div>
  564. </details-dialog>
  565. </details>
  566. </div>
  567. <a href="https://github.com/mullvad/mullvadvpn-app/network/members" class="social-count" aria-label="120 users forked this repository">
  568. 120
  569. </a>
  570. </li>
  571. </ul>
  572. </div>
  573. <nav aria-label="Repository" data-pjax="#js-repo-pjax-container" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 bg-gray-light">
  574. <ul class="UnderlineNav-body list-style-none ">
  575. <li class="d-flex">
  576. <a class="js-selected-navigation-item selected UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i0code-tab" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /mullvad/mullvadvpn-app" href="https://github.com/mullvad/mullvadvpn-app">
  577. <svg class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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>
  578. <span data-content="Code">Code</span>
  579. <span title="Not available" class="Counter "></span>
  580. </a>
  581. </li>
  582. <li class="d-flex">
  583. <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i1issues-tab" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-selected-links="repo_issues repo_labels repo_milestones /mullvad/mullvadvpn-app/issues" href="https://github.com/mullvad/mullvadvpn-app/issues">
  584. <svg class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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"></path></svg>
  585. <span data-content="Issues">Issues</span>
  586. <span title="88" class="Counter ">88</span>
  587. </a>
  588. </li>
  589. <li class="d-flex">
  590. <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i2pull-requests-tab" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-selected-links="repo_pulls checks /mullvad/mullvadvpn-app/pulls" href="https://github.com/mullvad/mullvadvpn-app/pulls">
  591. <svg class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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>
  592. <span data-content="Pull requests">Pull requests</span>
  593. <span title="4" class="Counter ">4</span>
  594. </a>
  595. </li>
  596. <li class="d-flex">
  597. <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i3actions-tab" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-selected-links="repo_actions /mullvad/mullvadvpn-app/actions" href="https://github.com/mullvad/mullvadvpn-app/actions">
  598. <svg class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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>
  599. <span data-content="Actions">Actions</span>
  600. <span title="Not available" class="Counter "></span>
  601. </a>
  602. </li>
  603. <li class="d-flex">
  604. <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i4security-tab" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-selected-links="security overview alerts policy token_scanning code_scanning /mullvad/mullvadvpn-app/security" href="https://github.com/mullvad/mullvadvpn-app/security">
  605. <svg class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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>
  606. <span data-content="Security">Security</span>
  607. </a>
  608. </li>
  609. <li class="d-flex">
  610. <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i5insights-tab" data-ga-click="Repository, Navigation click, Insights tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people /mullvad/mullvadvpn-app/pulse" href="https://github.com/mullvad/mullvadvpn-app/pulse">
  611. <svg class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="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>
  612. <span data-content="Insights">Insights</span>
  613. <span title="Not available" class="Counter "></span>
  614. </a>
  615. </li>
  616. </ul> <div class="position-absolute right-0 pr-3 pr-md-4 pr-lg-5 js-responsive-underlinenav-overflow" style="visibility:hidden;">
  617. <details class="details-overlay details-reset position-relative">
  618. <summary role="button">
  619. <div class="UnderlineNav-item mr-0 border-0">
  620. <svg class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  621. <span class="sr-only">More</span>
  622. </div>
  623. </summary> <div>
  624. <details-menu role="menu" class="dropdown-menu dropdown-menu-sw ">
  625. <ul>
  626. <li data-menu-item="i0code-tab" hidden="">
  627. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app" href="https://github.com/mullvad/mullvadvpn-app">
  628. Code
  629. </a> </li>
  630. <li data-menu-item="i1issues-tab" hidden="">
  631. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/issues" href="https://github.com/mullvad/mullvadvpn-app/issues">
  632. Issues
  633. </a> </li>
  634. <li data-menu-item="i2pull-requests-tab" hidden="">
  635. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/pulls" href="https://github.com/mullvad/mullvadvpn-app/pulls">
  636. Pull requests
  637. </a> </li>
  638. <li data-menu-item="i3actions-tab" hidden="">
  639. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/actions" href="https://github.com/mullvad/mullvadvpn-app/actions">
  640. Actions
  641. </a> </li>
  642. <li data-menu-item="i4security-tab" hidden="">
  643. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/security" href="https://github.com/mullvad/mullvadvpn-app/security">
  644. Security
  645. </a> </li>
  646. <li data-menu-item="i5insights-tab" hidden="">
  647. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /mullvad/mullvadvpn-app/pulse" href="https://github.com/mullvad/mullvadvpn-app/pulse">
  648. Insights
  649. </a> </li>
  650. </ul>
  651. </details-menu>
  652. </div></details> </div>
  653. </nav>
  654. </div>
  655. <div class="container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5">
  656. <div class="repository-content ">
  657. <a href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>
  658. <div id="spoof-warning" class="mt-0 pb-3" aria-hidden="" hidden="">
  659. <div class="flash mt-0 flash-warn clearfix">
  660. <svg class="octicon octicon-alert float-left mt-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  661. <div class="overflow-hidden">This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.</div>
  662. </div>
  663. </div>
  664. <div class="commit full-commit mt-0 px-2 pt-2 ">
  665. <a href="https://github.com/mullvad/mullvadvpn-app/tree/ef5886281dd84b450ae25a9ffca036cffd16abd1" class="btn btn-outline float-right" title="Browse the repository at this point in the history" rel="nofollow">Browse files</a>
  666. <span class="mr-1 mt-1 float-left">
  667. <details class="commit-build-statuses details-overlay details-reset js-dropdown-details hx_dropdown-fullscreen" data-deferred-details-content-url="/_render_node/MDE3OlN0YXR1c0NoZWNrUm9sbHVwMTE0NzQyNDIyOmVmNTg4NjI4MWRkODRiNDUwYWUyNWE5ZmZjYTAzNmNmZmQxNmFiZDE=/statuses/combined_branch_status">
  668. <summary class="text-green">
  669. <svg aria-label="2 / 2 checks OK" class="octicon octicon-check" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><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>
  670. </summary>
  671. <div class="dropdown-menu dropdown-menu-se overflow-hidden">
  672. <include-fragment class="m-4 d-flex flex-column flex-items-center">
  673. <div class="anim-pulse"><svg height="32" class="octicon octicon-octoface" viewBox="0 0 24 24" version="1.1" width="32" aria-hidden="true"><path d="M7.75 11c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5C9 11.56 8.44 11 7.75 11zm1.27 4.5a.469.469 0 01.48-.5h5a.47.47 0 01.48.5c-.116 1.316-.759 2.5-2.98 2.5s-2.864-1.184-2.98-2.5zm7.23-4.5c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5c0-.69-.56-1.25-1.25-1.25z"></path><path fill-rule="evenodd" d="M21.255 3.82a1.725 1.725 0 00-2.141-1.195c-.557.16-1.406.44-2.264.866-.78.386-1.647.93-2.293 1.677A18.442 18.442 0 0012 5c-.93 0-1.784.059-2.569.17-.645-.74-1.505-1.28-2.28-1.664a13.876 13.876 0 00-2.265-.866 1.725 1.725 0 00-2.141 1.196 23.645 23.645 0 00-.69 3.292c-.125.97-.191 2.07-.066 3.112C1.254 11.882 1 13.734 1 15.527 1 19.915 3.13 23 12 23c8.87 0 11-3.053 11-7.473 0-1.794-.255-3.647-.99-5.29.127-1.046.06-2.15-.066-3.125a23.652 23.652 0 00-.689-3.292zM20.5 14c.5 3.5-1.5 6.5-8.5 6.5s-9-3-8.5-6.5c.583-4 3-6 8.5-6s7.928 2 8.5 6z"></path></svg></div>
  674. <div class="text-gray no-wrap">Loading status checks…</div>
  675. </include-fragment>
  676. </div>
  677. </details>
  678. </span>
  679. <p class="commit-title">
  680. Stop CVE-2019-14899 by dropping packets to tunnel IP
  681. </p>
  682. <div class="commit-desc"><pre>Stops an attacker on the same network from discovering the tunnel IP of
  683. the device running this app</pre></div>
  684. <div class="commit-branches">
  685. <svg class="octicon octicon-git-branch" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  686. <ul class="branches-list">
  687. <li class="branch"><a href="https://github.com/mullvad/mullvadvpn-app">master</a></li>
  688. <li class="pull-request">(<a title="Merged Pull Request: Stop CVE-2019-14899 by dropping packets to tunnel IP" href="https://github.com/mullvad/mullvadvpn-app/pull/1315">#1315</a>)</li>
  689. </ul>
  690. <svg class="octicon octicon-tag" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path></svg>
  691. <ul class="branches-tag-list js-details-container">
  692. <li><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/trace-service-lifecycle">trace-service-lifecycle</a></li>
  693. <li class="abbrev-tags"><span class="hidden-text-expander"><button type="button" class="ellipsis-expander js-details-target" aria-expanded="false"></button></span></li>
  694. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-scaled-down-ui2">test-scaled-down-ui2</a></li>
  695. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-scaled-down-ui">test-scaled-down-ui</a></li>
  696. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-non-blurry-icons">test-non-blurry-icons</a></li>
  697. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/test-linux-electron-sandbox">test-linux-electron-sandbox</a></li>
  698. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/split-tunnel-win-testbuild-tag">split-tunnel-win-testbuild-tag</a></li>
  699. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.4">ios/2020.4</a></li>
  700. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.3">ios/2020.3</a></li>
  701. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.2">ios/2020.2</a></li>
  702. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/ios%2F2020.1">ios/2020.1</a></li>
  703. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/android%2F2020.8-beta1">android/2020.8-beta1</a></li>
  704. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2021.1-beta1">2021.1-beta1</a></li>
  705. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.8-beta2">2020.8-beta2</a></li>
  706. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7">2020.7</a></li>
  707. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7-beta2">2020.7-beta2</a></li>
  708. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.7-beta1">2020.7-beta1</a></li>
  709. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6">2020.6</a></li>
  710. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta3">2020.6-beta3</a></li>
  711. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta2">2020.6-beta2</a></li>
  712. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.6-beta1">2020.6-beta1</a></li>
  713. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5">2020.5</a></li>
  714. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5-beta2">2020.5-beta2</a></li>
  715. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.5-beta1">2020.5-beta1</a></li>
  716. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4">2020.4</a></li>
  717. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta4">2020.4-beta4</a></li>
  718. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta3">2020.4-beta3</a></li>
  719. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta2">2020.4-beta2</a></li>
  720. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.4-beta1">2020.4-beta1</a></li>
  721. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.3">2020.3</a></li>
  722. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.3-beta1">2020.3-beta1</a></li>
  723. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.2">2020.2</a></li>
  724. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.2-beta1">2020.2-beta1</a></li>
  725. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.1">2020.1</a></li>
  726. <li class="more-commit-details"><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2020.1-beta1">2020.1-beta1</a></li>
  727. <li><a href="https://github.com/mullvad/mullvadvpn-app/releases/tag/2019.10">2019.10</a></li>
  728. </ul>
  729. </div>
  730. <div class="commit-meta p-2 d-flex flex-wrap">
  731. <div class="AvatarStack flex-self-start ">
  732. <div class="AvatarStack-body" aria-label="faern">
  733. <a class="avatar avatar-user" data-skip-pjax="true" data-hovercard-type="user" data-hovercard-url="/users/faern/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" style="width:20px;height:20px;" href="https://github.com/faern">
  734. <img alt="@faern" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/332294.jpg" class=" avatar-user" width="20" height="20">
  735. </a> </div>
  736. </div>
  737. <div class="flex-self-start no-wrap mr-md-4 mr-0">
  738. <a href="https://github.com/mullvad/mullvadvpn-app/commits?author=faern" class="commit-author user-mention" title="View all commits by faern">faern</a>
  739. committed
  740. <relative-time datetime="2019-12-06T14:30:13Z" class="no-wrap" title="Dec 6, 2019, 7:30 AM MST">on Dec 6, 2019</relative-time>
  741. <div class="d-none d-md-inline-block">
  742. </div>
  743. </div>
  744. <div class="flex-auto no-wrap text-lg-right text-left overflow-x-auto">
  745. <span class="sha-block ml-0" data-pjax="">
  746. 1 parent
  747. <a class="sha" data-hotkey="p" href="https://github.com/mullvad/mullvadvpn-app/commit/b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0">b94cdac</a>
  748. </span>
  749. <span class="sha-block">commit <span class="sha user-select-contain">ef5886281dd84b450ae25a9ffca036cffd16abd1</span></span>
  750. </div>
  751. </div>
  752. </div>
  753. <table style="display: none">
  754. <tbody id="js-inline-comments-single-container-template">
  755. <tr class="inline-comments js-inline-comments-container">
  756. <td class="line-comments js-line-comments js-quote-selection-container p-0 p-sm-2" data-quote-markdown=".js-comment-body" colspan="3">
  757. <div class="js-line-comments">
  758. <div class="comment-holder js-comments-holder">
  759. </div>
  760. <div class="inline-comment-form-container js-inline-comment-form-container review-comment-form-container">
  761. <div class="f6 pb-2 d-flex flex-justify-between js-multi-line-preview" hidden="">
  762. <div class="f6 text-gray">
  763. Commenting on lines
  764. <span class="js-multi-line-preview-start ">
  765. </span> to <span class="js-multi-line-preview-end ">
  766. </span>
  767. </div>
  768. </div>
  769. <div class="inline-comment-form border-md border-0 p-md-0 p-2 ">
  770. <!-- '"` --><!-- </textarea></xmp> --><form class="js-inline-comment-form" action="/mullvad/mullvadvpn-app/commit_comment/create" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="rs6b38KWFlqvH1DXN1oV4OAiNrEGXVDy8SWIp+HkIZWInIXWKxCbmpAKV0p20bEZ2vJu45GJEfAGz0Py30OPig==">
  771. <input type="text" name="required_field_c321" class="form-control" hidden="hidden"><input type="hidden" name="timestamp" value="1611717235721" class="form-control"><input type="hidden" name="timestamp_secret" value="14e2fd57a7548be2f074cd95c04849c0144ccdb4a41c3ef536cdc995833334fc" class="form-control">
  772. <input type="hidden" name="comment_context" value="diff">
  773. <input type="hidden" name="commit_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
  774. <input type="hidden" name="position" value="">
  775. <tab-container class="js-previewable-comment-form previewable-comment-form write-selected" data-preview-url="/preview?markdown_unsupported=false&amp;repository=114742422&amp;subject=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;subject_type=Commit">
  776. <input type="hidden" value="AYzEDQkZk/dEbhS9McJDecCO2FgljeHvL3DIvoBylCodpPqaENF/40THsziA+PZo5wm5y/DGYkgTy844vPhb2Q==" data-csrf="true" class="js-data-preview-url-csrf">
  777. <div class="comment-form-head tabnav d-flex flex-justify-between mb-2 p-0 tabnav--responsive flex-column border-bottom-0 mb-0 mb-lg-2 flex-items-stretch border-lg-bottom color-border-primary flex-lg-items-center flex-lg-row">
  778. <div class="tabnav-tabs mx-0 mx-md-2 mt-0 mt-md-2 no-wrap d-flex flex-auto d-md-block" role="tablist">
  779. <button type="button" class="btn-link tabnav-tab write-tab js-write-tab px-3 px-sm-6 px-md-3 flex-1 flex-md-auto" role="tab" aria-selected="true" tabindex="0">
  780. Write
  781. </button>
  782. <button type="button" class="btn-link tabnav-tab preview-tab js-preview-tab flex-1 flex-md-auto" role="tab" aria-selected="false" tabindex="-1">
  783. Preview
  784. </button>
  785. </div>
  786. <markdown-toolbar role="toolbar" aria-label="Composition" for="r448261 new_inline_comment_diff_${anchor}_${position}" class="js-details-container Details toolbar-commenting d-flex no-wrap flex-items-start flex-wrap px-2 pt-2 pt-lg-0 border-md-top border-lg-top-0" tabindex="0">
  787. <div class="d-block d-md-none flex-auto">
  788. <button data-md-button="" tabindex="-1" type="button" aria-label="Toggle text tools" aria-expanded="false" class="js-details-target btn-link toolbar-item no-underline py-2 mr-1">
  789. <svg class="octicon octicon-typography" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.21 8.5L4.574 3.594 2.857 8.5H6.21zm.5 1.5l.829 2.487a.75.75 0 001.423-.474L5.735 2.332a1.216 1.216 0 00-2.302-.018l-3.39 9.688a.75.75 0 001.415.496L2.332 10H6.71zm3.13-4.358C10.53 4.374 11.87 4 13 4c1.5 0 3 .939 3 2.601v5.649a.75.75 0 01-1.448.275C13.995 12.82 13.3 13 12.5 13c-.77 0-1.514-.231-2.078-.709-.577-.488-.922-1.199-.922-2.041 0-.694.265-1.411.887-1.944C11 7.78 11.88 7.5 13 7.5h1.5v-.899c0-.54-.5-1.101-1.5-1.101-.869 0-1.528.282-1.84.858a.75.75 0 11-1.32-.716zM14.5 9H13c-.881 0-1.375.22-1.637.444-.253.217-.363.5-.363.806 0 .408.155.697.39.896.249.21.63.354 1.11.354.732 0 1.26-.209 1.588-.449.35-.257.412-.495.412-.551V9z"></path></svg>
  790. <svg class="octicon octicon-chevron-up Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"></path></svg>
  791. <svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
  792. </button>
  793. </div>
  794. <div class="flex-nowrap d-none d-md-inline-block mr-3">
  795. <md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
  796. <svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
  797. </md-header>
  798. <md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
  799. <svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
  800. </md-bold>
  801. <md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
  802. <svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
  803. </md-italic>
  804. </div>
  805. <div class="d-flex d-md-inline-block mr-0 mr-md-3">
  806. <md-quote tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert a quote" data-ga-click="Markdown Toolbar, click, quote" role="button">
  807. <svg class="octicon octicon-quote" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.75.75 0 000 1.5h10.5a.75.75 0 000-1.5H1.75zm4 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM2.5 7.75a.75.75 0 00-1.5 0v6a.75.75 0 001.5 0v-6z"></path></svg>
  808. </md-quote>
  809. <md-code tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert code" data-ga-click="Markdown Toolbar, click, code" role="button">
  810. <svg class="octicon octicon-code" 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>
  811. </md-code>
  812. <button type="button" data-md-button="" tabindex="-1" class="toolbar-item text-center menu-target p-2 mx-1 d-md-none js-markdown-link-button" aria-label="Add a link" data-ga-click="Markdown Toolbar, click, saved reply">
  813. <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
  814. </button>
  815. <template class="js-markdown-link-dialog">
  816. <div class="Box-header">
  817. <h3 class="Box-title">Insert Link</h3>
  818. </div>
  819. <div class="Box-body overflow-auto">
  820. <div>
  821. <label class="d-block mb-1" for="js-dialog-link-text">Link Text</label>
  822. <input type="text" class="mb-3 form-control input-block" id="js-dialog-link-text" autofocus="">
  823. </div>
  824. <div>
  825. <label class="d-block mb-1" for="js-dialog-link-href">URL</label>
  826. <input type="url" class="mb-3 form-control input-block" id="js-dialog-link-href">
  827. </div>
  828. <div class="pt-3 border-top">
  829. <button type="button" class="btn btn-primary btn-block js-markdown-link-insert" data-close-dialog="" data-for-textarea="r448261 new_inline_comment_diff_${anchor}_${position}">
  830. Add
  831. </button>
  832. </div>
  833. </div>
  834. </template>
  835. <md-link tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 d-none d-md-block mx-1 js-modifier-label-key" aria-label="Add a link &lt;ctrl+k&gt;" data-ga-click="Markdown Toolbar, click, link" role="button" hotkey="k">
  836. <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
  837. </md-link>
  838. </div>
  839. <div class="d-none d-md-inline-block mr-3">
  840. <md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
  841. <svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
  842. </md-unordered-list>
  843. <md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
  844. <svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
  845. </md-ordered-list>
  846. <md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
  847. <svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
  848. </md-task-list>
  849. </div>
  850. <div class="d-flex d-xs-inline-block">
  851. <md-mention tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Directly mention a user or team" data-ga-click="Markdown Toolbar, click, mention" role="button">
  852. <svg class="octicon octicon-mention" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.75 2.37a6.5 6.5 0 006.5 11.26.75.75 0 01.75 1.298 8 8 0 113.994-7.273.754.754 0 01.006.095v1.5a2.75 2.75 0 01-5.072 1.475A4 4 0 1112 8v1.25a1.25 1.25 0 002.5 0V7.867a6.5 6.5 0 00-9.75-5.496V2.37zM10.5 8a2.5 2.5 0 10-5 0 2.5 2.5 0 005 0z"></path></svg>
  853. </md-mention>
  854. <label for="fc-r448261 new_inline_comment_diff_${anchor}_${position}" data-md-button="" tabindex="-1" class="d-block d-md-none btn-link flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Attach an image or video">
  855. <svg class="octicon octicon-image" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h.94a.76.76 0 01.03-.03l6.077-6.078a1.75 1.75 0 012.412-.06L14.5 10.31V2.75a.25.25 0 00-.25-.25H1.75zm12.5 11H4.81l5.048-5.047a.25.25 0 01.344-.009l4.298 3.889v.917a.25.25 0 01-.25.25zm1.75-.25V2.75A1.75 1.75 0 0014.25 1H1.75A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25zM5.5 6a.5.5 0 11-1 0 .5.5 0 011 0zM7 6a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>
  856. </label>
  857. <md-ref tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Reference an issue, pull request, or discussion" data-ga-click="Markdown Toolbar, click, reference" role="button">
  858. <svg class="octicon octicon-cross-reference" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 1.25v4.146a.25.25 0 01-.427.177L14.03 4.03l-3.75 3.75a.75.75 0 11-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0111.604 1h4.146a.25.25 0 01.25.25zM2.75 3.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 01.75.75v2.19l2.72-2.72a.75.75 0 01.53-.22h4.5a.25.25 0 00.25-.25v-2.5a.75.75 0 111.5 0v2.5A1.75 1.75 0 0113.25 13H9.06l-2.573 2.573A1.457 1.457 0 014 14.543V13H2.75A1.75 1.75 0 011 11.25v-7.5C1 2.784 1.784 2 2.75 2h5.5a.75.75 0 010 1.5h-5.5z"></path></svg>
  859. </md-ref>
  860. <details class="details-reset details-overlay flex-auto toolbar-item select-menu select-menu-modal-right js-saved-reply-container hx_rsm" tabindex="-1">
  861. <summary data-md-button="" tabindex="-1" class="text-center menu-target py-2 p-md-1 hx_rsm-trigger ml-1" aria-label="Insert a reply" data-ga-click="Markdown Toolbar, click, saved reply" aria-haspopup="menu" role="button">
  862. <svg class="octicon octicon-reply" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.78 1.97a.75.75 0 010 1.06L3.81 6h6.44A4.75 4.75 0 0115 10.75v2.5a.75.75 0 01-1.5 0v-2.5a3.25 3.25 0 00-3.25-3.25H3.81l2.97 2.97a.75.75 0 11-1.06 1.06L1.47 7.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0z"></path></svg>
  863. <span class="dropdown-caret hide-sm"></span>
  864. </summary>
  865. <details-menu style="z-index: 99;" class="select-menu-modal position-absolute right-0 js-saved-reply-menu hx_rsm-modal" data-menu-input="r448261 new_inline_comment_diff_${anchor}_${position}_saved_reply_id" src="/settings/replies?context=none" preload="" role="menu">
  866. <div class="select-menu-header d-flex">
  867. <span class="select-menu-title flex-auto">Select a reply</span>
  868. <code><span class="border rounded-1 p-1 mr-2">ctrl .</span></code>
  869. </div>
  870. <include-fragment role="menuitem" aria-label="Loading">
  871. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="my-6 mx-auto d-block" width="32" height="32">
  872. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  873. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  874. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  875. </path>
  876. </svg>
  877. </include-fragment>
  878. </details-menu>
  879. </details>
  880. </div>
  881. <div class="Details-content--hidden d-block d-md-none width-full">
  882. <md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw py-2 pr-2 pl-1 mr-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
  883. <svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
  884. </md-header>
  885. <md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
  886. <svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
  887. </md-bold>
  888. <md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
  889. <svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
  890. </md-italic>
  891. <md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
  892. <svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
  893. </md-unordered-list>
  894. <md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
  895. <svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
  896. </md-ordered-list>
  897. <md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
  898. <svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
  899. </md-task-list>
  900. </div>
  901. </markdown-toolbar>
  902. </div>
  903. <div class="comment-form-error js-comment-form-error" role="alert" hidden="">
  904. There was an error creating your Commit.
  905. </div>
  906. <file-attachment class="js-upload-markdown-image is-default" input="fc-r448261 new_inline_comment_diff_${anchor}_${position}" role="tabpanel" data-tab-container-no-tabstop="true" data-upload-repository-id="114742422" data-upload-policy-url="/upload/policies/assets"><input type="hidden" value="Rf36JMcRW6vhLtMdWGGCz9ZVYGsI7mZrYNgy4XIxOU5P0KHkl+kJEu4Yhst8Nm4EDYyATMF6xrFwmyVr4SepmQ==" data-csrf="true" class="js-data-upload-policy-url-csrf">
  907. <div class="write-content js-write-bucket tooltipped tooltipped-ne tooltipped-no-delay tooltipped-align-left-1 hide-reaction-suggestion upload-enabled mx-0 mt-2 mb-2 mx-md-2 hx_sm-hide-drag-drop js-reaction-suggestion" data-reaction-markup="Would you like to leave a reaction instead?">
  908. <input type="hidden" name="saved_reply_id" id="r448261 new_inline_comment_diff_${anchor}_${position}_saved_reply_id" class="js-resettable-field" value="" data-reset-value="">
  909. <text-expander keys=": @ #" data-issue-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?issue_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" data-mention-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?mention_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" multiword="#" data-emoji-url="/autocomplete/emoji">
  910. <textarea name="comment[body]" id="r448261 new_inline_comment_diff_${anchor}_${position}" placeholder="Leave a comment" aria-label="Comment body" data-required-trimmed="Text field is empty" class="form-control input-contrast comment-form-textarea js-comment-field js-paste-markdown js-task-list-field js-quick-submit js-session-resumable js-saved-reply-shortcut-comment-field" required=""></textarea>
  911. </text-expander>
  912. <label class="text-normal drag-and-drop hx_drag-and-drop position-relative d-flex flex-justify-between">
  913. <input accept=".gif,.jpeg,.jpg,.mov,.mp4,.png,.docx,.gz,.log,.pdf,.pptx,.txt,.xlsx,.zip" type="file" multiple="" class="manual-file-chooser manual-file-chooser-transparent top-0 right-0 bottom-0 left-0 width-full ml-0 form-control" id="fc-r448261 new_inline_comment_diff_${anchor}_${position}">
  914. <span class="bg-gray-light position-absolute top-0 left-0 width-full height-full rounded-1" style="pointer-events: none;"></span>
  915. <span class="position-relative pr-2" style="pointer-events: none;">
  916. <span class="default">
  917. Attach files by dragging &amp; dropping, selecting or pasting them.
  918. </span>
  919. <span class="loading">
  920. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="v-align-text-bottom mr-1" width="16" height="16">
  921. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  922. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  923. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  924. </path>
  925. </svg> Uploading your files…
  926. </span>
  927. <span class="error bad-file">
  928. We don’t support that file type.
  929. <span class="drag-and-drop-error-info">
  930. <span class="btn-link">Try again</span> with a
  931. GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  932. </span>
  933. </span>
  934. <span class="error bad-permissions">
  935. Attaching documents requires write permission to this repository.
  936. <span class="drag-and-drop-error-info">
  937. <span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  938. </span>
  939. </span>
  940. <span class="error repository-required">
  941. We don’t support that file type.
  942. <span class="drag-and-drop-error-info">
  943. <span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  944. </span>
  945. </span>
  946. <span class="error too-big">
  947. Yowza, that’s a big file
  948. <span class="drag-and-drop-error-info">
  949. <span class="btn-link">Try again</span> with a file smaller than 10MB.
  950. </span>
  951. </span>
  952. <span class="error empty">
  953. This file is empty.
  954. <span class="drag-and-drop-error-info">
  955. <span class="btn-link">Try again</span> with a file that’s not empty.
  956. </span>
  957. </span>
  958. <span class="error hidden-file">
  959. This file is hidden.
  960. <span class="drag-and-drop-error-info">
  961. <span class="btn-link">Try again</span> with another file.
  962. </span>
  963. </span>
  964. <span class="error failed-request">
  965. Something went really wrong, and we can’t process that file.
  966. <span class="drag-and-drop-error-info">
  967. <span class="btn-link">Try again.</span>
  968. </span>
  969. </span>
  970. </span>
  971. <span class="tooltipped tooltipped-nw" aria-label="Styling with Markdown is supported">
  972. <a class="muted-link position-relative d-inline" href="https://guides.github.com/features/mastering-markdown/" target="_blank" data-ga-click="Markdown Toolbar, click, help" aria-label="Learn about styling with Markdown">
  973. <svg class="octicon octicon-markdown v-align-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg>
  974. </a>
  975. </span>
  976. </label>
  977. <span class="js-sparkles-remaining-container" hidden=""></span>
  978. </div>
  979. </file-attachment>
  980. <div role="tabpanel" class="js-preview-panel overflow-auto border-bottom mx-0 my-3 mx-md-2 mb-md-2" hidden="">
  981. <input type="hidden" name="path" value="" class="js-path">
  982. <input type="hidden" name="line" value="" class="js-line-number">
  983. <input type="hidden" name="start_line" value="" class="js-start-line-number">
  984. <input type="hidden" name="preview_side" value="" class="js-side">
  985. <input type="hidden" name="preview_start_side" value="" class="js-start-side">
  986. <input type="hidden" name="start_commit_oid" value="false" class="js-start-commit-oid">
  987. <input type="hidden" name="end_commit_oid" value="false" class="js-end-commit-oid">
  988. <input type="hidden" name="base_commit_oid" value="false" class="js-base-commit-oid">
  989. <input type="hidden" name="comment_id" value="" class="js-comment-id">
  990. <div class="comment js-suggested-changes-container" data-thread-side="">
  991. <div class="comment-body markdown-body js-preview-body" data-skip-sizing="" style="max-height:50vh;">
  992. <p>Nothing to preview</p>
  993. </div>
  994. </div>
  995. </div>
  996. <div class="comment-form-error mb-2 js-comment-update-error" hidden=""></div>
  997. </tab-container>
  998. <div class="form-actions float-md-right float-none px-md-2 px-0">
  999. <div class="position-relative float-md-right float-none ml-md-1 ml-0">
  1000. <button name="single_comment" type="submit" value="1" class="btn review-simple-reply-button js-quick-submit-alternative mr-md-1 mr-0 width-full width-md-auto mb-md-0 mb-2 " data-disable-invalid="" data-disable-with="" disabled="disabled">
  1001. Add single comment
  1002. </button>
  1003. </div>
  1004. <button class="btn js-hide-inline-comment-form float-md-right float-none width-full width-md-auto" data-confirm-cancel-text="Are you sure you want to discard your unsaved changes?" type="button">Cancel</button>
  1005. </div>
  1006. </form> </div>
  1007. </div>
  1008. </div>
  1009. </td>
  1010. </tr>
  1011. </tbody>
  1012. </table>
  1013. <a name="diff-stat"></a>
  1014. <div id="toc" class="details-collapse table-of-contents js-details-container Details">
  1015. <div class="BtnGroup float-right ml-2" data-ga-load="Diff, view, Viewed Unified Diff">
  1016. <a class="btn btn-sm BtnGroup-item selected" aria-current="true" href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?branch=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;diff=unified">
  1017. Unified
  1018. </a>
  1019. <a class="btn btn-sm BtnGroup-item" href="https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?branch=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;diff=split">
  1020. Split
  1021. </a>
  1022. </div>
  1023. <div class="toc-diff-stats">
  1024. <svg class="octicon octicon-file-diff" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h10.5a.25.25 0 00.25-.25V4.664a.25.25 0 00-.073-.177l-2.914-2.914a.25.25 0 00-.177-.073H2.75zM1 1.75C1 .784 1.784 0 2.75 0h7.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16H2.75A1.75 1.75 0 011 14.25V1.75zm7 1.5a.75.75 0 01.75.75v1.5h1.5a.75.75 0 010 1.5h-1.5v1.5a.75.75 0 01-1.5 0V7h-1.5a.75.75 0 010-1.5h1.5V4A.75.75 0 018 3.25zm-3 8a.75.75 0 01.75-.75h4.5a.75.75 0 010 1.5h-4.5a.75.75 0 01-.75-.75z"></path></svg>
  1025. Showing
  1026. <button type="button" class="btn-link js-details-target" aria-expanded="false">
  1027. 2 changed files
  1028. </button>
  1029. with
  1030. <strong>22 additions</strong>
  1031. and <strong>0 deletions</strong>.
  1032. </div>
  1033. <ol class="content collapse js-transitionable">
  1034. <li>
  1035. <span class="diffstat float-right">
  1036. <span class="text-green">
  1037. +5
  1038. </span>
  1039. <span class="text-red">
  1040. −0
  1041. </span>
  1042. <a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="tooltipped tooltipped-s" aria-label="5 lines changed">
  1043. <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span>
  1044. </a>
  1045. </span>
  1046. <svg title="modified" class="octicon octicon-diff-modified" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 2.5h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75a.25.25 0 01.25-.25zM13.25 1H2.75A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1zM8 10a2 2 0 100-4 2 2 0 000 4z"></path></svg>
  1047. <a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed">CHANGELOG.md</a>
  1048. </li>
  1049. <li>
  1050. <span class="diffstat float-right">
  1051. <span class="text-green">
  1052. +17
  1053. </span>
  1054. <span class="text-red">
  1055. −0
  1056. </span>
  1057. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="tooltipped tooltipped-s" aria-label="17 lines changed">
  1058. <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span>
  1059. </a>
  1060. </span>
  1061. <svg title="modified" class="octicon octicon-diff-modified" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.75 2.5h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75a.25.25 0 01.25-.25zM13.25 1H2.75A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1zM8 10a2 2 0 100-4 2 2 0 000 4z"></path></svg>
  1062. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144">talpid-core/src/firewall/linux.rs</a>
  1063. </li>
  1064. </ol>
  1065. </div>
  1066. <div id="files" class="diff-view commentable">
  1067. <div class="js-diff-progressive-container">
  1068. <div id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-details-container-group="file" class="file js-file js-details-container js-targetable-element Details
  1069. Details--on open
  1070. soft-wrap
  1071. file-type-prose
  1072. show-inline-notes
  1073. " data-file-type=".md" data-file-deleted="false">
  1074. <div class="file-header d-flex flex-md-row flex-column flex-md-items-center file-header--expandable js-file-header " data-path="CHANGELOG.md" data-short-path="06572a9" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-file-type=".md" data-file-deleted="false">
  1075. <div class="file-info flex-auto min-width-0 mb-md-0 mb-2">
  1076. <button type="button" class="btn-octicon js-details-target" aria-label="Toggle diff contents" aria-expanded="true" style="width: 22px;">
  1077. <svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
  1078. <svg class="octicon octicon-chevron-right Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.22 3.22a.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.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"></path></svg>
  1079. </button>
  1080. <span class="diffstat tooltipped tooltipped-e" aria-label="5 changes: 5 additions &amp; 0 deletions">5 <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span></span>
  1081. <a title="CHANGELOG.md" class="link-gray-dark" href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed">CHANGELOG.md</a>
  1082. <clipboard-copy value="CHANGELOG.md" data-copy-feedback="Copied!" aria-label="Copy" class="js-clipboard-copy zeroclipboard-link text-gray link-hover-blue" tabindex="0" role="button">
  1083. <svg class="octicon octicon-clippy d-inline-block mx-1 js-clipboard-clippy-icon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1084. <svg class="octicon octicon-check js-clipboard-check-icon mx-1 d-inline-block d-none text-green" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1085. </clipboard-copy>
  1086. </div>
  1087. <div class="file-actions pt-0 mb-md-0 mb-2 ml-md-2 flex-shrink-0 flex-md-justify-end">
  1088. <div class="d-flex flex-justify-end">
  1089. <span class="BtnGroup flex-auto min-width-0">
  1090. <!-- '"` --><!-- </textarea></xmp> --><form class="BtnGroup-parent js-prose-diff-toggle-form" action="/mullvad/mullvadvpn-app/diffs/0?commentable=true&amp;commit=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;sha1=b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0&amp;sha2=ef5886281dd84b450ae25a9ffca036cffd16abd1" accept-charset="UTF-8" method="get"> <button class="btn btn-sm BtnGroup-item tooltipped tooltipped-w source js-source selected" aria-current="true" aria-label="Display the source diff" type="submit" data-disable-with="">
  1091. <svg class="octicon octicon-code" 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>
  1092. </button>
  1093. </form> <!-- '"` --><!-- </textarea></xmp> --><form class="BtnGroup-parent js-prose-diff-toggle-form" action="/mullvad/mullvadvpn-app/diffs/0?commentable=true&amp;commit=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;sha1=b94cdac690cbb51cbee07d5bd2f011e80a7f2ef0&amp;sha2=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;short_path=06572a9" accept-charset="UTF-8" method="get"> <button class="btn btn-sm BtnGroup-item tooltipped tooltipped-w rendered js-rendered" aria-label="Display the rich diff" type="submit" data-disable-with="">
  1094. <svg class="octicon octicon-file" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z"></path></svg>
  1095. </button>
  1096. </form> </span>
  1097. <details class="js-file-header-dropdown dropdown details-overlay details-reset pr-2 pl-2">
  1098. <summary class="height-full" aria-haspopup="menu" role="button">
  1099. <div class="height-full d-flex flex-items-center link-gray">
  1100. <svg aria-label="Show options" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><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>
  1101. </div>
  1102. </summary>
  1103. <details-menu class="dropdown-menu dropdown-menu-sw show-more-popover text-gray-dark position-absolute f5" style="width:185px; z-index:99; right: -4px;" role="menu">
  1104. <label role="menuitemradio" class="dropdown-item btn-link text-normal d-block pl-5" tabindex="0" aria-checked="true">
  1105. <span class="position-absolute" style="margin-left: -20px;"><svg class="octicon octicon-check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  1106. <input type="checkbox" checked="checked" class="d-none js-toggle-file-notes">
  1107. Show comments
  1108. </label>
  1109. <div role="none" class="dropdown-divider"></div>
  1110. <a href="https://github.com/mullvad/mullvadvpn-app/blob/ef5886281dd84b450ae25a9ffca036cffd16abd1/CHANGELOG.md" class="pl-5 dropdown-item btn-link" rel="nofollow" role="menuitem" data-ga-click="View file, click, location:files_changed_dropdown">
  1111. View file
  1112. </a>
  1113. <button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to make changes.">
  1114. Edit file
  1115. </button>
  1116. <button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to delete this file.">
  1117. Delete file
  1118. </button>
  1119. <div role="none" class="dropdown-divider"></div>
  1120. </details-menu>
  1121. </details>
  1122. </div>
  1123. </div>
  1124. </div>
  1125. <div class="js-file-content Details-content--hidden" data-hydro-view="{&quot;event_type&quot;:&quot;pull_request.select_diff_range&quot;,&quot;payload&quot;:{&quot;actor_id&quot;:15262083,&quot;pull_request_id&quot;:null,&quot;repository_id&quot;:null,&quot;diff_type&quot;:&quot;UNIFIED&quot;,&quot;whitespace_ignored&quot;:false,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-view-hmac="a61db3c6d5b7f2d69d089a0d3e0173d5861c4b240a5674105b596500325f89ab">
  1126. <div class="data highlight js-blob-wrapper " style="overflow-x: auto">
  1127. <table class="diff-table js-diff-table tab-size " data-tab-size="8" data-diff-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-paste-markdown-skip="">
  1128. <colgroup>
  1129. <col width="40">
  1130. <col width="40">
  1131. <col>
  1132. </colgroup>
  1133. <tbody><tr class="js-expandable-line" data-position="0">
  1134. <td class="blob-num blob-num-expandable" colspan="2">
  1135. <a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="js-expand directional-expander single-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/bf615a4d2473c78c24b54da7384243fe13c47ff3?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=&amp;last_right=&amp;left=26&amp;left_hunk_size=6&amp;mode=100644&amp;path=CHANGELOG.md&amp;right=26&amp;right_hunk_size=11" data-left-range="1-25" data-right-range="1-25">
  1136. <svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
  1137. </a>
  1138. </td>
  1139. <td class="blob-code blob-code-inner blob-code-hunk">@@ -26,6 +26,11 @@ Line wrap the file at 100 chars. Th</td>
  1140. </tr>
  1141. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1142. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td>
  1143. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td>
  1144. <td class="blob-code blob-code-context">
  1145. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="1" data-side="right" data-line="26" data-original-line=" ### Fixed" type="button" aria-label="Add line comment">
  1146. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1147. </button>
  1148. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Fixed</span></span></td>
  1149. </tr>
  1150. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1151. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td>
  1152. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td>
  1153. <td class="blob-code blob-code-context">
  1154. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="2" data-side="right" data-line="27" data-original-line=" - Fix improved WireGuard port selection" type="button" aria-label="Add line comment">
  1155. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1156. </button>
  1157. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-v">-</span> Fix improved WireGuard port selection</span></td>
  1158. </tr>
  1159. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1160. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td>
  1161. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td>
  1162. <td class="blob-code blob-code-context">
  1163. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="3" data-side="right" data-line="28" data-original-line=" " type="button" aria-label="Add line comment">
  1164. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1165. </button>
  1166. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
  1167. </tr>
  1168. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1169. <td class="blob-num blob-num-addition empty-cell"></td>
  1170. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1171. <td class="blob-code blob-code-addition">
  1172. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="4" data-side="right" data-line="29" data-original-line="+### Security" type="button" aria-label="Add line comment">
  1173. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1174. </button>
  1175. <span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Security</span></span></td>
  1176. </tr>
  1177. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1178. <td class="blob-num blob-num-addition empty-cell"></td>
  1179. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1180. <td class="blob-code blob-code-addition">
  1181. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="5" data-side="right" data-line="30" data-original-line="+#### Linux" type="button" aria-label="Add line comment">
  1182. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1183. </button>
  1184. <span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-mh"><span class="pl-mh">####</span><span class="pl-mh"> </span>Linux</span></span></td>
  1185. </tr>
  1186. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1187. <td class="blob-num blob-num-addition empty-cell"></td>
  1188. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1189. <td class="blob-code blob-code-addition">
  1190. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="6" data-side="right" data-line="31" data-original-line="+- Stop [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122) by dropping all packets destined" type="button" aria-label="Add line comment">
  1191. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1192. </button>
  1193. <span class="blob-code-inner blob-code-marker" data-code-marker="+"><span class="pl-v">-</span> Stop [<span class="pl-e">CVE-2019-14899</span>](https://seclists.org/oss-sec/2019/q4/122) by dropping all packets destined</span></td>
  1194. </tr>
  1195. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1196. <td class="blob-num blob-num-addition empty-cell"></td>
  1197. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1198. <td class="blob-code blob-code-addition">
  1199. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="7" data-side="right" data-line="32" data-original-line="+ for the tunnel IP coming in on some other interface than the tunnel." type="button" aria-label="Add line comment">
  1200. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1201. </button>
  1202. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> for the tunnel IP coming in on some other interface than the tunnel.</span></td>
  1203. </tr>
  1204. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1205. <td class="blob-num blob-num-addition empty-cell"></td>
  1206. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1207. <td class="blob-code blob-code-addition">
  1208. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="8" data-side="right" data-line="33" data-original-line="+" type="button" aria-label="Add line comment">
  1209. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1210. </button>
  1211. <span class="blob-code-inner blob-code-marker" data-code-marker="+"><br></span></td>
  1212. </tr>
  1213. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1214. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td>
  1215. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td>
  1216. <td class="blob-code blob-code-context">
  1217. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="9" data-side="right" data-line="34" data-original-line=" " type="button" aria-label="Add line comment">
  1218. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1219. </button>
  1220. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
  1221. </tr>
  1222. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1223. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td>
  1224. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td>
  1225. <td class="blob-code blob-code-context">
  1226. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="10" data-side="right" data-line="35" data-original-line=" ## [2019.10-beta2] - 2019-12-05" type="button" aria-label="Add line comment">
  1227. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1228. </button>
  1229. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">##</span><span class="pl-mh"> </span>[2019.10-beta2] - 2019-12-05</span></span></td>
  1230. </tr>
  1231. <tr data-hunk="0310618f7164decce0aeb32049d4da440be801498302649a9d49486f61d0d456">
  1232. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td>
  1233. <td id="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edR36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td>
  1234. <td class="blob-code blob-code-context">
  1235. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="CHANGELOG.md" data-anchor="diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" data-position="11" data-side="right" data-line="36" data-original-line=" ### Added" type="button" aria-label="Add line comment">
  1236. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1237. </button>
  1238. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><span class="pl-mh"><span class="pl-mh">###</span><span class="pl-mh"> </span>Added</span></span></td>
  1239. </tr>
  1240. <tr class="js-expandable-line" data-position="">
  1241. <td class="blob-num blob-num-expandable" colspan="2">
  1242. <a href="#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed" class="js-expand directional-expander single-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/bf615a4d2473c78c24b54da7384243fe13c47ff3?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=31&amp;last_right=36&amp;left=968&amp;left_hunk_size=&amp;mode=100644&amp;path=CHANGELOG.md&amp;right=968&amp;right_hunk_size=" data-left-range="32-967" data-right-range="37-967">
  1243. <svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
  1244. </a>
  1245. </td>
  1246. <td class="blob-code blob-code-inner blob-code-hunk"></td>
  1247. </tr>
  1248. </tbody></table>
  1249. </div>
  1250. </div>
  1251. </div>
  1252. <div id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-details-container-group="file" class="file js-file js-details-container js-targetable-element Details
  1253. Details--on open
  1254. show-inline-notes
  1255. " data-file-type=".rs" data-file-deleted="false">
  1256. <div class="file-header d-flex flex-md-row flex-column flex-md-items-center file-header--expandable js-file-header " data-path="talpid-core/src/firewall/linux.rs" data-short-path="9b97aa4" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-file-type=".rs" data-file-deleted="false">
  1257. <div class="file-info flex-auto min-width-0 mb-md-0 mb-2">
  1258. <button type="button" class="btn-octicon js-details-target" aria-label="Toggle diff contents" aria-expanded="true" style="width: 22px;">
  1259. <svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
  1260. <svg class="octicon octicon-chevron-right Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.22 3.22a.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.06L9.94 8 6.22 4.28a.75.75 0 010-1.06z"></path></svg>
  1261. </button>
  1262. <span class="diffstat tooltipped tooltipped-e" aria-label="17 changes: 17 additions &amp; 0 deletions">17 <span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span><span class="diffstat-block-added"></span></span>
  1263. <a title="talpid-core/src/firewall/linux.rs" class="link-gray-dark" href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144">talpid-core/src/firewall/linux.rs</a>
  1264. <clipboard-copy value="talpid-core/src/firewall/linux.rs" data-copy-feedback="Copied!" aria-label="Copy" class="js-clipboard-copy zeroclipboard-link text-gray link-hover-blue" tabindex="0" role="button">
  1265. <svg class="octicon octicon-clippy d-inline-block mx-1 js-clipboard-clippy-icon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1266. <svg class="octicon octicon-check js-clipboard-check-icon mx-1 d-inline-block d-none text-green" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1267. </clipboard-copy>
  1268. </div>
  1269. <div class="file-actions pt-0 mb-md-0 mb-2 ml-md-2 flex-shrink-0 flex-md-justify-end">
  1270. <div class="d-flex flex-justify-end">
  1271. <details class="js-file-header-dropdown dropdown details-overlay details-reset pr-2 pl-2">
  1272. <summary class="height-full" aria-haspopup="menu" role="button">
  1273. <div class="height-full d-flex flex-items-center link-gray">
  1274. <svg aria-label="Show options" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><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>
  1275. </div>
  1276. </summary>
  1277. <details-menu class="dropdown-menu dropdown-menu-sw show-more-popover text-gray-dark position-absolute f5" style="width:185px; z-index:99; right: -4px;" role="menu">
  1278. <label role="menuitemradio" class="dropdown-item btn-link text-normal d-block pl-5" tabindex="0" aria-checked="true">
  1279. <span class="position-absolute" style="margin-left: -20px;"><svg class="octicon octicon-check" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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>
  1280. <input type="checkbox" checked="checked" class="d-none js-toggle-file-notes">
  1281. Show comments
  1282. </label>
  1283. <div role="none" class="dropdown-divider"></div>
  1284. <a href="https://github.com/mullvad/mullvadvpn-app/blob/ef5886281dd84b450ae25a9ffca036cffd16abd1/talpid-core/src/firewall/linux.rs" class="pl-5 dropdown-item btn-link" rel="nofollow" role="menuitem" data-ga-click="View file, click, location:files_changed_dropdown">
  1285. View file
  1286. </a>
  1287. <button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to make changes.">
  1288. Edit file
  1289. </button>
  1290. <button type="button" disabled="disabled" role="menuitem" class="pl-5 dropdown-item btn-link" aria-label="You must be signed in and have push access to delete this file.">
  1291. Delete file
  1292. </button>
  1293. <div role="none" class="dropdown-divider"></div>
  1294. </details-menu>
  1295. </details>
  1296. </div>
  1297. </div>
  1298. </div>
  1299. <div class="js-file-content Details-content--hidden" data-hydro-view="{&quot;event_type&quot;:&quot;pull_request.select_diff_range&quot;,&quot;payload&quot;:{&quot;actor_id&quot;:15262083,&quot;pull_request_id&quot;:null,&quot;repository_id&quot;:null,&quot;diff_type&quot;:&quot;UNIFIED&quot;,&quot;whitespace_ignored&quot;:false,&quot;originating_url&quot;:&quot;https://github.com/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1&quot;,&quot;user_id&quot;:15262083}}" data-hydro-view-hmac="a61db3c6d5b7f2d69d089a0d3e0173d5861c4b240a5674105b596500325f89ab">
  1300. <div class="data highlight js-blob-wrapper " style="overflow-x: auto">
  1301. <table class="diff-table js-diff-table tab-size " data-tab-size="4" data-diff-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-paste-markdown-skip="">
  1302. <tbody><tr class="js-expandable-line" data-position="0">
  1303. <td class="blob-num blob-num-expandable" colspan="2">
  1304. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander single-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=&amp;last_right=&amp;left=362&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=362&amp;right_hunk_size=9" data-left-range="1-361" data-right-range="1-361">
  1305. <svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
  1306. </a>
  1307. </td>
  1308. <td class="blob-code blob-code-inner blob-code-hunk">@@ -362,6 +362,9 @@ impl&lt;'a&gt; PolicyBatch&lt;'a&gt; {</td>
  1309. </tr>
  1310. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1311. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L362" data-line-number="362" class="blob-num blob-num-context js-linkable-line-number"></td>
  1312. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R362" data-line-number="362" class="blob-num blob-num-context js-linkable-line-number"></td>
  1313. <td class="blob-code blob-code-context">
  1314. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="1" data-side="right" data-line="362" data-original-line=" self.add_dns_rule(tunnel, TransportProtocol::Udp)?;" type="button" aria-label="Add line comment">
  1315. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1316. </button>
  1317. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_dns_rule</span>(tunnel, TransportProtocol<span class="pl-k">::</span>Udp)?;</span></td>
  1318. </tr>
  1319. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1320. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L363" data-line-number="363" class="blob-num blob-num-context js-linkable-line-number"></td>
  1321. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R363" data-line-number="363" class="blob-num blob-num-context js-linkable-line-number"></td>
  1322. <td class="blob-code blob-code-context">
  1323. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="2" data-side="right" data-line="363" data-original-line=" self.add_dns_rule(tunnel, TransportProtocol::Tcp)?;" type="button" aria-label="Add line comment">
  1324. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1325. </button>
  1326. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_dns_rule</span>(tunnel, TransportProtocol<span class="pl-k">::</span>Tcp)?;</span></td>
  1327. </tr>
  1328. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1329. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L364" data-line-number="364" class="blob-num blob-num-context js-linkable-line-number"></td>
  1330. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R364" data-line-number="364" class="blob-num blob-num-context js-linkable-line-number"></td>
  1331. <td class="blob-code blob-code-context">
  1332. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="3" data-side="right" data-line="364" data-original-line=" self.add_allow_tunnel_rules(tunnel)?;" type="button" aria-label="Add line comment">
  1333. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1334. </button>
  1335. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">self</span>.<span class="pl-en">add_allow_tunnel_rules</span>(tunnel)?;</span></td>
  1336. </tr>
  1337. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1338. <td class="blob-num blob-num-addition empty-cell"></td>
  1339. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R365" data-line-number="365" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1340. <td class="blob-code blob-code-addition">
  1341. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="4" data-side="right" data-line="365" data-original-line="+ if *allow_lan {" type="button" aria-label="Add line comment">
  1342. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1343. </button>
  1344. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">if</span> <span class="pl-k">*</span>allow_lan {</span></td>
  1345. </tr>
  1346. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1347. <td class="blob-num blob-num-addition empty-cell"></td>
  1348. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R366" data-line-number="366" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1349. <td class="blob-code blob-code-addition">
  1350. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="5" data-side="right" data-line="366" data-original-line="+ self.add_block_cve_2019_14899(tunnel);" type="button" aria-label="Add line comment">
  1351. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1352. </button>
  1353. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c1">self</span>.<span class="pl-en">add_block_cve_2019_14899</span>(tunnel);</span></td>
  1354. </tr>
  1355. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1356. <td class="blob-num blob-num-addition empty-cell"></td>
  1357. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R367" data-line-number="367" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1358. <td class="blob-code blob-code-addition">
  1359. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="6" data-side="right" data-line="367" data-original-line="+ }" type="button" aria-label="Add line comment">
  1360. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1361. </button>
  1362. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
  1363. </tr>
  1364. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1365. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L365" data-line-number="365" class="blob-num blob-num-context js-linkable-line-number"></td>
  1366. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R368" data-line-number="368" class="blob-num blob-num-context js-linkable-line-number"></td>
  1367. <td class="blob-code blob-code-context">
  1368. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="7" data-side="right" data-line="368" data-original-line=" *allow_lan" type="button" aria-label="Add line comment">
  1369. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1370. </button>
  1371. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">*</span>allow_lan</span></td>
  1372. </tr>
  1373. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1374. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L366" data-line-number="366" class="blob-num blob-num-context js-linkable-line-number"></td>
  1375. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R369" data-line-number="369" class="blob-num blob-num-context js-linkable-line-number"></td>
  1376. <td class="blob-code blob-code-context">
  1377. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="8" data-side="right" data-line="369" data-original-line=" }" type="button" aria-label="Add line comment">
  1378. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1379. </button>
  1380. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> }</span></td>
  1381. </tr>
  1382. <tr data-hunk="03cc8ecf43ee1f43b1c23c7d59a34b92bc68d8b2262a5e4cb4c74dc47b4866f8">
  1383. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L367" data-line-number="367" class="blob-num blob-num-context js-linkable-line-number"></td>
  1384. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R370" data-line-number="370" class="blob-num blob-num-context js-linkable-line-number"></td>
  1385. <td class="blob-code blob-code-context">
  1386. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="9" data-side="right" data-line="370" data-original-line=" FirewallPolicy::Blocked { allow_lan } =&gt; *allow_lan," type="button" aria-label="Add line comment">
  1387. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1388. </button>
  1389. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> FirewallPolicy<span class="pl-k">::</span>Blocked { allow_lan } <span class="pl-k">=&gt;</span> <span class="pl-k">*</span>allow_lan,</span></td>
  1390. </tr>
  1391. <tr class="js-expandable-line" data-position="10">
  1392. <td class="blob-num blob-num-expandable" colspan="2">
  1393. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=367&amp;last_right=370&amp;left=470&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=473&amp;right_hunk_size=20" data-left-range="368-417" data-right-range="371-420">
  1394. <svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
  1395. </a>
  1396. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander" title="Expand Up" aria-label="Expand Up" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=up&amp;in_wiki_context=&amp;last_left=367&amp;last_right=370&amp;left=470&amp;left_hunk_size=6&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=473&amp;right_hunk_size=20" data-left-range="418-469" data-right-range="421-472">
  1397. <svg class="octicon octicon-fold-up" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.823 1.677L4.927 4.573A.25.25 0 005.104 5H7.25v3.236a.75.75 0 101.5 0V5h2.146a.25.25 0 00.177-.427L8.177 1.677a.25.25 0 00-.354 0zM13.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zm-3.75.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM7.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM4 11.75a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75zM1.75 11a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5z"></path></svg>
  1398. </a>
  1399. </td>
  1400. <td class="blob-code blob-code-inner blob-code-hunk">@@ -470,6 +473,20 @@ impl&lt;'a&gt; PolicyBatch&lt;'a&gt; {</td>
  1401. </tr>
  1402. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1403. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L470" data-line-number="470" class="blob-num blob-num-context js-linkable-line-number"></td>
  1404. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R473" data-line-number="473" class="blob-num blob-num-context js-linkable-line-number"></td>
  1405. <td class="blob-code blob-code-context">
  1406. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="11" data-side="right" data-line="473" data-original-line=" Ok(())" type="button" aria-label="Add line comment">
  1407. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1408. </button>
  1409. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c1">Ok</span>(())</span></td>
  1410. </tr>
  1411. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1412. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L471" data-line-number="471" class="blob-num blob-num-context js-linkable-line-number"></td>
  1413. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R474" data-line-number="474" class="blob-num blob-num-context js-linkable-line-number"></td>
  1414. <td class="blob-code blob-code-context">
  1415. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="12" data-side="right" data-line="474" data-original-line=" }" type="button" aria-label="Add line comment">
  1416. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1417. </button>
  1418. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> }</span></td>
  1419. </tr>
  1420. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1421. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L472" data-line-number="472" class="blob-num blob-num-context js-linkable-line-number"></td>
  1422. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R475" data-line-number="475" class="blob-num blob-num-context js-linkable-line-number"></td>
  1423. <td class="blob-code blob-code-context">
  1424. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="13" data-side="right" data-line="475" data-original-line=" " type="button" aria-label="Add line comment">
  1425. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1426. </button>
  1427. <span class="blob-code-inner blob-code-marker" data-code-marker=" "><br></span></td>
  1428. </tr>
  1429. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1430. <td class="blob-num blob-num-addition empty-cell"></td>
  1431. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R476" data-line-number="476" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1432. <td class="blob-code blob-code-addition">
  1433. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="14" data-side="right" data-line="476" data-original-line="+ /// Adds rules for stopping [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122)." type="button" aria-label="Add line comment">
  1434. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1435. </button>
  1436. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// Adds rules for stopping [CVE-2019-14899](https://seclists.org/oss-sec/2019/q4/122).</span></span></td>
  1437. </tr>
  1438. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1439. <td class="blob-num blob-num-addition empty-cell"></td>
  1440. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R477" data-line-number="477" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1441. <td class="blob-code blob-code-addition">
  1442. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="15" data-side="right" data-line="477" data-original-line="+ /// An attacker on the same local network as the VPN connected device could figure out" type="button" aria-label="Add line comment">
  1443. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1444. </button>
  1445. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// An attacker on the same local network as the VPN connected device could figure out</span></span></td>
  1446. </tr>
  1447. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1448. <td class="blob-num blob-num-addition empty-cell"></td>
  1449. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R478" data-line-number="478" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1450. <td class="blob-code blob-code-addition">
  1451. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="16" data-side="right" data-line="478" data-original-line="+ /// the tunnel IP the device used if the device was set to not filter reverse path (rp_filter.)" type="button" aria-label="Add line comment">
  1452. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1453. </button>
  1454. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// the tunnel IP the device used if the device was set to not filter reverse path (rp_filter.)</span></span></td>
  1455. </tr>
  1456. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1457. <td class="blob-num blob-num-addition empty-cell"></td>
  1458. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R479" data-line-number="479" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1459. <td class="blob-code blob-code-addition">
  1460. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="17" data-side="right" data-line="479" data-original-line="+ /// These rules stops all packets coming in to the tunnel IP. As such, these rules must come" type="button" aria-label="Add line comment">
  1461. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1462. </button>
  1463. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// These rules stops all packets coming in to the tunnel IP. As such, these rules must come</span></span></td>
  1464. </tr>
  1465. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1466. <td class="blob-num blob-num-addition empty-cell"></td>
  1467. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R480" data-line-number="480" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1468. <td class="blob-code blob-code-addition">
  1469. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="18" data-side="right" data-line="480" data-original-line="+ /// after the rule allowing the tunnel, otherwise even the tunnel can't talk to that IP." type="button" aria-label="Add line comment">
  1470. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1471. </button>
  1472. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c">/// after the rule allowing the tunnel, otherwise even the tunnel can't talk to that IP.</span></span></td>
  1473. </tr>
  1474. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1475. <td class="blob-num blob-num-addition empty-cell"></td>
  1476. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R481" data-line-number="481" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1477. <td class="blob-code blob-code-addition">
  1478. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="19" data-side="right" data-line="481" data-original-line="+ fn add_block_cve_2019_14899(&amp;mut self, tunnel: &amp;tunnel::TunnelMetadata) {" type="button" aria-label="Add line comment">
  1479. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1480. </button>
  1481. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">fn</span> <span class="pl-en">add_block_cve_2019_14899</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> <span class="pl-c1">self</span>, tunnel: <span class="pl-k">&amp;</span>tunnel::TunnelMetadata) {</span></td>
  1482. </tr>
  1483. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1484. <td class="blob-num blob-num-addition empty-cell"></td>
  1485. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R482" data-line-number="482" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1486. <td class="blob-code blob-code-addition">
  1487. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="20" data-side="right" data-line="482" data-original-line="+ for tunnel_ip in &amp;tunnel.ips {" type="button" aria-label="Add line comment">
  1488. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1489. </button>
  1490. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">for</span> tunnel_ip <span class="pl-k">in</span> <span class="pl-k">&amp;</span>tunnel.ips {</span></td>
  1491. </tr>
  1492. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1493. <td class="blob-num blob-num-addition empty-cell"></td>
  1494. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R483" data-line-number="483" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1495. <td class="blob-code blob-code-addition">
  1496. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="21" data-side="right" data-line="483" data-original-line="+ let mut rule = Rule::new(&amp;self.in_chain);" type="button" aria-label="Add line comment">
  1497. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1498. </button>
  1499. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-k">let</span> <span class="pl-k">mut</span> rule <span class="pl-k">=</span> Rule<span class="pl-k">::</span><span class="pl-en">new</span>(<span class="pl-k">&amp;</span><span class="pl-c1">self</span>.in_chain);</span></td>
  1500. </tr>
  1501. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1502. <td class="blob-num blob-num-addition empty-cell"></td>
  1503. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R484" data-line-number="484" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1504. <td class="blob-code blob-code-addition">
  1505. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="22" data-side="right" data-line="484" data-original-line="+ check_ip(&amp;mut rule, End::Dst, *tunnel_ip);" type="button" aria-label="Add line comment">
  1506. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1507. </button>
  1508. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-en">check_ip</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> rule, End<span class="pl-k">::</span>Dst, <span class="pl-k">*</span>tunnel_ip);</span></td>
  1509. </tr>
  1510. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1511. <td class="blob-num blob-num-addition empty-cell"></td>
  1512. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R485" data-line-number="485" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1513. <td class="blob-code blob-code-addition">
  1514. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="23" data-side="right" data-line="485" data-original-line="+ add_verdict(&amp;mut rule, &amp;Verdict::Drop);" type="button" aria-label="Add line comment">
  1515. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1516. </button>
  1517. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-en">add_verdict</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> rule, <span class="pl-k">&amp;</span>Verdict<span class="pl-k">::</span><span class="pl-c1">Drop</span>);</span></td>
  1518. </tr>
  1519. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1520. <td class="blob-num blob-num-addition empty-cell"></td>
  1521. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R486" data-line-number="486" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1522. <td class="blob-code blob-code-addition">
  1523. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="24" data-side="right" data-line="486" data-original-line="+ self.batch.add(&amp;rule, nftnl::MsgType::Add);" type="button" aria-label="Add line comment">
  1524. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1525. </button>
  1526. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> <span class="pl-c1">self</span>.batch.<span class="pl-en">add</span>(<span class="pl-k">&amp;</span>rule, nftnl<span class="pl-k">::</span>MsgType<span class="pl-k">::</span>Add);</span></td>
  1527. </tr>
  1528. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1529. <td class="blob-num blob-num-addition empty-cell"></td>
  1530. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R487" data-line-number="487" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1531. <td class="blob-code blob-code-addition">
  1532. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="25" data-side="right" data-line="487" data-original-line="+ }" type="button" aria-label="Add line comment">
  1533. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1534. </button>
  1535. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
  1536. </tr>
  1537. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1538. <td class="blob-num blob-num-addition empty-cell"></td>
  1539. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R488" data-line-number="488" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1540. <td class="blob-code blob-code-addition">
  1541. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="26" data-side="right" data-line="488" data-original-line="+ }" type="button" aria-label="Add line comment">
  1542. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1543. </button>
  1544. <span class="blob-code-inner blob-code-marker" data-code-marker="+"> }</span></td>
  1545. </tr>
  1546. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1547. <td class="blob-num blob-num-addition empty-cell"></td>
  1548. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R489" data-line-number="489" class="blob-num blob-num-addition js-linkable-line-number"></td>
  1549. <td class="blob-code blob-code-addition">
  1550. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="27" data-side="right" data-line="489" data-original-line="+" type="button" aria-label="Add line comment">
  1551. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1552. </button>
  1553. <span class="blob-code-inner blob-code-marker" data-code-marker="+"><br></span></td>
  1554. </tr>
  1555. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1556. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L473" data-line-number="473" class="blob-num blob-num-context js-linkable-line-number"></td>
  1557. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R490" data-line-number="490" class="blob-num blob-num-context js-linkable-line-number"></td>
  1558. <td class="blob-code blob-code-context">
  1559. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="28" data-side="right" data-line="490" data-original-line=" fn add_allow_lan_rules(&amp;mut self) {" type="button" aria-label="Add line comment">
  1560. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1561. </button>
  1562. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">fn</span> <span class="pl-en">add_allow_lan_rules</span>(<span class="pl-k">&amp;</span><span class="pl-k">mut</span> <span class="pl-c1">self</span>) {</span></td>
  1563. </tr>
  1564. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1565. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L474" data-line-number="474" class="blob-num blob-num-context js-linkable-line-number"></td>
  1566. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R491" data-line-number="491" class="blob-num blob-num-context js-linkable-line-number"></td>
  1567. <td class="blob-code blob-code-context">
  1568. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="29" data-side="right" data-line="491" data-original-line=" // LAN -&gt; LAN" type="button" aria-label="Add line comment">
  1569. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1570. </button>
  1571. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-c">// LAN -&gt; LAN</span></span></td>
  1572. </tr>
  1573. <tr data-hunk="ecf39e09d734a5bb9ae51bbf24586ce817e22b2c7d41d769552e0fc7b65d27ab">
  1574. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144L475" data-line-number="475" class="blob-num blob-num-context js-linkable-line-number"></td>
  1575. <td id="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144R492" data-line-number="492" class="blob-num blob-num-context js-linkable-line-number"></td>
  1576. <td class="blob-code blob-code-context">
  1577. <button class="btn-link add-line-comment js-add-line-comment js-add-single-line-comment" data-path="talpid-core/src/firewall/linux.rs" data-anchor="diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" data-position="30" data-side="right" data-line="492" data-original-line=" for net in &amp;*super::ALLOWED_LAN_NETS {" type="button" aria-label="Add line comment">
  1578. <svg class="octicon octicon-plus" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1579. </button>
  1580. <span class="blob-code-inner blob-code-marker" data-code-marker=" "> <span class="pl-k">for</span> net <span class="pl-k">in</span> <span class="pl-k">&amp;</span><span class="pl-k">*</span><span class="pl-k">super</span><span class="pl-k">::</span>ALLOWED_LAN_NETS {</span></td>
  1581. </tr>
  1582. <tr class="js-expandable-line" data-position="">
  1583. <td class="blob-num blob-num-expandable" colspan="2">
  1584. <a href="#diff-9b97aa4e99bfed8a60b9ed235069118bebf033365efd0b3968c870375ee33144" class="js-expand directional-expander single-expander" title="Expand Down" aria-label="Expand Down" data-url="/mullvad/mullvadvpn-app/blob_excerpt/e2f6f4f73694de2429b2fb889b97b82f4c89cc89?diff=unified&amp;direction=down&amp;in_wiki_context=&amp;last_left=475&amp;last_right=492&amp;left=644&amp;left_hunk_size=&amp;mode=100644&amp;path=talpid-core%2Fsrc%2Ffirewall%2Flinux.rs&amp;right=644&amp;right_hunk_size=" data-left-range="476-643" data-right-range="493-643">
  1585. <svg class="octicon octicon-fold-down" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.177 14.323l2.896-2.896a.25.25 0 00-.177-.427H8.75V7.764a.75.75 0 10-1.5 0V11H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0zM2.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM6 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zM8.25 5a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5zM12 4.25a.75.75 0 01-.75.75h-.5a.75.75 0 010-1.5h.5a.75.75 0 01.75.75zm2.25.75a.75.75 0 000-1.5h-.5a.75.75 0 000 1.5h.5z"></path></svg>
  1586. </a>
  1587. </td>
  1588. <td class="blob-code blob-code-inner blob-code-hunk"></td>
  1589. </tr>
  1590. </tbody></table>
  1591. </div>
  1592. </div>
  1593. </div>
  1594. </div>
  1595. </div>
  1596. <button type="button" class="js-toggle-all-file-notes" data-hotkey="i" style="display:none">Toggle all file notes</button>
  1597. <svg aria-hidden="true" width="320px" height="84px" viewBox="0 0 340 84" version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" class="diff-placeholder-svg position-absolute bottom-0">
  1598. <defs>
  1599. <clipPath id="diff-placeholder">
  1600. <rect x="0" y="0" width="67.0175439" height="11.9298746" rx="2"></rect>
  1601. <rect x="18.9473684" y="47.7194983" width="100.701754" height="11.9298746" rx="2"></rect>
  1602. <rect x="0" y="71.930126" width="37.8947368" height="11.9298746" rx="2"></rect>
  1603. <rect x="127.017544" y="48.0703769" width="53.3333333" height="11.9298746" rx="2"></rect>
  1604. <rect x="187.719298" y="48.0703769" width="72.9824561" height="11.9298746" rx="2"></rect>
  1605. <rect x="76.8421053" y="0" width="140.350877" height="11.9298746" rx="2"></rect>
  1606. <rect x="17.8947368" y="23.8597491" width="140.350877" height="11.9298746" rx="2"></rect>
  1607. <rect x="166.315789" y="23.8597491" width="173.684211" height="11.9298746" rx="2"></rect>
  1608. </clipPath>
  1609. <linearGradient id="animated-diff-gradient" x1="0" x2="0" y1="0" y2="1" spreadMethod="reflect">
  1610. <stop offset="0" stop-color="#eee"></stop>
  1611. <stop offset="0.2" stop-color="#eee"></stop>
  1612. <stop offset="0.5" stop-color="#ddd"></stop>
  1613. <stop offset="0.8" stop-color="#eee"></stop>
  1614. <stop offset="1" stop-color="#eee"></stop>
  1615. <animateTransform attributeName="y1" values="0%; 100%; 0" dur="1s" repeatCount="3"></animateTransform>
  1616. <animateTransform attributeName="y2" values="100%; 200%; 0" dur="1s" repeatCount="3"></animateTransform>
  1617. </linearGradient>
  1618. </defs>
  1619. </svg>
  1620. <div id="all_commit_comments" class="js-quote-selection-container" data-quote-markdown=".js-comment-body">
  1621. <div class="mb-1 mb-md-3">
  1622. <div id="partial-visible-comments-header" class="d-flex flex-items-center flex-column-reverse flex-md-row">
  1623. <h4 class="flex-auto text-md-left text-center">
  1624. 0 comments
  1625. on commit <code class="commit-sha">ef58862</code>
  1626. </h4>
  1627. <div class="flex-shrink-0 mb-2 mb-md-0">
  1628. </div>
  1629. </div>
  1630. </div>
  1631. <div id="comments" class="comment-holder ml-0 pl-0 ml-md-6 pl-md-3">
  1632. <!-- Rendered timeline since 2019-12-06 06:30:13 -->
  1633. <div id="partial-timeline-marker" class="js-timeline-marker js-socket-channel js-updatable-content" data-channel="eyJjIjoicmVwbzoxMTQ3NDI0MjI6Y29tbWl0OmVmNTg4NjI4MWRkODRiNDUwYWUyNWE5ZmZjYTAzNmNmZmQxNmFiZDEiLCJ0IjoxNjExNzE3MjM1fQ==--2860a5967f3b56b55c81e7668a4bb9826729f73aa06132bffb659cd7a4acd008" data-url="/mullvad/mullvadvpn-app/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1/show_partial?partial=commit%2Ftimeline_marker&amp;since=1575642613" data-last-modified="Fri, 06 Dec 2019 14:30:13 GMT">
  1634. </div>
  1635. </div>
  1636. <div class="timeline-comment-wrapper timeline-new-comment js-comment-container ml-0 pl-0 ml-md-6 pl-md-3 ">
  1637. <div class="d-none d-md-block">
  1638. <span class="timeline-comment-avatar "><a class="d-inline-block" data-hovercard-type="user" data-hovercard-url="/users/wtolley/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wtolley"><img class="avatar avatar-user" src="Stop%20CVE-2019-14899%20by%20dropping%20packets%20to%20tunnel%20IP%20%C2%B7%20mullvad_mullvadvpn-app@ef58862_files/15262083_002.png" alt="@wtolley" width="40" height="40"></a></span>
  1639. </div>
  1640. <!-- '"` --><!-- </textarea></xmp> --><form class="js-new-comment-form js-needs-timeline-marker-header" action="/mullvad/mullvadvpn-app/commit_comment/create" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="C05vrZkcIJm+G/iZAk76gdc5KoT0RsZJzEE9fqaL/KctHHGkcJqtWYEO/wRDxV547ely1mOSh0s7q/YrmCxSuA==">
  1641. <input type="text" name="required_field_feab" class="form-control" hidden="hidden"><input type="hidden" name="timestamp" value="1611717235938" class="form-control"><input type="hidden" name="timestamp_secret" value="f4565f83802732f6932cc988e5295126c71960f19d0c399eadcd704aee770187" class="form-control">
  1642. <div class="border-0 border-md timeline-comment">
  1643. <input type="hidden" name="commit_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
  1644. <input type="hidden" name="path" value="">
  1645. <tab-container class="js-previewable-comment-form previewable-comment-form write-selected" data-preview-url="/preview?markdown_unsupported=false&amp;repository=114742422&amp;sparkles_supported=false&amp;subject=ef5886281dd84b450ae25a9ffca036cffd16abd1&amp;subject_type=Commit">
  1646. <input type="hidden" value="VWXfERcfkWfkbo2FKMAIkNphVju9sYHKVJFE/jR7Eu9JTeGGDtd9c+THKgCZ+r2B/eY3qGj6Am1oKkJ4CPHdHA==" data-csrf="true" class="js-data-preview-url-csrf">
  1647. <div class="comment-form-head tabnav d-flex flex-justify-between mb-2 p-0 tabnav--responsive flex-column border-bottom-0 mb-0 mb-lg-2 flex-items-stretch border-lg-bottom color-border-primary flex-lg-items-center flex-lg-row">
  1648. <div class="tabnav-tabs mx-0 mx-md-2 mt-0 mt-md-2 no-wrap d-flex flex-auto d-md-block" role="tablist">
  1649. <button type="button" class="btn-link tabnav-tab write-tab js-write-tab px-3 px-sm-6 px-md-3 flex-1 flex-md-auto" role="tab" aria-selected="true" tabindex="0">
  1650. Write
  1651. </button>
  1652. <button type="button" class="btn-link tabnav-tab preview-tab js-preview-tab flex-1 flex-md-auto" role="tab" aria-selected="false" tabindex="-1">
  1653. Preview
  1654. </button>
  1655. </div>
  1656. <markdown-toolbar role="toolbar" aria-label="Composition" for="new_commit_comment_field" class="js-details-container Details toolbar-commenting d-flex no-wrap flex-items-start flex-wrap px-2 pt-2 pt-lg-0 border-md-top border-lg-top-0" tabindex="0">
  1657. <div class="d-block d-md-none flex-auto">
  1658. <button data-md-button="" tabindex="-1" type="button" aria-label="Toggle text tools" aria-expanded="false" class="js-details-target btn-link toolbar-item no-underline py-2 mr-1">
  1659. <svg class="octicon octicon-typography" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.21 8.5L4.574 3.594 2.857 8.5H6.21zm.5 1.5l.829 2.487a.75.75 0 001.423-.474L5.735 2.332a1.216 1.216 0 00-2.302-.018l-3.39 9.688a.75.75 0 001.415.496L2.332 10H6.71zm3.13-4.358C10.53 4.374 11.87 4 13 4c1.5 0 3 .939 3 2.601v5.649a.75.75 0 01-1.448.275C13.995 12.82 13.3 13 12.5 13c-.77 0-1.514-.231-2.078-.709-.577-.488-.922-1.199-.922-2.041 0-.694.265-1.411.887-1.944C11 7.78 11.88 7.5 13 7.5h1.5v-.899c0-.54-.5-1.101-1.5-1.101-.869 0-1.528.282-1.84.858a.75.75 0 11-1.32-.716zM14.5 9H13c-.881 0-1.375.22-1.637.444-.253.217-.363.5-.363.806 0 .408.155.697.39.896.249.21.63.354 1.11.354.732 0 1.26-.209 1.588-.449.35-.257.412-.495.412-.551V9z"></path></svg>
  1660. <svg class="octicon octicon-chevron-up Details-content--shown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.22 9.78a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0l4.25 4.25a.75.75 0 01-1.06 1.06L8 6.06 4.28 9.78a.75.75 0 01-1.06 0z"></path></svg>
  1661. <svg class="octicon octicon-chevron-down Details-content--hidden" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path></svg>
  1662. </button>
  1663. </div>
  1664. <div class="flex-nowrap d-none d-md-inline-block mr-3">
  1665. <md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
  1666. <svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
  1667. </md-header>
  1668. <md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
  1669. <svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
  1670. </md-bold>
  1671. <md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
  1672. <svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
  1673. </md-italic>
  1674. </div>
  1675. <div class="d-flex d-md-inline-block mr-0 mr-md-3">
  1676. <md-quote tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert a quote" data-ga-click="Markdown Toolbar, click, quote" role="button">
  1677. <svg class="octicon octicon-quote" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.75.75 0 000 1.5h10.5a.75.75 0 000-1.5H1.75zm4 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM2.5 7.75a.75.75 0 00-1.5 0v6a.75.75 0 001.5 0v-6z"></path></svg>
  1678. </md-quote>
  1679. <md-code tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Insert code" data-ga-click="Markdown Toolbar, click, code" role="button">
  1680. <svg class="octicon octicon-code" 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>
  1681. </md-code>
  1682. <button type="button" data-md-button="" tabindex="-1" class="toolbar-item text-center menu-target p-2 mx-1 d-md-none js-markdown-link-button" aria-label="Add a link" data-ga-click="Markdown Toolbar, click, saved reply">
  1683. <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
  1684. </button>
  1685. <template class="js-markdown-link-dialog">
  1686. <div class="Box-header">
  1687. <h3 class="Box-title">Insert Link</h3>
  1688. </div>
  1689. <div class="Box-body overflow-auto">
  1690. <div>
  1691. <label class="d-block mb-1" for="js-dialog-link-text">Link Text</label>
  1692. <input type="text" class="mb-3 form-control input-block" id="js-dialog-link-text" autofocus="">
  1693. </div>
  1694. <div>
  1695. <label class="d-block mb-1" for="js-dialog-link-href">URL</label>
  1696. <input type="url" class="mb-3 form-control input-block" id="js-dialog-link-href">
  1697. </div>
  1698. <div class="pt-3 border-top">
  1699. <button type="button" class="btn btn-primary btn-block js-markdown-link-insert" data-close-dialog="" data-for-textarea="new_commit_comment_field">
  1700. Add
  1701. </button>
  1702. </div>
  1703. </div>
  1704. </template>
  1705. <md-link tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 p-md-1 d-none d-md-block mx-1 js-modifier-label-key" aria-label="Add a link &lt;ctrl+k&gt;" data-ga-click="Markdown Toolbar, click, link" role="button" hotkey="k">
  1706. <svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
  1707. </md-link>
  1708. </div>
  1709. <div class="d-none d-md-inline-block mr-3">
  1710. <md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
  1711. <svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
  1712. </md-unordered-list>
  1713. <md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
  1714. <svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
  1715. </md-ordered-list>
  1716. <md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
  1717. <svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
  1718. </md-task-list>
  1719. </div>
  1720. <div class="d-flex d-xs-inline-block">
  1721. <md-mention tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Directly mention a user or team" data-ga-click="Markdown Toolbar, click, mention" role="button">
  1722. <svg class="octicon octicon-mention" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.75 2.37a6.5 6.5 0 006.5 11.26.75.75 0 01.75 1.298 8 8 0 113.994-7.273.754.754 0 01.006.095v1.5a2.75 2.75 0 01-5.072 1.475A4 4 0 1112 8v1.25a1.25 1.25 0 002.5 0V7.867a6.5 6.5 0 00-9.75-5.496V2.37zM10.5 8a2.5 2.5 0 10-5 0 2.5 2.5 0 005 0z"></path></svg>
  1723. </md-mention>
  1724. <label for="fc-new_commit_comment_field" data-md-button="" tabindex="-1" class="d-block d-md-none btn-link flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Attach an image or video">
  1725. <svg class="octicon octicon-image" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h.94a.76.76 0 01.03-.03l6.077-6.078a1.75 1.75 0 012.412-.06L14.5 10.31V2.75a.25.25 0 00-.25-.25H1.75zm12.5 11H4.81l5.048-5.047a.25.25 0 01.344-.009l4.298 3.889v.917a.25.25 0 01-.25.25zm1.75-.25V2.75A1.75 1.75 0 0014.25 1H1.75A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25zM5.5 6a.5.5 0 11-1 0 .5.5 0 011 0zM7 6a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>
  1726. </label>
  1727. <md-ref tabindex="-1" class="flex-auto text-center toolbar-item tooltipped tooltipped-sw p-2 p-md-1 mx-1" aria-label="Reference an issue, pull request, or discussion" data-ga-click="Markdown Toolbar, click, reference" role="button">
  1728. <svg class="octicon octicon-cross-reference" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 1.25v4.146a.25.25 0 01-.427.177L14.03 4.03l-3.75 3.75a.75.75 0 11-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0111.604 1h4.146a.25.25 0 01.25.25zM2.75 3.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 01.75.75v2.19l2.72-2.72a.75.75 0 01.53-.22h4.5a.25.25 0 00.25-.25v-2.5a.75.75 0 111.5 0v2.5A1.75 1.75 0 0113.25 13H9.06l-2.573 2.573A1.457 1.457 0 014 14.543V13H2.75A1.75 1.75 0 011 11.25v-7.5C1 2.784 1.784 2 2.75 2h5.5a.75.75 0 010 1.5h-5.5z"></path></svg>
  1729. </md-ref>
  1730. <details class="details-reset details-overlay flex-auto toolbar-item select-menu select-menu-modal-right js-saved-reply-container hx_rsm" tabindex="-1">
  1731. <summary data-md-button="" tabindex="-1" class="text-center menu-target py-2 p-md-1 hx_rsm-trigger ml-1" aria-label="Insert a reply" data-ga-click="Markdown Toolbar, click, saved reply" aria-haspopup="menu" role="button">
  1732. <svg class="octicon octicon-reply" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.78 1.97a.75.75 0 010 1.06L3.81 6h6.44A4.75 4.75 0 0115 10.75v2.5a.75.75 0 01-1.5 0v-2.5a3.25 3.25 0 00-3.25-3.25H3.81l2.97 2.97a.75.75 0 11-1.06 1.06L1.47 7.28a.75.75 0 010-1.06l4.25-4.25a.75.75 0 011.06 0z"></path></svg>
  1733. <span class="dropdown-caret hide-sm"></span>
  1734. </summary>
  1735. <details-menu style="z-index: 99;" class="select-menu-modal position-absolute right-0 js-saved-reply-menu hx_rsm-modal" data-menu-input="new_commit_comment_field_saved_reply_id" src="/settings/replies?context=none" preload="" role="menu">
  1736. <div class="select-menu-header d-flex">
  1737. <span class="select-menu-title flex-auto">Select a reply</span>
  1738. <code><span class="border rounded-1 p-1 mr-2">ctrl .</span></code>
  1739. </div>
  1740. <include-fragment role="menuitem" aria-label="Loading">
  1741. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="my-6 mx-auto d-block" width="32" height="32">
  1742. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  1743. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  1744. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  1745. </path>
  1746. </svg>
  1747. </include-fragment>
  1748. </details-menu>
  1749. </details>
  1750. </div>
  1751. <div class="Details-content--hidden d-block d-md-none width-full">
  1752. <md-header tabindex="-1" class="toolbar-item tooltipped tooltipped-sw py-2 pr-2 pl-1 mr-1" aria-label="Add header text" data-ga-click="Markdown Toolbar, click, header" role="button">
  1753. <svg class="octicon octicon-heading" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.75 2a.75.75 0 01.75.75V7h7V2.75a.75.75 0 011.5 0v10.5a.75.75 0 01-1.5 0V8.5h-7v4.75a.75.75 0 01-1.5 0V2.75A.75.75 0 013.75 2z"></path></svg>
  1754. </md-header>
  1755. <md-bold tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add bold text &lt;ctrl+b&gt;" data-ga-click="Markdown Toolbar, click, bold" role="button" hotkey="b">
  1756. <svg class="octicon octicon-bold" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 2a1 1 0 00-1 1v10a1 1 0 001 1h5.5a3.5 3.5 0 001.852-6.47A3.5 3.5 0 008.5 2H4zm4.5 5a1.5 1.5 0 100-3H5v3h3.5zM5 9v3h4.5a1.5 1.5 0 000-3H5z"></path></svg>
  1757. </md-bold>
  1758. <md-italic tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1 js-modifier-label-key" aria-label="Add italic text &lt;ctrl+i&gt;" data-ga-click="Markdown Toolbar, click, italic" role="button" hotkey="i">
  1759. <svg class="octicon octicon-italic" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6 2.75A.75.75 0 016.75 2h6.5a.75.75 0 010 1.5h-2.505l-3.858 9H9.25a.75.75 0 010 1.5h-6.5a.75.75 0 010-1.5h2.505l3.858-9H6.75A.75.75 0 016 2.75z"></path></svg>
  1760. </md-italic>
  1761. <md-unordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a bulleted list" data-ga-click="Markdown Toolbar, click, unordered list" role="button">
  1762. <svg class="octicon octicon-list-unordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path></svg>
  1763. </md-unordered-list>
  1764. <md-ordered-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a numbered list" data-ga-click="Markdown Toolbar, click, ordered list" role="button">
  1765. <svg class="octicon octicon-list-ordered" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.003 2.5a.5.5 0 00-.723-.447l-1.003.5a.5.5 0 00.446.895l.28-.14V6H.5a.5.5 0 000 1h2.006a.5.5 0 100-1h-.503V2.5zM5 3.25a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 3.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5A.75.75 0 015 8.25zm0 5a.75.75 0 01.75-.75h8.5a.75.75 0 010 1.5h-8.5a.75.75 0 01-.75-.75zM.924 10.32l.003-.004a.851.851 0 01.144-.153A.66.66 0 011.5 10c.195 0 .306.068.374.146a.57.57 0 01.128.376c0 .453-.269.682-.8 1.078l-.035.025C.692 11.98 0 12.495 0 13.5a.5.5 0 00.5.5h2.003a.5.5 0 000-1H1.146c.132-.197.351-.372.654-.597l.047-.035c.47-.35 1.156-.858 1.156-1.845 0-.365-.118-.744-.377-1.038-.268-.303-.658-.484-1.126-.484-.48 0-.84.202-1.068.392a1.858 1.858 0 00-.348.384l-.007.011-.002.004-.001.002-.001.001a.5.5 0 00.851.525zM.5 10.055l-.427-.26.427.26z"></path></svg>
  1766. </md-ordered-list>
  1767. <md-task-list tabindex="-1" class="toolbar-item tooltipped tooltipped-sw p-2 mx-1" aria-label="Add a task list" data-ga-click="Markdown Toolbar, click, task list" role="button" hotkey="L">
  1768. <svg class="octicon octicon-tasklist" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2.5 2.75a.25.25 0 01.25-.25h10.5a.25.25 0 01.25.25v10.5a.25.25 0 01-.25.25H2.75a.25.25 0 01-.25-.25V2.75zM2.75 1A1.75 1.75 0 001 2.75v10.5c0 .966.784 1.75 1.75 1.75h10.5A1.75 1.75 0 0015 13.25V2.75A1.75 1.75 0 0013.25 1H2.75zm9.03 5.28a.75.75 0 00-1.06-1.06L6.75 9.19 5.28 7.72a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l4.5-4.5z"></path></svg>
  1769. </md-task-list>
  1770. </div>
  1771. </markdown-toolbar>
  1772. </div>
  1773. <div class="comment-form-error js-comment-form-error" role="alert" hidden="">
  1774. There was an error creating your Commit.
  1775. </div>
  1776. <file-attachment class="js-upload-markdown-image is-default" input="fc-new_commit_comment_field" role="tabpanel" data-tab-container-no-tabstop="true" data-upload-repository-id="114742422" data-upload-policy-url="/upload/policies/assets"><input type="hidden" value="9w5L+oS7d+rtzHp21qXp1FC19eMfex3lRwp6GB4KCET9IxA61EMlU+L6L6Dy8gUfi2wVxNbvvT9XSW2SjRyYkw==" data-csrf="true" class="js-data-upload-policy-url-csrf">
  1777. <div class="write-content js-write-bucket tooltipped tooltipped-ne tooltipped-no-delay tooltipped-align-left-1 hide-reaction-suggestion upload-enabled mx-0 mt-2 mb-2 mx-md-2 hx_sm-hide-drag-drop js-reaction-suggestion" data-reaction-markup="Would you like to leave a reaction instead?">
  1778. <input type="hidden" name="saved_reply_id" id="new_commit_comment_field_saved_reply_id" class="js-resettable-field" value="" data-reset-value="">
  1779. <text-expander keys=": @ #" data-issue-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?issue_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" data-mention-url="/suggestions/commit/ef5886281dd84b450ae25a9ffca036cffd16abd1?mention_suggester=1&amp;repository=mullvadvpn-app&amp;user_id=mullvad" multiword="#" data-emoji-url="/autocomplete/emoji">
  1780. <textarea name="comment[body]" id="new_commit_comment_field" placeholder="Leave a comment" aria-label="Comment body" data-required-trimmed="Text field is empty" class="form-control input-contrast comment-form-textarea js-comment-field js-paste-markdown js-task-list-field js-quick-submit js-size-to-fit js-session-resumable js-saved-reply-shortcut-comment-field" required=""></textarea>
  1781. </text-expander>
  1782. <label class="text-normal drag-and-drop hx_drag-and-drop position-relative d-flex flex-justify-between">
  1783. <input accept=".gif,.jpeg,.jpg,.mov,.mp4,.png,.docx,.gz,.log,.pdf,.pptx,.txt,.xlsx,.zip" type="file" multiple="" class="manual-file-chooser manual-file-chooser-transparent top-0 right-0 bottom-0 left-0 width-full ml-0 form-control" id="fc-new_commit_comment_field">
  1784. <span class="bg-gray-light position-absolute top-0 left-0 width-full height-full rounded-1" style="pointer-events: none;"></span>
  1785. <span class="position-relative pr-2" style="pointer-events: none;">
  1786. <span class="default">
  1787. Attach files by dragging &amp; dropping, selecting or pasting them.
  1788. </span>
  1789. <span class="loading">
  1790. <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="v-align-text-bottom mr-1" width="16" height="16">
  1791. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke"></circle>
  1792. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
  1793. <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite"></animateTransform>
  1794. </path>
  1795. </svg> Uploading your files…
  1796. </span>
  1797. <span class="error bad-file">
  1798. We don’t support that file type.
  1799. <span class="drag-and-drop-error-info">
  1800. <span class="btn-link">Try again</span> with a
  1801. GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  1802. </span>
  1803. </span>
  1804. <span class="error bad-permissions">
  1805. Attaching documents requires write permission to this repository.
  1806. <span class="drag-and-drop-error-info">
  1807. <span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  1808. </span>
  1809. </span>
  1810. <span class="error repository-required">
  1811. We don’t support that file type.
  1812. <span class="drag-and-drop-error-info">
  1813. <span class="btn-link">Try again</span> with a GIF, JPEG, JPG, MOV, MP4, PNG, DOCX, GZ, LOG, PDF, PPTX, TXT, XLSX or ZIP.
  1814. </span>
  1815. </span>
  1816. <span class="error too-big">
  1817. Yowza, that’s a big file
  1818. <span class="drag-and-drop-error-info">
  1819. <span class="btn-link">Try again</span> with a file smaller than 10MB.
  1820. </span>
  1821. </span>
  1822. <span class="error empty">
  1823. This file is empty.
  1824. <span class="drag-and-drop-error-info">
  1825. <span class="btn-link">Try again</span> with a file that’s not empty.
  1826. </span>
  1827. </span>
  1828. <span class="error hidden-file">
  1829. This file is hidden.
  1830. <span class="drag-and-drop-error-info">
  1831. <span class="btn-link">Try again</span> with another file.
  1832. </span>
  1833. </span>
  1834. <span class="error failed-request">
  1835. Something went really wrong, and we can’t process that file.
  1836. <span class="drag-and-drop-error-info">
  1837. <span class="btn-link">Try again.</span>
  1838. </span>
  1839. </span>
  1840. </span>
  1841. <span class="tooltipped tooltipped-nw" aria-label="Styling with Markdown is supported">
  1842. <a class="muted-link position-relative d-inline" href="https://guides.github.com/features/mastering-markdown/" target="_blank" data-ga-click="Markdown Toolbar, click, help" aria-label="Learn about styling with Markdown">
  1843. <svg class="octicon octicon-markdown v-align-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg>
  1844. </a>
  1845. </span>
  1846. </label>
  1847. <span class="js-sparkles-remaining-container" hidden=""></span>
  1848. </div>
  1849. </file-attachment>
  1850. <div role="tabpanel" class="js-preview-panel overflow-auto border-bottom mx-0 my-3 mx-md-2 mb-md-2" hidden="">
  1851. <input type="hidden" name="path" value="" class="js-path">
  1852. <input type="hidden" name="line" value="" class="js-line-number">
  1853. <input type="hidden" name="start_line" value="" class="js-start-line-number">
  1854. <input type="hidden" name="preview_side" value="" class="js-side">
  1855. <input type="hidden" name="preview_start_side" value="" class="js-start-side">
  1856. <input type="hidden" name="start_commit_oid" value="" class="js-start-commit-oid">
  1857. <input type="hidden" name="end_commit_oid" value="" class="js-end-commit-oid">
  1858. <input type="hidden" name="base_commit_oid" value="" class="js-base-commit-oid">
  1859. <input type="hidden" name="comment_id" value="" class="js-comment-id">
  1860. <div class="comment js-suggested-changes-container" data-thread-side="">
  1861. <div class="comment-body markdown-body js-preview-body">
  1862. <p>Nothing to preview</p>
  1863. </div>
  1864. </div>
  1865. </div>
  1866. <div class="comment-form-error mb-2 js-comment-update-error" hidden=""></div>
  1867. </tab-container>
  1868. <div class="form-actions pr-0 pr-md-2">
  1869. <button type="submit" class="btn btn-primary" data-disable-invalid="" data-disable-with="" disabled="disabled">Comment on this commit</button>
  1870. </div>
  1871. </div>
  1872. </form>
  1873. </div>
  1874. </div>
  1875. <div class="thread-subscription-status js-socket-channel js-updatable-content" data-replace-remote-form-target="" data-channel="eyJjIjoibGlzdC1zdWJzY3JpcHRpb246cmVwb3NpdG9yeToxMTQ3NDI0MjI6MTUyNjIwODMiLCJ0IjoxNjExNzE3MjM1fQ==--5276ddf529075e42b22da466e7092ef47668f77fdef95b87428898add07c5869 eyJjIjoidGhyZWFkLXN1YnNjcmlwdGlvbjplZjU4ODYyODFkZDg0YjQ1MGFlMjVhOWZmY2EwMzZjZmZkMTZhYmQxOjE1MjYyMDgzIiwidCI6MTYxMTcxNzIzNX0=--541985d8185d34dee3fe727b65fbd38a7829fcc69297a8981f2cc2db14161e69" data-url="/notifications/thread_subscription?repository_id=114742422&amp;thread_class=Commit&amp;thread_id=ef5886281dd84b450ae25a9ffca036cffd16abd1">
  1876. <form data-replace-remote-form="true" class="thread-subscribe-form" action="/notifications/thread" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="7j7otJ4v53SHqZynuzdUtZSDmc7Z1JH/7wmAAGHSsJie4eiVTjqvXrYBa6AEbq5Xp+5QnEaU10v3ncRWvdRSXQ=="> <input type="hidden" name="repository_id" value="114742422">
  1877. <input type="hidden" name="thread_id" value="ef5886281dd84b450ae25a9ffca036cffd16abd1">
  1878. <input type="hidden" name="thread_class" value="Commit">
  1879. <input type="hidden" name="id" value="subscribe">
  1880. <button type="submit" class="btn btn-block btn-sm thread-subscribe-button" data-disable-with="">
  1881. <svg class="octicon octicon-bell" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><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> Subscribe
  1882. </button>
  1883. </form> <p class="reason text-small text-gray">You’re not receiving notifications from this thread.</p>
  1884. </div>
  1885. </div>
  1886. </div>
  1887. </main>
  1888. </div>
  1889. </div>
  1890. <div class="footer container-xl width-full p-responsive" role="contentinfo">
  1891. <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 text-gray border-top border-gray-light ">
  1892. <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">
  1893. <li class="mr-3 mr-lg-0">© 2021 GitHub, Inc.</li>
  1894. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
  1895. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
  1896. <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>
  1897. <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>
  1898. <li><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com/">Docs</a></li>
  1899. </ul>
  1900. <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com/">
  1901. <svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" 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>
  1902. </a>
  1903. <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">
  1904. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
  1905. <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>
  1906. <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>
  1907. <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>
  1908. <li class="mr-3 mr-lg-0"><a href="https://github.blog/" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
  1909. <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
  1910. </ul>
  1911. </div>
  1912. <div class="d-flex flex-justify-center pb-6">
  1913. <span class="f6 text-gray-light"></span>
  1914. </div>
  1915. </div>
  1916. <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden="">
  1917. <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1918. <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
  1919. <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1920. </button>
  1921. You can’t perform that action at this time.
  1922. </div>
  1923. <div class="js-stale-session-flash flash flash-warn flash-banner" hidden="">
  1924. <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1925. <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>
  1926. <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>
  1927. </div>
  1928. <template id="site-details-dialog">
  1929. <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open="">
  1930. <summary role="button" aria-label="Close dialog"></summary>
  1931. <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
  1932. <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog="">
  1933. <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><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>
  1934. </button>
  1935. <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
  1936. </details-dialog>
  1937. </details>
  1938. </template>
  1939. <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
  1940. <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
  1941. </div>
  1942. </div>
  1943. <div aria-live="polite" class="sr-only"></div></body></html>