<?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>153410</bug_id>
          
          <creation_ts>2016-01-24 12:28:35 -0800</creation_ts>
          <short_desc>Modern IDB: Support IDBObjectStore.createIndex in the SQLite backing store</short_desc>
          <delta_ts>2016-01-24 15:42:24 -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>WebCore Misc.</component>
          <version>Other</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>
          
          <blocked>149117</blocked>
    
    <blocked>153021</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1158143</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-24 12:28:35 -0800</bug_when>
    <thetext>Modern IDB: Support IDBObjectStore.createIndex in the SQLite backing store</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158144</commentid>
    <comment_count>1</comment_count>
      <attachid>269703</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-24 12:32:24 -0800</bug_when>
    <thetext>Created attachment 269703
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158150</commentid>
    <comment_count>2</comment_count>
      <attachid>269703</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-24 14:16:15 -0800</bug_when>
    <thetext>Comment on attachment 269703
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:737
&gt; +        ASSERT(m_vm);

Not sure this assertion is valuable given that the code to create m_vm is just above.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:742
&gt; +        const IDBKeyData&amp; key = cursor-&gt;currentKey();

auto&amp;?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:743
&gt; +        const Vector&lt;uint8_t&gt;&amp; valueBuffer = cursor-&gt;currentValueBuffer();

auto&amp;?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:745
&gt; +        Deprecated::ScriptValue value = deserializeIDBValueBuffer(m_globalObject-&gt;globalExec(), Vector&lt;uint8_t&gt;(valueBuffer), true);

