<?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>30842</bug_id>
          
          <creation_ts>2009-10-27 20:07:47 -0700</creation_ts>
          <short_desc>Support ARIA &quot;tab&quot; roles</short_desc>
          <delta_ts>2009-11-02 08:58:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cfleizach</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158457</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-10-27 20:07:47 -0700</bug_when>
    <thetext>tab, tabpanel and tablist</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158844</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-10-28 23:48:41 -0700</bug_when>
    <thetext>tab needs to support AXValue (whether its selected... which can be either if an item in its associated tab panel has focus, or it has aria-selected)

a tab can also be selected if KB focus is in one of its aria-controls elements

tablist needs to support AXValue = selected tab, AXContents (children that are not tabs) and AXTabs (children that are tabs)

tabpanel needs to be an AXGroup with a subrole, like the other aria landmarks

make sure this works
http://codetalks.org/source/widgets/tabpanel/tabpanel1.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159740</commentid>
    <comment_count>2</comment_count>
      <attachid>42300</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-01 22:06:50 -0800</bug_when>
    <thetext>Created attachment 42300
patch

Beth, I&apos;ve made these tab roles like we talked about
tab = AXRadioButton
tablist = AXTabGroup
tabpanel = AXGroup:AXTabPanel

I also mirrored the other Mac accessibility things relating to tabs, and tried to follow ARIA spec.

I re-organized some code so that it would be easy to get all Elements from a specific attribute. 

As a note, when i ran update-webkit-strings, it removed two accessibility strings. i guess those are no longer used...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159741</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-01 22:07:32 -0800</bug_when>
    <thetext>Beth, can you review this one. One of the ARIA things we talked about</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159744</commentid>
    <comment_count>4</comment_count>
      <attachid>42300</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-01 22:33:47 -0800</bug_when>
    <thetext>Comment on attachment 42300
patch

Nice! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159807</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-02 08:58:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/50409</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42300</attachid>
            <date>2009-11-01 22:06:50 -0800</date>
            <delta_ts>2009-11-01 22:33:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>41212</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdXBwb3J0IEFSSUEgInRhYiIgcm9sZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMwODQyCisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9y
