<?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>112233</bug_id>
          
          <creation_ts>2013-03-13 01:20:45 -0700</creation_ts>
          <short_desc>JSObject fast by-string access optimizations should work even on the prototype chain, and even when the result is undefined</short_desc>
          <delta_ts>2024-03-14 22:06:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>112458</dependson>
    
    <dependson>112539</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ashvayka</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854112</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-13 01:20:45 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854113</commentid>
    <comment_count>1</comment_count>
      <attachid>192878</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-13 01:21:09 -0700</bug_when>
    <thetext>Created attachment 192878
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854131</commentid>
    <comment_count>2</comment_count>
      <attachid>192883</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-13 01:52:20 -0700</bug_when>
    <thetext>Created attachment 192883
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854132</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 01:59:18 -0700</bug_when>
    <thetext>Attachment 192883 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/miss-string-lookup-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/miss-string-lookup.html&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/miss-string-lookup.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCellInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/Lookup.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyMapHashTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.h&apos;, u&apos;Source/JavaScriptCore/runtime/StructureInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.cpp:427:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/runtime/JSCell.h:167:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854144</commentid>
    <comment_count>4</comment_count>
      <attachid>192886</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-13 02:21:33 -0700</bug_when>
    <thetext>Created attachment 192886
the patch

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855431</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-14 12:46:05 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/145838</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856208</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-15 12:58:23 -0700</bug_when>
    <thetext>Reopening because we&apos;re going to roll out the landed patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192878</attachid>
            <date>2013-03-13 01:21:09 -0700</date>
            <delta_ts>2013-03-13 01:52:20 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26192</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQCBhbGwgOiBcCiAgICAgTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIE51bWJlclByb3RvdHlwZS5sdXQuaCBcCiAgICAgT2JqZWN0Q29u