auto?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:835
&gt; +    }
&gt; +    {

I think there should be a blank line between these two.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp:56
&gt; +    auto cursor = std::unique_ptr&lt;SQLiteIDBCursor&gt;(new SQLiteIDBCursor(transaction, objectStoreIdentifier));

Can this use make_unique instead? Problem with private? Long term we would love to just be able to &quot;grep for new without adopt&quot; and it’s not so easy with unique_ptr used like this.

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp:82
&gt; +    , m_indexID(IDBIndexMetadata::InvalidId)

Could we initialize this in the class definition?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp:83
&gt; +    , m_cursorDirection(IndexedDB::CursorDirection::Next)

Could we initialize this in the class definition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158154</commentid>
    <comment_count>3</comment_count>
      <attachid>269704</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-24 14:53:23 -0800</bug_when>
    <thetext>Created attachment 269704
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158159</commentid>
    <comment_count>4</comment_count>
      <attachid>269704</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-24 15:42:21 -0800</bug_when>
    <thetext>Comment on attachment 269704
Patch for landing

Clearing flags on attachment: 269704

Committed r195517: &lt;http://trac.webkit.org/changeset/195517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158160</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-24 15:42:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269703</attachid>
            <date>2016-01-24 12:32:24 -0800</date>
            <delta_ts>2016-01-24 14:53:23 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22740</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NzBjM2VhLi4wOWNkZWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDEt
MjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUuY3JlYXRlSW5kZXggaW4gdGhlIFNRTGl0ZSBiYWNr
aW5nIHN0b3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTYtMDEtMjMgIFdv
bmNodWwgTGVlICA8d29uY2h1bC5sZWVAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtHVEtd
IEZpeCBtZWRpYSBjb250cm9scyBkaXNwbGF5aW5nIHdpdGhvdXQgY29udHJvbHMgYXR0cmlidXRl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MWYzODcwNC4uYTk2ZTZhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNDM5LDcgKzQzOSw2IEBAIGltcG9ydGVkL3czYy9pbmRleGVkZGIv
dHJhbnNhY3Rpb25fYnViYmxlLWFuZC1jYXB0dXJlLmh0bSBbIEZhaWx1cmUgXQogaW1wb3J0ZWQv
dzNjL2luZGV4ZWRkYi92YWx1ZS5odG0gWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy9pbmRleGVk
ZGIvdmFsdWVfcmVjdXJzaXZlLmh0bSBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL2luZGV4ZWRk
Yi93cml0ZXItc3RhcnZhdGlvbi5odG0gWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLWFkZGVkLWJ1Zy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItYWR2YW5jZS5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
YmFzaWNzLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTQ2MCwxMyArNDU5LDEwIEBAIHN0b3JhZ2UvaW5k
ZXhlZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIFsgRmFpbHVy
ZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwgWyBGYWlsdXJlIF0KIHN0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2lu
ZGV4ZWRkYi9kYXRhYmFzZS13cmFwcGVyLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZS1yYW5nZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGVJbmRleC5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVj
dHMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sIFsg
RmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb25zLmh0bWwgWyBGYWlsdXJlIF0K
LXN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbCBbIEZhaWx1cmUg
XQogc3RvcmFnZS9pbmRleGVkZGIvZ2V0LWtleXJhbmdlLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4
ZWRkYi9pbmRleC1jb3VudC5odG1sIFsgRmFpbHVyZSBdCkBAIC00ODQsMTIgKzQ4MCw3IEBAIHN0
b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwgWyBGYWlsdXJlIF0KIHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtaW50cmluc2ljLXByb3BlcnRpZXMuaHRtbCBbIEZhaWx1cmUg
XQogc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLmh0bWwgWyBGYWlsdXJl
IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtdHlwZXMuaHRtbCBbIEZhaWx1cmUgXQot
c3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdl
L2luZGV4ZWRkYi9tZXRhZGF0YS1yYWNlLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhl
ZGRiL21ldGFkYXRhLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9h
Ym9ydC1vYmplY3RzdG9yZS1pbmZvLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMuaHRtbCBbIEZhaWx1cmUgXQogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9jdXJzb3ItMi5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vY3Vyc29yLTMuaHRtbCBbIEZhaWx1cmUgXQpAQCAtNTAwLDkgKzQ5MSw3IEBA
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNy5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTguaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTIuaHRtbCBbIEZhaWx1cmUgXQotc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2dldC1pbmRleC1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLmh0bWwgWyBGYWls
dXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLmh0
bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1j
bGVhci0yLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmpl
Y3RzdG9yZS1jb3VudC0xLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTUxNiwxNiArNTA1LDExIEBAIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sIFsgRmFpbHVyZSBdCiBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMuaHRtbCBbIEZhaWx1cmUgXQog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1iYXNpYy5odG1sIFsgRmFp
bHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVz
Lmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9tZW1vcnktaW5kZXgt
bm90LWRlbGV0ZWQtd2l0aC1vYmplY3RzdG9yZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCiBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVy
ZXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3Jl
LWN1cnNvci1jb250aW51ZS1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFkeXN0YXRlLmh0bWwgWyBGYWlsdXJlIF0KLXN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLmh0
bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1p
bmRleGVzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIu
aHRtbCBbIEZhaWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgt
d2l0aC1pbnRlZ2VyLWtleXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25seS5odG1sIFsgRmFpbHVyZSBdCiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1sIFsgRmFpbHVyZSBd
CiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVz
Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTUzNiw3ICs1MjAsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1r
ZXktYWRkZWQtb24tcHV0Lmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvb2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9vZGQtcmVzdWx0LW9yZGVyLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTU0
OSwxOCArNTMyLDEyIEBAIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1s
IFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sIFsg
RmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIFsgRmFp
bHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbCBbIEZhaWx1
cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRt
bCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbCBbIEZhaWx1
cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRtbCBbIEZhaWx1cmUgXQog
c3RvcmFnZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLmh0bWwgWyBGYWlsdXJlIF0KIHN0
b3JhZ2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbCBbIEZhaWx1cmUgXQot
c3RvcmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3Jh
Z2UvaW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRi
L3N0cnVjdHVyZWQtY2xvbmUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYWN0aXZlLWZsYWcuaHRtbCBbIEZhaWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2lu
ZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVk
ZGIvdmFsdWVzLW9kZC10eXBlcy5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk4ZGQx
NC4uNDJjMjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAxLTI0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBTdXBw
b3J0IElEQk9iamVjdFN0b3JlLmNyZWF0ZUluZGV4IGluIHRoZSBTUUxpdGUgYmFja2luZyBzdG9y
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzQx
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoQ292ZXJlZCBieSB1bnNraXBwaW5nIG1hbnkgZXhpc3RpbmcgdGVzdHMpLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OlNRTGl0ZUlEQkN1cnNvcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246
Om1heWJlT3BlbkJhY2tpbmdTdG9yZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmg6CisKIDIwMTYtMDEtMjMgIFdvbmNodWwg
TGVlICA8d29uY2h1bC5sZWVAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtHVEtdIEZpeCBt
ZWRpYSBjb250cm9scyBkaXNwbGF5aW5nIHdpdGhvdXQgY29udHJvbHMgYXR0cmlidXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGI0ODJhZjEuLjVmMmRhNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMTgsNiArMTE4LDExIEBAIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpCiB7CiAgICAgaWYgKG1f
c3FsaXRlREIpCiAgICAgICAgIG1fc3FsaXRlREItPmNsb3NlKCk7CisKKyAgICBpZiAobV92bSkg
eworICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOworICAgICAgICBtX3Zt
ID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHN0YXRpYyBib29sIGNyZWF0ZU9yTWlncmF0ZVJlY29y
ZHNUYWJsZUlmTmVjZXNzYXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKQEAgLTY3OCwxMSAr
NjgzLDE3MiBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cgogICAgIHJldHVybiB7IH07CiB9CiAK
LUlEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCSW5kZXhJbmZvJikKK0lEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBy
ZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
Ik5vdCBpbXBsZW1lbnRlZCIpIH07CisgICAgQVNTRVJUKG1fc3FsaXRlREIpOworICAgIEFTU0VS
VChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CisKKyAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJB
dHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIik7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggd2l0aG91dCBhbiBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpIH07CisgICAgfQorICAgIGlmICh0cmFuc2FjdGlvbi0+
bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlKSB7Cisg
ICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVy
c2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpIH07CisgICAgfQor
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBpZiAoIWtleVBhdGhCbG9iKSB7CisgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJh
c2UiKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRl
IGluZGV4IGluIGRhdGFiYXNlIikgfTsKKyAgICB9CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3Fs
KCptX3NxbGl0ZURCLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIEluZGV4SW5mbyBWQUxVRVMg
KD8sID8sID8sID8sID8sID8pOyIpKTsKKyAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgfHwgc3FsLmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNxbC5iaW5kSW50NjQoMywgaW5mby5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNxbC5iaW5kQmxvYig0LCBrZXlQYXRoQmxv
Yi0+ZGF0YSgpLCBrZXlQYXRoQmxvYi0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
c3FsLmJpbmRJbnQoNSwgaW5mby51bmlxdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNx
bC5iaW5kSW50KDYsIGluZm8ubXVsdGlFbnRyeSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
c3FsLnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBhZGQgaW5kZXggJyVzJyB0byBJbmRleEluZm8gdGFibGUgKCVpKSAtICVzIiwgaW5mby5uYW1l
KCkudXRmOCgpLmRhdGEoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gY3JlYXRlIGluZGV4IGluIGRhdGFi
YXNlIikgfTsKKyAgICB9CisKKyAgICAvLyBXcml0ZSBpbmRleCByZWNvcmRzIGZvciBhbnkgcmVj
b3JkcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhpcyBvYmplY3Qgc3RvcmUuCisKKyAgICBhdXRv
IGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IoaW5mby5v
YmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CisKKyAgICBpZiAoIWN1cnNvcikgeworICAgICAgICBM
T0dfRVJST1IoIkNhbm5vdCBvcGVuIGN1cnNvciB0byBwb3B1bGF0ZSBpbmRleGVzIGluIGRhdGFi
YXNlIik7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHBvcHVsYXRlIGluZGV4ZXMgaW4gZGF0YWJhc2Ui
KSB9OworICAgIH0KKworICAgIGlmICghbV92bSkgeworICAgICAgICBBU1NFUlQoIW1fZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgbV92bSA9IFZNOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOworCisgICAgaWYgKCFtX2dsb2JhbE9iamVjdCkg
eworICAgICAgICBBU1NFUlQobV92bSk7CisgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldCgqbV92
bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSgqbV92bSwganNOdWxsKCkpKSk7CisgICAgfQorCisgICAgd2hpbGUgKCFjdXJzb3It
PmN1cnJlbnRLZXkoKS5pc051bGwoKSkgeworICAgICAgICBjb25zdCBJREJLZXlEYXRhJiBrZXkg
PSBjdXJzb3ItPmN1cnJlbnRLZXkoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2
YWx1ZUJ1ZmZlciA9IGN1cnNvci0+Y3VycmVudFZhbHVlQnVmZmVyKCk7CisKKyAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIFZlY3Rvcjx1aW50OF90Pih2YWx1ZUJ1ZmZlciks
IHRydWUpOworCisgICAgICAgIEluZGV4S2V5IGluZGV4S2V5OworICAgICAgICBnZW5lcmF0ZUlu
ZGV4S2V5Rm9yVmFsdWUoKm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGluZm8sIHZhbHVl
LmpzVmFsdWUoKSwgaW5kZXhLZXkpOworCisgICAgICAgIGlmICghaW5mby5tdWx0aUVudHJ5KCkp
IHsKKyAgICAgICAgICAgIElEQkVycm9yIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQo
aW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgaW5mby5pZGVudGlmaWVyKCksIGtleSwgaW5k
ZXhLZXkuYXNPbmVLZXkoKSk7CisgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcHV0IGluZGV4IHJlY29yZCBmb3Ig
bmV3bHkgY3JlYXRlZCBpbmRleCIpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFZlY3RvcjxJREJLZXlEYXRhPiBpbmRl
eEtleXMgPSBpbmRleEtleS5tdWx0aUVudHJ5KCk7CisKKyAgICAgICAgaWYgKGluZm8udW5pcXVl
KCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzUmVjb3JkOworICAgICAgICAgICAgSURCRXJyb3Ig
ZXJyb3I7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGluZGV4S2V5IDogaW5kZXhLZXlzKSB7Cisg
ICAgICAgICAgICAgICAgZXJyb3IgPSB1bmNoZWNrZWRIYXNJbmRleFJlY29yZChpbmZvLmlkZW50
aWZpZXIoKSwgaW5kZXhLZXksIGhhc1JlY29yZCk7CisgICAgICAgICAgICAgICAgaWYgKGhhc1Jl
Y29yZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICAgICAgICAgIGlmICghZXJyb3IuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGZvciAoYXV0byYgaW5kZXhLZXkgOiBpbmRleEtleXMpIHsK
KyAgICAgICAgICAgIElEQkVycm9yIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW5m
by5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSwgaW5mby5pZGVudGlmaWVyKCksIGtleSwgaW5kZXhL
ZXkpOworICAgICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHB1dCBpbmRleCByZWNvcmQgZm9yIG5ld2x5IGNyZWF0ZWQg
aW5kZXgiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWN1cnNvci0+YWR2YW5jZSgxKSkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvciBhZHZhbmNpbmcgY3Vyc29yIHdoaWxlIGluZGV4aW5nIGV4aXN0
aW5nIHJlY29yZHMgZm9yIG5ldyBpbmRleC4iKTsKKyAgICAgICAgICAgIHJldHVybiB7IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgYWR2YW5j
aW5nIGN1cnNvciB3aGlsZSBpbmRleGluZyBleGlzdGluZyByZWNvcmRzIGZvciBuZXcgaW5kZXgi
KSB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKIH0KIAorSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChpbnQ2NF90IGlu
ZGV4SUQsIGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBib29sJiBoYXNSZWNvcmQpCit7Cisg
ICAgaGFzUmVjb3JkID0gZmFsc2U7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGlmICghaW5kZXhL
ZXlCdWZmZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4
IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybiB7IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIp
IH07CisgICAgfQorCisgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgQVNDSUlM
aXRlcmFsKCJTRUxFQ1Qgcm93aWQgRlJPTSBJbmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8g
QU5EIGtleSA9IENBU1QoPyBBUyBURVhUKTsiKSk7CisgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IHNxbC5iaW5kSW50NjQoMSwgaW5kZXhJRCkgIT0gU1FMSVRF
X09LCisgICAgICAgIHx8IHNxbC5iaW5kQmxvYigyLCBpbmRleEtleUJ1ZmZlci0+ZGF0YSgpLCBp
bmRleEtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJFcnJvciBjaGVja2luZyBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIik7CisgICAgICAg
IHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiRXJyb3IgY2hlY2tpbmcgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpIH07CisgICAg
fQorCisgICAgaW50IHNxbFJlc3VsdCA9IHNxbC5zdGVwKCk7CisgICAgaWYgKHNxbFJlc3VsdCA9
PSBTUUxJVEVfT0sgfHwgc3FsUmVzdWx0ID09IFNRTElURV9ET05FKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgaWYgKHNxbFJlc3VsdCAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIC8vIFRo
ZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgcmVjb3JkIGZyb20gdGhlIGRhdGFiYXNlLgor
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjaGVjayBpZiBrZXkgZXhpc3RzIGluIGluZGV4
ICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2hlY2tpbmcgZm9yIGV4aXN0ZW5jZSBvZiBJREJL
ZXkgaW4gaW5kZXgiKSB9OworICAgIH0KKworICAgIGhhc1JlY29yZCA9IHRydWU7CisgICAgcmV0
dXJuIHsgfTsKK30KKworCitJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tl
ZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBj
b25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlWYWx1ZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYgaW5kZXhLZXkpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm4geyBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBzZXJp
YWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKSB9OworICAgIH0K
KworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlWYWx1ZSk7CisgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgeworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKSB9OworICAgIH0KKyAgICB7CisgICAgICAgIFNRTGl0ZVN0YXRl
bWVudCBzcWwoKm1fc3FsaXRlREIsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElOVE8gSW5kZXhSZWNv
cmRzIFZBTFVFUyAoPywgPywgQ0FTVCg/IEFTIFRFWFQpLCBDQVNUKD8gQVMgVEVYVCkpOyIpKTsK
KyAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBz
cWwuYmluZEludDY0KDEsIGluZGV4SUQpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3Fs
LmJpbmRJbnQ2NCgyLCBvYmplY3RTdG9yZUlEKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IHNxbC5iaW5kQmxvYigzLCBpbmRleEtleUJ1ZmZlci0+ZGF0YSgpLCBpbmRleEtleUJ1ZmZlci0+
c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYig0LCB2YWx1
ZUJ1ZmZlci0+ZGF0YSgpLCB2YWx1ZUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IHB1dCBpbmRleCByZWNvcmQgZm9yIGluZGV4ICUiIFBSSWk2NCAiIGlu
IG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBpbiBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGlu
ZGV4SUQsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURC
LT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkVycm9yIHB1dHRpbmcgaW5kZXggcmVj
b3JkIGludG8gZGF0YWJhc2UiKSB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHsg
fTsKK30KKworCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKQogewog
ICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApp
bmRleCA0N2RmMjJmLi41ZDc3MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAi
SURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCVHJhbnNhY3Rpb24u
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Niw2ICs4Nyw4IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJbmZvKCk7CiAKICAgICBJREJFcnJvciBkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleURhdGEmKTsKKyAgICBJ
REJFcnJvciB1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGlu
dDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IElEQktleURh
dGEmIGluZGV4S2V5KTsKKyAgICBJREJFcnJvciB1bmNoZWNrZWRIYXNJbmRleFJlY29yZChpbnQ2
NF90IGluZGV4SUQsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBoYXNSZWNvcmQpOwogCiAgICAg
SURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5mbzsKQEAgLTk2LDYgKzk5LDkgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4g
bV9jdXJzb3JzOwogCiAgICAgU3RyaW5nIG1fYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeTsKKwor
ICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNHbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDMwZWIyNTkuLjY0YzMxMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwCkBAIC01MSw2ICs1MSwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vy
c29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogICAg
IHJldHVybiBjdXJzb3I7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNR
TGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBjdXJzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29y
PihuZXcgU1FMaXRlSURCQ3Vyc29yKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
KTsKKworICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWN1cnNvci0+YWR2YW5jZSgxKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY3Vyc29yOworfQorCiBTUUxpdGVJREJDdXJzb3I6
OlNRTGl0ZUlEQkN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0
IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAgOiBtX3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikK
ICAgICAsIG1fY3Vyc29ySWRlbnRpZmllcihpbmZvLmlkZW50aWZpZXIoKSkKQEAgLTU4LDExICs3
MSwxNiBAQCBTUUxpdGVJREJDdXJzb3I6OlNRTGl0ZUlEQkN1cnNvcihTUUxpdGVJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cgogICAgICwgbV9pbmRleElEKGluZm8uc291
cmNlSWRlbnRpZmllcigpKQogICAgICwgbV9jdXJzb3JEaXJlY3Rpb24oaW5mby5jdXJzb3JEaXJl
Y3Rpb24oKSkKICAgICAsIG1fa2V5UmFuZ2UoaW5mby5yYW5nZSgpKQotICAgICwgbV9jdXJyZW50
UmVjb3JkSUQoLTEpCi0gICAgLCBtX3N0YXRlbWVudE5lZWRzUmVzZXQoZmFsc2UpCi0gICAgLCBt
X2JvdW5kSUQoMCkKLSAgICAsIG1fY29tcGxldGVkKGZhbHNlKQotICAgICwgbV9lcnJvcmVkKGZh
bHNlKQoreworICAgIEFTU0VSVChtX29iamVjdFN0b3JlSUQpOworfQorCitTUUxpdGVJREJDdXJz
b3I6OlNRTGl0ZUlEQkN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVp
bnQ2NF90IG9iamVjdFN0b3JlSUQpCisgICAgOiBtX3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikK
KyAgICAsIG1fY3Vyc29ySWRlbnRpZmllcih0cmFuc2FjdGlvbi50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkKKyAgICAsIG1fb2JqZWN0U3RvcmVJRChvYmplY3RTdG9yZUlEKQorICAgICwgbV9pbmRl
eElEKElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkKKyAgICAsIG1fY3Vyc29yRGlyZWN0aW9u
KEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0KQogewogICAgIEFTU0VSVChtX29iamVj
dFN0b3JlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCmluZGV4IDRhNjcxZTEuLmU3NzE1NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgU1FMaXRlSURCQ3Vyc29y
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTUUxpdGVJREJDdXJzb3IpOwogcHVibGljOgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBtYXliZUNyZWF0ZShT
UUxpdGVJREJUcmFuc2FjdGlvbiYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gbWF5YmVDcmVhdGVCYWNraW5nU3RvcmVD
dXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3JJZGVudGlmaWVyOyB9CiAgICAgU1FMaXRlSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbjsgfQpA
QCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU1FMaXRlSURCQ3Vyc29y
KFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIFNRTGl0
ZUlEQkN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQp
OwogCiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0ZW1lbnQoKTsKICAgICBib29sIGNyZWF0ZVNRTGl0
ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCk7CkBAIC05MiwxNyArOTQsMTcgQEAgcHJpdmF0
ZToKICAgICBJREJLZXlEYXRhIG1fY3VycmVudExvd2VyS2V5OwogICAgIElEQktleURhdGEgbV9j
dXJyZW50VXBwZXJLZXk7CiAKLSAgICBpbnQ2NF90IG1fY3VycmVudFJlY29yZElEOworICAgIGlu
dDY0X3QgbV9jdXJyZW50UmVjb3JkSUQgeyAtMSB9OwogICAgIElEQktleURhdGEgbV9jdXJyZW50
S2V5OwogICAgIElEQktleURhdGEgbV9jdXJyZW50UHJpbWFyeUtleTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9jdXJyZW50VmFsdWVCdWZmZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
U3RhdGVtZW50PiBtX3N0YXRlbWVudDsKLSAgICBib29sIG1fc3RhdGVtZW50TmVlZHNSZXNldDsK
LSAgICBpbnQ2NF90IG1fYm91bmRJRDsKKyAgICBib29sIG1fc3RhdGVtZW50TmVlZHNSZXNldCB7
IGZhbHNlIH07CisgICAgaW50NjRfdCBtX2JvdW5kSUQgeyAwIH07CiAKLSAgICBib29sIG1fY29t
cGxldGVkOwotICAgIGJvb2wgbV9lcnJvcmVkOworICAgIGJvb2wgbV9jb21wbGV0ZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9lcnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTQ4NGZjZS4uNjllNWQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC05OSw2ICs5OSwxNCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uOjpyZXNldCgpCiAgICAgY2xlYXJDdXJzb3JzKCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0
cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptYXliZU9wZW5CYWNraW5n
U3RvcmVDdXJzb3IodWludDY0X3Qgb2JqZWN0U3RvcmVJRCkKK3sKKyAgICBBU1NFUlQobV9zcWxp
dGVUcmFuc2FjdGlvbik7CisgICAgQVNTRVJUKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSk7CisKKyAgICByZXR1cm4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdT
dG9yZUN1cnNvcigqdGhpcywgb2JqZWN0U3RvcmVJRCk7Cit9CisKIFNRTGl0ZUlEQkN1cnNvciog
U1FMaXRlSURCVHJhbnNhY3Rpb246Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZv
JiBpbmZvKQogewogICAgIEFTU0VSVChtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmgKaW5kZXggZWZiODRhOS4uNDc0OTI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRy
YW5zYWN0aW9uLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIElEQkVycm9yIGNvbW1p
dCgpOwogICAgIElEQkVycm9yIGFib3J0KCk7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
SURCQ3Vyc29yPiBtYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IodWludDY0X3Qgb2JqZWN0U3Rv
cmVJRCk7CiAgICAgU1FMaXRlSURCQ3Vyc29yKiBtYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vy
c29ySW5mbyYpOwogCiAgICAgdm9pZCBjbG9zZUN1cnNvcihTUUxpdGVJREJDdXJzb3ImKTsK
</data>
<flag name="review"
          id="294598"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269704</attachid>
            <date>2016-01-24 14:53:23 -0800</date>
            <delta_ts>2016-01-24 15:42:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23202</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NzBjM2VhLi5jMDE4NTgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDEt
MjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUuY3JlYXRlSW5kZXggaW4gdGhlIFNRTGl0ZSBiYWNr
aW5nIHN0b3JlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTYtMDEtMjMgIFdvbmNo
dWwgTGVlICA8d29uY2h1bC5sZWVAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtHVEtdIEZp
eCBtZWRpYSBjb250cm9scyBkaXNwbGF5aW5nIHdpdGhvdXQgY29udHJvbHMgYXR0cmlidXRlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMWYz
ODcwNC4uYTk2ZTZhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNDM5LDcgKzQzOSw2IEBAIGltcG9ydGVkL3czYy9pbmRleGVkZGIvdHJh
bnNhY3Rpb25fYnViYmxlLWFuZC1jYXB0dXJlLmh0bSBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNj
L2luZGV4ZWRkYi92YWx1ZS5odG0gWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy9pbmRleGVkZGIv
dmFsdWVfcmVjdXJzaXZlLmh0bSBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL2luZGV4ZWRkYi93
cml0ZXItc3RhcnZhdGlvbi5odG0gWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0
ZUluZGV4LWFmdGVyLWZhaWx1cmUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIv
Y3Vyc29yLWFkZGVkLWJ1Zy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJz
b3ItYWR2YW5jZS5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItYmFz
aWNzLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTQ2MCwxMyArNDU5LDEwIEBAIHN0b3JhZ2UvaW5kZXhl
ZGRiL2N1cnNvci1za2lwLWRlbGV0ZWQuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLXVwZGF0ZS12YWx1ZS1hcmd1bWVudC1yZXF1aXJlZC5odG1sIFsgRmFpbHVyZSBd
CiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItdXBkYXRlLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3Jh
Z2UvaW5kZXhlZGRiL2N1cnNvci12YWx1ZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4
ZWRkYi9kYXRhYmFzZS13cmFwcGVyLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRi
L2RlbGV0ZS1yYW5nZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVJ
bmRleC5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMu
aHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvZHVwbGljYXRlcy5odG1sIFsgRmFp
bHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9leGNlcHRpb25zLmh0bWwgWyBGYWlsdXJlIF0KLXN0
b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktZGVsZXRlZGF0YWJhc2UuaHRtbCBbIEZhaWx1cmUgXQog
c3RvcmFnZS9pbmRleGVkZGIvZ2V0LWtleXJhbmdlLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1jb3VudC5odG1sIFsgRmFpbHVyZSBdCkBAIC00ODQsMTIgKzQ4MCw3IEBAIHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5Lmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL2tleXBhdGgtaW50cmluc2ljLXByb3BlcnRpZXMuaHRtbCBbIEZhaWx1cmUgXQog
c3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC1wb3B1bGF0aW9uLmh0bWwgWyBGYWlsdXJlIF0K
IHN0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtdHlwZXMuaHRtbCBbIEZhaWx1cmUgXQotc3Rv
cmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2lu
ZGV4ZWRkYi9tZXRhZGF0YS1yYWNlLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRi
L21ldGFkYXRhLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9y
dC1vYmplY3RzdG9yZS1pbmZvLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9jdXJzb3ItMi5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3Vyc29yLTMuaHRtbCBbIEZhaWx1cmUgXQpAQCAtNTAwLDkgKzQ5MSw3IEBAIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTguaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTIuaHRtbCBbIEZhaWx1cmUgXQotc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2dldC1pbmRleC1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1wcm9wZXJ0aWVzLWJhc2ljLmh0bWwgWyBGYWlsdXJl
IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLmh0bWwg
WyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVh
ci0yLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3Rz
dG9yZS1jb3VudC0xLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTUxNiwxNiArNTA1LDExIEBAIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMuaHRtbCBbIEZhaWx1cmUgXQogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1iYXNpYy5odG1sIFsgRmFpbHVy
ZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWZhaWx1cmVzLmh0
bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9tZW1vcnktaW5kZXgtbm90
LWRlbGV0ZWQtd2l0aC1vYmplY3RzdG9yZS5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtY3Vyc29yLWFkdmFuY2UtZmFpbHVyZXMu
aHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1
cnNvci1jb250aW51ZS1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFkeXN0YXRlLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLmh0bWwg
WyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRl
eGVzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRt
bCBbIEZhaWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jcmVhdGUtaW5kZXgtd2l0
aC1pbnRlZ2VyLWtleXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9jdXJzb3ItbXV0YXRpb24tb2JqZWN0c3RvcmUtb25seS5odG1sIFsgRmFpbHVyZSBdCiBzdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci1tdXRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiBz
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2N1cnNvci11cGRhdGUtdXBkYXRlcy1pbmRleGVzLmh0
bWwgWyBGYWlsdXJlIF0KQEAgLTUzNiw3ICs1MjAsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvaW5kZXhlcy5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2tleS1yZXF1aXJlbWVudHMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vYmplY3QtY3Vyc29ycy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1pZGVudGl0eS5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL29iamVjdC1zdG9yZS1pbmxpbmUtYXV0b2luY3JlbWVudC1rZXkt
YWRkZWQtb24tcHV0Lmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
b2JqZWN0LXN0b3JlLXJlbW92ZS12YWx1ZXMuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9vZGQtcmVzdWx0LW9yZGVyLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTU0OSwx
OCArNTMyLDEyIEBAIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy5odG1sIFsg
RmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jbGVhci5odG1sIFsgRmFp
bHVyZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC5odG1sIFsgRmFpbHVy
ZSBdCiBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3IuaHRtbCBbIEZhaWx1cmUg
XQotc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUuaHRtbCBb
IEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3IuaHRtbCBbIEZhaWx1cmUg
XQogc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkuaHRtbCBbIEZhaWx1cmUgXQogc3Rv
cmFnZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3Jh
Z2UvaW5kZXhlZGRiL3ByZWZldGNoLWJ1Z2ZpeC0xMDgwNzEuaHRtbCBbIEZhaWx1cmUgXQotc3Rv
cmFnZS9pbmRleGVkZGIvcXVldWVkLWNvbW1hbmRzLmh0bWwgWyBGYWlsdXJlIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL3JlYWRvbmx5Lmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2UvaW5kZXhlZGRiL3N0
cnVjdHVyZWQtY2xvbmUuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tYWN0aXZlLWZsYWcuaHRtbCBbIEZhaWx1cmUgXQotc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLmh0bWwgWyBGYWlsdXJlIF0KLXN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy5odG1sIFsgRmFpbHVyZSBdCi1zdG9yYWdlL2lu
ZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay5odG1sIFsgRmFpbHVyZSBdCiBzdG9yYWdlL2luZGV4
ZWRkYi92YWx1ZS11bmRlZmluZWQuaHRtbCBbIEZhaWx1cmUgXQogc3RvcmFnZS9pbmRleGVkZGIv
dmFsdWVzLW9kZC10eXBlcy5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk4ZGQxNC4u
YmVmMTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAxLTI0ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBTdXBwb3J0
IElEQk9iamVjdFN0b3JlLmNyZWF0ZUluZGV4IGluIHRoZSBTUUxpdGUgYmFja2luZyBzdG9yZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzQxMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoQ292ZXJlZCBieSB1bnNraXBwaW5nIG1hbnkgZXhpc3RpbmcgdGVzdHMpLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0
ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQ
dXRJbmRleFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OlNRTGl0ZUlEQkN1cnNvcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246Om1heWJl
T3BlbkJhY2tpbmdTdG9yZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmg6CisKIDIwMTYtMDEtMjMgIFdvbmNodWwgTGVlICA8
d29uY2h1bC5sZWVAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFtHVEtdIEZpeCBtZWRpYSBj
b250cm9scyBkaXNwbGF5aW5nIHdpdGhvdXQgY29udHJvbHMgYXR0cmlidXRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGI0ODJhZjEuLjE3ZjI2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMTgsNiArMTE4LDExIEBAIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpCiB7CiAgICAgaWYgKG1fc3FsaXRl
REIpCiAgICAgICAgIG1fc3FsaXRlREItPmNsb3NlKCk7CisKKyAgICBpZiAobV92bSkgeworICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOworICAgICAgICBtX3ZtID0gbnVs
bHB0cjsKKyAgICB9CiB9CiAKIHN0YXRpYyBib29sIGNyZWF0ZU9yTWlncmF0ZVJlY29yZHNUYWJs
ZUlmTmVjZXNzYXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKQEAgLTY3OCwxMSArNjgzLDE3
MSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cgogICAgIHJldHVybiB7IH07CiB9CiAKLUlEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiwgY29uc3QgSURCSW5kZXhJbmZvJikKK0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4g
eyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vdCBp
bXBsZW1lbnRlZCIpIH07CisgICAgQVNTRVJUKG1fc3FsaXRlREIpOworICAgIEFTU0VSVChtX3Nx
bGl0ZURCLT5pc09wZW4oKSk7CisKKyAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIGNyZWF0ZSBhbiBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7
CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiIpIH07CisgICAgfQorICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgp
ICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlKSB7CisgICAgICAg
IExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRl
eCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpIH07CisgICAgfQorCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBpZiAoIWtleVBhdGhCbG9iKSB7CisgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsK
KyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4
IGluIGRhdGFiYXNlIikgfTsKKyAgICB9CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3Nx
bGl0ZURCLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIEluZGV4SW5mbyBWQUxVRVMgKD8sID8s
ID8sID8sID8sID8pOyIpKTsKKyAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAg
ICAgICAgfHwgc3FsLmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNxbC5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IHNxbC5iaW5kSW50NjQoMywgaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNxbC5iaW5kQmxvYig0LCBrZXlQYXRoQmxvYi0+ZGF0
YSgpLCBrZXlQYXRoQmxvYi0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3FsLmJp
bmRJbnQoNSwgaW5mby51bmlxdWUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNxbC5iaW5k
SW50KDYsIGluZm8ubXVsdGlFbnRyeSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc3FsLnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhZGQg
aW5kZXggJyVzJyB0byBJbmRleEluZm8gdGFibGUgKCVpKSAtICVzIiwgaW5mby5uYW1lKCkudXRm
OCgpLmRhdGEoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIikg
fTsKKyAgICB9CisKKyAgICAvLyBXcml0ZSBpbmRleCByZWNvcmRzIGZvciBhbnkgcmVjb3JkcyB0
aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhpcyBvYmplY3Qgc3RvcmUuCisKKyAgICBhdXRvIGN1cnNv
ciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IoaW5mby5vYmplY3RT
dG9yZUlkZW50aWZpZXIoKSk7CisKKyAgICBpZiAoIWN1cnNvcikgeworICAgICAgICBMT0dfRVJS
T1IoIkNhbm5vdCBvcGVuIGN1cnNvciB0byBwb3B1bGF0ZSBpbmRleGVzIGluIGRhdGFiYXNlIik7
CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHBvcHVsYXRlIGluZGV4ZXMgaW4gZGF0YWJhc2UiKSB9Owor
ICAgIH0KKworICAgIGlmICghbV92bSkgeworICAgICAgICBBU1NFUlQoIW1fZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgbV92bSA9IFZNOjpjcmVhdGUoKTsKKyAgICB9CisKKyAgICBKU0xvY2tIb2xk
ZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOworCisgICAgaWYgKCFtX2dsb2JhbE9iamVjdCkKKyAgICAg
ICAgbV9nbG9iYWxPYmplY3Quc2V0KCptX3ZtLCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKCptX3Zt
LCBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBqc051bGwoKSkpKTsKKwor
ICAgIHdoaWxlICghY3Vyc29yLT5jdXJyZW50S2V5KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgYXV0
byYga2V5ID0gY3Vyc29yLT5jdXJyZW50S2V5KCk7CisgICAgICAgIGF1dG8mIHZhbHVlQnVmZmVy
ID0gY3Vyc29yLT5jdXJyZW50VmFsdWVCdWZmZXIoKTsKKworICAgICAgICBhdXRvIHZhbHVlID0g
ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBW
ZWN0b3I8dWludDhfdD4odmFsdWVCdWZmZXIpLCB0cnVlKTsKKworICAgICAgICBJbmRleEtleSBp
bmRleEtleTsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKCptX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBpbmZvLCB2YWx1ZS5qc1ZhbHVlKCksIGluZGV4S2V5KTsKKworICAg
ICAgICBpZiAoIWluZm8ubXVsdGlFbnRyeSgpKSB7CisgICAgICAgICAgICBJREJFcnJvciBlcnJv
ciA9IHVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCks
IGluZm8uaWRlbnRpZmllcigpLCBrZXksIGluZGV4S2V5LmFzT25lS2V5KCkpOworICAgICAgICAg
ICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHB1dCBpbmRleCByZWNvcmQgZm9yIG5ld2x5IGNyZWF0ZWQgaW5kZXgiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBWZWN0b3I8SURCS2V5RGF0YT4gaW5kZXhLZXlzID0gaW5kZXhLZXkubXVsdGlFbnRyeSgp
OworCisgICAgICAgIGlmIChpbmZvLnVuaXF1ZSgpKSB7CisgICAgICAgICAgICBib29sIGhhc1Jl
Y29yZDsKKyAgICAgICAgICAgIElEQkVycm9yIGVycm9yOworICAgICAgICAgICAgZm9yIChhdXRv
JiBpbmRleEtleSA6IGluZGV4S2V5cykgeworICAgICAgICAgICAgICAgIGVycm9yID0gdW5jaGVj
a2VkSGFzSW5kZXhSZWNvcmQoaW5mby5pZGVudGlmaWVyKCksIGluZGV4S2V5LCBoYXNSZWNvcmQp
OworICAgICAgICAgICAgICAgIGlmIChoYXNSZWNvcmQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1
dG8mIGluZGV4S2V5IDogaW5kZXhLZXlzKSB7CisgICAgICAgICAgICBJREJFcnJvciBlcnJvciA9
IHVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIGlu
Zm8uaWRlbnRpZmllcigpLCBrZXksIGluZGV4S2V5KTsKKyAgICAgICAgICAgIGlmICghZXJyb3Iu
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBwdXQgaW5k
ZXggcmVjb3JkIGZvciBuZXdseSBjcmVhdGVkIGluZGV4Iik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjdXJz
b3ItPmFkdmFuY2UoMSkpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWR2YW5jaW5n
IGN1cnNvciB3aGlsZSBpbmRleGluZyBleGlzdGluZyByZWNvcmRzIGZvciBuZXcgaW5kZXguIik7
CisgICAgICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIkVycm9yIGFkdmFuY2luZyBjdXJzb3Igd2hpbGUgaW5kZXhpbmcgZXhp
c3RpbmcgcmVjb3JkcyBmb3IgbmV3IGluZGV4IikgfTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB7IH07CiB9CiAKK0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVj
a2VkSGFzSW5kZXhSZWNvcmQoaW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlEYXRhJiBpbmRl
eEtleSwgYm9vbCYgaGFzUmVjb3JkKQoreworICAgIGhhc1JlY29yZCA9IGZhbHNlOworCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGluZGV4S2V5KTsKKyAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CisgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRh
YmFzZSIpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiKSB9OworICAgIH0KKworICAgIFNRTGl0ZVN0YXRl
bWVudCBzcWwoKm1fc3FsaXRlREIsIEFTQ0lJTGl0ZXJhbCgiU0VMRUNUIHJvd2lkIEZST00gSW5k
ZXhSZWNvcmRzIFdIRVJFIGluZGV4SUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCk7Iikp
OworICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBzcWwuYmlu
ZEludDY0KDEsIGluZGV4SUQpICE9IFNRTElURV9PSworICAgICAgICB8fCBzcWwuYmluZEJsb2Io
MiwgaW5kZXhLZXlCdWZmZXItPmRhdGEoKSwgaW5kZXhLZXlCdWZmZXItPnNpemUoKSkgIT0gU1FM
SVRFX09LKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3IgY2hlY2tpbmcgZm9yIGluZGV4IHJl
Y29yZCBpbiBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNoZWNraW5nIGZvciBpbmRleCBy
ZWNvcmQgaW4gZGF0YWJhc2UiKSB9OworICAgIH0KKworICAgIGludCBzcWxSZXN1bHQgPSBzcWwu
c3RlcCgpOworICAgIGlmIChzcWxSZXN1bHQgPT0gU1FMSVRFX09LIHx8IHNxbFJlc3VsdCA9PSBT
UUxJVEVfRE9ORSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChzcWxSZXN1bHQgIT0g
U1FMSVRFX1JPVykgeworICAgICAgICAvLyBUaGVyZSB3YXMgYW4gZXJyb3IgZmV0Y2hpbmcgdGhl
IHJlY29yZCBmcm9tIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y2hlY2sgaWYga2V5IGV4aXN0cyBpbiBpbmRleCAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNo
ZWNraW5nIGZvciBleGlzdGVuY2Ugb2YgSURCS2V5IGluIGluZGV4IikgfTsKKyAgICB9CisKKyAg
ICBoYXNSZWNvcmQgPSB0cnVlOworICAgIHJldHVybiB7IH07Cit9CisKKworSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVj
dFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5
VmFsdWUsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGluZGV4S2V5KQoreworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CisgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgeworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2Ui
KTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQg
aW4gdGhlIGRhdGFiYXNlIikgfTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2
YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGlmICghdmFs
dWVCdWZmZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2
YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CisgICAgICAgIHJldHVybiB7IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIikgfTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsIEFTQ0lJ
TGl0ZXJhbCgiSU5TRVJUIElOVE8gSW5kZXhSZWNvcmRzIFZBTFVFUyAoPywgPywgQ0FTVCg/IEFT
IFRFWFQpLCBDQVNUKD8gQVMgVEVYVCkpOyIpKTsKKyAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwuYmluZEludDY0KDEsIGluZGV4SUQpICE9
IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLmJpbmRJbnQ2NCgyLCBvYmplY3RTdG9yZUlE
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigzLCBpbmRleEtleUJ1
ZmZlci0+ZGF0YSgpLCBpbmRleEtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgICAgIHx8IHNxbC5iaW5kQmxvYig0LCB2YWx1ZUJ1ZmZlci0+ZGF0YSgpLCB2YWx1ZUJ1ZmZl
ci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHB1dCBpbmRleCBy
ZWNvcmQgZm9yIGluZGV4ICUiIFBSSWk2NCAiIGluIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBp
biBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGluZGV4SUQsIG9iamVjdFN0b3JlSUQsIG1fc3Fs
aXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
ICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIkVycm9yIHB1dHRpbmcgaW5kZXggcmVjb3JkIGludG8gZGF0YWJhc2UiKSB9OworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworCiBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCA0N2RmMjJmLi41ZDc3MGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU1FMaXRlSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC04Niw2ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRh
dGFiYXNlSW5mbz4gZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCk7CiAKICAgICBJREJFcnJv
ciBkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGNvbnN0IElEQktleURhdGEmKTsKKyAgICBJREJFcnJvciB1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5
RGF0YSYga2V5VmFsdWUsIGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5KTsKKyAgICBJREJFcnJv
ciB1bmNoZWNrZWRIYXNJbmRleFJlY29yZChpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleURh
dGEmLCBib29sJiBoYXNSZWNvcmQpOwogCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNl
SW5mbzsKQEAgLTk2LDYgKzk5LDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPElEQlJlc291cmNl
SWRlbnRpZmllciwgU1FMaXRlSURCQ3Vyc29yKj4gbV9jdXJzb3JzOwogCiAgICAgU3RyaW5nIG1f
YWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeTsKKworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOwor
ICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDMw
ZWIyNTkuLjhkNDlmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC00MCw3ICs0MCwyMCBA
QCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNv
cj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3Ig
PSBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPihuZXcgU1FMaXRlSURCQ3Vyc29yKHRy
YW5zYWN0aW9uLCBpbmZvKSk7CisgICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNR
TGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworCisgICAgaWYgKCFjdXJzb3ItPmVz
dGFibGlzaFN0YXRlbWVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICgh
Y3Vyc29yLT5hZHZhbmNlKDEpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBjdXJzb3I7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlE
QkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7
CisgICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJh
bnNhY3Rpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0
YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTgsMTEgKzcx
LDE1IEBAIFNRTGl0ZUlEQkN1cnNvcjo6U1FMaXRlSURCQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQ3VyCiAgICAgLCBtX2luZGV4SUQoaW5mby5zb3Vy
Y2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX2N1cnNvckRpcmVjdGlvbihpbmZvLmN1cnNvckRpcmVj
dGlvbigpKQogICAgICwgbV9rZXlSYW5nZShpbmZvLnJhbmdlKCkpCi0gICAgLCBtX2N1cnJlbnRS
ZWNvcmRJRCgtMSkKLSAgICAsIG1fc3RhdGVtZW50TmVlZHNSZXNldChmYWxzZSkKLSAgICAsIG1f
Ym91bmRJRCgwKQotICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX2Vycm9yZWQoZmFs
c2UpCit7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJRCk7Cit9CisKK1NRTGl0ZUlEQkN1cnNv
cjo6U1FMaXRlSURCQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCkKKyAgICA6IG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKQor
ICAgICwgbV9jdXJzb3JJZGVudGlmaWVyKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmll
cigpKQorICAgICwgbV9vYmplY3RTdG9yZUlEKG9iamVjdFN0b3JlSUQpCisgICAgLCBtX2N1cnNv
ckRpcmVjdGlvbihJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCkKIHsKICAgICBBU1NF
UlQobV9vYmplY3RTdG9yZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCA0YTY3MWUxLi5j
NTZhNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC00Niw2ICs0NiwxMCBAQCBjbGFzcyBTUUxp
dGVJREJDdXJzb3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNRTGl0ZUlEQkN1cnNvcik7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IG1h
eWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBtYXliZUNyZWF0ZUJh
Y2tpbmdTdG9yZUN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYsIGNvbnN0IHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CisKKyAgICBTUUxpdGVJREJDdXJzb3IoU1FMaXRlSURCVHJh
bnNhY3Rpb24mLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CisgICAgU1FMaXRlSURCQ3Vyc29yKFNR
TGl0ZUlEQlRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCk7CiAKICAgICBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2N1
cnNvcklkZW50aWZpZXI7IH0KICAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uOyB9CkBAIC02NCw4ICs2OCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKTsKIAogcHJpdmF0ZToKLSAg
ICBTUUxpdGVJREJDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mLCBjb25zdCBJREJDdXJzb3JJ
bmZvJik7Ci0KICAgICBib29sIGVzdGFibGlzaFN0YXRlbWVudCgpOwogICAgIGJvb2wgY3JlYXRl
U1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKTsKICAgICBib29sIGJpbmRBcmd1bWVu
dHMoKTsKQEAgLTg1LDI0ICs4NywyNCBAQCBwcml2YXRlOgogICAgIFNRTGl0ZUlEQlRyYW5zYWN0
aW9uKiBtX3RyYW5zYWN0aW9uOwogICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX2N1cnNvcklk
ZW50aWZpZXI7CiAgICAgaW50NjRfdCBtX29iamVjdFN0b3JlSUQ7Ci0gICAgaW50NjRfdCBtX2lu
ZGV4SUQ7Ci0gICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbV9jdXJzb3JEaXJlY3Rpb247
CisgICAgaW50NjRfdCBtX2luZGV4SUQgeyBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQgfTsK
KyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBtX2N1cnNvckRpcmVjdGlvbiB7IEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0IH07CiAgICAgSURCS2V5UmFuZ2VEYXRhIG1fa2V5
UmFuZ2U7CiAKICAgICBJREJLZXlEYXRhIG1fY3VycmVudExvd2VyS2V5OwogICAgIElEQktleURh
dGEgbV9jdXJyZW50VXBwZXJLZXk7CiAKLSAgICBpbnQ2NF90IG1fY3VycmVudFJlY29yZElEOwor
ICAgIGludDY0X3QgbV9jdXJyZW50UmVjb3JkSUQgeyAtMSB9OwogICAgIElEQktleURhdGEgbV9j
dXJyZW50S2V5OwogICAgIElEQktleURhdGEgbV9jdXJyZW50UHJpbWFyeUtleTsKICAgICBWZWN0
b3I8dWludDhfdD4gbV9jdXJyZW50VmFsdWVCdWZmZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlU3RhdGVtZW50PiBtX3N0YXRlbWVudDsKLSAgICBib29sIG1fc3RhdGVtZW50TmVlZHNS
ZXNldDsKLSAgICBpbnQ2NF90IG1fYm91bmRJRDsKKyAgICBib29sIG1fc3RhdGVtZW50TmVlZHNS
ZXNldCB7IGZhbHNlIH07CisgICAgaW50NjRfdCBtX2JvdW5kSUQgeyAwIH07CiAKLSAgICBib29s
IG1fY29tcGxldGVkOwotICAgIGJvb2wgbV9lcnJvcmVkOworICAgIGJvb2wgbV9jb21wbGV0ZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9lcnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTQ4NGZjZS4uNjllNWQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05OSw2ICs5OSwxNCBAQCB2b2lkIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uOjpyZXNldCgpCiAgICAgY2xlYXJDdXJzb3JzKCk7CiB9CiAKK3N0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptYXliZU9wZW5C
YWNraW5nU3RvcmVDdXJzb3IodWludDY0X3Qgb2JqZWN0U3RvcmVJRCkKK3sKKyAgICBBU1NFUlQo
bV9zcWxpdGVUcmFuc2FjdGlvbik7CisgICAgQVNTRVJUKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSk7CisKKyAgICByZXR1cm4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJh
Y2tpbmdTdG9yZUN1cnNvcigqdGhpcywgb2JqZWN0U3RvcmVJRCk7Cit9CisKIFNRTGl0ZUlEQkN1
cnNvciogU1FMaXRlSURCVHJhbnNhY3Rpb246Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJz
b3JJbmZvJiBpbmZvKQogewogICAgIEFTU0VSVChtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQlRyYW5zYWN0aW9uLmgKaW5kZXggZWZiODRhOS4uNDc0OTI0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQlRyYW5zYWN0aW9uLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIElEQkVycm9y
IGNvbW1pdCgpOwogICAgIElEQkVycm9yIGFib3J0KCk7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlSURCQ3Vyc29yPiBtYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCk7CiAgICAgU1FMaXRlSURCQ3Vyc29yKiBtYXliZU9wZW5DdXJzb3IoY29uc3Qg
SURCQ3Vyc29ySW5mbyYpOwogCiAgICAgdm9pZCBjbG9zZUN1cnNvcihTUUxpdGVJREJDdXJzb3Im
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>