IEFSSUEgInRhYiIsICJ0YWJwYW5lbCIgYW5kICJ0YWJsaXN0Ii4KKyAgICAgICAgQXMgYSBjb25z
ZXF1ZW5jZSwgd2UgYWxzbyBuZWVkZWQgdG8gaW1wbGVtZW50IGFyaWEtc2VsZWN0ZWQKKyAgICAg
ICAgYW5kIGFyaWEtY29udHJvbHMuCisKKyAgICAgICAgVGVzdHM6IGFjY2Vzc2liaWxpdHkvYXJp
YS1jb250cm9scy13aXRoLXRhYnMuaHRtbAorICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS9h
cmlhLXRhYi1yb2xlcy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06Cisg
ICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisKIDIwMDktMTEtMDEgIEtlbGx5
IE5vcnRvbiAgPGtub3J0b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1v
dGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CShyZXZpc2lvbiA1MDQwMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPCiAgICAgICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBuZXdPYmogPSAwOwogICAgICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEJveCgpKQogICAg
ICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmNyZWF0ZShyZW5kZXJlcik7
Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUgJiYgKG5vZGVJc0FyaWFUeXBlKG5vZGUsICJsaXN0Iikg
fHwgbm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShvbFRhZykgfHwg
bm9kZS0+aGFzVGFnTmFtZShkbFRhZykpKQorCisgICAgICAgIC8vIElmIHRoZSBub2RlIGlzIGFy
aWEgcm9sZT0ibGlzdCIgb3IgdGhlIGFyaWEgcm9sZSBpcyBlbXB0eSBhbmQgaXRzIGEgdWwvb2wv
ZGwgdHlwZSAoaXQgc2hvdWxkbid0IGJlIGEgbGlzdCBpZiBhcmlhIHNheXMgb3RoZXJ3aXNlKS4g
CisgICAgICAgIGVsc2UgaWYgKG5vZGUgJiYgKG5vZGVJc0FyaWFUeXBlKG5vZGUsICJsaXN0Iikg
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChub2RlSXNBcmlhVHlwZShub2RlLCBudWxs
QXRvbSkgJiYgKG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUob2xU
YWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZGxUYWcpKSkpKQogICAgICAgICAgICAgbmV3T2JqID0g
QWNjZXNzaWJpbGl0eUxpc3Q6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIAogICAgICAgICAv
LyBhcmlhIHRhYmxlcwpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiA1MDQwMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsOSBAQCBlbnVt
IEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBBbm5vdGF0aW9uUm9sZSwKICAgICBTbGlkZXJUaHVt
YlJvbGUsCiAgICAgSWdub3JlZFJvbGUsCisgICAgVGFiUm9sZSwKKyAgICBUYWJMaXN0Um9sZSwK
KyAgICBUYWJQYW5lbFJvbGUsCiAgICAgCiAgICAgLy8gQVJJQSBHcm91cGluZyByb2xlcwogICAg
IExhbmRtYXJrQXBwbGljYXRpb25Sb2xlLApAQCAtMjY5LDYgKzI3Miw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwogICAg
IHZpcnR1YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CisgICAgYm9v
bCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBUYWJMaXN0Um9sZTsg
fQorICAgIGJvb2wgaXNUYWJJdGVtKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVGFi
Um9sZTsgfQogICAgIGJvb2wgaXNSYWRpb0dyb3VwKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gUmFkaW9Hcm91cFJvbGU7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGVja2Vk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CkBAIC0zMDQsNiArMzA5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7
IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCB7IHJldHVybiAw
LjBmOyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0
dG9uKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Vs
ZWN0ZWRUYWJJdGVtKCkgeyByZXR1cm4gMDsgfSAgICAKICAgICB2aXJ0dWFsIGludCBsYXlvdXRD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgYm9vbCBpc0FSSUFDb250cm9s
KEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICBzdGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3Np
YmlsaXR5Um9sZSk7CkBAIC0zMzIsNyArMzM4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRS
b2xlVmFsdWUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkgeyBtX3JvbGUgPSByb2xlOyB9CiAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Jv
bGU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eU5hbWUoY29uc3QgU3Ry
aW5nJikgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhcmlh
TGFiZWxlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CkBAIC0zOTMsNiArMzk4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUNoaWxkcmVu
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3QgeyByZXR1
cm4gMDsgfSAgICAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQoKSB7IH0KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDUwNDAyKQorKysgV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MDUsNiArNTA1LDI0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIK
ICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCit7CisgICAgaWYgKCFpc1RhYkxp
c3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFi
IGl0ZW0gdGhhdCBpcyBzZWxlY3RlZCAoaWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFiczsKKyAgICB0
YWJDaGlsZHJlbih0YWJzKTsKKyAgICAKKyAgICBpbnQgY291bnQgPSB0YWJzLnNpemUoKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqZWN0ID0gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKG9iamVj
dC0+aXNUYWJJdGVtKCkgJiYgb2JqZWN0LT5pbnRWYWx1ZSgpID09IDEpCisgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KICAgICAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKIHsKQEAgLTg2NCw1NiArODgyLDY3IEBAIHN0
YXRpYyBTdHJpbmcgYWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLVN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhQWNjZXNzaWJp
bGl0eU5hbWUoY29uc3QgU3RyaW5nJiBzKSBjb25zdAorU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKFZlY3RvcjxFbGVt
ZW50Kj4gJmVsZW1lbnRzKSBjb25zdAoreworICAgIFZlY3RvcjxVQ2hhcj4gYXJpYUxhYmVsOwor
ICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBFbGVtZW50KiBpZEVsZW1lbnQgPSBlbGVt
ZW50c1tpXTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBuYW1lRnJhZ21lbnQgPSBhY2Nlc3Np
YmxlTmFtZUZvck5vZGUoaWRFbGVtZW50KTsKKyAgICAgICAgYXJpYUxhYmVsLmFwcGVuZChuYW1l
RnJhZ21lbnQuY2hhcmFjdGVycygpLCBuYW1lRnJhZ21lbnQubGVuZ3RoKCkpOworICAgICAgICBm
b3IgKE5vZGUqIG4gPSBpZEVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNl
TmV4dE5vZGUoaWRFbGVtZW50KSkgeworICAgICAgICAgICAgbmFtZUZyYWdtZW50ID0gYWNjZXNz
aWJsZU5hbWVGb3JOb2RlKG4pOworICAgICAgICAgICAgYXJpYUxhYmVsLmFwcGVuZChuYW1lRnJh
Z21lbnQuY2hhcmFjdGVycygpLCBuYW1lRnJhZ21lbnQubGVuZ3RoKCkpOworICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpCisgICAgICAgICAgICBhcmlh
TGFiZWwuYXBwZW5kKCcgJyk7CisgICAgfQorICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGFyaWFM
YWJlbCk7Cit9CisKKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVu
dHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7CisgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXIt
Pm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAg
ICBTdHJpbmcgaWRMaXN0ID0gczsKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFN0cmluZyBp
ZExpc3QgPSBnZXRBdHRyaWJ1dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIGlkTGlzdC5yZXBsYWNlKCdc
bicsICcgJyk7CiAgICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7CiAgICAgaWRMaXN0LnNwbGl0
KCcgJywgaWRWZWN0b3IpOwotCi0gICAgVmVjdG9yPFVDaGFyPiBhcmlhTGFiZWw7CisgICAgCiAg
ICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVjdG9yLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBpZE5hbWUgPSBpZFZlY3Rvcltp
XTsKICAgICAgICAgRWxlbWVudCogaWRFbGVtZW50ID0gZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlk
KGlkTmFtZSk7Ci0gICAgICAgIGlmIChpZEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFN0cmluZyBu
YW1lRnJhZ21lbnQgPSBhY2Nlc3NpYmxlTmFtZUZvck5vZGUoaWRFbGVtZW50KTsKLSAgICAgICAg
ICAgIGFyaWFMYWJlbC5hcHBlbmQobmFtZUZyYWdtZW50LmNoYXJhY3RlcnMoKSwgbmFtZUZyYWdt
ZW50Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgIGZvciAoTm9kZSogbiA9IGlkRWxlbWVudC0+Zmly
c3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShpZEVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgbmFtZUZyYWdtZW50ID0gYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG4pOwotICAg
ICAgICAgICAgICAgIGFyaWFMYWJlbC5hcHBlbmQobmFtZUZyYWdtZW50LmNoYXJhY3RlcnMoKSwg
bmFtZUZyYWdtZW50Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpCi0gICAgICAgICAgICAgICAgYXJpYUxhYmVsLmFw
cGVuZCgnICcpOwotICAgICAgICB9CisgICAgICAgIGlmIChpZEVsZW1lbnQpCisgICAgICAgICAg
ICBlbGVtZW50cy5hcHBlbmQoaWRFbGVtZW50KTsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZzo6
YWRvcHQoYXJpYUxhYmVsKTsKIH0KLQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNv
bnN0Cit7CisgICAgZWxlbWVudHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsZWRi
eUF0dHIpOworICAgIGlmICghZWxlbWVudHMuc2l6ZSgpKQorICAgICAgICBlbGVtZW50c0Zyb21B
dHRyaWJ1dGUoZWxlbWVudHMsIGFyaWFfbGFiZWxsZWRieUF0dHIpOworfQorICAgCiBTdHJpbmcg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0
CiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9k
ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBUaGUgQVJJQSBzcGVjIHVz
ZXMgdGhlIEJyaXRpc2ggc3BlbGxpbmc6ICJsYWJlbGxlZC4iIEl0IHNlZW1zIHBydWRlbnQgdG8g
c3VwcG9ydCB0aGUgQW1lcmljYW4KLSAgICAvLyBzcGVsbGluZyAoImxhYmVsZWQiKSBhcyB3ZWxs
LgotICAgIFN0cmluZyBpZExpc3QgPSBnZXRBdHRyaWJ1dGUoYXJpYV9sYWJlbGVkYnlBdHRyKS5z
dHJpbmcoKTsKLSAgICBpZiAoaWRMaXN0LmlzRW1wdHkoKSkgewotICAgICAgICBpZExpc3QgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9sYWJlbGxlZGJ5QXR0cikuc3RyaW5nKCk7Ci0gICAgICAgIGlmIChp
ZExpc3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLQot
ICAgIHJldHVybiBhcmlhQWNjZXNzaWJpbGl0eU5hbWUoaWRMaXN0KTsKKyAgICBWZWN0b3I8RWxl
bWVudCo+IGVsZW1lbnRzOworICAgIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhlbGVtZW50cyk7Cisg
ICAgCisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKGVsZW1l
bnRzKTsKIH0KIAogc3RhdGljIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQpAQCAtOTkwLDYgKzEwMTksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGl0bGUoCiAgICAgICAgIHx8IGFyaWFSb2xlID09IE1lbnVJdGVtUm9sZQog
ICAgICAgICB8fCBhcmlhUm9sZSA9PSBNZW51QnV0dG9uUm9sZQogICAgICAgICB8fCBhcmlhUm9s
ZSA9PSBSYWRpb0J1dHRvblJvbGUKKyAgICAgICAgfHwgYXJpYVJvbGUgPT0gVGFiUm9sZQogICAg
ICAgICB8fCBpc0hlYWRpbmcoKSkKICAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsK
ICAgICAKQEAgLTEwMDEsMTEgKzEwMzEsMTAgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnRpdGxlKAogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURl
c2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QKIHsKLSAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0
cmlidXRlKGFyaWFfZGVzY3JpYmVkYnlBdHRyKS5zdHJpbmcoKTsKLSAgICBpZiAoaWRMaXN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIFZlY3RvcjxFbGVtZW50Kj4g
ZWxlbWVudHM7CisgICAgZWxlbWVudHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2Rlc2Ny
aWJlZGJ5QXR0cik7CiAgICAgCi0gICAgcmV0dXJuIGFyaWFBY2Nlc3NpYmlsaXR5TmFtZShpZExp
c3QpOworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhlbGVt
ZW50cyk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24oKSBjb25zdApAQCAtMTU2Miw5ICsxNTkxLDU1IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNTZWxlY3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRl
KGFyaWFfc2VsZWN0ZWRBdHRyKS5zdHJpbmcoKSwgInRydWUiKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7ICAgIAorICAgIAorICAgIGlmIChpc1RhYkl0ZW0oKSAmJiBpc1RhYkl0ZW1TZWxlY3RlZCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFpc1RhYkl0ZW0oKSB8fCAhbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKCFu
b2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBUaGUgQVJJQSBzcGVjIHNheXMgYSB0YWIgaXRlbSBjYW4gYWxzbyBiZSBzZWxl
Y3RlZCBpZiBpdCBpcyBhcmlhLWxhYmVsZWQgYnkgYSB0YWJwYW5lbAorICAgIC8vIHRoYXQgaGFz
IGtleWJvYXJkIGZvY3VzIGluc2lkZSBvZiBpdCwgb3IgaWYgYSB0YWJwYW5lbCBpbiBpdHMgYXJp
YS1jb250cm9scyBsaXN0IGhhcyBLQgorICAgIC8vIGZvY3VzIGluc2lkZSBvZiBpdC4KKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWRVSUVsZW1lbnQoKTsK
KyAgICBpZiAoIWZvY3VzZWRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUo
ZWxlbWVudHMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjb3VudCA9
IGVsZW1lbnRzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY291bnQ7ICsr
aykgeworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudHNba107CisgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHRhYlBhbmVsID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShlbGVtZW50LT5yZW5kZXJlcigpKTsKKworICAgICAgICAvLyBBIHRhYiBpdGVtIHNob3VsZCBv
bmx5IGNvbnRyb2wgdGFiIHBhbmVscy4KKyAgICAgICAgaWYgKCF0YWJQYW5lbCB8fCB0YWJQYW5l
bC0+cm9sZVZhbHVlKCkgIT0gVGFiUGFuZWxSb2xlKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGVja0ZvY3VzRWxlbWVudCA9
IGZvY3VzZWRFbGVtZW50OworICAgICAgICAvLyBDaGVjayBpZiB0aGUgZm9jdXNlZCBlbGVtZW50
IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgZWxlbWVudCBjb250cm9sbGVkIGJ5IHRoZSB0YWIgaXRl
bS4KKyAgICAgICAgd2hpbGUgKGNoZWNrRm9jdXNFbGVtZW50KSB7CisgICAgICAgICAgICBpZiAo
dGFiUGFuZWwgPT0gY2hlY2tGb2N1c0VsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBjaGVja0ZvY3VzRWxlbWVudCA9IGNoZWNrRm9jdXNFbGVtZW50LT5w
YXJlbnRPYmplY3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRm9jdXNlZCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQpAQCAtMjMwMiw2ICsyMzc3LDkgQEAgc3RhdGlj
IGNvbnN0IEFSSUFSb2xlTWFwJiBjcmVhdGVBUklBUm9sZQogICAgICAgICB7ICJzbGlkZXIiLCBT
bGlkZXJSb2xlIH0sCiAgICAgICAgIHsgInNwaW5idXR0b24iLCBQcm9ncmVzc0luZGljYXRvclJv
bGUgfSwKICAgICAgICAgeyAic3RhdHVzIiwgQXBwbGljYXRpb25TdGF0dXNSb2xlIH0sCisgICAg
ICAgIHsgInRhYiIsIFRhYlJvbGUgfSwKKyAgICAgICAgeyAidGFibGlzdCIsIFRhYkxpc3RSb2xl
IH0sCisgICAgICAgIHsgInRhYnBhbmVsIiwgVGFiUGFuZWxSb2xlIH0sCiAgICAgICAgIHsgInRl
eHRib3giLCBUZXh0QXJlYVJvbGUgfSwKICAgICAgICAgeyAidGltZXIiLCBBcHBsaWNhdGlvblRp
bWVyUm9sZSB9LAogICAgICAgICB7ICJ0b29sYmFyIiwgVG9vbGJhclJvbGUgfSwKQEAgLTI1MzYs
NiArMjYxNCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZUMKICAg
ICAgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CiAgICAgICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgog
ICAgICAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKKyAgICAgICAgY2FzZSBUYWJSb2xlOgogICAg
ICAgICBjYXNlIFN0YXRpY1RleHRSb2xlOgogICAgICAgICBjYXNlIExpc3RCb3hPcHRpb25Sb2xl
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYyNSw3ICsyNzA0LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGlzdAogICAgICAgICBpZiAoY2hpbGRSZW5k
ZXJlciAmJiBhcmlhUm9sZSA9PSBMaXN0Qm94T3B0aW9uUm9sZSkgewogICAgICAgICAgICAgRWxl
bWVudCogY2hpbGRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGNoaWxkUmVuZGVyZXIt
Pm5vZGUoKSk7CiAgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVudC0+
aXNFbGVtZW50Tm9kZSgpKSB7IC8vIGRvIHRoaXMgY2hlY2sgdG8gZW5zdXJlIHNhZmV0eSBvZiBz
dGF0aWNfY2FzdCBhYm92ZQotICAgICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZEF0dHJTdHJp
bmcgPSBjaGlsZEVsZW1lbnQtPmdldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIpLnN0cmluZygp
OworICAgICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZEF0dHJTdHJpbmcgPSBjaGlsZEVsZW1l
bnQtPmdldEF0dHJpYnV0ZShhcmlhX3NlbGVjdGVkQXR0cikuc3RyaW5nKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNlbGVjdGVkQXR0clN0cmluZywgInRydWUiKSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzTXVsdGlzZWxlY3RhYmxlKQpAQCAtMjY3Myw2ICsyNzUyLDE3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZUMKICAgICByZXR1cm4gYXJpYUxp
c3Rib3hWaXNpYmxlQ2hpbGRyZW4ocmVzdWx0KTsKIH0KICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1
bHQpCit7CisgICAgQVNTRVJUKHJvbGVWYWx1ZSgpID09IFRhYkxpc3RSb2xlKTsKKyAgICAKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPmlz
VGFiSXRlbSgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2NoaWxkcmVuW2ldKTsKKyAg
ICB9Cit9CisgICAgCiBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
dGlvblZlcmIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Ig
c2VsZWN0IGVsZW1lbnRzLgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiA1MDQwMikKKysrIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw2ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJh
bmdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCk7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKTsKICAg
ICB2aXJ0dWFsIGludCBsYXlvdXRDb3VudCgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwpAQCAtMTY4LDcgKzE2OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYWluVGV4
dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVl
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUFjY2Vzc2liaWxpdHlOYW1lKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0OwpAQCAtMjAyLDYgKzIw
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgdmlydHVhbCB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGFiQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZvY3VzQWN0aXZl
RGVzY2VuZGFudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogYWN0
aXZlRGVzY2VuZGFudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY3RpdmVEZXNj
ZW5kYW50Q2hhbmdlZCgpOwpAQCAtMjM3LDYgKzIzOCw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRh
YmxlIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwogICAgIAogICAgIHZvaWQgc2V0UmVuZGVyT2JqZWN0
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CisgICAg
dm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNv
bnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
IW1fcmVuZGVyZXI7IH0KIApAQCAtMjUxLDEyICsyNTMsMTYgQEAgcHJpdmF0ZToKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwogICAgIEFjY2Vzc2li
aWxpdHlSb2xlIGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CiAKKyAgICBib29s
IGlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3Q7CiAgICAgSW50UmVjdCBjaGVja2JveE9yUmFkaW9S
ZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0OwogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdDsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVu
dCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNj
ZXNzaWJpbGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KiBtYXApIGNvbnN0Owog
CisgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKFZlY3RvcjxF
bGVtZW50Kj4gJmVsZW1lbnRzKSBjb25zdDsKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0
ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3Q7CisgICAgCiAgICAgdm9pZCBtYXJrQ2hpbGRyZW5EaXJ0eSgpIGNvbnN0IHsgbV9jaGls
ZHJlbkRpcnR5ID0gdHJ1ZTsgfQogfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNp
b24gNTA0MDIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNiArNjAwLDcgQEAgc3RhdGljIFdl
YkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZQogICAgIHN0YXRpYyBOU0FycmF5KiBncm91
cEF0dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0FycmF5KiBpbnB1dEltYWdlQXR0cnMgPSBuaWw7
CiAgICAgc3RhdGljIE5TQXJyYXkqIHBhc3N3b3JkRmllbGRBdHRycyA9IG5pbDsKKyAgICBzdGF0
aWMgTlNBcnJheSAqdGFiTGlzdEF0dHJzID0gbmlsOwogICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1w
QXJyYXk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgPT0gbmlsKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZSwKQEAgLTc5NCw2ICs3OTUsMTMgQEAgc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFu
Z2UqIHRleHRNYXJrZQogICAgICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKICAgICAgICAgW3RlbXBBcnJheSByZWxlYXNl
XTsKICAgICB9CisgICAgaWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsKKyAgICAgICAgdGVtcEFy
cmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0
ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRz
QXR0cmlidXRlXTsKKyAgICAgICAgdGFiTGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07ICAgICAg
ICAKKyAgICB9CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAg
ICAgICAgcmV0dXJuIHBhc3N3b3JkRmllbGRBdHRyczsKQEAgLTgzMCw2ICs4MzgsOCBAQCBzdGF0
aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4dE1hcmtlCiAgICAgCiAgICAgaWYgKG1fb2Jq
ZWN0LT5pc0dyb3VwKCkpCiAgICAgICAgIHJldHVybiBncm91cEF0dHJzOworICAgIGlmIChtX29i
amVjdC0+aXNUYWJMaXN0KCkpCisgICAgICAgIHJldHVybiB0YWJMaXN0QXR0cnM7CiAgICAgCiAg
ICAgaWYgKG1fb2JqZWN0LT5pc01lbnUoKSkKICAgICAgICAgcmV0dXJuIG1lbnVBdHRyczsKQEAg
LTEwMDEsOCArMTAxMSw5IEBAIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgY3Jl
YXQKICAgICAgICAgeyBEb2N1bWVudE5vdGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKICAgICAgICAgeyBEb2N1bWVudFJlZ2lvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAogICAgICAgICB7IFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIAotCisgICAgICAgIHsgVGFiUm9sZSwgTlNBY2Nlc3NpYmls
aXR5UmFkaW9CdXR0b25Sb2xlIH0sCisgICAgICAgIHsgVGFiTGlzdFJvbGUsIE5TQWNjZXNzaWJp
bGl0eVRhYkdyb3VwUm9sZSB9LAorICAgICAgICB7IFRhYlBhbmVsUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCiAgICAgfTsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1h
cCA9ICpuZXcgQWNjZXNzaWJpbGl0eVJvbGVNYXA7CiAgICAgCkBAIC0xMDgzLDYgKzEwOTQsOCBA
QCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAgICAgICAgICAgICBy
ZXR1cm4gQCJBWERvY3VtZW50UmVnaW9uIjsKICAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9v
bHRpcFJvbGU6CiAgICAgICAgICAgICByZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29sdGlwIjsK
KyAgICAgICAgY2FzZSBUYWJQYW5lbFJvbGU6CisgICAgICAgICAgICByZXR1cm4gQCJBWFRhYlBh
bmVsIjsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQpA
QCAtMTE0MCw2ICsxMTUzLDggQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5n
KEFjYwogICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJ
QURvY3VtZW50UmVnaW9uIik7CiAgICAgICAgICAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlw
Um9sZToKICAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFS
SUFVc2VySW50ZXJmYWNlVG9vbHRpcCIpOworICAgICAgICAgICAgY2FzZSBUYWJQYW5lbFJvbGU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBVGFi
UGFuZWwiKTsKICAgICAgICAgfQogICAgIH0gICAgICAgIAogICAgIApAQCAtMTE1OCw2ICsxMTcz
LDEwIEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKICAgICBpZiAo
W2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEhlYWRpbmciXSkKICAgICAgICAgcmV0dXJuIEFY
SGVhZGluZ1RleHQoKTsKIAorICAgIC8vIEFwcEtpdCBhbHNvIHJldHVybnMgQVhUYWIgZm9yIHRo
ZSByb2xlIGRlc2NyaXB0aW9uIGZvciBhIHRhYiBpdGVtLgorICAgIGlmIChtX29iamVjdC0+aXNU
YWJJdGVtKCkpCisgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb24o
QCJBWFRhYiIsIG5pbCk7CisgICAgCiAgICAgLy8gV2Ugc2hvdWxkIHRyeSB0aGUgc3lzdGVtIGRl
ZmF1bHQgcm9sZSBkZXNjcmlwdGlvbiBmb3IgYWxsIG90aGVyIHJvbGVzLgogICAgIC8vIElmIHdl
IGdldCB0aGUgc2FtZSBzdHJpbmcgYmFjaywgdGhlbiBhcyBhIGxhc3QgcmVzb3J0LCByZXR1cm4g
dW5rbm93bi4KICAgICBOU1N0cmluZyogZGVmYXVsdFJvbGVEZXNjcmlwdGlvbiA9IE5TQWNjZXNz
aWJpbGl0eVJvbGVEZXNjcmlwdGlvbihheFJvbGUsIFtzZWxmIHN1YnJvbGVdKTsKQEAgLTEzMTgs
NiArMTMzNywxNiBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAg
ICAgICAgICAgICByZXR1cm4gcmFkaW9CdXR0b24tPndyYXBwZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgeworICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogdGFiSXRlbSA9IG1fb2JqZWN0LT5zZWxlY3RlZFRhYkl0ZW0o
KTsKKyAgICAgICAgICAgIGlmICghdGFiSXRlbSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmls
OworICAgICAgICAgICAgcmV0dXJuIHRhYkl0ZW0tPndyYXBwZXIoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkl0ZW0oKSkKKyAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+aXNTZWxlY3RlZCgpXTsKKyAg
ICAgICAgCiAgICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nVmFsdWUoKTsKICAgICB9CiAK
QEAgLTEzNTksNiArMTM4OCwzMSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJp
bmcoQWNjCiAgICAgICAgIHJldHVybiBhY2Nlc3NLZXk7CiAgICAgfQogICAgIAorICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0
ZV0pIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgeworICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnNDaGls
ZHJlbjsKKyAgICAgICAgICAgIG1fb2JqZWN0LT50YWJDaGlsZHJlbih0YWJzQ2hpbGRyZW4pOwor
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodGFic0NoaWxkcmVuKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXSkgeworICAgICAgICAvLyBUaGUgY29u
dGVudHMgb2YgYSB0YWIgbGlzdCBhcmUgYWxsIHRoZSBjaGlsZHJlbiBleGNlcHQgdGhlIHRhYnMu
CisgICAgICAgIGlmIChtX29iamVjdC0+aXNUYWJMaXN0KCkpIHsKKyAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG1f
b2JqZWN0LT5jaGlsZHJlbigpOworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnNDaGlsZHJlbjsKKyAgICAgICAgICAgIG1fb2Jq
ZWN0LT50YWJDaGlsZHJlbih0YWJzQ2hpbGRyZW4pOworCisgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudHM7CisgICAgICAg
ICAgICB1bnNpZ25lZCBjaGlsZHJlblNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5TaXplOyArK2spIHsKKyAgICAgICAg
ICAgICAgICBpZiAodGFic0NoaWxkcmVuLmZpbmQoY2hpbGRyZW5ba10pID09IFdURjo6bm90Rm91
bmQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzLmFwcGVuZChjaGlsZHJlbltrXSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50
cyk7CisgICAgICAgIH0KKyAgICB9ICAgIAorICAgIAogICAgIGlmIChtX29iamVjdC0+aXNEYXRh
VGFibGUoKSkgewogICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUg
YW5kIG5vbi12aXNpYmxlIHJvd3MKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXSB8fCAKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBAIGFsdAog
YXJjaGl2ZQogYXJpYS1hY3RpdmVkZXNjZW5kYW50CiBhcmlhLWNoZWNrZWQKK2FyaWEtY29udHJv
bHMKIGFyaWEtZGVzY3JpYmVkYnkKIGFyaWEtZGlzYWJsZWQKIGFyaWEtaGlkZGVuCkBAIC0yNCw2
ICsyNSw3IEBAIGFyaWEtbGV2ZWwKIGFyaWEtcHJlc3NlZAogYXJpYS1yZWFkb25seQogYXJpYS1y
ZXF1aXJlZAorYXJpYS1zZWxlY3RlZAogYXJpYS12YWx1ZW1heAogYXJpYS12YWx1ZW1pbgogYXJp
YS12YWx1ZW5vdwpJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1MDQwNCkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN1cHBvcnQgQVJJQSAidGFiIiByb2xlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA4NDIKKworICAgICAgICBBZGQgYSBsb2NhbGl6
YWJsZSBzdHJpbmcgZm9yIHRhYiBwYW5lbC4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9j
YWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgKiBTdHJpbmdzTm90VG9CZUxvY2FsaXplZC50eHQ6
CisKIDIwMDktMTAtMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9TdHJpbmdzTm90VG9CZUxv
Y2FsaXplZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1N0cmluZ3NOb3RUb0JlTG9jYWxpemVk
LnR4dAkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJLaXQvU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAKICJBUklBTGFuZG1hcmtNYWlu
IgogIkFSSUFMYW5kbWFya05hdmlnYXRpb24iCiAiQVJJQUxhbmRtYXJrU2VhcmNoIgorIkFSSUFU
YWJQYW5lbCIKICJBUklBVXNlckludGVyZmFjZVRvb2x0aXAiCiAiQVhFbmhhbmNlZFVzZXJJbnRl
cmZhY2UiCiAiQWNjZXNzaWJsZUJhc2UiCkluZGV4OiBXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2Nh
bGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2Fs
aXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDUwNDAzKQorKysgV2ViS2l0L0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtNTIzLDkgKzUyMyw2IEBACiAA
LwAqACAAYQBjAGMAZQBzAHMAaQBiAGkAbABpAHQAeQAgAHIAbwBsAGUAIABkAGUAcwBjAHIAaQBw
AHQAaQBvAG4AIABmAG8AcgAgAGUAbABhAHAAcwBlAGQAIAB0AGkAbQBlACAAZABpAHMAcABsAGEA
eQAgACoALwAKIAAiAGUAbABhAHAAcwBlAGQAIAB0AGkAbQBlACIAIAA9ACAAIgBlAGwAYQBwAHMA
ZQBkACAAdABpAG0AZQAiADsACiAACi0ALwAqACAAYQBjAGMAZQBzAHMAaQBiAGkAbABpAHQAeQAg
AGgAZQBsAHAAIAB0AGUAeAB0ACAAZgBvAHIAIABmAHUAbABsAHMAYwByAGUAZQBuACAAYgB1AHQA
dABvAG4AIAAqAC8ACi0AIgBlAG4AdABlAHIAIABmAHUAbABsACAAcwBjAHIAZQBlAG4AIgAgAD0A
IAAiAGUAbgB0AGUAcgAgAGYAdQBsAGwAIABzAGMAcgBlAGUAbgAiADsACi0ACiAALwAqACAASABU
AFQAUAAgAHIAZQBzAHUAbAB0ACAAYwBvAGQAZQAgAHMAdAByAGkAbgBnACAAKgAvAAogACIAZQB4
AHAAZQBjAHQAYQB0AGkAbwBuACAAZgBhAGkAbABlAGQAIgAgAD0AIAAiAGUAeABwAGUAYwB0AGEA
dABpAG8AbgAgAGYAYQBpAGwAZQBkACIAOwAKIAAKQEAgLTU0MSw5ICs1MzgsNiBAQAogAC8AKgAg
AEgAVABUAFAAIAByAGUAcwB1AGwAdAAgAGMAbwBkAGUAIABzAHQAcgBpAG4AZwAgACoALwAKIAAi
AGYAbwB1AG4AZAAiACAAPQAgACIAZgBvAHUAbgBkACIAOwAKIAAKLQAvACoAIABhAGMAYwBlAHMA
cwBpAGIAaQBsAGkAdAB5ACAAcgBvAGwAZQAgAGQAZQBzAGMAcgBpAHAAdABpAG8AbgAgAGYAbwBy
ACAAZgB1AGwAbABzAGMAcgBlAGUAbgAgAGIAdQB0AHQAbwBuACAAKgAvAAotACIAZgB1AGwAbAAg
AHMAYwByAGUAZQBuACIAIAA9ACAAIgBmAHUAbABsACAAcwBjAHIAZQBlAG4AIgA7AAotAAogAC8A
KgAgAGEAYwBjAGUAcwBzAGkAYgBpAGwAaQB0AHkAIAByAG8AbABlACAAZABlAHMAYwByAGkAcAB0
AGkAbwBuACAAZgBvAHIAIABlAG4AdABlAHIAIABmAHUAbABsAHMAYwByAGUAZQBuACAAYgB1AHQA
dABvAG4AIAAqAC8ACiAAIgBmAHUAbABsAHMAYwByAGUAZQBuACIAIAA9ACAAIgBmAHUAbABsAHMA
YwByAGUAZQBuACIAOwAKIAAKQEAgLTczMCw2ICs3MjQsOSBAQAogAC8AKgAgAEgAVABUAFAAIABy
AGUAcwB1AGwAdAAgAGMAbwBkAGUAIABzAHQAcgBpAG4AZwAgACoALwAKIAAiAHMAdwBpAHQAYwBo
AGkAbgBnACAAcAByAG8AdABvAGMAbwBsAHMAIgAgAD0AIAAiAHMAdwBpAHQAYwBoAGkAbgBnACAA
cAByAG8AdABvAGMAbwBsAHMAIgA7AAogAAorAC8AKgAgAEEAbgAgAEEAUgBJAEEAIABhAGMAYwBl
AHMAcwBpAGIAaQBsAGkAdAB5ACAAZwByAG8AdQBwACAAdABoAGEAdAAgAGMAbwBuAHQAZQBuAHMA
dAAgAHQAaABlACAAYwBvAG4AdABlAG4AdAAgAG8AZgAgAGEAIAB0AGEAYgAuACAAKgAvAAorACIA
dABhAGIAIABwAGEAbgBlAGwAIgAgAD0AIAAiAHQAYQBiACAAcABhAG4AZQBsACIAOwAKKwAKIAAv
ACoAIABIAFQAVABQACAAcgBlAHMAdQBsAHQAIABjAG8AZABlACAAcwB0AHIAaQBuAGcAIAAqAC8A
CiAAIgB0AGUAbQBwAG8AcgBhAHIAaQBsAHkAIAByAGUAZABpAHIAZQBjAHQAZQBkACIAIAA9ACAA
IgB0AGUAbQBwAG8AcgBhAHIAaQBsAHkAIAByAGUAZABpAHIAZQBjAHQAZQBkACIAOwAKIAAKSW5k
ZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA1MDQwNCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6
YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IEFSSUEgInRhYiIgcm9sZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODQyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJWaWV3RmFjdG9yeS5tbToKKyAgICAgICAgKC1bV2ViVmlld0ZhY3RvcnkgQVhBUklBQ29u
dGVudEdyb3VwVGV4dDpdKToKKwogMjAwOS0xMS0wMSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQkocmV2aXNpb24gNTA0MDIpCisr
KyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01ODcsNiArNTg3LDggQEAKICAgICAgICAgcmV0dXJuIFVJX1NUUklORygic2VhcmNo
IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIGEgc2VhcmNoIGZl
YXR1cmUgb2YgYSB3ZWJzaXRlLiIpOyAgICAKICAgICBpZiAoW2FyaWFUeXBlIGlzRXF1YWxUb1N0
cmluZzpAIkFSSUFVc2VySW50ZXJmYWNlVG9vbHRpcCJdKQogICAgICAgICByZXR1cm4gVUlfU1RS
SU5HKCJ0b29sdGlwIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMg
YSB0b29sdGlwLiIpOyAgICAKKyAgICBpZiAoW2FyaWFUeXBlIGlzRXF1YWxUb1N0cmluZzpAIkFS
SUFUYWJQYW5lbCJdKQorICAgICAgICByZXR1cm4gVUlfU1RSSU5HKCJ0YWIgcGFuZWwiLCAiQW4g
QVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGVuc3QgdGhlIGNvbnRlbnQgb2YgYSB0
YWIuIik7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTA0MDQpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAwOS0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQVJJQSAi
dGFiIiByb2xlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA4NDIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0
ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRXaW4uY3BwOgorCiAyMDA5LTExLTAxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA1MDQwMikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDEyIEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIGdldERlc2NyaXB0aW9uQ2FsbGJhY2sKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VTdHJpbmcoY29udGV4dCwgZGVzY3JpcHRpb24uZ2V0KCkpOwogfQogCitzdGF0aWMgSlNWYWx1
ZVJlZiBnZXRTdHJpbmdWYWx1ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nVmFsdWUoQWRv
cHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5zdHJpbmdWYWx1ZSgpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgc3RyaW5nVmFsdWUuZ2V0KCkpOworfQorCiBzdGF0
aWMgSlNWYWx1ZVJlZiBnZXRMYW5ndWFnZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbGFuZ3VhZ2Uo
QWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5sYW5ndWFnZSgpKTsKQEAgLTM1OCw2ICsz
NjQsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNSZXF1aXJlZENhbGxiYWNrKAogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCkt
PmlzUmVxdWlyZWQoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldElzU2VsZWN0ZWRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJp
bmdSZWYsIEpTVmFsdWVSZWYqKQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzU2VsZWN0ZWQoKSk7Cit9CisKIHN0YXRp
YyBKU1ZhbHVlUmVmIGdldFZhbHVlRGVzY3JpcHRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHZh
bHVlRGVzY3JpcHRpb24oQWRvcHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT52YWx1ZURlc2Ny
aXB0aW9uKCkpOwpAQCAtMzkzLDYgKzQwNCw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAidGl0bGUiLCBnZXRUaXRsZUNhbGxiYWNrLCAwLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImRlc2NyaXB0aW9uIiwgZ2V0RGVzY3JpcHRpb25DYWxsYmFjaywg
MCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJsYW5ndWFnZSIsIGdldExhbmd1YWdlQ2FsbGJhY2ssIDAs
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAic3RyaW5nVmFsdWUiLCBnZXRTdHJpbmdWYWx1ZUNhbGxiYWNr
LCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIngiLCBnZXRYQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAieSIsIGdldFlDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJ3aWR0aCIs
IGdldFdpZHRoQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTQwNyw2ICs0MTksNyBAQCBKU0NsYXNz
UmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgInNlbGVjdGVkVGV4
dFJhbmdlIiwgZ2V0U2VsZWN0ZWRUZXh0UmFuZ2VDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJpc0VuYWJsZWQiLCBnZXRJc0VuYWJsZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJpc1JlcXVpcmVkIiwgZ2V0SXNSZXF1aXJlZENhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgImlzU2VsZWN0ZWQiLCBnZXRJc1NlbGVjdGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAidmFsdWVEZXNjcmlwdGlvbiIsIGdldFZhbHVlRGVzY3JpcHRpb25DYWxsYmFjaywg
MCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAsIDAgfQogICAgIH07CkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShy
ZXZpc2lvbiA1MDQwMikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAg
ICAgSlNTdHJpbmdSZWYgdGl0bGUoKTsKICAgICBKU1N0cmluZ1JlZiBkZXNjcmlwdGlvbigpOwog
ICAgIEpTU3RyaW5nUmVmIGxhbmd1YWdlKCk7CisgICAgSlNTdHJpbmdSZWYgc3RyaW5nVmFsdWUo
KTsKICAgICBKU1N0cmluZ1JlZiBhY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdDsKICAgICBkb3Vi
bGUgeCgpOwogICAgIGRvdWJsZSB5KCk7CkBAIC0xMDMsNiArMTA0LDcgQEAgcHVibGljOgogICAg
IEpTU3RyaW5nUmVmIHNlbGVjdGVkVGV4dFJhbmdlKCk7CiAgICAgYm9vbCBpc0VuYWJsZWQoKTsK
ICAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsKKyAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25z
dDsKICAgICBkb3VibGUgY2xpY2tQb2ludFgoKTsKICAgICBkb3VibGUgY2xpY2tQb2ludFkoKTsK
IApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAkocmV2aXNpb24gNTA0MDIpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsMTIgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVzYwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhkZXNjcmlwdGlvbik7CiB9CiAKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0cmluZ1ZhbHVlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKIEpTU3RyaW5nUmVmIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CkBAIC0zMTYsNiArMzIyLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNS
ZXF1aXJlZCgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBmYWxzZTsKK30KKwogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDUwNDAyKQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMyOSw2ICszMjksMTIgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGVzYwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAi
QVhEZXNjcmlwdGlvbiIsIGRlc2NyaXB0aW9uKTsKIH0KIAorSlNTdHJpbmdSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQoreworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50KTsKKyAgICByZXR1cm4gY29u
Y2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7Cit9CisK
IEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIHsKICAgICBp
ZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTGFuZ3VhZ2UiXSwgbV9lbGVtZW50KTsKQEAgLTQzMyw2ICs0
MzksMTQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVk
KCkgY29uc3QKK3sKKyAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXTsKKyAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFs
dWUgYm9vbFZhbHVlXTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIHBhcmFtZXRlcml6ZWQg
YXR0cmlidXRlcwogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQg
aW5kZXgpCiB7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiA1MDQwMikK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxMSBAQCBKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoZGVzY3JpcHRpb24uZGF0YSgpLCBkZXNjcmlwdGlvbi5sZW5ndGgoKSk7CiB9
CiAKK0pTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sK
KyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKwogSlNT
dHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewogICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwpAQCAtMjg0LDYgKzI4OSwxMSBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25z
dAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1MDQwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDA5LTExLTAxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3VwcG9ydCBBUklBICJ0YWIiIHJvbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg0MgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlh
LWNvbnRyb2xzLXdpdGgtdGFicy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9h
cmlhLXRhYi1yb2xlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9Ta2lwcGVkOgorCiAyMDA5LTExLTAyICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY29udHJv
bHMtd2l0aC10YWJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXJpYS1jb250cm9scy13aXRoLXRhYnMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxIEBACitDcnVzdAorVmVnZXMKK1Rlc3QKKworU2VsZWN0IENydXN0
CisKK1NlbGVjdCBDcnVzdAorCitUaGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgdGFiIGl0ZW0gYmVj
b21lcyBzZWxlY3RlZCBpZiBlaXRoZXIgYXJpYS1zZWxlY3RlZCBpcyB1c2VkLCBvciBpZiBhcmlh
LWNvbnRyb2xzIHBvaW50cyB0byBhbiBpdGVtIHRoYXQgY29udGFpbnMgS0IgZm9jdXMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRhYjIuaXNTZWxlY3RlZCBpcyB0cnVl
CitQQVNTIHRhYjEuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyB0YWIyLmlzU2VsZWN0ZWQgaXMg
ZmFsc2UKK1BBU1MgdGFiMS5pc1NlbGVjdGVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtY29udHJvbHMtd2l0aC10YWJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFicy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbnRyb2xzLXdpdGgtdGFi
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8dWwgaWQ9InRhYmxpc3RfMSIgcm9sZT0i
dGFibGlzdCI+Cis8bGkgaWQ9InRhYl8xIiByb2xlPSJ0YWIiIHRhYmluZGV4PSItMSIgY2xhc3M9
IiI+Q3J1c3Q8L2xpPgorPGxpIGlkPSJ0YWJfMiIgcm9sZT0idGFiIiB0YWJpbmRleD0iLTEiIGFy
aWEtY29udHJvbHM9InBhbmVsXzIiIGNsYXNzPSIiPlZlZ2VzPC9saT4KKzwvdWw+CisKKzxoMyB0
YWJpbmRleD0wIGlkPSJlbGVtZW50T3V0c2lkZVRhYnMiPlRlc3Q8L2gzPgorCis8ZGl2IGlkPSJw
YW5lbF8xIiByb2xlPSJ0YWJwYW5lbCIgPgorPGgzIHRhYmluZGV4PTA+U2VsZWN0IENydXN0PC9o
Mz4KKzwvZGl2PgorCis8ZGl2IGlkPSJwYW5lbF8yIiByb2xlPSJ0YWJwYW5lbCIgPgorPGgyIGlk
PSJpdGVtSW5QYW5lbDIiIHRhYmluZGV4PTA+U2VsZWN0IENydXN0PC9oMj4KKzwvZGl2PgorCisK
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhcmlhIHRhYiBp
dGVtIGJlY29tZXMgc2VsZWN0ZWQgaWYgZWl0aGVyIGFyaWEtc2VsZWN0ZWQgaXMgdXNlZCwgb3Ig
aWYgYXJpYS1jb250cm9scyBwb2ludHMgdG8gYW4gaXRlbSB0aGF0IGNvbnRhaW5zIEtCIGZvY3Vz
LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAg
ICAgICAgdmFyIGJvZHkgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudDsKKyAg
ICAgICAgICB2YXIgdGFiTGlzdCA9IGJvZHkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgICB2YXIgdGFiMSA9IHRhYkxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAg
ICAgIHZhciB0YWIyID0gdGFiTGlzdC5jaGlsZEF0SW5kZXgoMSk7CisKKyAgICAgICAgICAvLyB3
ZSBzZXQgS0IgZm9jdXMgdG8gc29tZXRoaW5nIGluIHBhbmVsXzIsIHdoaWNoIG1lYW5zIHRoYXQg
dGFiMiBzaG91bGQgYmVjb21lIHNlbGVjdGVkCisgICAgICAgICAgLy8gYmVjYXVzZSBpdCBhcmlh
LWNvbnRyb2xzIHBhbmVsXzIKKyAgICAgICAgICB2YXIgcGFuZWwySXRlbSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpdGVtSW5QYW5lbDIiKTsKKyAgICAgICAgICBwYW5lbDJJdGVtLmZvY3Vz
KCk7CisKKyAgICAgICAgICBzaG91bGRCZSgidGFiMi5pc1NlbGVjdGVkIiwgInRydWUiKTsKKwor
ICAgICAgICAgIC8vIHJlc2V0IEtCIGZvY3VzIGFuZCB2ZXJpZnkgdGhhdCBuZWl0aGVyIHRhYiBp
cyBzZWxlY3RlZAorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50T3V0
c2lkZVRhYnMiKS5mb2N1cygpOworICAgICAgICAgIHNob3VsZEJlKCJ0YWIxLmlzU2VsZWN0ZWQi
LCAiZmFsc2UiKTsKKyAgICAgICAgICBzaG91bGRCZSgidGFiMi5pc1NlbGVjdGVkIiwgImZhbHNl
Iik7CisKKyAgICAgICAgICAvLyBOb3cgd2Ugc2V0IGFyaWEtc2VsZWN0ZWQgdG8gYmUgdHJ1ZSBv
biB0YWIxIHNvIHRoYXQgaXQgc2hvdWxkIGJlY29tZSBzZWxlY3RlZAorICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YWJfMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIs
ICJ0cnVlIik7CisgICAgICAgICAgc2hvdWxkQmUoInRhYjEuaXNTZWxlY3RlZCIsICJ0cnVlIik7
ICAgICAgICAgIAorICAgIH0KKworICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtdGFiLXJvbGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IGZhbHNlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHki
PgorCis8dWwgaWQ9InRhYmxpc3RfMSIgcm9sZT0idGFibGlzdCI+Cis8bGkgaWQ9InRhYl8xIiBy
b2xlPSJ0YWIiIHRhYmluZGV4PSIwIiBjbGFzcz0iIj5DcnVzdDwvbGk+Cis8bGkgaWQ9InRhYl8y
IiByb2xlPSJ0YWIiIHRhYmluZGV4PSIwIiBjbGFzcz0iIj5WZWdlczwvbGk+Cis8L3VsPgorCis8
ZGl2IGlkPSJwYW5lbF8xIiByb2xlPSJ0YWJwYW5lbCIgYXJpYS1sYWJlbGxlZGJ5PSJ0YWJfMSIg
PgorPGgzPlNlbGVjdCBDcnVzdDwvaDM+Cis8L2Rpdj4KKworCis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgYXJpYSByb2xlcyBmb3IgdGFiLCB0YWJwYW5lbCBh
bmQgdGFibGlzdCB3b3JrIGFzIGV4cGVjdGVkIGNvcnJlY3RseS4iKTsKKworICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICAgIHZhciBib2R5ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKTsKKyAgICAgICAgICBib2R5LmZvY3VzKCk7CisK
KyAgICAgICAgICB2YXIgdGFiTGlzdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRF
bGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICB2YXIgdGFiMSA9IHRhYkxpc3QuY2hp
bGRBdEluZGV4KDApOworICAgICAgICAgIHZhciB0YWIyID0gdGFiTGlzdC5jaGlsZEF0SW5kZXgo
MSk7CisgICAgICAgICAgdmFyIHRhYlBhbmVsID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDEpOworCisgICAgICAgICAgc2hvdWxkQmUoInRhYkxp
c3Qucm9sZSIsICInQVhSb2xlOiBBWFRhYkdyb3VwJyIpOworICAgICAgICAgIHNob3VsZEJlKCJ0
YWIxLnJvbGUiLCAiJ0FYUm9sZTogQVhSYWRpb0J1dHRvbiciKTsKKyAgICAgICAgICBzaG91bGRC
ZSgidGFiMS50aXRsZSIsICInQVhUaXRsZTogQ3J1c3QnIik7CisgICAgICAgICAgc2hvdWxkQmUo
InRhYjEuY2hpbGRyZW5Db3VudCIsICIwIik7CisgICAgICAgICAgc2hvdWxkQmUoInRhYjIucm9s
ZSIsICInQVhSb2xlOiBBWFJhZGlvQnV0dG9uJyIpOworICAgICAgICAgIHNob3VsZEJlKCJ0YWIy
LnRpdGxlIiwgIidBWFRpdGxlOiBWZWdlcyciKTsKKyAgICAgICAgICBzaG91bGRCZSgidGFiUGFu
ZWwucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICAgIHNob3VsZEJlKCJ0YWJQ
YW5lbC5zdWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYVGFiUGFuZWwnIik7CisgICAgfQorCisgICAg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA1MDQwMikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBAIGFjY2Vzc2liaWxpdHkvYXJpYS1sYWJlbC5odG1sCiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtbGFiZWxsZWRieS1zdGF5LXdpdGhpbi5odG1sCiBhY2Nlc3NpYmlsaXR5L2FyaWEtbGluay1z
dXBwb3J0cy1wcmVzcy5odG1sCiBhY2Nlc3NpYmlsaXR5L2FyaWEtcmVhZG9ubHkuaHRtbAorYWNj
ZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi1wcmVz
cy1hY3Rpb24uaHRtbAogYWNjZXNzaWJpbGl0eS9jYW52YXMuaHRtbAogYWNjZXNzaWJpbGl0eS9l
ZGl0YWJsZS13ZWJhcmVhLWNvbnRleHQtbWVudS1wb2ludC5odG1sCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJp
YS10YWItcm9sZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10YWItcm9sZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACitDcnVzdAorVmVnZXMKK1NlbGVjdCBDcnVzdAorCitU
aGlzIHRlc3RzIHRoYXQgdGhlIGFyaWEgcm9sZXMgZm9yIHRhYiwgdGFicGFuZWwgYW5kIHRhYmxp
c3Qgd29yayBhcyBleHBlY3RlZCBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHRhYkxpc3Qucm9sZSBpcyAnQVhSb2xlOiBBWFRhYkdyb3VwJworUEFTUyB0
YWIxLnJvbGUgaXMgJ0FYUm9sZTogQVhSYWRpb0J1dHRvbicKK1BBU1MgdGFiMS50aXRsZSBpcyAn
QVhUaXRsZTogQ3J1c3QnCitQQVNTIHRhYjEuY2hpbGRyZW5Db3VudCBpcyAwCitQQVNTIHRhYjIu
cm9sZSBpcyAnQVhSb2xlOiBBWFJhZGlvQnV0dG9uJworUEFTUyB0YWIyLnRpdGxlIGlzICdBWFRp
dGxlOiBWZWdlcycKK1BBU1MgdGFiUGFuZWwucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFT
UyB0YWJQYW5lbC5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYVGFiUGFuZWwnCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDUwNDAyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTM2Myw2ICszNjMsNyBAQCBhY2Nlc3NpYmls
aXR5L2FyaWEtcHJlc2VudGF0aW9uYWwtcm9sZS5oCiBhY2Nlc3NpYmlsaXR5L2FyaWEtcmVhZG9u
bHkuaHRtbAogYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGVzLmh0bWwKIGFjY2Vzc2liaWxpdHkvYXJp
YS10YWJsZXMuaHRtbAorYWNjZXNzaWJpbGl0eS9hcmlhLXRhYi1yb2xlcy5odG1sCiBhY2Nlc3Np
YmlsaXR5L2J1dHRvbi1wcmVzcy1hY3Rpb24uaHRtbAogYWNjZXNzaWJpbGl0eS9jYW52YXMuaHRt
bAogYWNjZXNzaWJpbGl0eS9lZGl0YWJsZS13ZWJhcmVhLWNvbnRleHQtbWVudS1wb2ludC5odG1s
Cg==
</data>
<flag name="review"
          id="23812"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>