c3RydWN0b3IubHV0LmggXAotICAgIE9iamVjdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVnRXhw
Q29uc3RydWN0b3IubHV0LmggXAogICAgIFJlZ0V4cFByb3RvdHlwZS5sdXQuaCBcCiAgICAgUmVn
RXhwSml0VGFibGVzLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsMTkgKzQyNCwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKIAotICAgICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkgeworICAgICAg
ICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChl
eGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9w
ZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5LmlzRG91YmxlKCkp
IHsKICAgICAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eUFzRG91YmxlID0gcHJvcGVydHkuYXNEb3Vi
bGUoKTsKICAgICAgICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocHJvcGVydHlBc0RvdWJsZSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHlB
c1VJbnQzMiA9PSBwcm9wZXJ0eUFzRG91YmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBnZXRC
eVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKTsKLSAgICAgICAgfSBlbHNlIGlmIChw
cm9wZXJ0eS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBi
YXNlLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT52YWx1ZShl
eGVjKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwot
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZS0+Z2V0QnlTdHJpbmcoZXhlYywgYXNT
dHJpbmcocHJvcGVydHkpLT52YWx1ZShleGVjKSkpOwogICAgIH0KLQorICAgIAogICAgIGlmIChp
c05hbWUocHJvcGVydHkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1
ZS5nZXQoZXhlYywganNDYXN0PE5hbWVJbnN0YW5jZSo+KHByb3BlcnR5LmFzQ2VsbCgpKS0+cHJp
dmF0ZU5hbWUoKSkpOwogCkBAIC00NTMsMTUgKzQ1MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAKICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkKICAg
ICAgICAgcmV0dXJuIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpOwot
ICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgZWxzZSBpZiAocHJvcGVydHkuaXNE
b3VibGUoKSkgewogICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFz
RG91YmxlKCk7CiAgICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocHJvcGVydHlBc0RvdWJsZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eUFzVUlu
dDMyID09IHByb3BlcnR5QXNEb3VibGUpCiAgICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhl
YywgYmFzZSwgcHJvcGVydHlBc1VJbnQzMik7Ci0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Q
cm9wZXJ0eShleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICB9CisgICAgfSBlbHNlIGlm
IChwcm9wZXJ0eS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJh
c2UtPmdldEJ5U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dmFsdWUoZXhlYykpKTsK
IAogICAgIGlmIChpc05hbWUocHJvcGVydHkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoYmFzZSkuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihwcm9wZXJ0
eS5hc0NlbGwoKSktPnByaXZhdGVOYW1lKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNyArOTAsNiBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBI
YXNoVGFibGUqIG51bWJlckNvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsg
cmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm51bWJlckNvbnN0cnVjdG9yVGFibGU7IH0K
ICAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyUHJvdG90eXBlVGFibGUoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm51bWJl
clByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVj
dENvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLm9iamVjdENvbnN0cnVjdG9yVGFibGU7IH0KLSAgICAgICAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm9iamVjdFByb3RvdHlwZVRhYmxl
OyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByaXZhdGVOYW1lUHJvdG90eXBl
VGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLnByaXZhdGVOYW1lUHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSogcmVnRXhwVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLnJlZ0V4cFRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBI
YXNoVGFibGUqIHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsg
cmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnJlZ0V4cENvbnN0cnVjdG9yVGFibGU7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDU1
NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQxNywxMCArMjQxNyw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRK
U1ZhbHVlLCBvcF8KIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKLSAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwo
KSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKLSAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoY2FsbEZyYW1lLCBhc1N0
cmluZyhzdWJzY3JpcHQpLT52YWx1ZShjYWxsRnJhbWUpKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQorICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNj
cmlwdC5pc1N0cmluZygpKSkKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5hc0NlbGwoKS0+Z2V0
QnlTdHJpbmcoY2FsbEZyYW1lLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShjYWxsRnJhbWUp
KTsKIAogICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjAsMTAgKzEwNjAsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X2lkCiAKIGlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogewotICAgIGlmIChMSUtFTFkoYmFzZVZhbHVl
LmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewotICAgICAgICBpZiAoSlNWYWx1
ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBh
c1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCi0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0KKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3Jp
cHQuaXNTdHJpbmcoKSkpCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5
U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKTsKICAgICAKICAg
ICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05OSw3ICs5OSwxMSBAQAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3cml0YWJs
ZSkgXAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBcCi0gICAgbWFjcm8oam9pbikKKyAgICBtYWNy
byhqb2luKSBcCisgICAgbWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAorICAgIG1hY3JvKF9fZGVm
aW5lU2V0dGVyX18pIFwKKyAgICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCisgICAgbWFjcm8o
X19sb29rdXBTZXR0ZXJfXykKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hf
S0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKG51bGwpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDQg
KzIyNywxMCBAQCBib29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitKU1ZhbHVlIEpTQ2VsbDo6Z2V0QnlTdHJpbmdTbG93KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIElkZW50aWZpZXIgaWRlbnQo
JmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWUodGhpcykuZ2V0
KGV4ZWMsIGlkZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsx
MjIsOCBAQCBwdWJsaWM6CiAgICAgLy8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBub3QgaXRzIHNsb3dl
ciB2aXJ0dWFsIGNvdW50ZXJwYXJ0LiAoRm9yIGludGVnZXIKICAgICAvLyBwcm9wZXJ0eSBuYW1l
cywgd2Ugd2FudCBhIHNpbWlsYXIgaW50ZXJmYWNlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0
aW9ucy4pCiAgICAgYm9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHko
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgSlNWYWx1ZSBnZXRCeVN0cmlu
ZyhFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3Ry
dWN0dXJlT2Zmc2V0KCkKICAgICB7CkBAIC0xNjEsNiArMTYyLDEwIEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+CisgICAgSlNWYWx1ZSBnZXRCeVN0cmluZ0Fu
ZEtleShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLZXlUeXBlJiBrZXkpOworICAg
IEpTVmFsdWUgZ2V0QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAg
ICAgICAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZp
c2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSwyMCArMTY5LDQ2IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpn
ZXRCeVN0cmluZ0FuZEtleShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS2V5VHlwZSYga2V5KQoreworICAgIEpTQ2VsbCogY2VsbCA9IHRoaXM7CisgICAgCisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGNlbGwtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBnZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7CisgICAgICAgIAorICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBjZWxsLT5z
dHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlcyAmIEFjY2Vzc29yKQorICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5nZXRCeVN0
cmluZ1Nsb3coZXhlYywgbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QoY2VsbCkt
PmdldERpcmVjdChvZmZzZXQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1ZhbHVl
IHByb3RvdHlwZSA9IGNlbGwtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAg
ICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKKyAgICB9CisgICAgCisgICAgLy8gTWFrZSBz
dXJlIHdlIGFyZW4ndCBnb2luZyBhZnRlciBpbmRleGVkIHN0b3JhZ2UsIGFuZCBpZiB3ZSBhcmUs
IHRoZW4ganVzdCB1c2UgdGhhdC4KKyAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0
cmluZ0ltcGwobmFtZS5pbXBsKCkpOworICAgIGlmIChpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5v
dEFuSW5kZXgpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVy
biBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpbmRleCk7Cit9CisKIC8vIEZhc3QgY2FsbCB0byBn
ZXQgYSBwcm9wZXJ0eSB3aGVyZSB3ZSBtYXkgbm90IHlldCBoYXZlIGNvbnZlcnRlZCB0aGUgc3Ry
aW5nIHRvIGFuCiAvLyBpZGVudGlmaWVyLiBUaGUgZmlyc3QgdGltZSB3ZSBwZXJmb3JtIGEgcHJv
cGVydHkgYWNjZXNzIHdpdGggYSBnaXZlbiBzdHJpbmcsIHRyeQogLy8gcGVyZm9ybWluZyB0aGUg
cHJvcGVydHkgbWFwIGxvb2t1cCB3aXRob3V0IGZvcm1pbmcgYW4gaWRlbnRpZmllci4gV2UgZGV0
ZWN0IHRoaXMKIC8vIGNhc2UgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJl
ZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZh
c3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKK0FM
V0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFt
ZS5pbXBsKCktPmhhc0hhc2goKQotICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKLSAgICAgICAgICAgIDogc3Ry
dWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICBpZiAob2Zm
c2V0ICE9IGludmFsaWRPZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcykt
PmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gSlNW
YWx1ZSgpOworICAgIGlmIChuYW1lLmltcGwoKS0+aGFzSGFzaCgpKQorICAgICAgICByZXR1cm4g
Z2V0QnlTdHJpbmdBbmRLZXkoZXhlYywgbmFtZSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7Cisg
ICAgcmV0dXJuIGdldEJ5U3RyaW5nQW5kS2V5KGV4ZWMsIG5hbWUsIG5hbWUpOwogfQogCiBpbmxp
bmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlz
aW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDYgQEAgZXh0ZXJuIGNvbnN0IEhhc2hU
YWJsZSBtYXRoVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0cnVjdG9y
VGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxlOwogSlNf
RVhQT1JUREFUQSBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7
Ci1leHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNv
bnN0IEhhc2hUYWJsZSBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhh
c2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwQ29uc3Ry
dWN0b3JUYWJsZTsKQEAgLTE1NSw3ICsxNTQsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwCiAgICAgLCBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6Om51bWJlckNvbnN0cnVjdG9yVGFibGUpKQogICAgICwgbnVtYmVyUHJvdG90
eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFibGUpKQog
ICAgICwgb2JqZWN0Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmpl
Y3RDb25zdHJ1Y3RvclRhYmxlKSkKLSAgICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZhc3ROZXc8
SGFzaFRhYmxlPihKU0M6Om9iamVjdFByb3RvdHlwZVRhYmxlKSkKICAgICAsIHByaXZhdGVOYW1l
UHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQcm90b3R5
cGVUYWJsZSkpCiAgICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdF
eHBUYWJsZSkpCiAgICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxl
PihKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQpAQCAtMjg2LDcgKzI4NCw2IEBAIEpTR2xv
YmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiAgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJsZS0+ZGVs
ZXRlVGFibGUoKTsKICAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAg
ICBvYmplY3RDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOwotICAgIG9iamVjdFByb3Rv
dHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUt
PmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVn
RXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKQEAgLTMwNiw3ICszMDMsNiBAQCBK
U0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25z
dF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUpKTsKLSAgICBm
YXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2JqZWN0UHJvdG90eXBlVGFibGUpKTsK
ICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQcm90b3R5
cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBU
YWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBDb25z
dHJ1Y3RvclRhYmxlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1
Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxl
OwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9yVGFibGU7Ci0gICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAgIGNvbnN0
IEhhc2hUYWJsZSogcHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29uc3QgSGFz
aFRhYmxlKiByZWdFeHBUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25z
dHJ1Y3RvclRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAyLDYgKzIyMDIsMTYgQEAgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIH0KIH0KIAordm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJ
bnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0lt
cGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIEFTU0VSVChuYW1lKTsK
KyAgICAKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9CisgICAgICAgIEpTRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5j
dGlvbiwgaW50cmluc2ljKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JM
ZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCiB7
CiAgICAgQVNTRVJUKGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2NSw2ICs1NjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFs
dWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRo
aXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQog
CisgICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRp
dmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRo
cm93KTsKIAogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTcwMCw3ICs3MDIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7
CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQotCisgICAgCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7
CkBAIC05MDksNiArOTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIg
YXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8g
YmUgYSBKU09iamVjdC4KICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAg
IHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CisKICAgICB2b2lkIGdldE9iamVjdCgpOwog
ICAgIHZvaWQgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgdm9pZCBpc09iamVjdCgp
OwpAQCAtMTQ0OSw2ICsxNDUyLDE0IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uo
UHJvcGVydHkKIAogQ09NUElMRV9BU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4pKSwgSlNPYmplY3RfaW5saW5lX3N0b3JhZ2VfaGFzX2Nv
cnJlY3RfYWxpZ25tZW50KTsKIAorLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUgZnVuY3Rp
b25zLCBpZiB5b3UncmUgbm90IHVzaW5nIGEgc3RhdGljIGhhc2ggdGFibGUuCisvLyBVc2UgdGhp
cyBtYWNybyBmcm9tIHdpdGhpbiBmaW5pc2hDcmVhdGlvbigpIG1ldGhvZHMgaW4gcHJvdG90eXBl
cy4gVGhpcyBhc3N1bWVzCisvLyB5b3UndmUgZGVmaW5lZCB2YXJpYWJsZXMgY2FsbGVkIGV4ZWMs
IGdsb2JhbE9iamVjdCwgYW5kIGdsb2JhbERhdGEsIGFuZCB0aGV5CisvLyBoYXZlIHRoZSBleHBl
Y3RlZCBtZWFuaW5ncy4gVGhpcyBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgZnVuY3Rpb24geW91J3Jl
IGRlZmluaW5nCisvLyBkb2Vzbid0IGhhdmUgYW4gaW50cmluc2ljLgorI2RlZmluZSBKU0NfTkFU
SVZFX0ZVTkNUSU9OKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBcCisgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxEYXRhLnBy
b3BlcnR5TmFtZXMtPmpzTmFtZSwgKGxlbmd0aCksIGNwcE5hbWUsIE5vSW50cmluc2ljLCAoYXR0
cmlidXRlcykpCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAx
NDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NywxMSArNzcsOSBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90
KEV4ZWNTdGF0ZSogCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIFN0cmluZ0ltcGwq
IG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwotICAgICAgICBBU1NFUlQobmFtZSk7
Ci0gICAgICAgIAotICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3Ro
KCksIG5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOwotICAgICAg
ICB0aGlzT2JqLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1
bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb24oCisgICAgICAgICAgICBleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgIGVu
dHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkp
OwogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZz
ZXQpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDUxICs0MCw0MCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0
eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi19Ci0K
LSNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCiBB
U1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOwogCi1jb25zdCBD
bGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5h
bE9iamVjdDo6c19pbmZvLCAwLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKE9iamVjdFByb3RvdHlwZSkgfTsKLQotLyogU291cmNlIGZvciBPYmpl
Y3RQcm90b3R5cGUubHV0LmgKLUBiZWdpbiBvYmplY3RQcm90b3R5cGVUYWJsZQotICB0b1N0cmlu
ZyAgICAgICAgICAgICAgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKLSAgdG9Mb2NhbGVTdHJpbmcgICAgICAgIG9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIHZhbHVlT2Yg
ICAgICAgICAgICAgICBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAotICBoYXNPd25Qcm9wZXJ0eSAgICAgICAgb2JqZWN0UHJvdG9GdW5j
SGFzT3duUHJvcGVydHkgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgcHJvcGVydHlJ
c0VudW1lcmFibGUgIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlICAgICBEb250
RW51bXxGdW5jdGlvbiAxCi0gIGlzUHJvdG90eXBlT2YgICAgICAgICBvYmplY3RQcm90b0Z1bmNJ
c1Byb3RvdHlwZU9mICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBfX2RlZmluZUdl
dHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDIKLSAgX19kZWZpbmVTZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0Rl
ZmluZVNldHRlciAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gIF9fbG9va3VwR2V0
dGVyX18gICAgICBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIgICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMQotICBfX2xvb2t1cFNldHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jTG9v
a3VwU2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLUBlbmQKLSovCitjb25z
dCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25G
aW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFByb3Rv
dHlwZSkgfTsKIAogT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0dWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHN0dWN0dXJlKQogewogfQogCi12b2lkIE9iamVjdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCopCit2
b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIGdsb2JhbERh
dGEucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLX0KLQotYm9vbCBPYmplY3RQcm90
b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQotewotICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNOb25GaW5hbE9iamVjdD4oZXhlYywgRXhlY1N0
YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PE9iamVjdFByb3RvdHlwZSo+
KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIE9iamVjdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQotewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNOb25GaW5h
bE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZShleGVjKSwganND
YXN0PE9iamVjdFByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
CisgICAgCisgICAgSlNDX05BVElWRV9GVU5DVElPTih0b1N0cmluZywgb2JqZWN0UHJvdG9GdW5j
VG9TdHJpbmcsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHRvTG9jYWxl
U3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZywgRG9udEVudW0sIDApOworICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT04odmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgRG9u
dEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oaGFzT3duUHJvcGVydHksIG9iamVj
dFByb3RvRnVuY0hhc093blByb3BlcnR5LCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTihwcm9wZXJ0eUlzRW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0Vu
dW1lcmFibGUsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGlzUHJvdG90
eXBlT2YsIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIERvbnRFbnVtLCAxKTsKKyAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OKF9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmlu
ZUdldHRlciwgRG9udEVudW0sIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19kZWZpbmVT
ZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBEb250RW51bSwgMik7CisgICAg
SlNDX05BVElWRV9GVU5DVElPTihfX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29r
dXBHZXR0ZXIsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKF9fbG9va3Vw
U2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciwgRG9udEVudW0sIDEpOworfQor
CitPYmplY3RQcm90b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisgICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhl
Yywgc3RydWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAo
KSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBP
YmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC00
NCwxNCArMzksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7
Ci0KLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxNDU1
NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgaW5saW5lIFByb3BlcnR5VGFi
bGU6OmZpbmRfaXRlcmF0b3IgUHJvcAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0
b3IgUHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcoY29uc3QgS2V5VHlwZSYga2V5KQogewog
ICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSAmJiAha2V5
LT5oYXNIYXNoKCkpOworICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSk7CiAgICAgdW5z
aWduZWQgaGFzaCA9IGtleS0+aGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQ1
NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzMyw3ICsyMzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAogICAg
IFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgIFBy
b3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7
CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQmIGF0dHJpYnV0ZXMpOworICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEm
LCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAog
ICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSwyMiBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpn
ZXQoSlNHCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7
CiB9CiAKLWlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoraW5saW5lIFByb3BlcnR5T2Zm
c2V0IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKHN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5
TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50
cnkgPSBwcm9wZXJ0eVRhYmxlKCktPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKKyAg
ICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKKyAgICAKKyAgICBh
dHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7CisgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7
Cit9CisKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRl
cykKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwog
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKQEAgLTc3
LDcgKzkyLDExIEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0cKICAg
ICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRy
eSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0Owot
ICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OworICAgIGlm
ICghZW50cnkpCisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgYXR0cmlidXRl
cyA9IGVudHJ5LT5hdHRyaWJ1dGVzOworICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwogfQogICAg
IAogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192883</attachid>
            <date>2013-03-13 01:52:20 -0700</date>
            <delta_ts>2013-03-13 02:21:33 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33598</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1Njg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDEzLTAzLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNPYmplY3QgZmFzdCBieS1zdHJpbmcgYWNjZXNzIG9wdGltaXphdGlvbnMgc2hvdWxkIHdvcmsg
