From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5140C6FA8A for ; Thu, 15 Sep 2022 09:51:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230174AbiIOJvk (ORCPT ); Thu, 15 Sep 2022 05:51:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230179AbiIOJvX (ORCPT ); Thu, 15 Sep 2022 05:51:23 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F59D9C216; Thu, 15 Sep 2022 02:49:14 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id w2so7238906pfb.0; Thu, 15 Sep 2022 02:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=ZKkzdFhlMcaWjhFySonr3aBox8dzu8s8j6Lei8KsK2E=; b=qTJND0ZLh7gqjyAggcPL3pMVGODNh8i1/xclslZpx/wvJXSWY5EMKedIF+ce7mocri V0+MuG84tsaNumAQRZ/p/7Y515blY4sAwdR/mrOe2qfdOa1EALO9ZKRD2J51kePBWGGx 1lyB0aMtYAESNGfQNjY7/FVKtSHHU1i/+xer1gqhv2p7gnyYcwqE9BeEquW08jI9UI2R T/0gVJfYYYTyUomddK4PjKCDt8XjvzuQw68PBGImhpXwXZ8PxRczxyCrTdShcdvjU6+w MLoSW/Jgux0KLVvRkV9PCY3rLnz3hascpBsh6Aabih8ySDrnwTHKPD+NNG7FvY+IsqQ2 tJ1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=ZKkzdFhlMcaWjhFySonr3aBox8dzu8s8j6Lei8KsK2E=; b=KcQkSIQb3rylxqJ+WiK5LMRlWdO3q5p+Gr1CQ7ananq/0y/baDUqk3CtcuXiVX9KKs g4YJa6vPakE8D3kqboB7RJAsYj/KaiTmgO61yui1j2MczMYBg00O4I2qdHJrDa8A0M1B a7RceiOEyZbHCOBa3ZA92sRbIiysMjUiA8Bg9SoE4dd9R1YpWDphoeLqlASCjhWwyyed sW58u0LndIxgZRaOGxuNhBjtwFGkw/TPfT2lazuAY88iGx6B6o5YeMD5uxi5cDabobPo S8Pn0EAt4hUOocI8lkicr1eSEHTcG4IsGO/zxLfLYOKSRP0J/GTTh3tT5FNMu8XTX4A3 U2bw== X-Gm-Message-State: ACgBeo1pVV2cHpOVovDQOriagfDTCZ+ySdnIImGGJPnuU4KqA5tRYGI/ DISyTIVY+rHNJ6697hUqoeYAkRokzKk= X-Google-Smtp-Source: AA6agR48OXDiEsrU2H7PgAIKFPKEGGrjaDNkyIaBWrGuC8K8zJ9IPPOVQeJZucIEsZ0FGIClarF+aQ== X-Received: by 2002:a63:1d1a:0:b0:433:f6ea:dce6 with SMTP id d26-20020a631d1a000000b00433f6eadce6mr34712426pgd.178.1663235308685; Thu, 15 Sep 2022 02:48:28 -0700 (PDT) Received: from RD-3580-24288.rt.l (114-137-177-189.emome-ip.hinet.net. [114.137.177.189]) by smtp.gmail.com with ESMTPSA id n4-20020a170903110400b00176675adbe1sm12669010plh.208.2022.09.15.02.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Sep 2022 02:48:28 -0700 (PDT) From: ChiaEn Wu To: pavel@ucw.cz, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, sre@kernel.org, jic23@kernel.org, lars@metafoo.de, broonie@kernel.org, mazziesaccount@gmail.com, andriy.shevchenko@linux.intel.com Cc: chiaen_wu@richtek.com, alice_chen@richtek.com, cy_huang@richtek.com, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-iio@vger.kernel.org, szunichen@gmail.com Subject: [PATCH v11 0/8] Add MediaTek MT6370 PMIC support Date: Thu, 15 Sep 2022 17:47:27 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org From: ChiaEn Wu This patch series add MediaTek MT6370 PMIC support and add a index macro to . The MT6370 is a highly-integrated smart power management IC, which includes a single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C & Power Delivery (PD) controller, dual Flash LED current sources, a RGB LED driver, a backlight WLED driver, a display bias driver and a general LDO for portable devices. First, in this series of patches, - 'dt-binding: mfd' and 'mfd driver' have been applied by Lee in the v7. https://lore.kernel.org/all/YvJdpq0MWNPQZw5c@google.com/ https://lore.kernel.org/all/YvJdxEpC2cB58Bq9@google.com/ - 'tcpci driver' has been applied by Greg in the v8. https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-next&id=c2a8ea5997fdfeb43eda259d5533234c3cae05d7 - 'dt-binding: backlight' and 'backlight driver' have been applied by Lee in v9. https://lore.kernel.org/all/YxYSDSlnOELL2mPF@google.com/ https://lore.kernel.org/all/YxYS7%2FdZI69lMXeh@google.com/ Second, the LED RGB driver is based on Andy's patch which moves led_init_default_state_get() to the global header. https://lore.kernel.org/all/20220805154907.32263-3-andriy.shevchenko@linux.intel.com/ In addition, we added a macro to the for declaring the linear_range struct simply (see patch v11-0004) and made some changes for MT6370 drivers (see v11 section of the change log below). Thank you, ChiaEn Wu --- Change in v11: - In Patch 1/8 (dt-bindings: MT6370 Charger) - Add more detailed description of irqs. - Adujust the order of irqs Change in v10: - In Patch 6/8 (MT6370 Charger): - Add a feature (disable input current limit) in 'mt6370_chg_init_setting()' - Add the header file for using 'devm_work_autocancel()' and 'devm_delayed_work_autocancel() - Rename 'pwr_rdy' to 'opposite_pwr_rdy' in 'mt6370_chg_pwr_rdy_check()' - Rename enum elements ('MT6370_ATTACH_STAT_ATTACH_BC12_NOT_DONE' --> 'MT6370_ATTACH_STAT_ATTACH_WAIT_FOR_BC12') - Revise the assignment value of 'val.intval' in 'mt6370_chg_pwr_rdy_check()' to make the code easy to read. - Revise the initialization of bc12_work (INIT_WORK() --> using devm_work_autocancel()) and mivr_dwork (INIT_DELAYED_WORK + devm_add_action_or_reset() --> devm_delayed_work_autocancel()) - In Patch 8/8 (MT6370 LED Flashlight): - Add the revert code when '__mt6370_flash_brightness_set()' return failed. - Revise type of 'led_no' (u32 -> u8) - Revise type of 'default_state' (u32 -> enum led_default_state) - Revise the return value of '_mt6370_flash_brightness_set()' - Remove the useless function 'mt6370_init_common_properties()' - Use 'led_init_default_state_get()' to init 'led->default_state' Changes in v9: - In Patch 05/10: - Revise LINEAR_RANGE() and LINEAR_RANGE_IDX() - In Patch 07/10: - Fix wrong 'F_IINLMTSEL' setting in 'mt6370_chg_init_setting()' - Revise the usage of LINEAR_RANGE_IDX() - In Patch 09/10: - Revise the format of the comments. - In Patch 10/10: - Revise the format of the comments. Changes in v8: - In Patch 06/12: - Add linear_range_idx macro for declaring the linear_range struct simply. - In Patch 09/12: - Remove MT6370_CHG_LINEAR_RANGE() macro, and change to use LINEAR_RANGE_IDX() macro - In Patch 10/12: - Add include header file - Remove useless 'enum mt6370_state' because of using 'enum led_default_state' - Revise the calculation of 'val' in 'mt6370_gen_breath_pattern()' - Replace the medthod of getting default-state by using led_init_default_state_get() - In Patch 11/12: - Add missing 'dependency config' in Kconfig - Revise all multi-line comments - In Patch 12/12: - Add missing header file - Remove useledd header file - Revise the comment of 'mt6370_check_vendor_info()' Changes in v7: - In Patch 05/13: - Add the second compatible string for 'mt6372' - Add 'mediatek,bled-exponential-mode-enable' property for enable the exponential mode of backlight brightness - Add validation for the maximum value of 'default-brightness' and 'max-brightness' - In Patch 07/13: - Move '#define MT6370_REG_MAXADDR' to the next line of '#define MT6370_REG_CHG_MASK1' - Rename 'MT6370_REG_ADDRLEN' to 'MT6370_MAX_ADDRLEN' - In Patch 08/13: - Revise 'devm_add_action_or_reset(dev, ...)' to one line - Revise 'return regmap_update_bits(...)' with using positive conditional - In Patch 09/13: - Add AICR(100mA ~ 350mA), ICHG(100mA ~ 800mA) macros - Remove 400mA AICR and 900mA ICHG macros - Revise using 'if-else' to 'switch-case' in mt6370_adc_read_scale() where the adc channel is ibus or ibat - In Patch 10/13: - Revise the method to enable/disable irq - Revise all 'if (ret < 0)' to 'if (ret)' after using mt6370_chg_field_set/get() - Revise all 'OTG' text again - In Patch 11/13: - Add the comment for the union of 'struct mt6370_led' - Revise the wrong description of 'Authors' - Revise some typos (e.g. led --> LED) - Revise 'if (!fwnode_property_read_string())' to 'ret = fwnode_property_read_string()' - Replace 'memcpy(...)' with 'put_unaligned_be24()' in mt6370_gen_breath_pattern() - Replace all 'LED_OFF' with 0 - Remove the redundant assignment in mt6370_mc_pattern_clear() - In Patch 12/13: - Fix the indentation. - For the well defined macro, the parenthesis is needed for input parameters. - Replace some dev_warn to dev_info in 'init_flash_properties'. - Add sentinel comment for the terminator entry of of_device_id. - Use priv->fled_torch_used directly. - Delete 0 in {}. - Use _uA instead of _UA in definition. - Refine the description. - Use usleep_range instead of udelay. - Rename config to LEDS_MT6370_FLASH. - Add missing ">" in copyright. - Change the Kconfig order - In Patch 13/13: - Add support 'exponential mode' property parsing - Add 'return dev_err_probe()' after 'if (IS_ERR(priv->enable_gpio))' - Add 'mt6372' compatible string - Revise Kconfig help text - Revise update()/get() for supporting 16384 steps (MT6372) - Revise all shift usages form using 'ffs() and fls()' to defining the _SHIFT macros. - Revise 'brightness ? 1 : 0' to '!!brightness' in gpiod_set_value() Changes in v6: - In Patch 03/13: - Add 'reg' property of led of multi-led to prevent checking error. - In Patch 08/13: - Convert tcpci as device resource managed with 'devm_add_action_or_reset' api. - Refine remvoe callback. - Refine the commit text from 'this commit add' to 'add'. - In Patch 09/13: - Using 'struct device *dev = &pdev->dev' in probe() - Revise the sixth parameter of regmap_read_poll_timeout() by Replacing '1000' with 'MILLI' - Revise the units of three macros - MT6370_AICR_400MA --> MT6370_AICR_400_mA - MT6370_ICHG_500MA --> MT6370_ICHG_500_mA - MT6370_ICHG_900MA --> MT6370_ICHG_900_mA - In patch 10/13: - Remove the varable (*psy_desc) of struct mt6370_priv - Remove the deprecated usb type (POWER_SUPPLY_TYPE_USB_CDP and POWER_SUPPLY_TYPE_USB_DCP) - Remove useless remove() - Revise all units from mini- to micro- - Revise get/set power_supply_prop (change to directly return get/set regmap_field) - Revise probe() and use devm_add_action_or_reset() for handling of the workqueue/delayed_work/mutex - Revise mt6370_chg_psy_desc - Add '.name = "mt6370-charger"' - Use 'static const' - In patch 11/13: - Remove the 'ko' from mt6370 led Kconfig description. - Add both authors for Alice and ChiYuan. - Use pdata to distinguish the code from mt6370/71 to mt6372. - Instead of 'state' define, use the 'state' enum. - Fix the typo for 'MT6372_PMW_DUTY'. - For pwm_duty define, replace with bit macro - 1. - Refine all the labels from 'out' to 'out_unlock'. - Use struct 'dev' variable and 'dev_err_probe' to optimize the LOC. - Revise for the array initialization from {0} to {}. - Move into rgb folder and rename file name to 'leds-mt6370-rgb'. - Refine the 'comma' usage in struct/enum. - In patch 12/13: - Use 'GENMASK' instead of 'BIT'. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine the return of _mt6370_flash_brightness_set function. - Refine the descriptions. - Use mt6370_clamp() instead of clamp_align(). - Use device resource managed API for v4l2 flash_release. Changes in v5: - In patch 07/13: - Add the comma in the last REGMAP_IRQ_REG_LINE(), DEFINE_RES_IRQ_NAMED() and MFD_CELL_RES() - Add the prefix in the first parameter of all mfd_cell - Move enum and struct mt6370_info to mt6370.h - Remove struct device *dev in struct mt6370_info - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 08/13: - Add comma for the last index of mt6370_reg_init. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine kconfig text. - Remove both 'else' in set_vbus callback. - Remove comma for of_device_id if the assigned member is only one. - In patch 09/13: - Replace using snprintf() with sysfs_emit() in mt6370_adc_read_label() - Remove macro ADC_CONV_TIME_US - Revise all variable ordering - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 10/13: - Replace unsigned int type of pwr_rdy with bool in mt6370_chg_set_online() - Remove redundant 'else' in mt6370_chg_field_get() - Revise 'if-else' in mt6370_chg_field_set() - Revise 'if' condition in mt6370_chg_enable_irq() - Revise all text 'otg' --> 'OTG' - Revise MT6370_MIVR_IBUS_TH_100_MA --> MT6370_MIVR_IBUS_TH_100_mA - Revise the description of Kconfig help text - In patch 12/13: - Refine the coding style. - Use "dev" instead of "&pdev->dev". - In patch 13/13: - Add missed - Add struct device *dev in probe() to make code cleaning - Remove useless including header file , - Remove useless variable uasage in mt6370_init_backlight_properties() - Remove redundant checking enable_gpio in mt6370_bl_update_status() - Remove redundant parentheses in mt6370_bl_get_brightness() - Revise the description of Kconfig help text - Revise the calculation of hys_th_steps Changes in v4: - In patch 02/13: - Add minItems of "io-channel-names" - Replace text "Mediatek" with "MediaTek" - In patch 06/13: - Roll back all "$ref: " to v2 patch style (using "/schemas/...") - In patch 07/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first break and then return" with "return directly" in "mt6370_check_vendor_info()" - Add module name related description in Kconfig helptext - Add Copyright in the source code - Add header file "mt6370.h" for all "#define IRQ" - Adjust Makefile order of MT6370 - Refine "bank_idx" and "bank_addr" in "mt6375_regmap_read()" / "mt6375_regmap_write()" - Refine redundant "else if" in "mt6370_regmap_read()" - In patch 08/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first ret=regulator_(dis/en)able and then return" with "return directly" in "mt6370_tcpc_set_vbus()" - Replace header file with - Add Copyright in the source code - Add module name related description in Kconfig helptext - Remove header file - Refine all probe error by using dev_err_probe() - In patch 09/13: - Replace text "Mediatek" with "MediaTek" - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Add Copyright in the source code - Add module name related description in Kconfig - Add unit suffix of macro "ADC_CONV_POLLING_TIME" - Add new macro "ADC_CONV_TIME_MS" - Adjust the position of include file - Adjust the postions between and - Fix some incorrect characters - In patch 10/13: - Replace text "Mediatek" with "MediaTek" in Kconfig and MODULE_DESCRIPTION() - Replace "mt6370_chg_val_to_reg" and "mt6370_chg_reg_to_val" with "linear_range" API - Replace "first break and then return" with "return directly" in all cases of get/set power_supply_property - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Replace all "return IS_ERR(priv->rdev) ? PTR_ERR(priv->rdev) : 0" with "PTR_ERR_OR_ZERO()" - Replace "priv->dev->of_node" with "dev_of_node()" - Add Copyright in the source code - Add module name related description in Kconfig helptext - Add proper unit of "MT6370_MIVR_IBUS_TH" - Add error check in "mt6370_chg_get_status" - Remove including header file - Remove redundant comma of every enum terminator line - Remove unwanted blank lines - Remove the useless label (toggle_cfo_exit:) - Remove using atomic - Remove using of_match_ptr() - Fix some incorrect characters - Fix updating wrong bits when using ena_gpiod of OTG regulator - Adjust the probe order in probe() - In patch 11/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace text "const" with "constant" in Kconfig - Add Copyright in the source code - In patch 12/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - In patch 13/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - Revise the comment of "PWM HYS STEPS" Changes in v3: - Remove ADC ABI file, which is added in v2 Patch 7 - In patch 02/14: - Add items and remove maxItems of io-channels - Add io-channel-names and describe each item - Add "unevaluatedProperties: false" in "usb-otg-vbus-regulator" - Rename "enable-gpio" to "enable-gpios" in "usb-otg-vbus-regulator" - In patch 03/14: - Use leds-class-multicolor.yaml instead of common.yaml. - Split multi-led and led node. - Add subdevice "led" in "multi-led". - In patch 04/14: - Remove the description of enum. - In patch 05/14: - Rename "mediatek,bled-pwm-hys-input-threshold-steps" to "mediatek,bled-pwm-hys-input-th-steps" - Refine "bled-pwm-hys-input-th-steps", "bled-ovp-microvolt", "bled-ocp-microamp" enum values - In patch 06/14: - Use " in entire patchset - Refine ADC description - Rename "enable-gpio" to "enable-gpios" in "regualtor" - In patch 07/14: - Refine Kconfig help text - Refine error message of unknown vendor ID in mt6370_check_vendor_info() - Refine return value handling of mt6370_regmap_read() - Refine all probe error by using dev_err_probe() - Refine "bank_idx" and "bank_addr" in mt6370_regmap_read() and mt6370_regmap_write() - Add "#define VENID*" and drop the comments in mt6370_check_vendor_info() - Drop "MFD" in MODULE_DESCRIPTION() - In patch 09/14: - Refine Kconfig help text - In patch 10/14: - Refine Kconfig help text - Refine all channel value in read_scale() a. current: uA --> mA b. voltage: uV --> mV c. temperature: degrees Celsius --> milli degrees Celsius - Add "default:" condition of switch statement in read_scale() and read_raw() - Add error message for reading ADC register failed - Add the comment for adc_lock - Add header file for struct of_device_id - Replace "adc" text with "ADC" in all of the error messages - In patch 12/14: - Refine the grammer of the Kconfig. - Change reg mode to the const current mode. - In patch 14/14: - Refine bool properties parsing (pwm-enable, ovp-shutdown, ocp-shutdown) in DT parsing function - Refine u32 and u8 properties parsing (pwm-hys-input-th-steps, ovp-microvolt, ocp-microamp), from using register value to using actual value - Refine error string of "channle-use" parsing failed - Refine Kconfig help text Changes in v2: - In patch 01/15: - Add "unevaluatedProperties: false". - Delete "DT bindings". - Refine the description to fit in 80 columns. - Skip the connector description. - In patch 02/15: - Refine items description of interrupt-name - Rename "usb-otg-vbus" to "usb-otg-vbus-regulator" - Add constraint properties for ADC - In patch 03/15: - Skip not useful description of "^(multi-)?led@[0-3]$" and reg. - Due to the dependency, remove the mention of mfd document directory. - Delete Soft-start property. In design aspect, we think soft-restart should always be enabled, our new chip has deleted the related setting register , also, we don’t allow user adjust this parameter in this chip. - Refine the commit message. - In patch 04/15: - Skip not useful description of "^led@[0-1]$" and reg. - Add apace after '#'. - Refine the commit message. - In patch 05/15: - Remove "binding documentation" in subject title - Refine description of mt6370 backlight binding document - Refine properties name(bled-pwm-hys-input-bit, bled-ovp-microvolt, bled-ocp-microamp) and their description - In patch 06/15: - Refine ADC and Regulator descriptions - Refine include header usage in example - Refine node name to generic node name("pmic@34") - Refine led example indentation - Refine license of mediatek,mt6370_adc.h - Rename the dts example from IRQ define to number. - Remove mediatek,mt6370.h - In patch 07/15: - Add ABI documentation for mt6370 non-standard ADC sysfs interfaces. - In patch 08/15: - Add all IRQ define into mt6370.c. - Refine include header usage - In patch 09/15: - No changes. - In patch 10/15: - Use 'gpiod_get_from_of_node' to replace 'fwnode_gpiod_get_index'. - In patch 11/15: - Refine Kconfig mt6370 help text - Refine mask&shift to FIELD_PREP() - Refine mutex lock name ("lock" -> "adc_lock") - Refine mt6370_adc_read_scale() - Refine mt6370_adc_read_offset() - Refine mt6370_channel_labels[] by using enum to index chan spec - Refine MT6370_ADC_CHAN() - Refine indio_dev->name - Remove useless include header files - In patch 12/15: - Refine mt6370_chg_otg_rdesc.of_match ("mt6370,otg-vbus" -> "usb-otg-vbus-regulator") to match DT binding - In patch 13/15: - Refine Kconfig description. - Remove include "linux/of.h" and use "linux/mod_devicetable.h". - Place a comma for the last element of the const unsigned int array. - Add a comment line for the mutex 'lock'. - In probe function, use 'dev_err_probe' in some judgement to reduce the LOC. - Refine include header usage. BIT/GENMASK -> linux/bits.h FIELD_GET -> linux/bitfield.h - In patch 14/15: - Add blank line. - Replace container_of() with to_mt6370_led() . - Refine description of ramping. - Refine the mt6370_init_common_properties function. - Refine the probe return. - In patch 15/15: - Refine MT6370 help text in Kconfig - Refine DT Parse function - Remove useless enum - Add comment for 6372 backward compatible in bl_update_status() and check_vendor_info() - Using dev_err_probe(); insteads dev_err()&return; in the probe() Alice Chen (2): dt-bindings: leds: Add MediaTek MT6370 flashlight leds: flash: mt6370: Add MediaTek MT6370 flashlight support ChiYuan Huang (2): dt-bindings: leds: mt6370: Add MediaTek MT6370 current sink type LED indicator leds: rgb: mt6370: Add MediaTek MT6370 current sink type LED Indicator support ChiaEn Wu (4): dt-bindings: power: supply: Add MediaTek MT6370 Charger lib: add linear range index macro iio: adc: mt6370: Add MediaTek MT6370 support power: supply: mt6370: Add MediaTek MT6370 charger driver .../bindings/leds/mediatek,mt6370-flashlight.yaml | 41 + .../bindings/leds/mediatek,mt6370-indicator.yaml | 81 ++ .../power/supply/mediatek,mt6370-charger.yaml | 96 ++ drivers/iio/adc/Kconfig | 12 + drivers/iio/adc/Makefile | 1 + drivers/iio/adc/mt6370-adc.c | 305 ++++++ drivers/leds/flash/Kconfig | 14 + drivers/leds/flash/Makefile | 1 + drivers/leds/flash/leds-mt6370-flash.c | 630 ++++++++++++ drivers/leds/rgb/Kconfig | 13 + drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-mt6370-rgb.c | 1010 ++++++++++++++++++++ drivers/power/supply/Kconfig | 14 + drivers/power/supply/Makefile | 1 + drivers/power/supply/mt6370-charger.c | 961 +++++++++++++++++++ include/linux/linear_range.h | 11 + 16 files changed, 3192 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-flashlight.yaml create mode 100644 Documentation/devicetree/bindings/leds/mediatek,mt6370-indicator.yaml create mode 100644 Documentation/devicetree/bindings/power/supply/mediatek,mt6370-charger.yaml create mode 100644 drivers/iio/adc/mt6370-adc.c create mode 100644 drivers/leds/flash/leds-mt6370-flash.c create mode 100644 drivers/leds/rgb/leds-mt6370-rgb.c create mode 100644 drivers/power/supply/mt6370-charger.c -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 259AFECAAA1 for ; Thu, 15 Sep 2022 09:49:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=rxi9QkKXGezH8XVv71PQM8VwDkgaTgg8LQtIu7sgus0=; b=LMVI/u3E/qQpf2 i4z3oqfEhrV4Jqbbx6CmgO0eeMqT1w2vvwB0b05YNmJjJi9LEZZ48DzoAG1zysSLA8NrveH7LIkNz 8v1AWAI08rVYg5HyPc44S2pHb5S4JXcfoAZE/zzPAzNGpszDV3QJ7Neaaadg7l3Ck5sJfLke+2gWq q/adZ52CTJf45Hw9+GRSR3YD9M4gQv0hU2+szmzaUxFvjlX5HE3mp/WCMkSQLXKufbRWyKyOjdHHZ Hxo7RduL+aZWZOlO4EVNCZxeyfMh4KgMbO6aQd72pMOyD0h6IRZTomu+CSLTp/IYEbn3BpMLAbWCk kDAMZ1i+AyMCWfhaVoLQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oYlUD-005iLa-9R; Thu, 15 Sep 2022 09:48:45 +0000 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oYlTz-005iD5-Rt; Thu, 15 Sep 2022 09:48:35 +0000 Received: by mail-pf1-x435.google.com with SMTP id c198so17503008pfc.13; Thu, 15 Sep 2022 02:48:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=ZKkzdFhlMcaWjhFySonr3aBox8dzu8s8j6Lei8KsK2E=; b=qTJND0ZLh7gqjyAggcPL3pMVGODNh8i1/xclslZpx/wvJXSWY5EMKedIF+ce7mocri V0+MuG84tsaNumAQRZ/p/7Y515blY4sAwdR/mrOe2qfdOa1EALO9ZKRD2J51kePBWGGx 1lyB0aMtYAESNGfQNjY7/FVKtSHHU1i/+xer1gqhv2p7gnyYcwqE9BeEquW08jI9UI2R T/0gVJfYYYTyUomddK4PjKCDt8XjvzuQw68PBGImhpXwXZ8PxRczxyCrTdShcdvjU6+w MLoSW/Jgux0KLVvRkV9PCY3rLnz3hascpBsh6Aabih8ySDrnwTHKPD+NNG7FvY+IsqQ2 tJ1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=ZKkzdFhlMcaWjhFySonr3aBox8dzu8s8j6Lei8KsK2E=; b=baRhjdkR9nhvSUyGhjjoLZ9ws0IlPDXtmkwMpmIMres6b/aH0zXSxFtsza8DEY8rSY iPInoHRyuvvitStcdPc6N9iPp1I8pzCCCJ1+vCVog3rUqtlQkURcdPejhn7+AiGA1cFJ CYNmS1lK6olVRdZdV7NSrtrZU2AOFgHbQGRpHG8VfnRbW7s8cyeWEmry6zzVfBLs//1s MZQGaTvJE35fZTNe7Qnp5UvpIAwDQvDYRx+bK4w7phLcO6KNCeW/meWMmn3adClnyH/V 9SADqlBbSaHe4BcsaQfsWHi07s6rn4NxhLMaTo6zKd5TsRKUpRzuVkrp6Fj+KcHKBPCL VSzA== X-Gm-Message-State: ACgBeo3FdtgXWH4cR9AgUoMY/yvPCSHEg0n7lzP3mUBFEMVbhGB/Ec6A L0rqh/6bBQpPBb9VcD1PCOc= X-Google-Smtp-Source: AA6agR48OXDiEsrU2H7PgAIKFPKEGGrjaDNkyIaBWrGuC8K8zJ9IPPOVQeJZucIEsZ0FGIClarF+aQ== X-Received: by 2002:a63:1d1a:0:b0:433:f6ea:dce6 with SMTP id d26-20020a631d1a000000b00433f6eadce6mr34712426pgd.178.1663235308685; Thu, 15 Sep 2022 02:48:28 -0700 (PDT) Received: from RD-3580-24288.rt.l (114-137-177-189.emome-ip.hinet.net. [114.137.177.189]) by smtp.gmail.com with ESMTPSA id n4-20020a170903110400b00176675adbe1sm12669010plh.208.2022.09.15.02.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Sep 2022 02:48:28 -0700 (PDT) From: ChiaEn Wu To: pavel@ucw.cz, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, sre@kernel.org, jic23@kernel.org, lars@metafoo.de, broonie@kernel.org, mazziesaccount@gmail.com, andriy.shevchenko@linux.intel.com Cc: chiaen_wu@richtek.com, alice_chen@richtek.com, cy_huang@richtek.com, linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-iio@vger.kernel.org, szunichen@gmail.com Subject: [PATCH v11 0/8] Add MediaTek MT6370 PMIC support Date: Thu, 15 Sep 2022 17:47:27 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220915_024832_020728_2EDA1942 X-CRM114-Status: GOOD ( 24.03 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogQ2hpYUVuIFd1IDxjaGlhZW5fd3VAcmljaHRlay5jb20+CgpUaGlzIHBhdGNoIHNlcmll cyBhZGQgTWVkaWFUZWsgTVQ2MzcwIFBNSUMgc3VwcG9ydCBhbmQgYWRkIGEgaW5kZXggbWFjcm8K dG8gPGxpbmVhcl9yYW5nZS5oPi4gVGhlIE1UNjM3MCBpcyBhIGhpZ2hseS1pbnRlZ3JhdGVkIHNt YXJ0IHBvd2VyCm1hbmFnZW1lbnQgSUMsIHdoaWNoIGluY2x1ZGVzIGEgc2luZ2xlIGNlbGwgTGkt SW9uL0xpLVBvbHltZXIgc3dpdGNoaW5nCmJhdHRlcnkgY2hhcmdlciwgYSBVU0IgVHlwZS1DICYg UG93ZXIgRGVsaXZlcnkgKFBEKSBjb250cm9sbGVyLCBkdWFsCkZsYXNoIExFRCBjdXJyZW50IHNv dXJjZXMsIGEgUkdCIExFRCBkcml2ZXIsIGEgYmFja2xpZ2h0IFdMRUQgZHJpdmVyLAphIGRpc3Bs YXkgYmlhcyBkcml2ZXIgYW5kIGEgZ2VuZXJhbCBMRE8gZm9yIHBvcnRhYmxlIGRldmljZXMuCgpG aXJzdCwgaW4gdGhpcyBzZXJpZXMgb2YgcGF0Y2hlcywKLSAnZHQtYmluZGluZzogbWZkJyBhbmQg J21mZCBkcml2ZXInIGhhdmUgYmVlbiBhcHBsaWVkIGJ5IExlZSBpbiB0aGUgdjcuCiAgaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvYWxsL1l2SmRwcTBNV05QUVp3NWNAZ29vZ2xlLmNvbS8KICBodHRw czovL2xvcmUua2VybmVsLm9yZy9hbGwvWXZKZHhFcEMyY0I1OEJxOUBnb29nbGUuY29tLwoKLSAn dGNwY2kgZHJpdmVyJyBoYXMgYmVlbiBhcHBsaWVkIGJ5IEdyZWcgaW4gdGhlIHY4LgogIGh0dHBz Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dyZWdraC91c2IuZ2l0 L2NvbW1pdC8/aD11c2ItbmV4dCZpZD1jMmE4ZWE1OTk3ZmRmZWI0M2VkYTI1OWQ1NTMzMjM0YzNj YWUwNWQ3CgotICdkdC1iaW5kaW5nOiBiYWNrbGlnaHQnIGFuZCAnYmFja2xpZ2h0IGRyaXZlcicg aGF2ZSBiZWVuIGFwcGxpZWQKICBieSBMZWUgaW4gdjkuCiAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvYWxsL1l4WVNEU2xuT0VMTDJtUEZAZ29vZ2xlLmNvbS8KICBodHRwczovL2xvcmUua2VybmVs Lm9yZy9hbGwvWXhZUzclMkZkWkk2OWxNWGVoQGdvb2dsZS5jb20vCgpTZWNvbmQsIHRoZSBMRUQg UkdCIGRyaXZlciBpcyBiYXNlZCBvbiBBbmR5J3MgcGF0Y2ggd2hpY2ggbW92ZXMKbGVkX2luaXRf ZGVmYXVsdF9zdGF0ZV9nZXQoKSB0byB0aGUgZ2xvYmFsIGhlYWRlci4KaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvYWxsLzIwMjIwODA1MTU0OTA3LjMyMjYzLTMtYW5kcml5LnNoZXZjaGVua29AbGlu dXguaW50ZWwuY29tLwoKSW4gYWRkaXRpb24sIHdlIGFkZGVkIGEgbWFjcm8gdG8gdGhlIDxsaW5l YXJfcmFuZ2UuaD4gZm9yIGRlY2xhcmluZyB0aGUKbGluZWFyX3JhbmdlIHN0cnVjdCBzaW1wbHkg KHNlZSBwYXRjaCB2MTEtMDAwNCkgYW5kIG1hZGUgc29tZSBjaGFuZ2VzIGZvcgpNVDYzNzAgZHJp dmVycyAoc2VlIHYxMSBzZWN0aW9uIG9mIHRoZSBjaGFuZ2UgbG9nIGJlbG93KS4KClRoYW5rIHlv dSwKQ2hpYUVuIFd1Ci0tLQpDaGFuZ2UgaW4gdjExOgotIEluIFBhdGNoIDEvOCAoZHQtYmluZGlu Z3M6IE1UNjM3MCBDaGFyZ2VyKQoJLSBBZGQgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBp cnFzLgoJLSBBZHVqdXN0IHRoZSBvcmRlciBvZiBpcnFzCgoKQ2hhbmdlIGluIHYxMDoKLSBJbiBQ YXRjaCA2LzggKE1UNjM3MCBDaGFyZ2VyKToKCS0gQWRkIGEgZmVhdHVyZSAoZGlzYWJsZSBpbnB1 dCBjdXJyZW50IGxpbWl0KSBpbgoJICAnbXQ2MzcwX2NoZ19pbml0X3NldHRpbmcoKScKCS0gQWRk IHRoZSBoZWFkZXIgZmlsZSA8bGludXgvZGV2bS1oZWxwZXJzLmg+IGZvciB1c2luZwoJICAnZGV2 bV93b3JrX2F1dG9jYW5jZWwoKScgYW5kICdkZXZtX2RlbGF5ZWRfd29ya19hdXRvY2FuY2VsKCkK CS0gUmVuYW1lICdwd3JfcmR5JyB0byAnb3Bwb3NpdGVfcHdyX3JkeScgaW4KCSAgJ210NjM3MF9j aGdfcHdyX3JkeV9jaGVjaygpJwoJLSBSZW5hbWUgZW51bSBlbGVtZW50cwoJICAoJ01UNjM3MF9B VFRBQ0hfU1RBVF9BVFRBQ0hfQkMxMl9OT1RfRE9ORScgLS0+CgkgICAnTVQ2MzcwX0FUVEFDSF9T VEFUX0FUVEFDSF9XQUlUX0ZPUl9CQzEyJykKCS0gUmV2aXNlIHRoZSBhc3NpZ25tZW50IHZhbHVl IG9mICd2YWwuaW50dmFsJyBpbgoJICAnbXQ2MzcwX2NoZ19wd3JfcmR5X2NoZWNrKCknIHRvIG1h a2UgdGhlIGNvZGUgZWFzeSB0byByZWFkLgoJLSBSZXZpc2UgdGhlIGluaXRpYWxpemF0aW9uIG9m IGJjMTJfd29yayAoSU5JVF9XT1JLKCkgLS0+CgkgIHVzaW5nIGRldm1fd29ya19hdXRvY2FuY2Vs KCkpIGFuZCBtaXZyX2R3b3JrCgkgIChJTklUX0RFTEFZRURfV09SSyArIGRldm1fYWRkX2FjdGlv bl9vcl9yZXNldCgpIC0tPgoJICAgZGV2bV9kZWxheWVkX3dvcmtfYXV0b2NhbmNlbCgpKQoKLSBJ biBQYXRjaCA4LzggKE1UNjM3MCBMRUQgRmxhc2hsaWdodCk6CgktIEFkZCB0aGUgcmV2ZXJ0IGNv ZGUgd2hlbiAnX19tdDYzNzBfZmxhc2hfYnJpZ2h0bmVzc19zZXQoKScKCSAgcmV0dXJuIGZhaWxl ZC4KCS0gUmV2aXNlIHR5cGUgb2YgJ2xlZF9ubycgKHUzMiAtPiB1OCkKCS0gUmV2aXNlIHR5cGUg b2YgJ2RlZmF1bHRfc3RhdGUnICh1MzIgLT4gZW51bSBsZWRfZGVmYXVsdF9zdGF0ZSkKCS0gUmV2 aXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgJ19tdDYzNzBfZmxhc2hfYnJpZ2h0bmVzc19zZXQoKScK CS0gUmVtb3ZlIHRoZSB1c2VsZXNzIGZ1bmN0aW9uICdtdDYzNzBfaW5pdF9jb21tb25fcHJvcGVy dGllcygpJwoJLSBVc2UgJ2xlZF9pbml0X2RlZmF1bHRfc3RhdGVfZ2V0KCknIHRvIGluaXQgJ2xl ZC0+ZGVmYXVsdF9zdGF0ZScKCgpDaGFuZ2VzIGluIHY5OgotIEluIFBhdGNoIDA1LzEwOgoJLSBS ZXZpc2UgTElORUFSX1JBTkdFKCkgYW5kIExJTkVBUl9SQU5HRV9JRFgoKQoKLSBJbiBQYXRjaCAw Ny8xMDoKCS0gRml4IHdyb25nICdGX0lJTkxNVFNFTCcgc2V0dGluZyBpbiAnbXQ2MzcwX2NoZ19p bml0X3NldHRpbmcoKScKCS0gUmV2aXNlIHRoZSB1c2FnZSBvZiBMSU5FQVJfUkFOR0VfSURYKCkK Ci0gSW4gUGF0Y2ggMDkvMTA6CgktIFJldmlzZSB0aGUgZm9ybWF0IG9mIHRoZSBjb21tZW50cy4K Ci0gSW4gUGF0Y2ggMTAvMTA6CgktIFJldmlzZSB0aGUgZm9ybWF0IG9mIHRoZSBjb21tZW50cy4K CgpDaGFuZ2VzIGluIHY4OgotIEluIFBhdGNoIDA2LzEyOgoJLSBBZGQgbGluZWFyX3JhbmdlX2lk eCBtYWNybyBmb3IgZGVjbGFyaW5nIHRoZSBsaW5lYXJfcmFuZ2UKCSAgc3RydWN0IHNpbXBseS4K Ci0gSW4gUGF0Y2ggMDkvMTI6CgktIFJlbW92ZSBNVDYzNzBfQ0hHX0xJTkVBUl9SQU5HRSgpIG1h Y3JvLCBhbmQgY2hhbmdlIHRvIHVzZQoJICBMSU5FQVJfUkFOR0VfSURYKCkgbWFjcm8KCi0gSW4g UGF0Y2ggMTAvMTI6CgktIEFkZCBpbmNsdWRlIGhlYWRlciBmaWxlIDxsaW51eC9sZWRzLmg+Cgkt IFJlbW92ZSB1c2VsZXNzICdlbnVtIG10NjM3MF9zdGF0ZScgYmVjYXVzZSBvZiB1c2luZyAnZW51 bSBsZWRfZGVmYXVsdF9zdGF0ZScKCS0gUmV2aXNlIHRoZSBjYWxjdWxhdGlvbiBvZiAndmFsJyBp biAnbXQ2MzcwX2dlbl9icmVhdGhfcGF0dGVybigpJwoJLSBSZXBsYWNlIHRoZSBtZWR0aG9kIG9m IGdldHRpbmcgZGVmYXVsdC1zdGF0ZSBieSB1c2luZwoJICBsZWRfaW5pdF9kZWZhdWx0X3N0YXRl X2dldCgpCgotIEluIFBhdGNoIDExLzEyOgoJLSBBZGQgbWlzc2luZyAnZGVwZW5kZW5jeSBjb25m aWcnIGluIEtjb25maWcKCS0gUmV2aXNlIGFsbCBtdWx0aS1saW5lIGNvbW1lbnRzCgotIEluIFBh dGNoIDEyLzEyOgoJLSBBZGQgbWlzc2luZyBoZWFkZXIgZmlsZSA8bGludXgvcHJvcGVydHkuaD4K CS0gUmVtb3ZlIHVzZWxlZGQgaGVhZGVyIGZpbGUgPGxpbnV4L29mX2RldmljZS5oPgoJLSBSZXZp c2UgdGhlIGNvbW1lbnQgb2YgJ210NjM3MF9jaGVja192ZW5kb3JfaW5mbygpJwoKCkNoYW5nZXMg aW4gdjc6Ci0gSW4gUGF0Y2ggMDUvMTM6CgktIEFkZCB0aGUgc2Vjb25kIGNvbXBhdGlibGUgc3Ry aW5nIGZvciAnbXQ2MzcyJwoJLSBBZGQgJ21lZGlhdGVrLGJsZWQtZXhwb25lbnRpYWwtbW9kZS1l bmFibGUnIHByb3BlcnR5IGZvciBlbmFibGUgdGhlCgkgIGV4cG9uZW50aWFsIG1vZGUgb2YgYmFj a2xpZ2h0IGJyaWdodG5lc3MKCS0gQWRkIHZhbGlkYXRpb24gZm9yIHRoZSBtYXhpbXVtIHZhbHVl IG9mICdkZWZhdWx0LWJyaWdodG5lc3MnIGFuZAoJICAnbWF4LWJyaWdodG5lc3MnCgotIEluIFBh dGNoIDA3LzEzOgoJLSBNb3ZlICcjZGVmaW5lIE1UNjM3MF9SRUdfTUFYQUREUicgdG8gdGhlIG5l eHQgbGluZSBvZgoJICAnI2RlZmluZSBNVDYzNzBfUkVHX0NIR19NQVNLMScKCS0gUmVuYW1lICdN VDYzNzBfUkVHX0FERFJMRU4nIHRvICdNVDYzNzBfTUFYX0FERFJMRU4nCgotIEluIFBhdGNoIDA4 LzEzOgoJLSBSZXZpc2UgJ2Rldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIC4uLiknIHRvIG9u ZSBsaW5lCgktIFJldmlzZSAncmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyguLi4pJyB3aXRoIHVz aW5nIHBvc2l0aXZlCgkgIGNvbmRpdGlvbmFsCgotIEluIFBhdGNoIDA5LzEzOgoJLSBBZGQgQUlD UigxMDBtQSB+IDM1MG1BKSwgSUNIRygxMDBtQSB+IDgwMG1BKSBtYWNyb3MKCS0gUmVtb3ZlIDQw MG1BIEFJQ1IgYW5kIDkwMG1BIElDSEcgbWFjcm9zCgktIFJldmlzZSB1c2luZyAnaWYtZWxzZScg dG8gJ3N3aXRjaC1jYXNlJyBpbiBtdDYzNzBfYWRjX3JlYWRfc2NhbGUoKQoJICB3aGVyZSB0aGUg YWRjIGNoYW5uZWwgaXMgaWJ1cyBvciBpYmF0CgotIEluIFBhdGNoIDEwLzEzOgoJLSBSZXZpc2Ug dGhlIG1ldGhvZCB0byBlbmFibGUvZGlzYWJsZSBpcnEKCS0gUmV2aXNlIGFsbCAnaWYgKHJldCA8 IDApJyB0byAnaWYgKHJldCknIGFmdGVyIHVzaW5nCgkgIG10NjM3MF9jaGdfZmllbGRfc2V0L2dl dCgpCgktIFJldmlzZSBhbGwgJ09URycgdGV4dCBhZ2FpbgoKLSBJbiBQYXRjaCAxMS8xMzoKCS0g QWRkIHRoZSBjb21tZW50IGZvciB0aGUgdW5pb24gb2YgJ3N0cnVjdCBtdDYzNzBfbGVkJwoJLSBS ZXZpc2UgdGhlIHdyb25nIGRlc2NyaXB0aW9uIG9mICdBdXRob3JzJwoJLSBSZXZpc2Ugc29tZSB0 eXBvcyAoZS5nLiBsZWQgLS0+IExFRCkKCS0gUmV2aXNlICdpZiAoIWZ3bm9kZV9wcm9wZXJ0eV9y ZWFkX3N0cmluZygpKScgdG8KCSAgJ3JldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0cmluZygp JwoJLSBSZXBsYWNlICdtZW1jcHkoLi4uKScgd2l0aCAncHV0X3VuYWxpZ25lZF9iZTI0KCknIGlu CgkgIG10NjM3MF9nZW5fYnJlYXRoX3BhdHRlcm4oKQoJLSBSZXBsYWNlIGFsbCAnTEVEX09GRicg d2l0aCAwCgktIFJlbW92ZSB0aGUgcmVkdW5kYW50IGFzc2lnbm1lbnQgaW4gbXQ2MzcwX21jX3Bh dHRlcm5fY2xlYXIoKQoKLSBJbiBQYXRjaCAxMi8xMzoKCS0gRml4IHRoZSBpbmRlbnRhdGlvbi4K CS0gRm9yIHRoZSB3ZWxsIGRlZmluZWQgbWFjcm8sIHRoZSBwYXJlbnRoZXNpcyBpcyBuZWVkZWQg Zm9yIGlucHV0IHBhcmFtZXRlcnMuCgktIFJlcGxhY2Ugc29tZSBkZXZfd2FybiB0byBkZXZfaW5m byBpbiAnaW5pdF9mbGFzaF9wcm9wZXJ0aWVzJy4KCS0gQWRkIHNlbnRpbmVsIGNvbW1lbnQgZm9y IHRoZSB0ZXJtaW5hdG9yIGVudHJ5IG9mIG9mX2RldmljZV9pZC4KCS0gVXNlIHByaXYtPmZsZWRf dG9yY2hfdXNlZCBkaXJlY3RseS4KCS0gRGVsZXRlIDAgaW4ge30uCgktIFVzZSBfdUEgaW5zdGVh ZCBvZiBfVUEgaW4gZGVmaW5pdGlvbi4KCS0gUmVmaW5lIHRoZSBkZXNjcmlwdGlvbi4KCS0gVXNl IHVzbGVlcF9yYW5nZSBpbnN0ZWFkIG9mIHVkZWxheS4KCS0gUmVuYW1lIGNvbmZpZyB0byBMRURT X01UNjM3MF9GTEFTSC4KCS0gQWRkIG1pc3NpbmcgIj4iIGluIGNvcHlyaWdodC4KCS0gQ2hhbmdl IHRoZSBLY29uZmlnIG9yZGVyCgotIEluIFBhdGNoIDEzLzEzOgoJLSBBZGQgc3VwcG9ydCAnZXhw b25lbnRpYWwgbW9kZScgcHJvcGVydHkgcGFyc2luZwoJLSBBZGQgJ3JldHVybiBkZXZfZXJyX3By b2JlKCknIGFmdGVyICdpZiAoSVNfRVJSKHByaXYtPmVuYWJsZV9ncGlvKSknCgktIEFkZCAnbXQ2 MzcyJyBjb21wYXRpYmxlIHN0cmluZwoJLSBSZXZpc2UgS2NvbmZpZyBoZWxwIHRleHQKCS0gUmV2 aXNlIHVwZGF0ZSgpL2dldCgpIGZvciBzdXBwb3J0aW5nIDE2Mzg0IHN0ZXBzIChNVDYzNzIpCgkt IFJldmlzZSBhbGwgc2hpZnQgdXNhZ2VzIGZvcm0gdXNpbmcgJ2ZmcygpIGFuZCBmbHMoKScgdG8g ZGVmaW5pbmcgdGhlCgkgIF9TSElGVCBtYWNyb3MuCgktIFJldmlzZSAnYnJpZ2h0bmVzcyA/IDEg OiAwJyB0byAnISFicmlnaHRuZXNzJyBpbiBncGlvZF9zZXRfdmFsdWUoKQoKCkNoYW5nZXMgaW4g djY6Ci0gSW4gUGF0Y2ggMDMvMTM6CgktIEFkZCAncmVnJyBwcm9wZXJ0eSBvZiBsZWQgb2YgbXVs dGktbGVkIHRvIHByZXZlbnQgY2hlY2tpbmcKCSAgZXJyb3IuCgotIEluIFBhdGNoIDA4LzEzOgoJ LSBDb252ZXJ0IHRjcGNpIGFzIGRldmljZSByZXNvdXJjZSBtYW5hZ2VkIHdpdGgKCSAgJ2Rldm1f YWRkX2FjdGlvbl9vcl9yZXNldCcgYXBpLgoJLSBSZWZpbmUgcmVtdm9lIGNhbGxiYWNrLgoJLSBS ZWZpbmUgdGhlIGNvbW1pdCB0ZXh0IGZyb20gJ3RoaXMgY29tbWl0IGFkZCcgdG8gJ2FkZCcuCgot IEluIFBhdGNoIDA5LzEzOgoJLSBVc2luZyAnc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRl dicgaW4gcHJvYmUoKQoJLSBSZXZpc2UgdGhlIHNpeHRoIHBhcmFtZXRlciBvZiByZWdtYXBfcmVh ZF9wb2xsX3RpbWVvdXQoKSBieQoJICBSZXBsYWNpbmcgJzEwMDAnIHdpdGggJ01JTExJJwoJLSBS ZXZpc2UgdGhlIHVuaXRzIG9mIHRocmVlIG1hY3JvcwoJLSBNVDYzNzBfQUlDUl80MDBNQSAtLT4g TVQ2MzcwX0FJQ1JfNDAwX21BCgktIE1UNjM3MF9JQ0hHXzUwME1BIC0tPiBNVDYzNzBfSUNIR181 MDBfbUEKCS0gTVQ2MzcwX0lDSEdfOTAwTUEgLS0+IE1UNjM3MF9JQ0hHXzkwMF9tQQoKLSBJbiBw YXRjaCAxMC8xMzoKCS0gUmVtb3ZlIHRoZSB2YXJhYmxlICgqcHN5X2Rlc2MpIG9mIHN0cnVjdCBt dDYzNzBfcHJpdgoJLSBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgdXNiIHR5cGUgKFBPV0VSX1NVUFBM WV9UWVBFX1VTQl9DRFAgYW5kCgkgIFBPV0VSX1NVUFBMWV9UWVBFX1VTQl9EQ1ApCgktIFJlbW92 ZSB1c2VsZXNzIHJlbW92ZSgpCgktIFJldmlzZSBhbGwgdW5pdHMgZnJvbSBtaW5pLSB0byBtaWNy by0KCS0gUmV2aXNlIGdldC9zZXQgcG93ZXJfc3VwcGx5X3Byb3AgKGNoYW5nZSB0byBkaXJlY3Rs eSByZXR1cm4gZ2V0L3NldAoJICByZWdtYXBfZmllbGQpCgktIFJldmlzZSBwcm9iZSgpIGFuZCB1 c2UgZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KCkgZm9yIGhhbmRsaW5nIG9mIHRoZQoJICB3b3Jr cXVldWUvZGVsYXllZF93b3JrL211dGV4CgktIFJldmlzZSBtdDYzNzBfY2hnX3BzeV9kZXNjCgkJ LSBBZGQgJy5uYW1lID0gIm10NjM3MC1jaGFyZ2VyIicKCQktIFVzZSAnc3RhdGljIGNvbnN0JwoK LSBJbiBwYXRjaCAxMS8xMzoKCS0gUmVtb3ZlIHRoZSAna28nIGZyb20gbXQ2MzcwIGxlZCBLY29u ZmlnIGRlc2NyaXB0aW9uLgoJLSBBZGQgYm90aCBhdXRob3JzIGZvciBBbGljZSBhbmQgQ2hpWXVh bi4KCS0gVXNlIHBkYXRhIHRvIGRpc3Rpbmd1aXNoIHRoZSBjb2RlIGZyb20gbXQ2MzcwLzcxIHRv IG10NjM3Mi4KCS0gSW5zdGVhZCBvZiAnc3RhdGUnIGRlZmluZSwgdXNlIHRoZSAnc3RhdGUnIGVu dW0uCgktIEZpeCB0aGUgdHlwbyBmb3IgJ01UNjM3Ml9QTVdfRFVUWScuCgktIEZvciBwd21fZHV0 eSBkZWZpbmUsIHJlcGxhY2Ugd2l0aCBiaXQgbWFjcm8gLSAxLgoJLSBSZWZpbmUgYWxsIHRoZSBs YWJlbHMgZnJvbSAnb3V0JyB0byAnb3V0X3VubG9jaycuCgktIFVzZSBzdHJ1Y3QgJ2RldicgdmFy aWFibGUgYW5kICdkZXZfZXJyX3Byb2JlJyB0byBvcHRpbWl6ZSB0aGUgTE9DLgoJLSBSZXZpc2Ug Zm9yIHRoZSBhcnJheSBpbml0aWFsaXphdGlvbiBmcm9tIHswfSB0byB7fS4KCS0gTW92ZSBpbnRv IHJnYiBmb2xkZXIgYW5kIHJlbmFtZSBmaWxlIG5hbWUgdG8gJ2xlZHMtbXQ2MzcwLXJnYicuCgkt IFJlZmluZSB0aGUgJ2NvbW1hJyB1c2FnZSBpbiBzdHJ1Y3QvZW51bS4KCi0gSW4gcGF0Y2ggMTIv MTM6CgktIFVzZSAnR0VOTUFTSycgaW5zdGVhZCBvZiAnQklUJy4KCS0gVXNlIGRldl9lcnJfcHJv YmUgdG8gZGVjcmVhc2UgTE9DLgoJLSBVc2UgJ2RldicgdmFyaWFibGUgdG8gbWFrZSBwcm9iZSBm dW5jdGlvbiBtb3JlIGNsZWFuLgoJLSBSZWZpbmUgdGhlIHJldHVybiBvZiBfbXQ2MzcwX2ZsYXNo X2JyaWdodG5lc3Nfc2V0IGZ1bmN0aW9uLgoJLSBSZWZpbmUgdGhlIGRlc2NyaXB0aW9ucy4KCS0g VXNlIG10NjM3MF9jbGFtcCgpIGluc3RlYWQgb2YgY2xhbXBfYWxpZ24oKS4KCS0gVXNlIGRldmlj ZSByZXNvdXJjZSBtYW5hZ2VkIEFQSSBmb3IgdjRsMiBmbGFzaF9yZWxlYXNlLgoKCkNoYW5nZXMg aW4gdjU6Ci0gSW4gcGF0Y2ggMDcvMTM6CgktIEFkZCB0aGUgY29tbWEgaW4gdGhlIGxhc3QgUkVH TUFQX0lSUV9SRUdfTElORSgpLAoJICBERUZJTkVfUkVTX0lSUV9OQU1FRCgpIGFuZCBNRkRfQ0VM TF9SRVMoKQoJLSBBZGQgdGhlIHByZWZpeCBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGFsbCBt ZmRfY2VsbAoJLSBNb3ZlIGVudW0gYW5kIHN0cnVjdCBtdDYzNzBfaW5mbyB0byBtdDYzNzAuaAoJ LSBSZW1vdmUgc3RydWN0IGRldmljZSAqZGV2IGluIHN0cnVjdCBtdDYzNzBfaW5mbwoJLSBSZXZp c2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtjb25maWcgaGVscCB0ZXh0CgktIFJldmlzZSBNT0RVTEVf REVTQ1JJUFRJT04oKQoKLSBJbiBwYXRjaCAwOC8xMzoKCS0gQWRkIGNvbW1hIGZvciB0aGUgbGFz dCBpbmRleCBvZiBtdDYzNzBfcmVnX2luaXQuCgktIFVzZSBkZXZfZXJyX3Byb2JlIHRvIGRlY3Jl YXNlIExPQy4KCS0gVXNlICdkZXYnIHZhcmlhYmxlIHRvIG1ha2UgcHJvYmUgZnVuY3Rpb24gbW9y ZSBjbGVhbi4KCS0gUmVmaW5lIGtjb25maWcgdGV4dC4KCS0gUmVtb3ZlIGJvdGggJ2Vsc2UnIGlu IHNldF92YnVzIGNhbGxiYWNrLgoJLSBSZW1vdmUgY29tbWEgZm9yIG9mX2RldmljZV9pZCBpZiB0 aGUgYXNzaWduZWQgbWVtYmVyIGlzIG9ubHkgb25lLgoKLSBJbiBwYXRjaCAwOS8xMzoKCS0gUmVw bGFjZSB1c2luZyBzbnByaW50ZigpIHdpdGggc3lzZnNfZW1pdCgpIGluIG10NjM3MF9hZGNfcmVh ZF9sYWJlbCgpCgktIFJlbW92ZSBtYWNybyBBRENfQ09OVl9USU1FX1VTCgktIFJldmlzZSBhbGwg dmFyaWFibGUgb3JkZXJpbmcKCS0gUmV2aXNlIHRoZSBkZXNjcmlwdGlvbiBvZiBLY29uZmlnIGhl bHAgdGV4dAoJLSBSZXZpc2UgTU9EVUxFX0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMTAvMTM6 CgktIFJlcGxhY2UgdW5zaWduZWQgaW50IHR5cGUgb2YgcHdyX3JkeSB3aXRoIGJvb2wgaW4KCSAg bXQ2MzcwX2NoZ19zZXRfb25saW5lKCkKCS0gUmVtb3ZlIHJlZHVuZGFudCAnZWxzZScgaW4gbXQ2 MzcwX2NoZ19maWVsZF9nZXQoKQoJLSBSZXZpc2UgJ2lmLWVsc2UnIGluIG10NjM3MF9jaGdfZmll bGRfc2V0KCkKCS0gUmV2aXNlICdpZicgY29uZGl0aW9uIGluIG10NjM3MF9jaGdfZW5hYmxlX2ly cSgpCgktIFJldmlzZSBhbGwgdGV4dCAnb3RnJyAtLT4gJ09URycKCS0gUmV2aXNlIE1UNjM3MF9N SVZSX0lCVVNfVEhfMTAwX01BIC0tPiBNVDYzNzBfTUlWUl9JQlVTX1RIXzEwMF9tQQoJLSBSZXZp c2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtjb25maWcgaGVscCB0ZXh0CgotIEluIHBhdGNoIDEyLzEz OgoJLSBSZWZpbmUgdGhlIGNvZGluZyBzdHlsZS4KCS0gVXNlICJkZXYiIGluc3RlYWQgb2YgIiZw ZGV2LT5kZXYiLgoKLSBJbiBwYXRjaCAxMy8xMzoKCS0gQWRkIG1pc3NlZCA8bW9kX2RldmljZXRh YmxlLmg+CgktIEFkZCBzdHJ1Y3QgZGV2aWNlICpkZXYgaW4gcHJvYmUoKSB0byBtYWtlIGNvZGUg Y2xlYW5pbmcKCS0gUmVtb3ZlIHVzZWxlc3MgaW5jbHVkaW5nIGhlYWRlciBmaWxlIDxncGlvL2Ry aXZlci5oPiwgPG9mLmg+CgktIFJlbW92ZSB1c2VsZXNzIHZhcmlhYmxlIHVhc2FnZSBpbiBtdDYz NzBfaW5pdF9iYWNrbGlnaHRfcHJvcGVydGllcygpCgktIFJlbW92ZSByZWR1bmRhbnQgY2hlY2tp bmcgZW5hYmxlX2dwaW8gaW4gbXQ2MzcwX2JsX3VwZGF0ZV9zdGF0dXMoKQoJLSBSZW1vdmUgcmVk dW5kYW50IHBhcmVudGhlc2VzIGluIG10NjM3MF9ibF9nZXRfYnJpZ2h0bmVzcygpCgktIFJldmlz ZSB0aGUgZGVzY3JpcHRpb24gb2YgS2NvbmZpZyBoZWxwIHRleHQKCS0gUmV2aXNlIHRoZSBjYWxj dWxhdGlvbiBvZiBoeXNfdGhfc3RlcHMKCgpDaGFuZ2VzIGluIHY0OgotIEluIHBhdGNoIDAyLzEz OgoJLSBBZGQgbWluSXRlbXMgb2YgImlvLWNoYW5uZWwtbmFtZXMiCgktIFJlcGxhY2UgdGV4dCAi TWVkaWF0ZWsiIHdpdGggIk1lZGlhVGVrIgoKLSBJbiBwYXRjaCAwNi8xMzoKCS0gUm9sbCBiYWNr IGFsbCAiJHJlZjogIiB0byB2MiBwYXRjaCBzdHlsZSAodXNpbmcgIi9zY2hlbWFzLy4uLiIpCgot IEluIHBhdGNoIDA3LzEzOgoJLSBSZXBsYWNlIHRleHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRl ayIgaW4gS2NvbmZpZwoJLSBSZXBsYWNlICJmaXJzdCBicmVhayBhbmQgdGhlbiByZXR1cm4iIHdp dGggInJldHVybiBkaXJlY3RseSIKCSAgaW4gIm10NjM3MF9jaGVja192ZW5kb3JfaW5mbygpIgoJ LSBBZGQgbW9kdWxlIG5hbWUgcmVsYXRlZCBkZXNjcmlwdGlvbiBpbiBLY29uZmlnIGhlbHB0ZXh0 CgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgktIEFkZCBoZWFkZXIgZmlsZSAi bXQ2MzcwLmgiIGZvciBhbGwgIiNkZWZpbmUgSVJRIgoJLSBBZGp1c3QgTWFrZWZpbGUgb3JkZXIg b2YgTVQ2MzcwCgktIFJlZmluZSAiYmFua19pZHgiIGFuZCAiYmFua19hZGRyIiBpbgoJICAibXQ2 Mzc1X3JlZ21hcF9yZWFkKCkiIC8gIm10NjM3NV9yZWdtYXBfd3JpdGUoKSIKCS0gUmVmaW5lIHJl ZHVuZGFudCAiZWxzZSBpZiIgaW4gIm10NjM3MF9yZWdtYXBfcmVhZCgpIgoKLSBJbiBwYXRjaCAw OC8xMzoKCS0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25m aWcKCS0gUmVwbGFjZSAiZmlyc3QgcmV0PXJlZ3VsYXRvcl8oZGlzL2VuKWFibGUgYW5kIHRoZW4g cmV0dXJuIgoJICB3aXRoICJyZXR1cm4gZGlyZWN0bHkiIGluICJtdDYzNzBfdGNwY19zZXRfdmJ1 cygpIgoJLSBSZXBsYWNlIGhlYWRlciBmaWxlIDxsaW51eC9vZi5oPiB3aXRoIDxsaW51eC9tb2Rf ZGV2aWNldGFibGUuaD4KCS0gQWRkIENvcHlyaWdodCBpbiB0aGUgc291cmNlIGNvZGUKCS0gQWRk IG1vZHVsZSBuYW1lIHJlbGF0ZWQgZGVzY3JpcHRpb24gaW4gS2NvbmZpZyBoZWxwdGV4dAoJLSBS ZW1vdmUgaGVhZGVyIGZpbGUgPGxpbnV4L29mLmg+CgktIFJlZmluZSBhbGwgcHJvYmUgZXJyb3Ig YnkgdXNpbmcgZGV2X2Vycl9wcm9iZSgpCgotIEluIHBhdGNoIDA5LzEzOgoJLSBSZXBsYWNlIHRl eHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRlayIKCS0gUmVwbGFjZSBhbGwgImZpcnN0IGRldl9l cnIoKSBhbmQgdGhlbiByZXR1cm4iIHdpdGgKCSAgInJldHVybiBkZXZfZXJyX3Byb2JlKCkiCgkt IEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgktIEFkZCBtb2R1bGUgbmFtZSByZWxh dGVkIGRlc2NyaXB0aW9uIGluIEtjb25maWcKCS0gQWRkIHVuaXQgc3VmZml4IG9mIG1hY3JvICJB RENfQ09OVl9QT0xMSU5HX1RJTUUiCgktIEFkZCBuZXcgbWFjcm8gIkFEQ19DT05WX1RJTUVfTVMi CgktIEFkanVzdCB0aGUgcG9zaXRpb24gb2YgaW5jbHVkZSBmaWxlIDxtZWRpYXRlayxtdDYzNzBf YWRjLmg+CgktIEFkanVzdCB0aGUgcG9zdGlvbnMgYmV0d2VlbiA8bGludXgvbW9kdWxlLmg+IGFu ZAoJICAgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPgoJLSBGaXggc29tZSBpbmNvcnJlY3QgY2hh cmFjdGVycwoKLSBJbiBwYXRjaCAxMC8xMzoKCS0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0 aCAiTWVkaWFUZWsiIGluIEtjb25maWcgYW5kCgkgIE1PRFVMRV9ERVNDUklQVElPTigpCgktIFJl cGxhY2UgIm10NjM3MF9jaGdfdmFsX3RvX3JlZyIgYW5kICJtdDYzNzBfY2hnX3JlZ190b192YWwi CgkgIHdpdGggImxpbmVhcl9yYW5nZSIgQVBJCgktIFJlcGxhY2UgImZpcnN0IGJyZWFrIGFuZCB0 aGVuIHJldHVybiIgd2l0aCAicmV0dXJuIGRpcmVjdGx5IgoJICBpbiBhbGwgY2FzZXMgb2YgZ2V0 L3NldCBwb3dlcl9zdXBwbHlfcHJvcGVydHkKCS0gUmVwbGFjZSBhbGwgImZpcnN0IGRldl9lcnIo KSBhbmQgdGhlbiByZXR1cm4iIHdpdGggInJldHVybgoJICBkZXZfZXJyX3Byb2JlKCkiCgktIFJl cGxhY2UgYWxsICJyZXR1cm4gSVNfRVJSKHByaXYtPnJkZXYpID8gUFRSX0VSUihwcml2LT5yZGV2 KSA6IDAiCgkgIHdpdGggIlBUUl9FUlJfT1JfWkVSTygpIgoJLSBSZXBsYWNlICJwcml2LT5kZXYt Pm9mX25vZGUiIHdpdGggImRldl9vZl9ub2RlKCkiCgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNv dXJjZSBjb2RlCgktIEFkZCBtb2R1bGUgbmFtZSByZWxhdGVkIGRlc2NyaXB0aW9uIGluIEtjb25m aWcgaGVscHRleHQKCS0gQWRkIHByb3BlciB1bml0IG9mICJNVDYzNzBfTUlWUl9JQlVTX1RIIgoJ LSBBZGQgZXJyb3IgY2hlY2sgaW4gIm10NjM3MF9jaGdfZ2V0X3N0YXR1cyIKCS0gUmVtb3ZlIGlu Y2x1ZGluZyA8bWVkaWF0ZWssbXQ2MzcwX2FkYy5oPiBoZWFkZXIgZmlsZQoJLSBSZW1vdmUgcmVk dW5kYW50IGNvbW1hIG9mIGV2ZXJ5IGVudW0gdGVybWluYXRvciBsaW5lCgktIFJlbW92ZSB1bndh bnRlZCBibGFuayBsaW5lcwoJLSBSZW1vdmUgdGhlIHVzZWxlc3MgbGFiZWwgKHRvZ2dsZV9jZm9f ZXhpdDopCgktIFJlbW92ZSB1c2luZyBhdG9taWMKCS0gUmVtb3ZlIHVzaW5nIG9mX21hdGNoX3B0 cigpCgktIEZpeCBzb21lIGluY29ycmVjdCBjaGFyYWN0ZXJzCgktIEZpeCB1cGRhdGluZyB3cm9u ZyBiaXRzIHdoZW4gdXNpbmcgZW5hX2dwaW9kIG9mIE9URyByZWd1bGF0b3IKCS0gQWRqdXN0IHRo ZSBwcm9iZSBvcmRlciBpbiBwcm9iZSgpCgotIEluIHBhdGNoIDExLzEzOgoJLSBSZXBsYWNlIHRl eHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRlayIgaW4gS2NvbmZpZwoJLSBSZXBsYWNlIHRleHQg ImNvbnN0IiB3aXRoICJjb25zdGFudCIgaW4gS2NvbmZpZwoJLSBBZGQgQ29weXJpZ2h0IGluIHRo ZSBzb3VyY2UgY29kZQoKLSBJbiBwYXRjaCAxMi8xMzoKCS0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRl ayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcKCS0gQWRkIENvcHlyaWdodCBpbiB0aGUgc291 cmNlIGNvZGUKCi0gSW4gcGF0Y2ggMTMvMTM6CgktIFJlcGxhY2UgdGV4dCAiTWVkaWF0ZWsiIHdp dGggIk1lZGlhVGVrIiBpbiBLY29uZmlnCgktIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBj b2RlCgktIFJldmlzZSB0aGUgY29tbWVudCBvZiAiUFdNIEhZUyBTVEVQUyIKCgpDaGFuZ2VzIGlu IHYzOgotIFJlbW92ZSBBREMgQUJJIGZpbGUsIHdoaWNoIGlzIGFkZGVkIGluIHYyIFBhdGNoIDcK LSBJbiBwYXRjaCAwMi8xNDoKCS0gQWRkIGl0ZW1zIGFuZCByZW1vdmUgbWF4SXRlbXMgb2YgaW8t Y2hhbm5lbHMKCS0gQWRkIGlvLWNoYW5uZWwtbmFtZXMgYW5kIGRlc2NyaWJlIGVhY2ggaXRlbQoJ LSBBZGQgInVuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2UiIGluICJ1c2Itb3RnLXZidXMtcmVn dWxhdG9yIgoJLSBSZW5hbWUgImVuYWJsZS1ncGlvIiB0byAiZW5hYmxlLWdwaW9zIiBpbiAidXNi LW90Zy12YnVzLXJlZ3VsYXRvciIKCi0gSW4gcGF0Y2ggMDMvMTQ6CgktIFVzZSBsZWRzLWNsYXNz LW11bHRpY29sb3IueWFtbCBpbnN0ZWFkIG9mIGNvbW1vbi55YW1sLgoJLSBTcGxpdCBtdWx0aS1s ZWQgYW5kIGxlZCBub2RlLgoJLSBBZGQgc3ViZGV2aWNlICJsZWQiIGluICJtdWx0aS1sZWQiLgoK LSBJbiBwYXRjaCAwNC8xNDoKCS0gUmVtb3ZlIHRoZSBkZXNjcmlwdGlvbiBvZiBlbnVtLgoKLSBJ biBwYXRjaCAwNS8xNDoKCS0gUmVuYW1lICJtZWRpYXRlayxibGVkLXB3bS1oeXMtaW5wdXQtdGhy ZXNob2xkLXN0ZXBzIiB0bwoJICAibWVkaWF0ZWssYmxlZC1wd20taHlzLWlucHV0LXRoLXN0ZXBz IgoJLSBSZWZpbmUgImJsZWQtcHdtLWh5cy1pbnB1dC10aC1zdGVwcyIsICJibGVkLW92cC1taWNy b3ZvbHQiLAoJICAiYmxlZC1vY3AtbWljcm9hbXAiIGVudW0gdmFsdWVzCgotIEluIHBhdGNoIDA2 LzE0OgoJLSBVc2UgIiBpbiBlbnRpcmUgcGF0Y2hzZXQKCS0gUmVmaW5lIEFEQyBkZXNjcmlwdGlv bgoJLSBSZW5hbWUgImVuYWJsZS1ncGlvIiB0byAiZW5hYmxlLWdwaW9zIiBpbiAicmVndWFsdG9y IgoKLSBJbiBwYXRjaCAwNy8xNDoKCS0gUmVmaW5lIEtjb25maWcgaGVscCB0ZXh0CgktIFJlZmlu ZSBlcnJvciBtZXNzYWdlIG9mIHVua25vd24gdmVuZG9yIElEIGluCgkgIG10NjM3MF9jaGVja192 ZW5kb3JfaW5mbygpCgktIFJlZmluZSByZXR1cm4gdmFsdWUgaGFuZGxpbmcgb2YgbXQ2MzcwX3Jl Z21hcF9yZWFkKCkKCS0gUmVmaW5lIGFsbCBwcm9iZSBlcnJvciBieSB1c2luZyBkZXZfZXJyX3By b2JlKCkKCS0gUmVmaW5lICJiYW5rX2lkeCIgYW5kICJiYW5rX2FkZHIiIGluIG10NjM3MF9yZWdt YXBfcmVhZCgpIGFuZAoJICBtdDYzNzBfcmVnbWFwX3dyaXRlKCkKCS0gQWRkICIjZGVmaW5lIFZF TklEKiIgYW5kIGRyb3AgdGhlIGNvbW1lbnRzIGluCgkgIG10NjM3MF9jaGVja192ZW5kb3JfaW5m bygpCgktIERyb3AgIk1GRCIgaW4gTU9EVUxFX0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMDkv MTQ6CgktIFJlZmluZSBLY29uZmlnIGhlbHAgdGV4dAoKLSBJbiBwYXRjaCAxMC8xNDoKCS0gUmVm aW5lIEtjb25maWcgaGVscCB0ZXh0CgktIFJlZmluZSBhbGwgY2hhbm5lbCB2YWx1ZSBpbiByZWFk X3NjYWxlKCkKCQlhLiBjdXJyZW50OiB1QSAtLT4gbUEKCQliLiB2b2x0YWdlOiB1ViAtLT4gbVYK CQljLiB0ZW1wZXJhdHVyZTogZGVncmVlcyBDZWxzaXVzIC0tPiBtaWxsaSBkZWdyZWVzIENlbHNp dXMKCS0gQWRkICJkZWZhdWx0OiIgY29uZGl0aW9uIG9mIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcmVh ZF9zY2FsZSgpIGFuZCByZWFkX3JhdygpCgktIEFkZCBlcnJvciBtZXNzYWdlIGZvciByZWFkaW5n IEFEQyByZWdpc3RlciBmYWlsZWQKCS0gQWRkIHRoZSBjb21tZW50IGZvciBhZGNfbG9jawoJLSBB ZGQgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPiBoZWFkZXIgZmlsZSBmb3Igc3RydWN0IG9mX2Rl dmljZV9pZAoJLSBSZXBsYWNlICJhZGMiIHRleHQgd2l0aCAiQURDIiBpbiBhbGwgb2YgdGhlIGVy cm9yIG1lc3NhZ2VzCgotIEluIHBhdGNoIDEyLzE0OgoJLSBSZWZpbmUgdGhlIGdyYW1tZXIgb2Yg dGhlIEtjb25maWcuCgktIENoYW5nZSByZWcgbW9kZSB0byB0aGUgY29uc3QgY3VycmVudCBtb2Rl LgoKLSBJbiBwYXRjaCAxNC8xNDoKCS0gUmVmaW5lIGJvb2wgcHJvcGVydGllcyBwYXJzaW5nIChw d20tZW5hYmxlLCBvdnAtc2h1dGRvd24sIG9jcC1zaHV0ZG93bikgaW4gRFQKCSAgcGFyc2luZyBm dW5jdGlvbgoJLSBSZWZpbmUgdTMyIGFuZCB1OCBwcm9wZXJ0aWVzIHBhcnNpbmcgKHB3bS1oeXMt aW5wdXQtdGgtc3RlcHMsIG92cC1taWNyb3ZvbHQsCgkgIG9jcC1taWNyb2FtcCksIGZyb20gdXNp bmcgcmVnaXN0ZXIgdmFsdWUgdG8gdXNpbmcgYWN0dWFsIHZhbHVlCgktIFJlZmluZSBlcnJvciBz dHJpbmcgb2YgImNoYW5ubGUtdXNlIiBwYXJzaW5nIGZhaWxlZAoJLSBSZWZpbmUgS2NvbmZpZyBo ZWxwIHRleHQKCgpDaGFuZ2VzIGluIHYyOgotIEluIHBhdGNoIDAxLzE1OgoJLSBBZGQgInVuZXZh bHVhdGVkUHJvcGVydGllczogZmFsc2UiLgoJLSBEZWxldGUgIkRUIGJpbmRpbmdzIi4KCS0gUmVm aW5lIHRoZSBkZXNjcmlwdGlvbiB0byBmaXQgaW4gODAgY29sdW1ucy4KCS0gU2tpcCB0aGUgY29u bmVjdG9yIGRlc2NyaXB0aW9uLgoKLSBJbiBwYXRjaCAwMi8xNToKCS0gUmVmaW5lIGl0ZW1zIGRl c2NyaXB0aW9uIG9mIGludGVycnVwdC1uYW1lCgktIFJlbmFtZSAidXNiLW90Zy12YnVzIiB0byAi dXNiLW90Zy12YnVzLXJlZ3VsYXRvciIKCS0gQWRkIGNvbnN0cmFpbnQgcHJvcGVydGllcyBmb3Ig QURDCgotIEluIHBhdGNoIDAzLzE1OgoJLSBTa2lwIG5vdCB1c2VmdWwgZGVzY3JpcHRpb24gb2Yg Il4obXVsdGktKT9sZWRAWzAtM10kIgoJICBhbmQgcmVnLgoJLSBEdWUgdG8gdGhlIGRlcGVuZGVu Y3ksIHJlbW92ZSB0aGUgbWVudGlvbiBvZiBtZmQKCSAgZG9jdW1lbnQgZGlyZWN0b3J5LgoJLSBE ZWxldGUgU29mdC1zdGFydCBwcm9wZXJ0eS4gSW4gZGVzaWduIGFzcGVjdCwgd2UgdGhpbmsKCSAg c29mdC1yZXN0YXJ0IHNob3VsZCBhbHdheXMgYmUgZW5hYmxlZCwgb3VyIG5ldyBjaGlwCgkgIGhh cyBkZWxldGVkIHRoZSByZWxhdGVkIHNldHRpbmcgcmVnaXN0ZXIgLCBhbHNvLCB3ZSBkb27igJl0 CgkgIGFsbG93IHVzZXIgYWRqdXN0IHRoaXMgcGFyYW1ldGVyIGluIHRoaXMgY2hpcC4KCS0gUmVm aW5lIHRoZSBjb21taXQgbWVzc2FnZS4KCi0gSW4gcGF0Y2ggMDQvMTU6CgktIFNraXAgbm90IHVz ZWZ1bCBkZXNjcmlwdGlvbiBvZiAiXmxlZEBbMC0xXSQiIGFuZCByZWcuCgktIEFkZCBhcGFjZSBh ZnRlciAnIycuCgktIFJlZmluZSB0aGUgY29tbWl0IG1lc3NhZ2UuCgotIEluIHBhdGNoIDA1LzE1 OgoJLSBSZW1vdmUgImJpbmRpbmcgZG9jdW1lbnRhdGlvbiIgaW4gc3ViamVjdCB0aXRsZQoJLSBS ZWZpbmUgZGVzY3JpcHRpb24gb2YgbXQ2MzcwIGJhY2tsaWdodCBiaW5kaW5nCgkgIGRvY3VtZW50 CgktIFJlZmluZSBwcm9wZXJ0aWVzIG5hbWUoYmxlZC1wd20taHlzLWlucHV0LWJpdCwKCSAgYmxl ZC1vdnAtbWljcm92b2x0LCBibGVkLW9jcC1taWNyb2FtcCkgYW5kIHRoZWlyCgkgIGRlc2NyaXB0 aW9uCgotIEluIHBhdGNoIDA2LzE1OgoJLSBSZWZpbmUgQURDIGFuZCBSZWd1bGF0b3IgZGVzY3Jp cHRpb25zCgktIFJlZmluZSBpbmNsdWRlIGhlYWRlciB1c2FnZSBpbiBleGFtcGxlCgktIFJlZmlu ZSBub2RlIG5hbWUgdG8gZ2VuZXJpYyBub2RlIG5hbWUoInBtaWNAMzQiKQoJLSBSZWZpbmUgbGVk IGV4YW1wbGUgaW5kZW50YXRpb24KCS0gUmVmaW5lIGxpY2Vuc2Ugb2YgbWVkaWF0ZWssbXQ2Mzcw X2FkYy5oCgktIFJlbmFtZSB0aGUgZHRzIGV4YW1wbGUgZnJvbSBJUlEgZGVmaW5lIHRvIG51bWJl ci4KCS0gUmVtb3ZlIG1lZGlhdGVrLG10NjM3MC5oCgotIEluIHBhdGNoIDA3LzE1OgoJLSBBZGQg QUJJIGRvY3VtZW50YXRpb24gZm9yIG10NjM3MCBub24tc3RhbmRhcmQgQURDCgkgIHN5c2ZzIGlu dGVyZmFjZXMuCgotIEluIHBhdGNoIDA4LzE1OgoJLSBBZGQgYWxsIElSUSBkZWZpbmUgaW50byBt dDYzNzAuYy4KCS0gUmVmaW5lIGluY2x1ZGUgaGVhZGVyIHVzYWdlCgotIEluIHBhdGNoIDA5LzE1 OgoJLSBObyBjaGFuZ2VzLgoKLSBJbiBwYXRjaCAxMC8xNToKCS0gVXNlICdncGlvZF9nZXRfZnJv bV9vZl9ub2RlJyB0byByZXBsYWNlCgkgICdmd25vZGVfZ3Bpb2RfZ2V0X2luZGV4Jy4KCi0gSW4g cGF0Y2ggMTEvMTU6CgktIFJlZmluZSBLY29uZmlnIG10NjM3MCBoZWxwIHRleHQKCS0gUmVmaW5l IG1hc2smc2hpZnQgdG8gRklFTERfUFJFUCgpCgktIFJlZmluZSBtdXRleCBsb2NrIG5hbWUgKCJs b2NrIiAtPiAiYWRjX2xvY2siKQoJLSBSZWZpbmUgbXQ2MzcwX2FkY19yZWFkX3NjYWxlKCkKCS0g UmVmaW5lIG10NjM3MF9hZGNfcmVhZF9vZmZzZXQoKQoJLSBSZWZpbmUgbXQ2MzcwX2NoYW5uZWxf bGFiZWxzW10gYnkgdXNpbmcgZW51bSB0byBpbmRleAoJICBjaGFuIHNwZWMKCS0gUmVmaW5lIE1U NjM3MF9BRENfQ0hBTigpCgktIFJlZmluZSBpbmRpb19kZXYtPm5hbWUKCS0gUmVtb3ZlIHVzZWxl c3MgaW5jbHVkZSBoZWFkZXIgZmlsZXMKCi0gSW4gcGF0Y2ggMTIvMTU6CgktIFJlZmluZSBtdDYz NzBfY2hnX290Z19yZGVzYy5vZl9tYXRjaAoJICAoIm10NjM3MCxvdGctdmJ1cyIgLT4gInVzYi1v dGctdmJ1cy1yZWd1bGF0b3IiKSB0byBtYXRjaAoJICBEVCBiaW5kaW5nCgotIEluIHBhdGNoIDEz LzE1OgoJLSBSZWZpbmUgS2NvbmZpZyBkZXNjcmlwdGlvbi4KCS0gUmVtb3ZlIGluY2x1ZGUgImxp bnV4L29mLmgiIGFuZCB1c2UKCSAgImxpbnV4L21vZF9kZXZpY2V0YWJsZS5oIi4KCS0gUGxhY2Ug YSBjb21tYSBmb3IgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgY29uc3QKCSAgdW5zaWduZWQgaW50 IGFycmF5LgoJLSBBZGQgYSBjb21tZW50IGxpbmUgZm9yIHRoZSBtdXRleCAnbG9jaycuCgktIElu IHByb2JlIGZ1bmN0aW9uLCB1c2UgJ2Rldl9lcnJfcHJvYmUnIGluIHNvbWUKCSAganVkZ2VtZW50 IHRvIHJlZHVjZSB0aGUgTE9DLgoJLSBSZWZpbmUgaW5jbHVkZSBoZWFkZXIgdXNhZ2UuCgkgIEJJ VC9HRU5NQVNLIC0+IGxpbnV4L2JpdHMuaAoJICBGSUVMRF9HRVQgLT4gbGludXgvYml0ZmllbGQu aAoKLSBJbiBwYXRjaCAxNC8xNToKCS0gQWRkIGJsYW5rIGxpbmUuCgktIFJlcGxhY2UgY29udGFp bmVyX29mKCkgd2l0aCB0b19tdDYzNzBfbGVkKCkgLgoJLSBSZWZpbmUgZGVzY3JpcHRpb24gb2Yg cmFtcGluZy4KCS0gUmVmaW5lIHRoZSBtdDYzNzBfaW5pdF9jb21tb25fcHJvcGVydGllcyBmdW5j dGlvbi4KCS0gUmVmaW5lIHRoZSBwcm9iZSByZXR1cm4uCgotIEluIHBhdGNoIDE1LzE1OgoJLSBS ZWZpbmUgTVQ2MzcwIGhlbHAgdGV4dCBpbiBLY29uZmlnCgktIFJlZmluZSBEVCBQYXJzZSBmdW5j dGlvbgoJLSBSZW1vdmUgdXNlbGVzcyBlbnVtCgktIEFkZCBjb21tZW50IGZvciA2MzcyIGJhY2t3 YXJkIGNvbXBhdGlibGUgaW4KCSAgYmxfdXBkYXRlX3N0YXR1cygpIGFuZAoJICBjaGVja192ZW5k b3JfaW5mbygpCgktIFVzaW5nIGRldl9lcnJfcHJvYmUoKTsgaW5zdGVhZHMgZGV2X2VycigpJnJl dHVybjsgaW4KCSAgdGhlIHByb2JlKCkKCgoKQWxpY2UgQ2hlbiAoMik6CiAgZHQtYmluZGluZ3M6 IGxlZHM6IEFkZCBNZWRpYVRlayBNVDYzNzAgZmxhc2hsaWdodAogIGxlZHM6IGZsYXNoOiBtdDYz NzA6IEFkZCBNZWRpYVRlayBNVDYzNzAgZmxhc2hsaWdodCBzdXBwb3J0CgpDaGlZdWFuIEh1YW5n ICgyKToKICBkdC1iaW5kaW5nczogbGVkczogbXQ2MzcwOiBBZGQgTWVkaWFUZWsgTVQ2MzcwIGN1 cnJlbnQgc2luayB0eXBlIExFRAogICAgaW5kaWNhdG9yCiAgbGVkczogcmdiOiBtdDYzNzA6IEFk ZCBNZWRpYVRlayBNVDYzNzAgY3VycmVudCBzaW5rIHR5cGUgTEVEIEluZGljYXRvcgogICAgc3Vw cG9ydAoKQ2hpYUVuIFd1ICg0KToKICBkdC1iaW5kaW5nczogcG93ZXI6IHN1cHBseTogQWRkIE1l ZGlhVGVrIE1UNjM3MCBDaGFyZ2VyCiAgbGliOiBhZGQgbGluZWFyIHJhbmdlIGluZGV4IG1hY3Jv CiAgaWlvOiBhZGM6IG10NjM3MDogQWRkIE1lZGlhVGVrIE1UNjM3MCBzdXBwb3J0CiAgcG93ZXI6 IHN1cHBseTogbXQ2MzcwOiBBZGQgTWVkaWFUZWsgTVQ2MzcwIGNoYXJnZXIgZHJpdmVyCgogLi4u L2JpbmRpbmdzL2xlZHMvbWVkaWF0ZWssbXQ2MzcwLWZsYXNobGlnaHQueWFtbCAgfCAgIDQxICsK IC4uLi9iaW5kaW5ncy9sZWRzL21lZGlhdGVrLG10NjM3MC1pbmRpY2F0b3IueWFtbCAgIHwgICA4 MSArKwogLi4uL3Bvd2VyL3N1cHBseS9tZWRpYXRlayxtdDYzNzAtY2hhcmdlci55YW1sICAgICAg fCAgIDk2ICsrCiBkcml2ZXJzL2lpby9hZGMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTIgKwogZHJpdmVycy9paW8vYWRjL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMvaWlvL2FkYy9tdDYzNzAtYWRjLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDMwNSArKysrKysKIGRyaXZlcnMvbGVkcy9mbGFzaC9LY29uZmlnICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArCiBkcml2ZXJzL2xlZHMvZmxhc2gvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9sZWRzL2ZsYXNoL2xl ZHMtbXQ2MzcwLWZsYXNoLmMgICAgICAgICAgICAgfCAgNjMwICsrKysrKysrKysrKwogZHJpdmVy cy9sZWRzL3JnYi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsKIGRy aXZlcnMvbGVkcy9yZ2IvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAr CiBkcml2ZXJzL2xlZHMvcmdiL2xlZHMtbXQ2MzcwLXJnYi5jICAgICAgICAgICAgICAgICB8IDEw MTAgKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvcG93ZXIvc3VwcGx5L0tjb25maWcgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxNCArCiBkcml2ZXJzL3Bvd2VyL3N1cHBseS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9wb3dlci9zdXBwbHkvbXQ2 MzcwLWNoYXJnZXIuYyAgICAgICAgICAgICAgfCAgOTYxICsrKysrKysrKysrKysrKysrKysKIGlu Y2x1ZGUvbGludXgvbGluZWFyX3JhbmdlLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSAr CiAxNiBmaWxlcyBjaGFuZ2VkLCAzMTkyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9tZWRpYXRlayxtdDYzNzAt Zmxhc2hsaWdodC55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0 cmVlL2JpbmRpbmdzL2xlZHMvbWVkaWF0ZWssbXQ2MzcwLWluZGljYXRvci55YW1sCiBjcmVhdGUg bW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N1cHBs eS9tZWRpYXRlayxtdDYzNzAtY2hhcmdlci55YW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9paW8vYWRjL210NjM3MC1hZGMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbGVkcy9m bGFzaC9sZWRzLW10NjM3MC1mbGFzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9sZWRz L3JnYi9sZWRzLW10NjM3MC1yZ2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcG93ZXIv c3VwcGx5L210NjM3MC1jaGFyZ2VyLmMKCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK