<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>127926</bug_id>
          
          <creation_ts>2014-01-30 11:28:11 -0800</creation_ts>
          <short_desc>Add session support to WebPlatformStrategies</short_desc>
          <delta_ts>2014-01-31 16:19:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>127980</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hock">mhock</reporter>
          <assigned_to name="Martin Hock">mhock</assigned_to>
          <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jeffm</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>973861</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 11:28:11 -0800</bug_when>
    <thetext>Add session support to WebPlatformStrategies.  Also, ensure storage session exists when we call WebPage::setSessionID().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973863</commentid>
    <comment_count>1</comment_count>
      <attachid>222698</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 11:29:38 -0800</bug_when>
    <thetext>Created attachment 222698
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973886</commentid>
    <comment_count>2</comment_count>
      <attachid>222698</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 11:53:41 -0800</bug_when>
    <thetext>Comment on attachment 222698
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=222698&amp;action=review

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:48
&gt;  void WebFrameNetworkingContext::ensurePrivateBrowsingSession(uint64_t sessionID)
&gt;  {
&gt; -    if (SessionTracker::session(sessionID))
&gt; +    if (sessionID == SessionTracker::defaultSessionID || SessionTracker::session(sessionID))
&gt;          return;

I don&apos;t think that this is quite right. The function name means that it can be only invoked with private browsing sessions, so having a check for whether the session is private inside it is too late.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973928</commentid>
    <comment_count>3</comment_count>
      <attachid>222717</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 12:58:01 -0800</bug_when>
    <thetext>Created attachment 222717
disallow calling ensurePrivateBrowsingSession with non-ephemeral session</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973964</commentid>
    <comment_count>4</comment_count>
      <attachid>222724</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 13:26:43 -0800</bug_when>
    <thetext>Created attachment 222724
right patch this time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973995</commentid>
    <comment_count>5</comment_count>
      <attachid>222724</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 14:14:56 -0800</bug_when>
    <thetext>Comment on attachment 222724
right patch this time...

View in context: https://bugs.webkit.org/attachment.cgi?id=222724&amp;action=review

&gt; Source/WebKit2/Shared/SessionTracker.cpp:49
&gt; +    static NeverDestroyed&lt;HashMap&lt;const NetworkStorageSession*, uint64_t&gt;&gt; map;

I would put an ASSERT(isMainThread()) here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974002</commentid>
    <comment_count>6</comment_count>
      <attachid>222736</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 14:25:19 -0800</bug_when>
    <thetext>Created attachment 222736
add assert per review comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974045</commentid>
    <comment_count>7</comment_count>
      <attachid>222736</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 15:06:32 -0800</bug_when>
    <thetext>Comment on attachment 222736
add assert per review comment

Clearing flags on attachment: 222736

Committed r163125: &lt;http://trac.webkit.org/changeset/163125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974047</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 15:06:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974172</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-01-30 18:57:50 -0800</bug_when>
    <thetext>This caused 9 layout tests to start asserting in Debug builds on the Mountain Lion bot:

Regressions: Unexpected crashes (9)
  http/tests/security/cross-frame-access-selection.html [ Crash ]
  http/tests/security/cross-origin-plugin-private-browsing-toggled.html [ Crash ]
  http/tests/security/dataURL/xss-DENIED-from-data-url-in-foreign-domain-subframe.html [ Crash ]
  http/tests/security/storage-blocking-loosened-shared-worker.html [ Crash ]
  http/tests/security/storage-blocking-strengthened-shared-worker.html [ Crash ]
  plugins/private-browsing-mode.html [ Crash ]
  storage/domstorage/localstorage/string-conversion.html [ Crash ]
  storage/domstorage/sessionstorage/string-conversion.html [ Crash ]
  storage/websql/read-transactions-running-concurrently.html [ Crash ]

See &lt;http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20(Tests)/builds/15691&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974175</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 19:08:34 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 127980</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974193</commentid>
    <comment_count>11</comment_count>
      <attachid>222789</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 20:23:27 -0800</bug_when>
    <thetext>Created attachment 222789
fix test failure

The test failed because we attempt to remove a session that doesn&apos;t exist, because the test manually sets private browsing to false before a private browsing session exists.  Check to see the session exists before removing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974197</commentid>
    <comment_count>12</comment_count>
      <attachid>222789</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 20:45:10 -0800</bug_when>
    <thetext>Comment on attachment 222789
fix test failure

View in context: https://bugs.webkit.org/attachment.cgi?id=222789&amp;action=review

You can test these on Mavericks if you comment out private browsing tests in LayoutTests/platform/mac-wk2/TestExpectations, and also comment out these lines in WebKitTestRunner:

    WKContextSetUsesNetworkProcess(m_context.get(), true);
    WKContextSetProcessModel(m_context.get(), kWKProcessModelMultipleSecondaryProcesses);

&gt; Source/WebKit2/Shared/SessionTracker.cpp:100
&gt; +    if (staticSessionMap().contains(sessionID)) {
&gt; +        storageSessionToID().remove(session(sessionID));
&gt; +        staticSessionMap().remove(sessionID);
&gt; +    }

I don&apos;t think that this is right. remove() doesn&apos;t crash when removing a non-existent key. The crashes that happen mean that sessionID is 0, and contains() will crash in the same manner.

The right fix will be to make sure that InjectedBundle::setPrivateBrowsingEnabled() passes a correct (legacy) session ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974222</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-30 22:41:20 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 222789 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222789&amp;action=review
&gt; 
&gt; You can test these on Mavericks if you comment out private browsing tests in LayoutTests/platform/mac-wk2/TestExpectations, and also comment out these lines in WebKitTestRunner:
&gt; 
&gt;     WKContextSetUsesNetworkProcess(m_context.get(), true);
&gt;     WKContextSetProcessModel(m_context.get(), kWKProcessModelMultipleSecondaryProcesses);
&gt; 

Thanks for the tip!

&gt; &gt; Source/WebKit2/Shared/SessionTracker.cpp:100
&gt; &gt; +    if (staticSessionMap().contains(sessionID)) {
&gt; &gt; +        storageSessionToID().remove(session(sessionID));
&gt; &gt; +        staticSessionMap().remove(sessionID);
&gt; &gt; +    }
&gt; 
&gt; I don&apos;t think that this is right. remove() doesn&apos;t crash when removing a non-existent key. The crashes that happen mean that sessionID is 0, and contains() will crash in the same manner.
&gt; 
&gt; The right fix will be to make sure that InjectedBundle::setPrivateBrowsingEnabled() passes a correct (legacy) session ID.

I&apos;ll take a look tomorrow, but InjectedBundle::setPrivateBrowsingEnabled() does appear to pass the legacy private session ID.  Here&apos;s what I think is happening: the test calls setPrivateBrowsingEnabled(false) which in turn calls SessionTracker::destroySession(legacyPrivateSessionID).  Then, session(sessionID) is returning nullptr because there is no session with the legacy private ID (because it hasn&apos;t been created yet), and that nullptr is causing storageSessionToID().remove(nullptr) to fail the assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974223</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-30 22:57:27 -0800</bug_when>
    <thetext>&gt; Here&apos;s what I think is happening:

Agreed, this sounds plausible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974510</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-01-31 15:31:40 -0800</bug_when>
    <thetext>All of the http, plugin, and storage tests run as expected or pass with the above patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974518</commentid>
    <comment_count>16</comment_count>
      <attachid>222789</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 15:49:28 -0800</bug_when>
    <thetext>Comment on attachment 222789
fix test failure

View in context: https://bugs.webkit.org/attachment.cgi?id=222789&amp;action=review

r=me

&gt; Source/WebKit2/Shared/SessionTracker.cpp:99
&gt; +    if (staticSessionMap().contains(sessionID)) {
&gt; +        storageSessionToID().remove(session(sessionID));
&gt; +        staticSessionMap().remove(sessionID);

It&apos;s not great that we look up sessionID in staticSessionMap three times here. It can be easily avoided by using find().

But this is not hot code at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974525</commentid>
    <comment_count>17</comment_count>
      <attachid>222789</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 16:19:47 -0800</bug_when>
    <thetext>Comment on attachment 222789
fix test failure

Clearing flags on attachment: 222789

Committed r163217: &lt;http://trac.webkit.org/changeset/163217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974526</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 16:19:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222698</attachid>
            <date>2014-01-30 11:29:38 -0800</date>
            <delta_ts>2014-01-30 12:58:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>sessionidmap.01.diff</filename>
            <type>text/plain</type>
            <size>11981</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1MWJjMjViLi5hMDdhZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTQtMDEtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzZXNzaW9uIHN1cHBvcnQgdG8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAq
IFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNz
aW9uVG9JRCk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRCk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6IEVuc3VyZSB0aGUgc3RvcmFnZSBz
ZXNzaW9uIGV4aXN0cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
CiAyMDE0LTAxLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJREI6IEFkZCBuby1vcCBwbHVtYmluZyBmb3IgZGVsZXRlRGF0YWJhc2UgYW5kIGRlbGV0ZVJh
bmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjYwZTVkYi4uYjIwYTQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzksNyArNzksNyBAQCBSZXNvdXJjZUVycm9yIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICBpZiAoc2Vzc2lvbklEID09IFNlc3Npb25UcmFja2Vy
OjpkZWZhdWx0U2Vzc2lvbklEIHx8ICBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQp
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVu
dGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwCmluZGV4IDNlZDU5NmYuLmViZmU1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmNwcApAQCAtNDQsNiArNDQsMTIgQEAgc3RhdGljIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lv
bk0KICAgICByZXR1cm4gbWFwLmdldCgpOwogfQogCitzdGF0aWMgSGFzaE1hcDxjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24qLCB1aW50NjRfdD4mIHN0b3JhZ2VTZXNzaW9uVG9JRCgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiwgdWludDY0X3Q+PiBtYXA7CisgICAgcmV0dXJuIG1hcC5nZXQoKTsKK30KKwogc3RhdGlj
IFN0cmluZyYgaWRlbnRpZmllckJhc2UoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC02NiwxOSArNzIsMjggQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRCA9PSBk
ZWZhdWx0U2Vzc2lvbklEKQogICAgICAgICByZXR1cm4gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgcmV0dXJuIHN0YXRpY1Nlc3Npb25NYXAoKS5h
ZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJu
IHN0YXRpY1Nlc3Npb25NYXAoKS5nZXQoc2Vzc2lvbklEKTsKK30KKwordWludDY0X3QgU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb25JRChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
Cit7CisgICAgaWYgKCZzZXNzaW9uID09ICZOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZGVmYXVsdFNlc3Npb25JRDsKKyAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAogdm9pZCBTZXNz
aW9uVHJhY2tlcjo6c2V0U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24pCiB7CiAgICAgQVNTRVJUKHNlc3Npb25J
RCAhPSBkZWZhdWx0U2Vzc2lvbklEKTsKLSAgICBzdGF0aWNTZXNzaW9uTWFwKCkuYWRkKHNlc3Np
b25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptb3ZlKHNlc3Npb24pOworICAg
IHN0b3JhZ2VTZXNzaW9uVG9JRCgpLnNldChzZXNzaW9uLmdldCgpLCBzZXNzaW9uSUQpOworICAg
IHN0YXRpY1Nlc3Npb25NYXAoKS5zZXQoc2Vzc2lvbklELCBzdGQ6Om1vdmUoc2Vzc2lvbikpOwog
fQogCiB2b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9u
SUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorICAgIHN0b3JhZ2VTZXNzaW9u
VG9JRCgpLnJlbW92ZShzZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHN0YXRpY1Nlc3Npb25NYXAo
KS5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuaAppbmRleCA1ZDM4ZjEwLi4yZWI4MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Vzc2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuaApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEhh
c2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+PiYgc2Vzc2lvbk1hcCgpOwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50
aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
c2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB1aW50NjRfdCBzZXNzaW9u
SUQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAgICAgc3RhdGljIHZv
aWQgc2V0U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95U2Vzc2lv
bih1aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IGE3ZDMyYzMuLmExNjFjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTczLDEzICs3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi1zdGF0aWMgdWludDY0X3Qg
bGVnYWN5U2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiAmc2Vzc2lvbikKLXsK
LSAgICByZXR1cm4gc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25U
cmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRT
ZXNzaW9uSUQ7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRp
YWxpemUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsKQEAgLTE0MSw3ICsxMzQsNyBAQCBTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbgogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET00obGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKFNlc3Npb25U
cmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0
KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtMTU0LDcgKzE0Nyw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3NpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00obGVnYWN5U2Vzc2lvbklE
KHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJv
bURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0x
NjcsNyArMTYwLDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQobGVnYWN5
U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkK
KyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0VuYWJsZWQoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwg
Zmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTgxLDcgKzE3NCw3IEBA
IFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAg
ICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobGVn
YWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpS
ZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vz
c2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTk0LDcgKzE4Nyw3IEBAIGJvb2wg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlm
IChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRS
YXdDb29raWVzKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBs
eShyYXdDb29raWVzKSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNl
c3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTIwNyw3ICsyMDAsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwg
Y29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNz
aW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4
IDZiNTlhYzQuLjM0ZTQ1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAK
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7Ci0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uKHNlc3Npb25JRCkpCisgICAgaWYgKHNlc3Npb25JRCA9PSBTZXNzaW9uVHJhY2tlcjo6ZGVm
YXVsdFNlc3Npb25JRCB8fCBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ODUyZjA1Li5kYjllMjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTM1LDYg
KzIxMzUsMTIgQEAgdWludDY0X3QgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IFNlc3Npb25U
cmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRT
ZXNzaW9uSUQ7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Np
b25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5lbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7Cit9CisKIHZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxv
YWRJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJG
cmFtZShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDNiYTJmNzUuLjk0MzFjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAg
IHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgdWludDY0
X3Qgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTZXNzaW9uSUQodWludDY0X3Qgc2Vz
c2lvbklEKSB7IG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOyB9CisgICAgdm9pZCBzZXRTZXNzaW9u
SUQodWludDY0X3QpOwogCiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92
aWV3U2l6ZTsgfQo=
</data>
<flag name="review"
          id="246707"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222717</attachid>
            <date>2014-01-30 12:58:01 -0800</date>
            <delta_ts>2014-01-30 13:26:43 -0800</delta_ts>
            <desc>disallow calling ensurePrivateBrowsingSession with non-ephemeral session</desc>
            <filename>memcachesession.01.diff</filename>
            <type>text/plain</type>
            <size>15024</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYmUyYWU1Li45ODhmYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTQtMDEtMjggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBzZXNzaW9ucyB0byBjYWNoZSBwYXJ0aXRpb25pbmcuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc3OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvTmV0d29ya2luZ0NvbnRleHQuaDogQWRkIHNlc3Npb25JRCBtZW1iZXIuCisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dDo6c2Vzc2lvbklEKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDogQWRkIHNlc3Npb25JRCBtZW1iZXIu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDog
U2V0IHNlc3Npb25JRCBmcm9tIE5ldHdvcmtpbmdDb250ZXh0IGFuZCBwYXNzIHRvIHNldFN0b3Jh
Z2VTZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25v
dXNseSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y29udGludWVXaWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Lmg6IFBhc3Mgc2Vzc2lvbklEIGluIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6UmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6Y2FjaGVQYXJ0aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0OjpzZXRDYWNoZVBhcnRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OnNlc3Npb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNl
dFBhcnRpdGlvblNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRTdG9yYWdlU2Vzc2lvbik6IFNldCBzZXNzaW9uSUQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06IFNldCBzZXNzaW9uSUQgZnJvbSBOZXR3b3Jr
aW5nQ29udGV4dCBhbmQgcGFzcyB0byBzZXRTdG9yYWdlU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKTogU2V0IHNlc3Npb25JRC4KKwog
MjAxNC0wMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMTYyODM3KTogNSUgcmVncmVzc2lvbiBvbiBodG1sNS1mdWxsLXJlbmRlciBh
bmQgMyUgcmVncmVzc2lvbiBpbiBEb1lvdUV2ZW5CZW5jaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDMwODBhN2UuLjdl
NDZhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtpbmdDb250ZXh0LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoU09VUCkKICAgICB2aXJ0dWFsIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB1
aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggN2RjNDNlMi4uMDVlYWNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKQEAgLTE2MCw2ICsxNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5k
aWYKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0
cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3N0b3JhZ2VTZXNzaW9uOworICAgICAgICB1aW50
NjRfdCBtX3Nlc3Npb25JRDsKICNlbmRpZgogI2lmIFVTRShXSU5JTkVUKQogICAgICAgICBUaW1l
cjxSZXNvdXJjZUhhbmRsZT4gbV9maWxlTG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5k
ZXggMzI4NGYyMS4uMjkwZDUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNDMsNiArMjQz
LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gZC0+bV9jb250ZXh0LT5zdG9yYWdlU2Vzc2lv
bigpLnBsYXRmb3JtU2Vzc2lvbigpOworICAgIGQtPm1fc2Vzc2lvbklEID0gZC0+bV9jb250ZXh0
LT5zZXNzaW9uSUQoKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSAh
Y2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwog
CkBAIC0yOTgsNyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKIAogICAgICAgICAv
LyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlm
IHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCiAgICAgICAgIGlmICghcmVxdWVzdC5pc051
bGwoKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3Jh
Z2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24o
ZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSwgZC0+bV9zZXNzaW9uSUQpOwogCiAgICAgICAgICAg
ICBkLT5tX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKICAgICAgICAgfQpAQCAtNDg2LDYgKzQ4
Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25v
dXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUoY29udGV4dCwgcmVxdWVzdCwg
Y2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRl
bnRTbmlmZiovKSk7CiAKICAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9z
ZXNzaW9uSUQgPSBjb250ZXh0LT5zZXNzaW9uSUQoKTsKIAogICAgIGlmIChoYW5kbGUtPmQtPm1f
c2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0gY29u
dGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpAQCAtNTc5LDcgKzU4MSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFJlc3VsdCA9IHJlcXVl
c3Q7CiAgICAgaWYgKCFyZXF1ZXN0UmVzdWx0LmlzTnVsbCgpKQotICAgICAgICByZXF1ZXN0UmVz
dWx0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCkpOworICAgICAg
ICByZXF1ZXN0UmVzdWx0LnNldFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0
KCksIGQtPm1fc2Vzc2lvbklEKTsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+Y29udGlu
dWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdFJlc3VsdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJv
ZHkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggMmEyNmQ1YS4uZDM2ODUyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC00
Niw2ICs0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgICAgICAsIG1fbWFpblJlc291cmNlUmVxdWVzdChmYWxzZSkKICNlbmRpZgorI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICAgICAgICAgICwgbV9zZXNzaW9uSUQoMCkK
KyNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNTQsNiArNTcsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgLCBtX21haW5SZXNv
dXJjZVJlcXVlc3QoZmFsc2UpCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5F
VFdPUkspCisgICAgICAgICAgICAsIG1fc2Vzc2lvbklEKDApCisjZW5kaWYKICAgICAgICAgewog
ICAgICAgICB9CiAKQEAgLTYyLDYgKzY4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBM
QVRGT1JNKElPUykKICAgICAgICAgICAgICwgbV9tYWluUmVzb3VyY2VSZXF1ZXN0KGZhbHNlKQog
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgICAgICAgICAg
LCBtX3Nlc3Npb25JRCgwKQorI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBS
ZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTcxLDYgKzgwLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgICAgICwgbV9tYWluUmVzb3Vy
Y2VSZXF1ZXN0KGZhbHNlKQogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRX
T1JLKQorICAgICAgICAgICAgLCBtX3Nlc3Npb25JRCgwKQorI2VuZGlmCiAgICAgICAgIHsKICAg
ICAgICAgfQogICAgICAgICAKQEAgLTg2LDYgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgLCBtX21haW5SZXNvdXJjZVJlcXVlc3QoZmFsc2UpCiAjZW5kaWYKICAgICAg
ICAgICAgICwgbV9jZlJlcXVlc3QoY2ZSZXF1ZXN0KQorICAgICAgICAgICAgLCBtX3Nlc3Npb25J
RCgwKQogICAgICAgICB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAgdXBkYXRlTlNV
UkxSZXF1ZXN0KCk7CkBAIC0xMTEsMTMgKzEyNCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgICAgICBzdGF0aWMgU3RyaW5nIHBh
cnRpdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBkb21haW4pOwotICAgICAgICBjb25zdCBTdHJpbmcm
IGNhY2hlUGFydGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbi5pc051bGwo
KSA/IGVtcHR5U3RyaW5nKCkgOiBtX2NhY2hlUGFydGl0aW9uOyB9Ci0gICAgICAgIHZvaWQgc2V0
Q2FjaGVQYXJ0aXRpb24oY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikgeyBtX2NhY2hlUGFy
dGl0aW9uID0gcGFydGl0aW9uTmFtZShjYWNoZVBhcnRpdGlvbik7IH0KKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBjYWNoZVBhcnRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFydGl0aW9uU2Vzc2lv
bi5pc051bGwoKSA/IHNldFBhcnRpdGlvblNlc3Npb24oKSA6IG1fcGFydGl0aW9uU2Vzc2lvbjsg
fQorICAgICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0
aXRpb24pIHsgbV9jYWNoZVBhcnRpdGlvbiA9IHBhcnRpdGlvbk5hbWUoY2FjaGVQYXJ0aXRpb24p
OyBzZXRQYXJ0aXRpb25TZXNzaW9uKCk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KEhU
VFBCb2R5VXBkYXRlUG9saWN5KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRTdG9yYWdlU2Vzc2lv
bihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKKyAgICAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyAgICAgICAgdm9pZCBzZXRTdG9yYWdlU2Vz
c2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCB1aW50NjRfdCBzZXNzaW9uSUQpOwogI2VuZGlm
CiAKICAgICAgICAgc3RhdGljIGJvb2wgaHR0cFBpcGVsaW5pbmdFbmFibGVkKCk7CkBAIC0xNTIs
OCArMTY2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAg
ICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG1fbnNSZXF1ZXN0OwogI2VuZGlmCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgICAgICB1aW50NjRfdCBtX3Nlc3Npb25J
RDsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXRQYXJ0aXRpb25TZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJ0aXRpb25TZXNzaW9uID0gKG1fY2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkgPyBl
bXB0eVN0cmluZygpIDogbV9jYWNoZVBhcnRpdGlvbikgKyAnfCcgKyBTdHJpbmc6Om51bWJlciht
X3Nlc3Npb25JRCk7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgICAgIFN0cmluZyBtX2NhY2hlUGFydGl0aW9uOworICAgICAgICBtdXRhYmxlIFN0cmluZyBt
X3BhcnRpdGlvblNlc3Npb247CiAjZW5kaWYKIAogICAgICAgICBzdGF0aWMgYm9vbCBzX2h0dHBQ
aXBlbGluaW5nRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggYTgxYTk1Zi4uODY2
NzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTMyNSwxMyArMzI1LDE0IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKQogfQogCiAKLXZvaWQg
UmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHN0b3JhZ2VTZXNzaW9uKQordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9u
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24sIHVpbnQ2NF90IHNlc3Npb25J
RCkKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKIAogICAgIENGTXV0YWJsZVVSTFJl
cXVlc3RSZWYgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9j
ZlJlcXVlc3QuZ2V0KCkpOwogICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKHN0b3JhZ2VT
ZXNzaW9uLCBjZlJlcXVlc3QpOwogICAgIG1fY2ZSZXF1ZXN0ID0gYWRvcHRDRihjZlJlcXVlc3Qp
OworICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB1
cGRhdGVOU1VSTFJlcXVlc3QoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCA2ZGEwZjgz
Li41Mjc0ZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMjE1LDYgKzIxNSw3IEBAIGJvb2wgUmVz
b3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZC0+bV9z
dG9yYWdlU2Vzc2lvbiA9IGQtPm1fY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNl
c3Npb24oKTsKKyAgICBkLT5tX3Nlc3Npb25JRCA9IGQtPm1fY29udGV4dC0+c2Vzc2lvbklEKCk7
CiAKICAgICAvLyBGSVhNRTogRG8gbm90IHVzZSB0aGUgc3luYyB2ZXJzaW9uIG9mIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlIHdoZW4gdGhlIGNsaWVudCByZXR1cm5zIHRydWUgZnJvbSB1c2Vz
QXN5bmNDYWxsYmFja3MuCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9ICFj
bGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7CkBA
IC0zNzAsNiArMzcxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShjb250ZXh0
LCByZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8q
c2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAogICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lv
biA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CisgICAgaGFu
ZGxlLT5kLT5tX3Nlc3Npb25JRCA9IGNvbnRleHQtPnNlc3Npb25JRCgpOwogCiAgICAgaWYgKGNv
bnRleHQgJiYgaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkg
ewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKQEAgLTQ4
Miw3ICs0ODQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogCiAgICAgICAgIC8vIENsaWVu
dCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVjaWFsbHkgaWYgdGhlIHJl
cXVlc3QgaXMgc2VudCBvdmVyIElQQy4KICAgICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmVxdWVzdC5zZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9u
LmdldCgpKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSwgZC0+bV9zZXNzaW9uSUQpOwogICAgIH0KIH0KIApAQCAtNDk0LDcg
KzQ5Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90
IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQg
b3ZlciBJUEMuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSByZXF1ZXN0OwogICAg
IGlmICghbmV3UmVxdWVzdC5pc051bGwoKSkKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRTdG9yYWdl
U2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpKTsKKyAgICAgICAgbmV3UmVxdWVzdC5z
ZXRTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpLCBkLT5tX3Nlc3Npb25J
RCk7CiAgICAgWyhpZClkZWxlZ2F0ZSgpIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0Om5ld1JlcXVl
c3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpp
bmRleCA3NWQ4OTRmLi4zMWIzMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0yNTksMTAgKzI1
OSwxMSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwo
KQogI2VuZGlmCiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQordm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24sIHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsK
ICAgICBtX25zUmVxdWVzdCA9IGFkb3B0TlMod2tDb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lv
bihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKKyAgICBtX3Nlc3Npb25JRCA9
IHNlc3Npb25JRDsKIH0KICAgICAKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDRlNmQzMDkuLjA3ODQxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0w
MS0yOCAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIHNlc3Npb25zIHRvIGNhY2hlIHBhcnRpdGlvbmluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzc5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaDogQWRkIHNlc3Npb25JRCBhY2Nlc3Nvci4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24pOiBVc2Ugc2Vzc2lvbklEIHRvIGFjY2VzcyBzdG9yYWdlIHNlc3Npb24u
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNlc3Npb25JRCk6
IEFkZCBzZXNzaW9uSUQgYWNjZXNzb3IuCisKIDIwMTQtMDEtMjggIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBvYmplY3QgZm9yIGVhc3kgc3RvcmFnZSBvZiBuYXZpZ2F0aW9uIGFjdGlvbiBkYXRhCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaAppbmRleCBlM2VkMTJiLi5jZWU3ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQzLDYg
KzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CisgICAgdmlydHVh
bCB1aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25J
RDsgfQogCiBwcml2YXRlOgogICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KHVpbnQ2NF90IHNl
c3Npb25JRCwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDg2Mjlm
YTguLjdiNmUxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJldGFpblB0cjxD
RkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5k
ZXggNmI1OWFjNC4uOWU4MmVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCkBAIC05OSwxMCArOTksMTQgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXEKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3Rv
cmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
cmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CiAKK3VpbnQ2
NF90IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNlc3Npb25JRCgpIGNvbnN0Cit7CiAgICAg
aWYgKGZyYW1lKCkpCi0gICAgICAgIHJldHVybiAqU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24od2Vi
RnJhbWVMb2FkZXJDbGllbnQoKS0+d2ViRnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKSk7Ci0g
ICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CisgICAgICAgIHJldHVybiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpLT53ZWJGcmFtZSgpLT5wYWdl
KCktPnNlc3Npb25JRCgpOworICAgIHJldHVybiBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Np
b25JRDsKIH0KIAogV2ViRnJhbWVMb2FkZXJDbGllbnQqIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OndlYkZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222724</attachid>
            <date>2014-01-30 13:26:43 -0800</date>
            <delta_ts>2014-01-30 14:25:19 -0800</delta_ts>
            <desc>right patch this time...</desc>
            <filename>sessionidmap.02.diff</filename>
            <type>text/plain</type>
            <size>12675</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1MWJjMjViLi5lYmE0NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTQtMDEtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzZXNzaW9uIHN1cHBvcnQgdG8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAq
IFNoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNz
aW9uVG9JRCk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpzZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRCk6CisgICAgICAgIChXZWJL
aXQ6OlNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2ll
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2ll
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Np
b25JRCk6IEVuc3VyZSB0aGUgc3RvcmFnZSBzZXNzaW9uIGV4aXN0cy4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE0LTAxLTMwICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJREI6IEFkZCBuby1vcCBwbHVtYmluZyBmb3Ig
ZGVsZXRlRGF0YWJhc2UgYW5kIGRlbGV0ZVJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5k
ZXggZjYwZTVkYi4uYTBhOGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzksNiAr
NzksOCBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkK
IHsKKyAgICBBU1NFUlQoU2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSk7
CisKICAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAppbmRleCAz
ZWQ1OTZmLi5lYmZlNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5j
cHAKQEAgLTQ0LDYgKzQ0LDEyIEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHN0YXRpY1Nlc3Npb25NCiAgICAgcmV0dXJu
IG1hcC5nZXQoKTsKIH0KIAorc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiwgdWludDY0X3Q+JiBzdG9yYWdlU2Vzc2lvblRvSUQoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiosIHVpbnQ2NF90
Pj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKIHN0YXRpYyBTdHJpbmcmIGlkZW50
aWZpZXJCYXNlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNjYsMTkgKzcy
LDI4IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24odWlu
dDY0X3Qgc2Vzc2lvbklEKQogewogICAgIGlmIChzZXNzaW9uSUQgPT0gZGVmYXVsdFNlc3Npb25J
RCkKICAgICAgICAgcmV0dXJuICZOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwotICAgIHJldHVybiBzdGF0aWNTZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBzdGF0aWNTZXNzaW9u
TWFwKCkuZ2V0KHNlc3Npb25JRCk7Cit9CisKK3VpbnQ2NF90IFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uSUQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGlmICgm
c2Vzc2lvbiA9PSAmTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRTZXNzaW9uSUQ7CisgICAgcmV0dXJuIHN0b3JhZ2VT
ZXNzaW9uVG9JRCgpLmdldCgmc2Vzc2lvbik7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNl
dFNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBzZXNzaW9uKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gZGVmYXVsdFNl
c3Npb25JRCk7Ci0gICAgc3RhdGljU2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bW92ZShzZXNzaW9uKTsKKyAgICBzdG9yYWdlU2Vzc2lv
blRvSUQoKS5zZXQoc2Vzc2lvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWNTZXNzaW9u
TWFwKCkuc2V0KHNlc3Npb25JRCwgc3RkOjptb3ZlKHNlc3Npb24pKTsKIH0KIAogdm9pZCBTZXNz
aW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUo
c2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Np
b25JRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJh
Y2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKaW5kZXggNWQz
OGYxMC4uMmViODFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25U
cmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAg
LTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBIYXNoTWFwPHVpbnQ2NF90
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHNlc3Np
b25NYXAoKTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFzZSgpOwog
ICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24odWludDY0
X3Qgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdWludDY0X3Qgc2Vzc2lvbklEKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwogICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24o
dWludDY0X3Qgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklEKTsKICAgICBzdGF0aWMgdm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTA0Y2Zj
Yy4uMjFmODhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTUxMiw3ICs1MTIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNl
c3Npb24mIHNlc3Npb24pCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9wYWdlSUQpOwogCiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKLSAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oc2Vzc2lvbi5nZXRJRCgpKSk7CisgICAgaWYgKHNlc3Npb24uaXNFcGhlbWVyYWwoKSkK
KyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Np
b24uZ2V0SUQoKSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCBhN2QzMmMzLi5hMTYxYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC03MywxMyArNzMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RhdGlj
IHVpbnQ2NF90IGxlZ2FjeVNlc3Npb25JRChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24gJnNl
c3Npb24pCi17Ci0gICAgcmV0dXJuIHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkg
PyBTZXNzaW9uVHJhY2tlcjo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCA6IFNlc3Npb25UcmFja2Vy
OjpkZWZhdWx0U2Vzc2lvbklEOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbml0aWFsaXplKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUGxhdGZv
cm1TdHJhdGVnaWVzPiBwbGF0Zm9ybVN0cmF0ZWdpZXM7CkBAIC0xNDEsNyArMTM0LDcgQEAgU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24KICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlm
IChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBT
dHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9u
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRP
TShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJl
cGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE1NCw3ICsxNDcsNyBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGxlZ2Fj
eVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQ
YXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgpAQCAtMTY3LDcgKzE2MCw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFi
bGVkKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVz
dWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQo
c2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4MSw3
ICsxNzQsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZQogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2Vzcygp
KSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE5NCw3ICsxODcs
NyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llcyhsZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29v
a2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKFNlc3Npb25U
cmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29v
a2llcyksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0yMDcsNyArMjAwLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKIHsK
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUobGVnYWN5U2Vzc2lvbklEKHNlc3Np
b24pLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uSUQoc2Vzc2lvbiksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQppbmRleCA2YjU5YWM0Li43NDYxYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogeworICAgIEFTU0VSVChTZXNzaW9u
VHJhY2tlcjo6aXNFcGhlbWVyYWxJRChzZXNzaW9uSUQpKTsKKwogICAgIGlmIChTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ODUyZjA1Li42MTE2
N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yMTM1LDYgKzIxMzUsMTMgQEAgdWludDY0X3QgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29u
c3QKICAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNr
ZXI6OmRlZmF1bHRTZXNzaW9uSUQ7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKHVp
bnQ2NF90IHNlc3Npb25JRCkKK3sKKyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBp
ZiAoU2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQp
OworfQorCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IGRvd25sb2FkSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hh
cmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCAzYmEyZjc1Li45NDMxYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0
KCk7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQog
ICAgIHVpbnQ2NF90IHNlc3Npb25JRCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2Vzc2lvbklEKHVp
bnQ2NF90IHNlc3Npb25JRCkgeyBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsgfQorICAgIHZvaWQg
c2V0U2Vzc2lvbklEKHVpbnQ2NF90KTsKIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlld1NpemU7IH0K
</data>
<flag name="review"
          id="246736"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222736</attachid>
            <date>2014-01-30 14:25:19 -0800</date>
            <delta_ts>2014-01-30 20:23:27 -0800</delta_ts>
            <desc>add assert per review comment</desc>
            <filename>sessionidmap.03.diff</filename>
            <type>text/plain</type>
            <size>12711</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1MWJjMjViLi5lZGU5MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTQtMDEtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzZXNzaW9uIHN1cHBvcnQgdG8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAg
ICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c3RvcmFn
ZVNlc3Npb25Ub0lEKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpT
ZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9u
VHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVD
b29raWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
U2Vzc2lvbklEKTogRW5zdXJlIHRoZSBzdG9yYWdlIHNlc3Npb24gZXhpc3RzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDEtMzAgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIElEQjogQWRkIG5vLW9wIHBsdW1iaW5n
IGZvciBkZWxldGVEYXRhYmFzZSBhbmQgZGVsZXRlUmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bQppbmRleCBmNjBlNWRiLi5hMGE4ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC03
OSw2ICs3OSw4IEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmJsb2Nr
ZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAKIHZvaWQgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lv
bklEKQogeworICAgIEFTU0VSVChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVyYWxJRChzZXNzaW9u
SUQpKTsKKwogICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9u
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCmlu
ZGV4IDNlZDU5NmYuLjQ5ZGY4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZXNzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmNwcApAQCAtNDQsNiArNDQsMTQgQEAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbk0KICAgICBy
ZXR1cm4gbWFwLmdldCgpOwogfQogCitzdGF0aWMgSGFzaE1hcDxjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24qLCB1aW50NjRfdD4mIHN0b3JhZ2VTZXNzaW9uVG9JRCgpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiosIHVpbnQ2NF90Pj4gbWFwOworICAgIHJldHVybiBt
YXAuZ2V0KCk7Cit9CisKIHN0YXRpYyBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNjYsMTkgKzc0LDI4IEBAIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiogU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewog
ICAgIGlmIChzZXNzaW9uSUQgPT0gZGVmYXVsdFNlc3Npb25JRCkKICAgICAgICAgcmV0dXJuICZO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotICAgIHJldHVy
biBzdGF0aWNTZXNzaW9uTWFwKCkuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOworICAgIHJldHVybiBzdGF0aWNTZXNzaW9uTWFwKCkuZ2V0KHNlc3Npb25JRCk7
Cit9CisKK3VpbnQ2NF90IFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIGlmICgmc2Vzc2lvbiA9PSAmTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuIGRl
ZmF1bHRTZXNzaW9uSUQ7CisgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uVG9JRCgpLmdldCgmc2Vz
c2lvbik7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24odWludDY0X3Qgc2Vz
c2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQog
ewogICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gZGVmYXVsdFNlc3Npb25JRCk7Ci0gICAgc3RhdGlj
U2Vzc2lvbk1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bW92ZShzZXNzaW9uKTsKKyAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc2Vzc2lvbi5n
ZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwg
c3RkOjptb3ZlKHNlc3Npb24pKTsKIH0KIAogdm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNl
c3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKKyAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUoc2Vzc2lvbihzZXNzaW9uSUQpKTsK
ICAgICBzdGF0aWNTZXNzaW9uTWFwKCkucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKaW5kZXggNWQzOGYxMC4uMmViODFjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHNlc3Npb25NYXAoKTsKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBnZXRJZGVudGlmaWVyQmFzZSgpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIHNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKKyAgICBz
dGF0aWMgdWludDY0X3Qgc2Vzc2lvbklEKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYpOwogICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklELCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPik7CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveVNlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTA0Y2ZjYy4uMjFmODhmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUxMiw3ICs1MTIsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5n
ZXRJRCgpKSwgbV9wYWdlSUQpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBt
X3Byb2Nlc3MtPmNvbnRleHQoKS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbi5nZXRJRCgp
KSk7CisgICAgaWYgKHNlc3Npb24uaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5j
b250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb24uZ2V0SUQoKSkpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBhN2QzMmMzLi5h
MTYxYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC03MywxMyAr
NzMsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LSNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotc3RhdGljIHVpbnQ2NF90IGxlZ2FjeVNlc3Np
b25JRChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24gJnNlc3Npb24pCi17Ci0gICAgcmV0dXJu
IHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgPyBTZXNzaW9uVHJhY2tlcjo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCA6IFNlc3Npb25UcmFja2VyOjpkZWZhdWx0U2Vzc2lvbklEOwot
fQotI2VuZGlmCi0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUGxhdGZvcm1TdHJhdGVnaWVzPiBwbGF0Zm9y
bVN0cmF0ZWdpZXM7CkBAIC0xNDEsNyArMTM0LDcgQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24K
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRm9yRE9NKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpS
ZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTE1NCw3ICsxNDcsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaQogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGxlZ2FjeVNlc3Npb25JRChzZXNzaW9uKSwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMTY3LDcgKzE2MCw3
IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAg
ICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGxlZ2FjeVNlc3Npb25JRChz
ZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNFbmFibGVkKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Vu
YWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE4MSw3ICsxNzQsNyBAQCBTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGxlZ2FjeVNlc3Npb25J
RChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0
KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJl
cGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE5NCw3ICsxODcsNyBAQCBib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhs
ZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2ll
cyksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vz
c2lvbiksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMDcsNyAr
MjAwLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKIHsKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpEZWxldGVDb29raWUobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCB1cmwsIGNvb2tpZU5hbWUp
LCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RGVsZXRlQ29va2llKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwg
Y29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCA2YjU5YWM0Li43
NDYxYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0KQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiB2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0
X3Qgc2Vzc2lvbklEKQogeworICAgIEFTU0VSVChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVyYWxJ
RChzZXNzaW9uSUQpKTsKKwogICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9u
SUQpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA0ODUyZjA1Li42MTE2N2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTM1LDYgKzIxMzUsMTMg
QEAgdWludDY0X3QgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdl
LT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IFNlc3Npb25UcmFja2VyOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Npb25JRCkKK3sK
KyAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBpZiAoU2Vzc2lvblRyYWNrZXI6Omlz
RXBoZW1lcmFsSUQoc2Vzc2lvbklEKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOworfQorCiB2b2lkIFdlYlBhZ2U6
OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0
ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCiB7CiAg
ICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAz
YmEyZjc1Li45NDMxYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGFnZSog
Y29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KICAgICB1aW50NjRfdCBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIHVpbnQ2NF90IHNlc3Npb25J
RCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U2Vzc2lvbklEKHVpbnQ2NF90IHNlc3Npb25JRCkgeyBt
X3Nlc3Npb25JRCA9IHNlc3Npb25JRDsgfQorICAgIHZvaWQgc2V0U2Vzc2lvbklEKHVpbnQ2NF90
KTsKIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NpemU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222789</attachid>
            <date>2014-01-30 20:23:27 -0800</date>
            <delta_ts>2014-01-31 16:19:47 -0800</delta_ts>
            <desc>fix test failure</desc>
            <filename>sessionidmap.04.diff</filename>
            <type>text/plain</type>
            <size>12866</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiODE1ZjM2Li41MWMwNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTQtMDEtMzAgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBzZXNzaW9uIHN1cHBvcnQgdG8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5MjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAg
ICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c3RvcmFn
ZVNlc3Npb25Ub0lEKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNlc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKToKKyAgICAgICAg
KFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpT
ZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24pOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9u
VHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVD
b29raWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
U2Vzc2lvbklEKTogRW5zdXJlIHRoZSBzdG9yYWdlIHNlc3Npb24gZXhpc3RzLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDEtMzAgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNjMxMjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjYwZTVkYi4uYTBh
OGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzksNiArNzksOCBAQCBSZXNvdXJj
ZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKKyAgICBBU1NFUlQo
U2Vzc2lvblRyYWNrZXI6OmlzRXBoZW1lcmFsSUQoc2Vzc2lvbklEKSk7CisKICAgICBpZiAoU2Vz
c2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAppbmRleCAzZWQ1OTZmLi45YWFmYTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKQEAgLTQ0LDYgKzQ0
LDE0IEBAIHN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPj4mIHN0YXRpY1Nlc3Npb25NCiAgICAgcmV0dXJuIG1hcC5nZXQoKTsKIH0K
IAorc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiwgdWludDY0X3Q+
JiBzdG9yYWdlU2Vzc2lvblRvSUQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qLCB1aW50NjRfdD4+IG1hcDsKKyAgICByZXR1cm4gbWFwLmdldCgpOworfQorCiBzdGF0
aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKQEAgLTY2LDIwICs3NCwzMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklEID09
IGRlZmF1bHRTZXNzaW9uSUQpCiAgICAgICAgIHJldHVybiAmTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLSAgICByZXR1cm4gc3RhdGljU2Vzc2lvbk1hcCgp
LmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1
cm4gc3RhdGljU2Vzc2lvbk1hcCgpLmdldChzZXNzaW9uSUQpOworfQorCit1aW50NjRfdCBTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKK3sKKyAgICBpZiAoJnNlc3Npb24gPT0gJk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIHJldHVybiBkZWZhdWx0U2Vzc2lvbklEOworICAg
IHJldHVybiBzdG9yYWdlU2Vzc2lvblRvSUQoKS5nZXQoJnNlc3Npb24pOwogfQogCiB2b2lkIFNl
c3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHVpbnQ2NF90IHNlc3Npb25JRCwgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbikKIHsKICAgICBBU1NFUlQoc2Vzc2lv
bklEICE9IGRlZmF1bHRTZXNzaW9uSUQpOwotICAgIHN0YXRpY1Nlc3Npb25NYXAoKS5hZGQoc2Vz
c2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1vdmUoc2Vzc2lvbik7Cisg
ICAgc3RvcmFnZVNlc3Npb25Ub0lEKCkuc2V0KHNlc3Npb24uZ2V0KCksIHNlc3Npb25JRCk7Cisg
ICAgc3RhdGljU2Vzc2lvbk1hcCgpLnNldChzZXNzaW9uSUQsIHN0ZDo6bW92ZShzZXNzaW9uKSk7
CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHVpbnQ2NF90IHNlc3Np
b25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgc3RhdGljU2Vzc2lv
bk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOworICAgIGlmIChzdGF0aWNTZXNzaW9uTWFwKCkuY29u
dGFpbnMoc2Vzc2lvbklEKSkgeworICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUo
c2Vzc2lvbihzZXNzaW9uSUQpKTsKKyAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShz
ZXNzaW9uSUQpOworICAgIH0KIH0KIAogdm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmll
ckJhc2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuaAppbmRleCA1ZDM4ZjEwLi4yZWI4MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+PiYgc2Vzc2lvbk1hcCgpOwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdl
dElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiogc2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOworICAgIHN0YXRpYyB1aW50NjRfdCBz
ZXNzaW9uSUQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAgICAgc3Rh
dGljIHZvaWQgc2V0U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
U2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAxMzQ3MTg5Li4xYTM5N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTEyLDcgKzUxMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJ
RCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIG1fcHJvY2Vzcy0+Y29udGV4
dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5z
dXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uLmdldElEKCkpKTsKKyAgICBpZiAoc2Vz
c2lvbi5pc0VwaGVtZXJhbCgpKQorICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zZW5kVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oc2Vzc2lvbi5nZXRJRCgpKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGE3ZDMyYzMuLmExNjFjMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTczLDEzICs3Myw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi1zdGF0aWMgdWludDY0X3QgbGVnYWN5U2Vzc2lvbklEKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiAmc2Vzc2lvbikKLXsKLSAgICByZXR1cm4gc2Vzc2lvbi5pc1ByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKSA/IFNlc3Npb25UcmFja2VyOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEIDogU2Vzc2lvblRyYWNrZXI6OmRlZmF1bHRTZXNzaW9uSUQ7Ci19Ci0jZW5kaWYKLQogdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsKQEAg
LTE0MSw3ICsxMzQsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbgogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00obGVn
YWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDAp
KQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uSUQoc2Vzc2lvbiks
IGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTU0LDcgKzE0Nyw3
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3NpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00obGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShTZXNzaW9uVHJhY2tlcjo6c2Vzc2lv
bklEKHNlc3Npb24pLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0xNjcsNyArMTYwLDcgQEAgYm9vbCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9j
ZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3Vs
dDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0VuYWJsZWQobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoU2Vzc2lv
blRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVz
dWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtMTgxLDcgKzE3NCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobGVnYWN5U2Vzc2lvbklEKHNlc3Npb24pLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNz
aW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkp
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpAQCAtMTk0LDcgKzE4Nyw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKIHsKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGxlZ2FjeVNlc3Npb25JRChz
ZXNzaW9uKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCisgICAgICAg
IGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okdl
dFJhd0Nvb2tpZXMoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdD
b29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIwNyw3ICsyMDAsNyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgYwogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYg
KFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShs
ZWdhY3lTZXNzaW9uSUQoc2Vzc2lvbiksIHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUo
U2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChzZXNzaW9uKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDZiNTlhYzQuLjc0NjFjNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNDQsNiArNDQs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih1aW50NjRfdCBzZXNzaW9uSUQpCiB7
CisgICAgQVNTRVJUKFNlc3Npb25UcmFja2VyOjppc0VwaGVtZXJhbElEKHNlc3Npb25JRCkpOwor
CiAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDQ4NTJmMDUuLjYxMTY3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIxMzUsNiArMjEzNSwxMyBAQCB1aW50NjRfdCBXZWJQ
YWdlOjpzZXNzaW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkucHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvblRyYWNrZXI6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQgOiBTZXNzaW9uVHJhY2tlcjo6ZGVmYXVsdFNlc3Npb25JRDsKIH0KIAordm9pZCBXZWJQ
YWdlOjpzZXRTZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOworICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6aXNFcGhlbWVyYWxJRChzZXNz
aW9uSUQpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5lbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHNlc3Npb25JRCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKIHsKICAgICBXZWJGcmFtZSogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNiYTJmNzUuLjk0MzFjMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgx
LDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRTZXNzaW9uSUQodWludDY0X3Qgc2Vzc2lvbklEKSB7IG1fc2Vzc2lvbklEID0gc2Vz
c2lvbklEOyB9CisgICAgdm9pZCBzZXRTZXNzaW9uSUQodWludDY0X3QpOwogCiAgICAgdm9pZCBz
ZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U2l6ZTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>