ZXZlbiBvbiB0aGUgcHJvdG90eXBlIGNoYWluLCBhbmQgZXZlbiB3aGVuIHRoZSByZXN1bHQgaXMg
dW5kZWZpbmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTIyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEV4dGVuZGVkIHRoZSBleGlzdGluZyBmYXN0IGFjY2VzcyBwYXRoIGZvciBTdHJp
bmcga2V5cyB0byB3b3JrIG92ZXIgdGhlIGVudGlyZSBwcm90b3R5cGUgY2hhaW4sCisgICAgICAg
IG5vdCBqdXN0IHRoZSBzZWxmIGFjY2VzcyBjYXNlLiBUaGlzIHdpbGwgZmFpbCBhcyBzb29uIGFz
IGl0IHNlZXMgYW4gb2JqZWN0IHRoYXQgaW50ZXJjZXB0cworICAgICAgICBnZXRPd25Qcm9wZXJ0
eVNsb3QsIHNvIHRoaXMgcGF0Y2ggYWxzbyBlbnN1cmVzIHRoYXQgT2JqZWN0UHJvdG90eXBlIGRv
ZXMgbm90IGZhbGwgaW50byB0aGF0CisgICAgICAgIGNhdGVnb3J5LiBUaGlzIGlzIGFjY29tcGxp
c2hlZCBieSBtYWtpbmcgT2JqZWN0UHJvdG90eXBlIGVhZ2VybHkgcmVpZnkgYWxsIG9mIGl0cyBw
cm9wZXJ0aWVzLgorICAgICAgICBUaGlzIGlzIHNhZmUgZm9yIE9iamVjdFByb3RvdHlwZSBiZWNh
dXNlIGl0J3Mgc28gY29tbW9uIGFuZCB3ZSBleHBlY3QgYWxsIG9mIGl0cyBwcm9wZXJ0aWVzIHRv
CisgICAgICAgIGJlIHJlaWZpZWQgZm9yIGFueSBpbnRlcmVzdGluZyBwcm9ncmFtcyBhbnl3YXku
IEEgbmV3IGlkaW9tIGZvciBhZGRpbmcgbmF0aXZlIGZ1bmN0aW9ucyB0bworICAgICAgICBwcm90
b3R5cGVzIGlzIGludHJvZHVjZWQsIHdoaWNoIG91Z2h0IHRvIHdvcmsgd2VsbCBmb3IgYW55IG90
aGVyIHByb3RvdHlwZXMgdGhhdCB3ZSB3aXNoIHRvIGRvCisgICAgICAgIHRoaXMgY29udmVyc2lv
biBmb3IuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgPjYwJSBzcGVlZC11cCBpbiB0aGUg
Y2FzZSB0aGF0IHlvdSBmcmVxdWVudGx5IGRvIGJ5LXN0cmluZyBsb29rdXBzIHRoYXQgIm1pc3Mi
LCBpLmUuCisgICAgICAgIHRoZXkgZG9uJ3QgdHVybiB1cCBhbnl0aGluZy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0Nh
bGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFi
bGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OmdldEJ5VmFs
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRCeVZhbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRC
eVN0cmluZ1Nsb3cpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0QnlTdHJpbmdBbmRLZXkp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldEJ5U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpz
ZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJv
dG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmRXaXRoU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAg
ICAgICAoSlNDKToKKwogMjAxMy0wMy0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVEYgdXNlcyBtYWNyb3MgZm9yIGV4cG9ydHMuIFRyeSB0byBm
aXggdGhlIFdpbmRvd3MgYnVpbGQuIFVucmV2aWV3ZWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksNiBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAotICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDYgQEAgYWxsIDogXAogICAgIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQ
cm90b3R5cGUubHV0LmggXAogICAgIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwKLSAgICBPYmpl
Y3RQcm90b3R5cGUubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBS
ZWdFeHBQcm90b3R5cGUubHV0LmggXAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTQ1NTc4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMjAsNyArMjAsNiBAQCBMVVRfRklMRVMgKz0gXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIFwKLSAgICBydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKICAgICBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyUHJvdG90eXBl
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rv
ci5sdXQuaCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBl
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBQcm90b3R5cGUubHV0
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsMTkgKzQyNCwxNyBAQCBFbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUu
aXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsK
IAotICAgICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkgeworICAgICAgICBpZiAocHJvcGVy
dHkuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBw
cm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc0RvdWJs
ZSgpKSB7CisgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKICAgICAgICAg
ICAgIGRvdWJsZSBwcm9wZXJ0eUFzRG91YmxlID0gcHJvcGVydHkuYXNEb3VibGUoKTsKICAgICAg
ICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cHJvcGVydHlBc0RvdWJsZSk7CiAgICAgICAgICAgICBpZiAocHJvcGVydHlBc1VJbnQzMiA9PSBw
cm9wZXJ0eUFzRG91YmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBi
YXNlLCBwcm9wZXJ0eUFzVUludDMyKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0
cmluZygpKSB7Ci0gICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0
T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT52YWx1ZShleGVjKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYmFzZS0+Z2V0QnlTdHJpbmcoZXhlYywgYXNTdHJpbmcocHJvcGVy
dHkpLT52YWx1ZShleGVjKSkpOwogICAgIH0KLQorICAgIAogICAgIGlmIChpc05hbWUocHJvcGVy
dHkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywg
anNDYXN0PE5hbWVJbnN0YW5jZSo+KHByb3BlcnR5LmFzQ2VsbCgpKS0+cHJpdmF0ZU5hbWUoKSkp
OwogCkBAIC00NTMsMTUgKzQ1MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlCiAKICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkKICAgICAgICAgcmV0dXJu
IGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpOwotICAgIGlmIChwcm9w
ZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgZWxzZSBpZiAocHJvcGVydHkuaXNEb3VibGUoKSkgewog
ICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7CiAg
ICAgICAgIHVpbnQzMl90IHByb3BlcnR5QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cHJvcGVydHlBc0RvdWJsZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eUFzVUludDMyID09IHByb3Bl
cnR5QXNEb3VibGUpCiAgICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJv
cGVydHlBc1VJbnQzMik7Ci0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7Ci0g
ICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVj
LCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICB9CisgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5p
c1N0cmluZygpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2UtPmdldEJ5U3Ry
aW5nKGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dmFsdWUoZXhlYykpKTsKIAogICAgIGlmIChp
c05hbWUocHJvcGVydHkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
YmFzZSkuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihwcm9wZXJ0eS5hc0NlbGwoKSkt
PnByaXZhdGVOYW1lKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAs
NiBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51
bWJlckNvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLm51bWJlckNvbnN0cnVjdG9yVGFibGU7IH0KICAgICAgICAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm51bWJlclByb3RvdHlwZVRh
YmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9y
VGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLm9iamVjdENvbnN0cnVjdG9yVGFibGU7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJu
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLm9iamVjdFByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLnByaXZhdGVO
YW1lUHJvdG90eXBlVGFibGU7IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogcmVn
RXhwVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLnJlZ0V4cFRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHJl
Z0V4cENvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLnJlZ0V4cENvbnN0cnVjdG9yVGFibGU7IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQx
NywxMCArMjQxNyw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8K
IHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKIHsKLSAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3Jp
cHQuaXNTdHJpbmcoKSkpIHsKLSAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVl
LmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoY2FsbEZyYW1lLCBhc1N0cmluZyhzdWJzY3Jp
cHQpLT52YWx1ZShjYWxsRnJhbWUpKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQorICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmlu
ZygpKSkKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5hc0NlbGwoKS0+Z2V0QnlTdHJpbmcoY2Fs
bEZyYW1lLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShjYWxsRnJhbWUpKTsKIAogICAgIGlm
IChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0
LmFzVUludDMyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjAsMTAgKzEw
NjAsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkCiAKIGlubGlu
ZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3Vic2NyaXB0KQogewotICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYm
IHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewotICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJz
Y3JpcHQpLT52YWx1ZShleGVjKSkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5U3RyaW5nKGV4ZWMs
IGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKTsKICAgICAKICAgICBpZiAoc3Vic2Ny
aXB0LmlzVUludDMyKCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQz
MigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSwx
MSBAQAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3cml0YWJsZSkgXAogICAgIG1h
Y3JvKGRpc3BsYXlOYW1lKSBcCi0gICAgbWFjcm8oam9pbikKKyAgICBtYWNybyhqb2luKSBcCisg
ICAgbWFjcm8oX19kZWZpbmVHZXR0ZXJfXykgXAorICAgIG1hY3JvKF9fZGVmaW5lU2V0dGVyX18p
IFwKKyAgICBtYWNybyhfX2xvb2t1cEdldHRlcl9fKSBcCisgICAgbWFjcm8oX19sb29rdXBTZXR0
ZXJfXykKIAogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNy
bykgXAogICAgIG1hY3JvKG51bGwpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDQgKzIyNywxMCBAQCBi
b29sIEpTQ2VsbDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitKU1ZhbHVlIEpTQ2VsbDo6Z2V0QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIElkZW50aWZpZXIgaWRlbnQoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWUodGhpcykuZ2V0KGV4ZWMsIGlkZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsOCBAQCBwdWJs
aWM6CiAgICAgLy8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBub3QgaXRzIHNsb3dlciB2aXJ0dWFsIGNv
dW50ZXJwYXJ0LiAoRm9yIGludGVnZXIKICAgICAvLyBwcm9wZXJ0eSBuYW1lcywgd2Ugd2FudCBh
IHNpbWlsYXIgaW50ZXJmYWNlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0aW9ucy4pCiAgICAg
Ym9vbCBmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJik7CisgICAgCisgICAgSlNWYWx1ZSBnZXRCeVN0cmluZyhFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0
KCkKICAgICB7CkBAIC0xNjEsNiArMTYyLDEwIEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleVR5cGU+CisgICAgSlNWYWx1ZSBnZXRCeVN0cmluZ0FuZEtleShFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLZXlUeXBlJiBrZXkpOworICAgIEpTVmFsdWUgZ2V0
QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNDU1Nzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE2OSwyMCArMTY5LDQ2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6
OmZhc3RHZXRPd25Qcm8KICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIEtleVR5cGU+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpnZXRCeVN0cmluZ0Fu
ZEtleShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS2V5VHlwZSYg
a2V5KQoreworICAgIEpTQ2VsbCogY2VsbCA9IHRoaXM7CisgICAgCisgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpKSkKKyAgICAgICAgICAgIHJldHVybiBnZXRCeVN0
cmluZ1Nsb3coZXhlYywgbmFtZSk7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1
dGVzOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+
Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEFj
Y2Vzc29yKQorICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5nZXRCeVN0cmluZ1Nsb3coZXhl
YywgbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QoY2VsbCktPmdldERpcmVjdChv
ZmZzZXQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9
IGNlbGwtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgaWYgKCFwcm90
b3R5cGUuaXNPYmplY3QoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjZWxsID0gYXNP
YmplY3QocHJvdG90eXBlKTsKKyAgICB9CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4n
dCBnb2luZyBhZnRlciBpbmRleGVkIHN0b3JhZ2UsIGFuZCBpZiB3ZSBhcmUsIHRoZW4ganVzdCB1
c2UgdGhhdC4KKyAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobmFt
ZS5pbXBsKCkpOworICAgIGlmIChpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlKHRo
aXMpLmdldChleGVjLCBpbmRleCk7Cit9CisKIC8vIEZhc3QgY2FsbCB0byBnZXQgYSBwcm9wZXJ0
eSB3aGVyZSB3ZSBtYXkgbm90IHlldCBoYXZlIGNvbnZlcnRlZCB0aGUgc3RyaW5nIHRvIGFuCiAv
LyBpZGVudGlmaWVyLiBUaGUgZmlyc3QgdGltZSB3ZSBwZXJmb3JtIGEgcHJvcGVydHkgYWNjZXNz
IHdpdGggYSBnaXZlbiBzdHJpbmcsIHRyeQogLy8gcGVyZm9ybWluZyB0aGUgcHJvcGVydHkgbWFw
IGxvb2t1cCB3aXRob3V0IGZvcm1pbmcgYW4gaWRlbnRpZmllci4gV2UgZGV0ZWN0IHRoaXMKIC8v
IGNhc2UgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0
aGlzIHN0cmluZy4KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKK0FMV0FZU19JTkxJTkUg
SlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCkpIHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhh
c0hhc2goKQotICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKLSAgICAgICAgICAgIDogc3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
IGlmIChuYW1lLmltcGwoKS0+aGFzSGFzaCgpKQorICAgICAgICByZXR1cm4gZ2V0QnlTdHJpbmdB
bmRLZXkoZXhlYywgbmFtZSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgcmV0dXJuIGdl
dEJ5U3RyaW5nQW5kS2V5KGV4ZWMsIG5hbWUsIG5hbWUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0Nl
bGw6OnRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDE0NTU3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDcgKzkzLDYgQEAgZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBtYXRoVGFi
bGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0cnVjdG9yVGFibGU7CiBleHRl
cm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxlOwogSlNfRVhQT1JUREFUQSBl
eHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7Ci1leHRlcm4gY29u
c3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJs
ZSBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdF
eHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsK
QEAgLTE1NSw3ICsxNTQsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgLCBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6
Om51bWJlckNvbnN0cnVjdG9yVGFibGUpKQogICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoZmFz
dE5ldzxIYXNoVGFibGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFibGUpKQogICAgICwgb2JqZWN0
Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
clRhYmxlKSkKLSAgICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihK
U0M6Om9iamVjdFByb3RvdHlwZVRhYmxlKSkKICAgICAsIHByaXZhdGVOYW1lUHJvdG90eXBlVGFi
bGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpCiAg
ICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBUYWJsZSkpCiAg
ICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yVGFibGUpKQpAQCAtMjg2LDcgKzI4NCw2IEBAIEpTR2xvYmFsRGF0YTo6fkpT
R2xvYmFsRGF0YSgpCiAgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsK
ICAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBvYmplY3RDb25z
dHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOwotICAgIG9iamVjdFByb3RvdHlwZVRhYmxlLT5k
ZWxldGVUYWJsZSgpOwogICAgIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUtPmRlbGV0ZVRhYmxl
KCk7CiAgICAgcmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwQ29uc3RydWN0
b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKQEAgLTMwNiw3ICszMDMsNiBAQCBKU0dsb2JhbERhdGE6
On5KU0dsb2JhbERhdGEoKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihu
dW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hU
YWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0
PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUpKTsKLSAgICBmYXN0RGVsZXRlKGNv
bnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2JqZWN0UHJvdG90eXBlVGFibGUpKTsKICAgICBmYXN0RGVs
ZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpOwog
ICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBUYWJsZSkpOwogICAg
IGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxl
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlOwog
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxlOwogICAgICAgICBj
b25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9yVGFibGU7Ci0gICAgICAgIGNvbnN0IEhh
c2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
cHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdF
eHBUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2
aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAyLDYgKzIyMDIsMTYgQEAgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIH0KIH0KIAordm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVu
Y3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50
cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICAKKyAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9CisgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmlu
c2ljKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1
bmN0aW9uLCBhdHRyaWJ1dGVzKTsKK30KKwogQUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09iamVj
dDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2ln
bmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJU
KGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE0NTU3OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2NSw2ICs1NjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsg
bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsg
fQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCisgICAgdm9pZCBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAg
IGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTcwMCw3ICs3MDIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFT
U0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQotCisgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC05MDksNiAr
OTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0
aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVj
dC4KICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgIHVzaW5nIEpTQ2Vs
bDo6aXNHZXR0ZXJTZXR0ZXI7CisKICAgICB2b2lkIGdldE9iamVjdCgpOwogICAgIHZvaWQgZ2V0
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgdm9pZCBpc09iamVjdCgpOwpAQCAtMTQ0OSw2
ICsxNDUyLDE0IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHkKIAog
Q09NUElMRV9BU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4pKSwgSlNPYmplY3RfaW5saW5lX3N0b3JhZ2VfaGFzX2NvcnJlY3RfYWxpZ25t
ZW50KTsKIAorLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUgZnVuY3Rpb25zLCBpZiB5b3Un
cmUgbm90IHVzaW5nIGEgc3RhdGljIGhhc2ggdGFibGUuCisvLyBVc2UgdGhpcyBtYWNybyBmcm9t
IHdpdGhpbiBmaW5pc2hDcmVhdGlvbigpIG1ldGhvZHMgaW4gcHJvdG90eXBlcy4gVGhpcyBhc3N1
bWVzCisvLyB5b3UndmUgZGVmaW5lZCB2YXJpYWJsZXMgY2FsbGVkIGV4ZWMsIGdsb2JhbE9iamVj
dCwgYW5kIGdsb2JhbERhdGEsIGFuZCB0aGV5CisvLyBoYXZlIHRoZSBleHBlY3RlZCBtZWFuaW5n
cy4gVGhpcyBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgZnVuY3Rpb24geW91J3JlIGRlZmluaW5nCisv
LyBkb2Vzbid0IGhhdmUgYW4gaW50cmluc2ljLgorI2RlZmluZSBKU0NfTkFUSVZFX0ZVTkNUSU9O
KGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBcCisgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMt
PmpzTmFtZSwgKGxlbmd0aCksIGNwcE5hbWUsIE5vSW50cmluc2ljLCAoYXR0cmlidXRlcykpCisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxNDU1NzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NywxMSArNzcsOSBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSog
CiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9w
ZXJ0eU5hbWUucHVibGljTmFtZSgpOwotICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIAot
ICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIG5hbWUsIGVu
dHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOwotICAgICAgICB0aGlzT2JqLT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRy
eS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oCisgICAgICAgICAgICBleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlO
YW1lLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlv
bigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBv
ZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDUxICs0MCw0MCBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJs
ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi19Ci0KLSNpbmNsdWRlICJP
YmplY3RQcm90b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCiBBU1NFUlRfSEFTX1RS
SVZJQUxfREVTVFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOwogCi1jb25zdCBDbGFzc0luZm8gT2Jq
ZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19p
bmZvLCAwLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE9iamVjdFByb3RvdHlwZSkgfTsKLQotLyogU291cmNlIGZvciBPYmplY3RQcm90b3R5cGUu
bHV0LmgKLUBiZWdpbiBvYmplY3RQcm90b3R5cGVUYWJsZQotICB0b1N0cmluZyAgICAgICAgICAg
ICAgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKLSAgdG9Mb2NhbGVTdHJpbmcgICAgICAgIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIHZhbHVlT2YgICAgICAgICAgICAg
ICBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMAotICBoYXNPd25Qcm9wZXJ0eSAgICAgICAgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVy
dHkgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgcHJvcGVydHlJc0VudW1lcmFibGUg
IG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlICAgICBEb250RW51bXxGdW5jdGlv
biAxCi0gIGlzUHJvdG90eXBlT2YgICAgICAgICBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9m
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBfX2RlZmluZUdldHRlcl9fICAgICAg
b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKLSAgX19kZWZpbmVTZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCi0gIF9fbG9va3VwR2V0dGVyX18gICAgICBv
YmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQotICBfX2xvb2t1cFNldHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLUBlbmQKLSovCitjb25zdCBDbGFzc0luZm8g
T2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFByb3RvdHlwZSkgfTsKIAog
T2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0dWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCks
IHN0dWN0dXJlKQogewogfQogCi12b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCopCit2b2lkIE9iamVjdFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogeworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICAKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIGdsb2JhbERhdGEucHJvdG90eXBl
TWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLX0KLQotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0
aWNGdW5jdGlvblNsb3Q8SlNOb25GaW5hbE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RQ
cm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PE9iamVjdFByb3RvdHlwZSo+KGNlbGwpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAg
IHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNOb25GaW5hbE9iamVjdD4oZXhl
YywgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PE9iamVjdFBy
b3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgCisgICAg
SlNDX05BVElWRV9GVU5DVElPTih0b1N0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcsIERv
bnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHRvTG9jYWxlU3RyaW5nLCBvYmpl
Y3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgRG9udEVudW0sIDApOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hh
c093blByb3BlcnR5LCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihwcm9w
ZXJ0eUlzRW51bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIERv
bnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGlzUHJvdG90eXBlT2YsIG9iamVj
dFByb3RvRnVuY0lzUHJvdG90eXBlT2YsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKF9fZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgRG9u
dEVudW0sIDIpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19kZWZpbmVTZXR0ZXJfXywgb2Jq
ZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCBEb250RW51bSwgMik7CisgICAgSlNDX05BVElWRV9G
VU5DVElPTihfX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIERv
bnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKF9fbG9va3VwU2V0dGVyX18sIG9i
amVjdFByb3RvRnVuY0xvb2t1cFNldHRlciwgRG9udEVudW0sIDEpOworfQorCitPYmplY3RQcm90
b3R5cGUqIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RQ
cm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgc3RydWN0dXJl
KTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIHByb3RvdHlwZTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlz
aW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0g
ICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFBy
b3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hD
cmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcHJvdG90eXBlOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC00NCwxNCArMzksMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOworICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU19FWFBPUlRf
UFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRl
cmF0b3IgUHJvcAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlU
YWJsZTo6ZmluZFdpdGhTdHJpbmcoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIEFTU0VSVChr
ZXkpOwotICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSAmJiAha2V5LT5oYXNIYXNoKCkp
OworICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSk7CiAgICAgdW5zaWduZWQgaGFzaCA9
IGtleS0+aGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw3ICsyMzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAogICAgIFByb3BlcnR5T2Zm
c2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgIFByb3BlcnR5T2Zmc2V0
IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7CisgICAgUHJvcGVy
dHlPZmZzZXQgZ2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMpOworICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6
OlN0cmluZyYgbmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIGJvb2wgaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSwyMiBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHCiAgICAg
cmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiB9CiAKLWlubGlu
ZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVy
ZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmc19pbmZvKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CisgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisgICAgICAgIHJldHVy
biBpbnZhbGlkT2Zmc2V0OworCisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9wZXJ0
eVRhYmxlKCktPmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKKyAgICBpZiAoIWVudHJ5
KQorICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKKyAgICAKKyAgICBhdHRyaWJ1dGVzID0g
ZW50cnktPmF0dHJpYnV0ZXM7CisgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7Cit9CisKK2lubGlu
ZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKIHsKICAgICBB
U1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKQEAgLTc3LDcgKzkyLDExIEBA
IGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0cKICAgICAgICAgcmV0dXJu
IGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5
VGFibGUoKS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwotICAgIHJldHVybiBl
bnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OworICAgIGlmICghZW50cnkpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5h
dHRyaWJ1dGVzOworICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwogfQogICAgIAogaW5saW5lIGJv
b2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1Njg1KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTMg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU09iamVjdCBmYXN0
IGJ5LXN0cmluZyBhY2Nlc3Mgb3B0aW1pemF0aW9ucyBzaG91bGQgd29yayBldmVuIG9uIHRoZSBw
cm90b3R5cGUgY2hhaW4sIGFuZCBldmVuIHdoZW4gdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIzMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9y
ZWdyZXNzL21pc3Mtc3RyaW5nLWxvb2t1cC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvcmVncmVzcy9taXNzLXN0cmluZy1sb29rdXAuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9taXNzLXN0cmluZy1sb29rdXAuanM6IEFk
ZGVkLgorICAgICAgICAocmVzdWx0KToKKwogMjAxMy0wMy0xMyAgTWlraGFpbCBQb3pkbnlha292
ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBFRkwgcmViYXNlbGlu
ZSBhZnRlciByMTQ1MjQyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL21pc3Mt
c3RyaW5nLWxvb2t1cC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL21pc3Mtc3RyaW5nLWxvb2t1cC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbWlzcy1zdHJpbmctbG9va3VwLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvbWlzcy1z
dHJpbmctbG9va3VwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4
Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbWlzcy1zdHJpbmct
bG9va3VwLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL21p
c3Mtc3RyaW5nLWxvb2t1cC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL21pc3Mtc3RyaW5nLWxvb2t1cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL21pc3Mtc3Ry
aW5nLWxvb2t1cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21pc3Mtc3RyaW5nLWxvb2t1cC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21pc3Mtc3RyaW5n
LWxvb2t1cC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvbWlzcy1zdHJpbmctbG9va3VwLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTIgQEAKK3ZhciByZXN1bHQgPSAoZnVuY3Rpb24oKXsKKyAgICB2YXIgbyA9IHt9OworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIG9bImEiICsgaV0gPSA0MjsK
KyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkKKyAgICAgICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7CisgICAgcmV0dXJuIHJlc3VsdC5s
ZW5ndGg7Cit9KSgpOworCitpZiAocmVzdWx0ICE9IDEwMDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192886</attachid>
            <date>2013-03-13 02:21:33 -0700</date>
            <delta_ts>2013-03-13 10:28:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33589</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1Njg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDEzLTAzLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNPYmplY3QgZmFzdCBieS1zdHJpbmcgYWNjZXNzIG9wdGltaXphdGlvbnMgc2hvdWxkIHdvcmsg
ZXZlbiBvbiB0aGUgcHJvdG90eXBlIGNoYWluLCBhbmQgZXZlbiB3aGVuIHRoZSByZXN1bHQgaXMg
dW5kZWZpbmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTIyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEV4dGVuZGVkIHRoZSBleGlzdGluZyBmYXN0IGFjY2VzcyBwYXRoIGZvciBTdHJp
bmcga2V5cyB0byB3b3JrIG92ZXIgdGhlIGVudGlyZSBwcm90b3R5cGUgY2hhaW4sCisgICAgICAg
IG5vdCBqdXN0IHRoZSBzZWxmIGFjY2VzcyBjYXNlLiBUaGlzIHdpbGwgZmFpbCBhcyBzb29uIGFz
IGl0IHNlZXMgYW4gb2JqZWN0IHRoYXQgaW50ZXJjZXB0cworICAgICAgICBnZXRPd25Qcm9wZXJ0
eVNsb3QsIHNvIHRoaXMgcGF0Y2ggYWxzbyBlbnN1cmVzIHRoYXQgT2JqZWN0UHJvdG90eXBlIGRv
ZXMgbm90IGZhbGwgaW50byB0aGF0CisgICAgICAgIGNhdGVnb3J5LiBUaGlzIGlzIGFjY29tcGxp
c2hlZCBieSBtYWtpbmcgT2JqZWN0UHJvdG90eXBlIGVhZ2VybHkgcmVpZnkgYWxsIG9mIGl0cyBw
cm9wZXJ0aWVzLgorICAgICAgICBUaGlzIGlzIHNhZmUgZm9yIE9iamVjdFByb3RvdHlwZSBiZWNh
dXNlIGl0J3Mgc28gY29tbW9uIGFuZCB3ZSBleHBlY3QgYWxsIG9mIGl0cyBwcm9wZXJ0aWVzIHRv
CisgICAgICAgIGJlIHJlaWZpZWQgZm9yIGFueSBpbnRlcmVzdGluZyBwcm9ncmFtcyBhbnl3YXku
IEEgbmV3IGlkaW9tIGZvciBhZGRpbmcgbmF0aXZlIGZ1bmN0aW9ucyB0bworICAgICAgICBwcm90
b3R5cGVzIGlzIGludHJvZHVjZWQsIHdoaWNoIG91Z2h0IHRvIHdvcmsgd2VsbCBmb3IgYW55IG90
aGVyIHByb3RvdHlwZXMgdGhhdCB3ZSB3aXNoIHRvIGRvCisgICAgICAgIHRoaXMgY29udmVyc2lv
biBmb3IuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgPjYwJSBzcGVlZC11cCBpbiB0aGUg
Y2FzZSB0aGF0IHlvdSBmcmVxdWVudGx5IGRvIGJ5LXN0cmluZyBsb29rdXBzIHRoYXQgIm1pc3Mi
LCBpLmUuCisgICAgICAgIHRoZXkgZG9uJ3QgdHVybiB1cCBhbnl0aGluZy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVycHJldGVyL0Nh
bGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Om9iamVjdENvbnN0cnVjdG9yVGFi
bGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OmdldEJ5VmFs
KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRCeVZhbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRC
eVN0cmluZ1Nsb3cpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5o
OgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Z2V0QnlTdHJpbmdBbmRLZXkp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmdldEJ5U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6fkpTR2xv
YmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROYXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpz
ZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAoT2JqZWN0UHJv
dG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmg6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmZpbmRXaXRoU3RyaW5nKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXQpOgorICAg
ICAgICAoSlNDKToKKwogMjAxMy0wMy0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBXVEYgdXNlcyBtYWNyb3MgZm9yIGV4cG9ydHMuIFRyeSB0byBm
aXggdGhlIFdpbmRvd3MgYnVpbGQuIFVucmV2aWV3ZWQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksNiBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAotICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDYgQEAgYWxsIDogXAogICAgIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBOdW1iZXJQ
cm90b3R5cGUubHV0LmggXAogICAgIE9iamVjdENvbnN0cnVjdG9yLmx1dC5oIFwKLSAgICBPYmpl
Y3RQcm90b3R5cGUubHV0LmggXAogICAgIFJlZ0V4cENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBS
ZWdFeHBQcm90b3R5cGUubHV0LmggXAogICAgIFJlZ0V4cEppdFRhYmxlcy5oIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gMTQ1NTc4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMjAsNyArMjAsNiBAQCBMVVRfRklMRVMgKz0gXAogICAgIHJ1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwIFwKICAgICBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgXAogICAgIHJ1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIFwKLSAgICBydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKICAgICBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHAgXAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9OdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyUHJvdG90eXBl
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rv
ci5sdXQuaCBcCi0JRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBl
Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBQcm90b3R5cGUubHV0
LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjQsMTkgKzQyNCwxNyBAQCBFbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUu
aXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsK
IAotICAgICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkgeworICAgICAgICBpZiAocHJvcGVy
dHkuaXNVSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBw
cm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc0RvdWJs
ZSgpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBk
b3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAg
ICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3Bl
cnR5QXNEb3VibGUpOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVy
dHlBc0RvdWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwg
cHJvcGVydHlBc1VJbnQzMik7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmco
KSkgewotICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZS0+ZmFzdEdldE93blBy
b3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dmFsdWUoZXhlYykpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJhc2UtPmdldEJ5U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+
dmFsdWUoZXhlYykpKTsKICAgICB9Ci0KKyAgICAKICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGpzQ2Fz
dDxOYW1lSW5zdGFuY2UqPihwcm9wZXJ0eS5hc0NlbGwoKSktPnByaXZhdGVOYW1lKCkpKTsKIApA
QCAtNDUzLDE1ICs0NTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZQogCiAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpCiAgICAgICAgIHJldHVybiBnZXRC
eVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICBpZiAocHJvcGVydHku
aXNEb3VibGUoKSkgeworICAgIGVsc2UgaWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKICAgICAg
ICAgZG91YmxlIHByb3BlcnR5QXNEb3VibGUgPSBwcm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAg
ICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3Bl
cnR5QXNEb3VibGUpOwogICAgICAgICBpZiAocHJvcGVydHlBc1VJbnQzMiA9PSBwcm9wZXJ0eUFz
RG91YmxlKQogICAgICAgICAgICAgcmV0dXJuIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5
QXNVSW50MzIpOwotICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgewotICAgICAg
ICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNT
dHJpbmcocHJvcGVydHkpLT52YWx1ZShleGVjKSkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQorICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJp
bmcoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlLT5nZXRCeVN0cmluZyhl
eGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSk7CiAKICAgICBpZiAoaXNOYW1l
KHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2Up
LmdldChleGVjLCBqc0Nhc3Q8TmFtZUluc3RhbmNlKj4ocHJvcGVydHkuYXNDZWxsKCkpLT5wcml2
YXRlTmFtZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDYgQEAg
bmFtZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJD
b25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5udW1iZXJDb25zdHJ1Y3RvclRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBj
b25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1l
KSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1iZXJQcm90b3R5cGVUYWJsZTsg
fQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxl
KENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5v
YmplY3RDb25zdHJ1Y3RvclRhYmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUq
IG9iamVjdFByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSog
Y2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5wcml2YXRlTmFtZVBy
b3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFRh
YmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5yZWdFeHBUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBD
b25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5yZWdFeHBDb25zdHJ1Y3RvclRhYmxlOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MTcsMTAg
KzI0MTcsOCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiBzdGF0
aWMgSlNWYWx1ZSBnZXRCeVZhbCgKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBi
YXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCiB7Ci0gICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0Lmlz
U3RyaW5nKCkpKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGNhbGxGcmFtZSwgYXNTdHJpbmcoc3Vic2NyaXB0KS0+
dmFsdWUoY2FsbEZyYW1lKSkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkp
CisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5U3RyaW5nKGNhbGxGcmFt
ZSwgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoY2FsbEZyYW1lKSk7CiAKICAgICBpZiAoc3Vi
c2NyaXB0LmlzVUludDMyKCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJ
bnQzMigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYwLDEwICsxMDYwLDgg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZAogCiBpbmxpbmUgSlNW
YWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVl
IHN1YnNjcmlwdCkKIHsKLSAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJz
Y3JpcHQuaXNTdHJpbmcoKSkpIHsKLSAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0
KS0+dmFsdWUoZXhlYykpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAg
aWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKQor
ICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmFzQ2VsbCgpLT5nZXRCeVN0cmluZyhleGVjLCBhc1N0
cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSk7CiAgICAgCiAgICAgaWYgKHN1YnNjcmlwdC5p
c1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksMTEgQEAK
ICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyhk
aXNwbGF5TmFtZSkgXAotICAgIG1hY3JvKGpvaW4pCisgICAgbWFjcm8oam9pbikgXAorICAgIG1h
Y3JvKF9fZGVmaW5lR2V0dGVyX18pIFwKKyAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCisg
ICAgbWFjcm8oX19sb29rdXBHZXR0ZXJfXykgXAorICAgIG1hY3JvKF9fbG9va3VwU2V0dGVyX18p
CiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwK
ICAgICBtYWNybyhudWxsKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw0ICsyMjcsMTAgQEAgYm9vbCBK
U0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKUwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorSlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5nU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50KCZleGVjLT5nbG9iYWxEYXRh
KCksIG5hbWUpOworICAgIHJldHVybiBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpZGVudCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDggQEAgcHVibGljOgog
ICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVy
cGFydC4gKEZvciBpbnRlZ2VyCiAgICAgLy8gcHJvcGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1p
bGFyIGludGVyZmFjZSB3aXRoIGFwcHJvcHJpYXRlIG9wdGltaXphdGlvbnMuKQogICAgIGJvb2wg
ZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwotICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYpOworICAgIAorICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmcoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAg
ICAgewpAQCAtMTYxLDYgKzE2MiwxMCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlUeXBlPgorICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmdBbmRLZXkoRXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgS2V5VHlwZSYpOworICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmdT
bG93KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2OSwyMCArMTY5LDQ2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRP
d25Qcm8KICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5
cGU+CitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpnZXRCeVN0cmluZ0FuZEtleShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS2V5VHlwZSYga2V5KQorewor
ICAgIEpTQ2VsbCogY2VsbCA9IHRoaXM7CisgICAgCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgaWYgKFVOTElLRUxZKGNlbGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCgpKSkKKyAgICAgICAgICAgIHJldHVybiBnZXRCeVN0cmluZ1Nsb3co
ZXhlYywgbmFtZSk7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwga2V5LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSBp
bnZhbGlkT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5nZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QoY2VsbCktPmdldERpcmVjdChvZmZzZXQpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNlbGwtPnN0
cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsKKyAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNP
YmplY3QoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjZWxsID0gYXNPYmplY3QocHJv
dG90eXBlKTsKKyAgICB9CisgICAgCisgICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4ndCBnb2luZyBh
ZnRlciBpbmRleGVkIHN0b3JhZ2UsIGFuZCBpZiB3ZSBhcmUsIHRoZW4ganVzdCB1c2UgdGhhdC4K
KyAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobmFtZS5pbXBsKCkp
OworICAgIGlmIChpbmRleCA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlKHRoaXMpLmdldChl
eGVjLCBpbmRleCk7Cit9CisKIC8vIEZhc3QgY2FsbCB0byBnZXQgYSBwcm9wZXJ0eSB3aGVyZSB3
ZSBtYXkgbm90IHlldCBoYXZlIGNvbnZlcnRlZCB0aGUgc3RyaW5nIHRvIGFuCiAvLyBpZGVudGlm
aWVyLiBUaGUgZmlyc3QgdGltZSB3ZSBwZXJmb3JtIGEgcHJvcGVydHkgYWNjZXNzIHdpdGggYSBn
aXZlbiBzdHJpbmcsIHRyeQogLy8gcGVyZm9ybWluZyB0aGUgcHJvcGVydHkgbWFwIGxvb2t1cCB3
aXRob3V0IGZvcm1pbmcgYW4gaWRlbnRpZmllci4gV2UgZGV0ZWN0IHRoaXMKIC8vIGNhc2UgYnkg
Y2hlY2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmlu
Zy4KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSBK
U0NlbGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpIHsK
LSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhhc0hhc2goKQot
ICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRp
ZmllcihleGVjLCBuYW1lKSkKLSAgICAgICAgICAgIDogc3RydWN0dXJlKCktPmdldChleGVjLT5n
bG9iYWxEYXRhKCksIG5hbWUpOwotICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
Ci0gICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCktPmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgIGlmIChuYW1l
LmltcGwoKS0+aGFzSGFzaCgpKQorICAgICAgICByZXR1cm4gZ2V0QnlTdHJpbmdBbmRLZXkoZXhl
YywgbmFtZSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7CisgICAgcmV0dXJuIGdldEJ5U3RyaW5n
QW5kS2V5KGV4ZWMsIG5hbWUsIG5hbWUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9v
bGVhbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDcgKzkzLDYgQEAgZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBtYXRoVGFibGU7CiBleHRl
cm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3Qg
SGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxlOwogSlNfRVhQT1JUREFUQSBleHRlcm4gY29u
c3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7Ci1leHRlcm4gY29uc3QgSGFzaFRh
YmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcml2YXRl
TmFtZVByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdFeHBUYWJsZTsK
IGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsKQEAgLTE1NSw3
ICsxNTQsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAg
LCBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNv
bnN0cnVjdG9yVGFibGUpKQogICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNo
VGFibGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFibGUpKQogICAgICwgb2JqZWN0Q29uc3RydWN0
b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkK
LSAgICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om9iamVj
dFByb3RvdHlwZVRhYmxlKSkKICAgICAsIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUoZmFzdE5l
dzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpCiAgICAgLCByZWdF
eHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpyZWdFeHBUYWJsZSkpCiAgICAgLCByZWdF
eHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnJlZ0V4cENvbnN0cnVj
dG9yVGFibGUpKQpAQCAtMjg2LDcgKzI4NCw2IEBAIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0
YSgpCiAgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBudW1i
ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBvYmplY3RDb25zdHJ1Y3RvclRh
YmxlLT5kZWxldGVUYWJsZSgpOwotICAgIG9iamVjdFByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJs
ZSgpOwogICAgIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAg
cmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKQEAgLTMwNiw3ICszMDMsNiBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2Jh
bERhdGEoKQogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihudW1iZXJDb25z
dHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51
bWJlclByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJs
ZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUpKTsKLSAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8
SGFzaFRhYmxlKj4ob2JqZWN0UHJvdG90eXBlVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0
X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3RE
ZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBUYWJsZSkpOwogICAgIGZhc3REZWxl
dGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNp
b24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBj
b25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNo
VGFibGUqIG9iamVjdENvbnN0cnVjdG9yVGFibGU7Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
b2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJpdmF0ZU5h
bWVQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZTsK
ICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1
NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjAyLDYgKzIyMDIsMTYgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW5kZXhCZXlvbmRWZWN0bwogICAgIH0KIH0KIAordm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5n
dGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQoreworICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5h
bWUucHVibGljTmFtZSgpOworICAgIEFTU0VSVChuYW1lKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiA9CisgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmpl
Y3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBh
dHRyaWJ1dGVzKTsKK30KKwogQUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3
VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJl
bnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGRlc2lyZWRM
ZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw2
ICs1NjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25G
b3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgIHZv
aWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZv
ck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQoKTsgfQogCisgICAgdm9pZCBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5
TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2lj
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIGJvb2wgaXNH
bG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTcwMCw3ICs3MDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFz
c0luZm8oKSk7CiAgICAgfQotCisgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC05MDksNiArOTExLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVz
dGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAgICB1
c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0
ZXJTZXR0ZXI7CisKICAgICB2b2lkIGdldE9iamVjdCgpOwogICAgIHZvaWQgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgdm9pZCBpc09iamVjdCgpOwpAQCAtMTQ0OSw2ICsxNDUyLDE0
IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHkKIAogQ09NUElMRV9B
U1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4pKSwgSlNPYmplY3RfaW5saW5lX3N0b3JhZ2VfaGFzX2NvcnJlY3RfYWxpZ25tZW50KTsKIAor
Ly8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUgZnVuY3Rpb25zLCBpZiB5b3UncmUgbm90IHVz
aW5nIGEgc3RhdGljIGhhc2ggdGFibGUuCisvLyBVc2UgdGhpcyBtYWNybyBmcm9tIHdpdGhpbiBm
aW5pc2hDcmVhdGlvbigpIG1ldGhvZHMgaW4gcHJvdG90eXBlcy4gVGhpcyBhc3N1bWVzCisvLyB5
b3UndmUgZGVmaW5lZCB2YXJpYWJsZXMgY2FsbGVkIGV4ZWMsIGdsb2JhbE9iamVjdCwgYW5kIGds
b2JhbERhdGEsIGFuZCB0aGV5CisvLyBoYXZlIHRoZSBleHBlY3RlZCBtZWFuaW5ncy4gVGhpcyBh
bHNvIGFzc3VtZXMgdGhhdCB0aGUgZnVuY3Rpb24geW91J3JlIGRlZmluaW5nCisvLyBkb2Vzbid0
IGhhdmUgYW4gaW50cmluc2ljLgorI2RlZmluZSBKU0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFtZSwg
Y3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBcCisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmpzTmFtZSwg
KGxlbmd0aCksIGNwcE5hbWUsIE5vSW50cmluc2ljLCAoYXR0cmlidXRlcykpCisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSAr
NzcsOSBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogCiAgICAgICAg
IGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpOwotICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIAotICAgICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5n
bG9iYWxPYmplY3QoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIG5hbWUsIGVudHJ5LT5mdW5j
dGlvbigpLCBlbnRyeS0+aW50cmluc2ljKCkpOwotICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKKyAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oCisgICAg
ICAgICAgICBleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBlbnRy
eS0+ZnVuY3Rpb25MZW5ndGgoKSwKKyAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRy
eS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBvZmZzZXQgPSB0
aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDE0NTU3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDUxICs0MCw0MCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3Rh
dGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwogCi19Ci0KLSNpbmNsdWRlICJPYmplY3RQcm90
b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCiBBU1NFUlRfSEFTX1RSSVZJQUxfREVT
VFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOwogCi1jb25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90
eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCBF
eGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVj
dFByb3RvdHlwZSkgfTsKLQotLyogU291cmNlIGZvciBPYmplY3RQcm90b3R5cGUubHV0LmgKLUBi
ZWdpbiBvYmplY3RQcm90b3R5cGVUYWJsZQotICB0b1N0cmluZyAgICAgICAgICAgICAgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAg
dG9Mb2NhbGVTdHJpbmcgICAgICAgIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIHZhbHVlT2YgICAgICAgICAgICAgICBvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAotICBo
YXNPd25Qcm9wZXJ0eSAgICAgICAgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkgICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgcHJvcGVydHlJc0VudW1lcmFibGUgIG9iamVjdFBy
b3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlICAgICBEb250RW51bXxGdW5jdGlvbiAxCi0gIGlz
UHJvdG90eXBlT2YgICAgICAgICBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQotICBfX2RlZmluZUdldHRlcl9fICAgICAgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lR2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKLSAgX19k
ZWZpbmVTZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCi0gIF9fbG9va3VwR2V0dGVyX18gICAgICBvYmplY3RQcm90
b0Z1bmNMb29rdXBHZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICBfX2xv
b2t1cFNldHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKLUBlbmQKLSovCitjb25zdCBDbGFzc0luZm8gT2JqZWN0UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFByb3RvdHlwZSkgfTsKIAogT2JqZWN0UHJv
dG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0dWN0
dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0dWN0dXJl
KQogewogfQogCi12b2lkIE9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCopCit2b2lkIE9iamVjdFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogeworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICAKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NF
UlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIGdsb2JhbERhdGEucHJvdG90eXBlTWFwLmFkZFBy
b3RvdHlwZSh0aGlzKTsKLX0KLQotYm9vbCBPYmplY3RQcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlv
blNsb3Q8SlNOb25GaW5hbE9iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpvYmplY3RQcm90b3R5cGVU
YWJsZShleGVjKSwganNDYXN0PE9iamVjdFByb3RvdHlwZSo+KGNlbGwpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwotfQotCi1ib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvbkRlc2NyaXB0b3I8SlNOb25GaW5hbE9iamVjdD4oZXhlYywgRXhlY1N0
YXRlOjpvYmplY3RQcm90b3R5cGVUYWJsZShleGVjKSwganNDYXN0PE9iamVjdFByb3RvdHlwZSo+
KG9iamVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CisgICAgCisgICAgSlNDX05BVElW
RV9GVU5DVElPTih0b1N0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcsIERvbnRFbnVtLCAw
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1
bmNUb0xvY2FsZVN0cmluZywgRG9udEVudW0sIDApOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgRG9udEVudW0sIDApOworICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04oaGFzT3duUHJvcGVydHksIG9iamVjdFByb3RvRnVuY0hhc093blByb3Bl
cnR5LCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihwcm9wZXJ0eUlzRW51
bWVyYWJsZSwgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUsIERvbnRFbnVtLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKGlzUHJvdG90eXBlT2YsIG9iamVjdFByb3RvRnVu
Y0lzUHJvdG90eXBlT2YsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKF9f
ZGVmaW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgRG9udEVudW0sIDIp
OworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJvdG9G
dW5jRGVmaW5lU2V0dGVyLCBEb250RW51bSwgMik7CisgICAgSlNDX05BVElWRV9GVU5DVElPTihf
X2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIsIERvbnRFbnVtLCAx
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKF9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3Rv
RnVuY0xvb2t1cFNldHRlciwgRG9udEVudW0sIDEpOworfQorCitPYmplY3RQcm90b3R5cGUqIE9i
amVjdFByb3RvdHlwZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgT2JqZWN0UHJvdG90eXBl
KiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RQcm90b3R5cGU+
KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICBw
cm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IHByb3RvdHlwZTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0
aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDE0NTU3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0
YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJv
dG90eXBlOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC00NCwxNCArMzksMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNT
dGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxNDU1NzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTEsNyArMzExLDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJv
cAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6Zmlu
ZFdpdGhTdHJpbmcoY29uc3QgS2V5VHlwZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwotICAg
IEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSAmJiAha2V5LT5oYXNIYXNoKCkpOworICAgIEFT
U0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSk7CiAgICAgdW5zaWduZWQgaGFzaCA9IGtleS0+aGFz
aCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsy
MzMsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChK
U0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwotICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0ds
b2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSk7CisgICAgUHJvcGVydHlPZmZzZXQg
Z2V0KEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3Bl
cnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIGJvb2wgaGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
czsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaAkocmV2aXNpb24gMTQ1NTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSwyMiBA
QCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHCiAgICAgcmV0dXJuIGVu
dHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7CiB9CiAKLWlubGluZSBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lKQoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmc19pbmZvKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFs
RGF0YSk7CisgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlk
T2Zmc2V0OworCisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9wZXJ0eVRhYmxlKCkt
PmZpbmQocHJvcGVydHlOYW1lLnVpZCgpKS5maXJzdDsKKyAgICBpZiAoIWVudHJ5KQorICAgICAg
ICByZXR1cm4gaW52YWxpZE9mZnNldDsKKyAgICAKKyAgICBhdHRyaWJ1dGVzID0gZW50cnktPmF0
dHJpYnV0ZXM7CisgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7Cit9CisKK2lubGluZSBQcm9wZXJ0
eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2luZm8pOwogICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKQEAgLTc3LDcgKzkyLDExIEBAIGlubGluZSBQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0cKICAgICAgICAgcmV0dXJuIGludmFsaWRP
ZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+
ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZpcnN0OwotICAgIHJldHVybiBlbnRyeSA/IGVu
dHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0OworICAgIGlmICghZW50cnkpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVz
OworICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwogfQogICAgIAogaW5saW5lIGJvb2wgU3RydWN0
dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1Njg1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMTMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU09iamVjdCBmYXN0IGJ5LXN0cmlu
ZyBhY2Nlc3Mgb3B0aW1pemF0aW9ucyBzaG91bGQgd29yayBldmVuIG9uIHRoZSBwcm90b3R5cGUg
Y2hhaW4sIGFuZCBldmVuIHdoZW4gdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIzMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL21p
c3Mtc3RyaW5nLWxvb2t1cC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9taXNzLXN0cmluZy1sb29rdXAuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9taXNzLXN0cmluZy1sb29rdXAuanM6IEFkZGVkLgorICAg
ICAgICAocmVzdWx0KToKKwogMjAxMy0wMy0xMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBFRkwgcmViYXNlbGluZSBhZnRlciBy
MTQ1MjQyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL21pc3Mtc3RyaW5nLWxv
b2t1cC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL21pc3Mtc3RyaW5nLWxvb2t1cC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbWlzcy1zdHJpbmctbG9va3VwLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvbWlzcy1zdHJpbmctbG9v
a3VwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvbWlzcy1zdHJpbmctbG9va3VwLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL21pc3Mtc3RyaW5n
LWxvb2t1cC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L21pc3Mtc3RyaW5nLWxvb2t1cC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL21pc3Mtc3RyaW5nLWxvb2t1
cC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL21pc3Mtc3RyaW5nLWxvb2t1cC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21pc3Mtc3RyaW5nLWxvb2t1cC5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvbWlzcy1zdHJpbmctbG9va3VwLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
K3ZhciByZXN1bHQgPSAoZnVuY3Rpb24oKXsKKyAgICB2YXIgbyA9IHt9OworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgICAgIG9bImEiICsgaV0gPSA0MjsKKyAgICB2YXIg
cmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICAg
ICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7CisgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7Cit9
KSgpOworCitpZiAocmVzdWx0ICE9IDEwMDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="214260"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>