| OLD | NEW |
| 1 // This is a generated file (see the discoveryapis_generator project). | 1 // This is a generated file (see the discoveryapis_generator project). |
| 2 | 2 |
| 3 library googleapis_beta.dataflow.v1b3; | 3 library googleapis_beta.dataflow.v1b3; |
| 4 | 4 |
| 5 import 'dart:core' as core; | 5 import 'dart:core' as core; |
| 6 import 'dart:async' as async; | 6 import 'dart:async' as async; |
| 7 import 'dart:convert' as convert; | 7 import 'dart:convert' as convert; |
| 8 | 8 |
| 9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; | 9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; |
| 10 import 'package:http/http.dart' as http; | 10 import 'package:http/http.dart' as http; |
| (...skipping 1641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1652 class InstructionOutput { | 1652 class InstructionOutput { |
| 1653 /** | 1653 /** |
| 1654 * The codec to use to encode data being written via this output. | 1654 * The codec to use to encode data being written via this output. |
| 1655 * | 1655 * |
| 1656 * The values for Object must be JSON objects. It can consist of `num`, | 1656 * The values for Object must be JSON objects. It can consist of `num`, |
| 1657 * `String`, `bool` and `null` as well as `Map` and `List` values. | 1657 * `String`, `bool` and `null` as well as `Map` and `List` values. |
| 1658 */ | 1658 */ |
| 1659 core.Map<core.String, core.Object> codec; | 1659 core.Map<core.String, core.Object> codec; |
| 1660 /** The user-provided name of this output. */ | 1660 /** The user-provided name of this output. */ |
| 1661 core.String name; | 1661 core.String name; |
| 1662 /** |
| 1663 * For system-generated byte and mean byte metrics, certain instructions |
| 1664 * should only report the key size. |
| 1665 */ |
| 1666 core.bool onlyCountKeyBytes; |
| 1667 /** |
| 1668 * For system-generated byte and mean byte metrics, certain instructions |
| 1669 * should only report the value size. |
| 1670 */ |
| 1671 core.bool onlyCountValueBytes; |
| 1672 /** |
| 1673 * System-defined name for this output in the original workflow graph. Outputs |
| 1674 * that do not contribute to an original instruction do not set this. |
| 1675 */ |
| 1676 core.String originalName; |
| 1662 /** System-defined name of this output. Unique across the workflow. */ | 1677 /** System-defined name of this output. Unique across the workflow. */ |
| 1663 core.String systemName; | 1678 core.String systemName; |
| 1664 | 1679 |
| 1665 InstructionOutput(); | 1680 InstructionOutput(); |
| 1666 | 1681 |
| 1667 InstructionOutput.fromJson(core.Map _json) { | 1682 InstructionOutput.fromJson(core.Map _json) { |
| 1668 if (_json.containsKey("codec")) { | 1683 if (_json.containsKey("codec")) { |
| 1669 codec = _json["codec"]; | 1684 codec = _json["codec"]; |
| 1670 } | 1685 } |
| 1671 if (_json.containsKey("name")) { | 1686 if (_json.containsKey("name")) { |
| 1672 name = _json["name"]; | 1687 name = _json["name"]; |
| 1673 } | 1688 } |
| 1689 if (_json.containsKey("onlyCountKeyBytes")) { |
| 1690 onlyCountKeyBytes = _json["onlyCountKeyBytes"]; |
| 1691 } |
| 1692 if (_json.containsKey("onlyCountValueBytes")) { |
| 1693 onlyCountValueBytes = _json["onlyCountValueBytes"]; |
| 1694 } |
| 1695 if (_json.containsKey("originalName")) { |
| 1696 originalName = _json["originalName"]; |
| 1697 } |
| 1674 if (_json.containsKey("systemName")) { | 1698 if (_json.containsKey("systemName")) { |
| 1675 systemName = _json["systemName"]; | 1699 systemName = _json["systemName"]; |
| 1676 } | 1700 } |
| 1677 } | 1701 } |
| 1678 | 1702 |
| 1679 core.Map toJson() { | 1703 core.Map toJson() { |
| 1680 var _json = new core.Map(); | 1704 var _json = new core.Map(); |
| 1681 if (codec != null) { | 1705 if (codec != null) { |
| 1682 _json["codec"] = codec; | 1706 _json["codec"] = codec; |
| 1683 } | 1707 } |
| 1684 if (name != null) { | 1708 if (name != null) { |
| 1685 _json["name"] = name; | 1709 _json["name"] = name; |
| 1686 } | 1710 } |
| 1711 if (onlyCountKeyBytes != null) { |
| 1712 _json["onlyCountKeyBytes"] = onlyCountKeyBytes; |
| 1713 } |
| 1714 if (onlyCountValueBytes != null) { |
| 1715 _json["onlyCountValueBytes"] = onlyCountValueBytes; |
| 1716 } |
| 1717 if (originalName != null) { |
| 1718 _json["originalName"] = originalName; |
| 1719 } |
| 1687 if (systemName != null) { | 1720 if (systemName != null) { |
| 1688 _json["systemName"] = systemName; | 1721 _json["systemName"] = systemName; |
| 1689 } | 1722 } |
| 1690 return _json; | 1723 return _json; |
| 1691 } | 1724 } |
| 1692 } | 1725 } |
| 1693 | 1726 |
| 1694 /** A metric value representing a list of integers. */ | 1727 /** A metric value representing a list of integers. */ |
| 1695 class IntegerList { | 1728 class IntegerList { |
| 1696 /** Elements of the list. */ | 1729 /** Elements of the list. */ |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1783 /** Environment for the job. */ | 1816 /** Environment for the job. */ |
| 1784 Environment environment; | 1817 Environment environment; |
| 1785 /** Information about how the Dataflow service will actually run the job. */ | 1818 /** Information about how the Dataflow service will actually run the job. */ |
| 1786 JobExecutionInfo executionInfo; | 1819 JobExecutionInfo executionInfo; |
| 1787 /** | 1820 /** |
| 1788 * The unique ID of this job. This field is set by the Dataflow service when | 1821 * The unique ID of this job. This field is set by the Dataflow service when |
| 1789 * the Job is created, and is immutable for the life of the Job. | 1822 * the Job is created, and is immutable for the life of the Job. |
| 1790 */ | 1823 */ |
| 1791 core.String id; | 1824 core.String id; |
| 1792 /** | 1825 /** |
| 1826 * User-defined labels for this job. The labels map can contain no more than |
| 1827 * 64 entries. Entries of the labels map are UTF8 strings that comply with the |
| 1828 * following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * |
| 1829 * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and |
| 1830 * values are additionally constrained to be <= 128 bytes in size. |
| 1831 */ |
| 1832 core.Map<core.String, core.String> labels; |
| 1833 /** |
| 1793 * The user-specified Dataflow job name. Only one Job with a given name may | 1834 * The user-specified Dataflow job name. Only one Job with a given name may |
| 1794 * exist in a project at any given time. If a caller attempts to create a Job | 1835 * exist in a project at any given time. If a caller attempts to create a Job |
| 1795 * with the same name as an already-existing Job, the attempt will return the | 1836 * with the same name as an already-existing Job, the attempt will return the |
| 1796 * existing Job. The name must match the regular expression | 1837 * existing Job. The name must match the regular expression |
| 1797 * [a-z]([-a-z0-9]{0,38}[a-z0-9])? | 1838 * [a-z]([-a-z0-9]{0,38}[a-z0-9])? |
| 1798 */ | 1839 */ |
| 1799 core.String name; | 1840 core.String name; |
| 1800 /** The project which owns the job. */ | 1841 /** The project which owns the job. */ |
| 1801 core.String projectId; | 1842 core.String projectId; |
| 1802 /** | 1843 /** |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1870 } | 1911 } |
| 1871 if (_json.containsKey("environment")) { | 1912 if (_json.containsKey("environment")) { |
| 1872 environment = new Environment.fromJson(_json["environment"]); | 1913 environment = new Environment.fromJson(_json["environment"]); |
| 1873 } | 1914 } |
| 1874 if (_json.containsKey("executionInfo")) { | 1915 if (_json.containsKey("executionInfo")) { |
| 1875 executionInfo = new JobExecutionInfo.fromJson(_json["executionInfo"]); | 1916 executionInfo = new JobExecutionInfo.fromJson(_json["executionInfo"]); |
| 1876 } | 1917 } |
| 1877 if (_json.containsKey("id")) { | 1918 if (_json.containsKey("id")) { |
| 1878 id = _json["id"]; | 1919 id = _json["id"]; |
| 1879 } | 1920 } |
| 1921 if (_json.containsKey("labels")) { |
| 1922 labels = _json["labels"]; |
| 1923 } |
| 1880 if (_json.containsKey("name")) { | 1924 if (_json.containsKey("name")) { |
| 1881 name = _json["name"]; | 1925 name = _json["name"]; |
| 1882 } | 1926 } |
| 1883 if (_json.containsKey("projectId")) { | 1927 if (_json.containsKey("projectId")) { |
| 1884 projectId = _json["projectId"]; | 1928 projectId = _json["projectId"]; |
| 1885 } | 1929 } |
| 1886 if (_json.containsKey("replaceJobId")) { | 1930 if (_json.containsKey("replaceJobId")) { |
| 1887 replaceJobId = _json["replaceJobId"]; | 1931 replaceJobId = _json["replaceJobId"]; |
| 1888 } | 1932 } |
| 1889 if (_json.containsKey("replacedByJobId")) { | 1933 if (_json.containsKey("replacedByJobId")) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1922 } | 1966 } |
| 1923 if (environment != null) { | 1967 if (environment != null) { |
| 1924 _json["environment"] = (environment).toJson(); | 1968 _json["environment"] = (environment).toJson(); |
| 1925 } | 1969 } |
| 1926 if (executionInfo != null) { | 1970 if (executionInfo != null) { |
| 1927 _json["executionInfo"] = (executionInfo).toJson(); | 1971 _json["executionInfo"] = (executionInfo).toJson(); |
| 1928 } | 1972 } |
| 1929 if (id != null) { | 1973 if (id != null) { |
| 1930 _json["id"] = id; | 1974 _json["id"] = id; |
| 1931 } | 1975 } |
| 1976 if (labels != null) { |
| 1977 _json["labels"] = labels; |
| 1978 } |
| 1932 if (name != null) { | 1979 if (name != null) { |
| 1933 _json["name"] = name; | 1980 _json["name"] = name; |
| 1934 } | 1981 } |
| 1935 if (projectId != null) { | 1982 if (projectId != null) { |
| 1936 _json["projectId"] = projectId; | 1983 _json["projectId"] = projectId; |
| 1937 } | 1984 } |
| 1938 if (replaceJobId != null) { | 1985 if (replaceJobId != null) { |
| 1939 _json["replaceJobId"] = replaceJobId; | 1986 _json["replaceJobId"] = replaceJobId; |
| 1940 } | 1987 } |
| 1941 if (replacedByJobId != null) { | 1988 if (replacedByJobId != null) { |
| (...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2829 return _json; | 2876 return _json; |
| 2830 } | 2877 } |
| 2831 } | 2878 } |
| 2832 | 2879 |
| 2833 /** Describes a particular operation comprising a MapTask. */ | 2880 /** Describes a particular operation comprising a MapTask. */ |
| 2834 class ParallelInstruction { | 2881 class ParallelInstruction { |
| 2835 /** Additional information for Flatten instructions. */ | 2882 /** Additional information for Flatten instructions. */ |
| 2836 FlattenInstruction flatten; | 2883 FlattenInstruction flatten; |
| 2837 /** User-provided name of this operation. */ | 2884 /** User-provided name of this operation. */ |
| 2838 core.String name; | 2885 core.String name; |
| 2886 /** System-defined name for the operation in the original workflow graph. */ |
| 2887 core.String originalName; |
| 2839 /** Describes the outputs of the instruction. */ | 2888 /** Describes the outputs of the instruction. */ |
| 2840 core.List<InstructionOutput> outputs; | 2889 core.List<InstructionOutput> outputs; |
| 2841 /** Additional information for ParDo instructions. */ | 2890 /** Additional information for ParDo instructions. */ |
| 2842 ParDoInstruction parDo; | 2891 ParDoInstruction parDo; |
| 2843 /** Additional information for PartialGroupByKey instructions. */ | 2892 /** Additional information for PartialGroupByKey instructions. */ |
| 2844 PartialGroupByKeyInstruction partialGroupByKey; | 2893 PartialGroupByKeyInstruction partialGroupByKey; |
| 2845 /** Additional information for Read instructions. */ | 2894 /** Additional information for Read instructions. */ |
| 2846 ReadInstruction read; | 2895 ReadInstruction read; |
| 2847 /** System-defined name of this operation. Unique across the workflow. */ | 2896 /** System-defined name of this operation. Unique across the workflow. */ |
| 2848 core.String systemName; | 2897 core.String systemName; |
| 2849 /** Additional information for Write instructions. */ | 2898 /** Additional information for Write instructions. */ |
| 2850 WriteInstruction write; | 2899 WriteInstruction write; |
| 2851 | 2900 |
| 2852 ParallelInstruction(); | 2901 ParallelInstruction(); |
| 2853 | 2902 |
| 2854 ParallelInstruction.fromJson(core.Map _json) { | 2903 ParallelInstruction.fromJson(core.Map _json) { |
| 2855 if (_json.containsKey("flatten")) { | 2904 if (_json.containsKey("flatten")) { |
| 2856 flatten = new FlattenInstruction.fromJson(_json["flatten"]); | 2905 flatten = new FlattenInstruction.fromJson(_json["flatten"]); |
| 2857 } | 2906 } |
| 2858 if (_json.containsKey("name")) { | 2907 if (_json.containsKey("name")) { |
| 2859 name = _json["name"]; | 2908 name = _json["name"]; |
| 2860 } | 2909 } |
| 2910 if (_json.containsKey("originalName")) { |
| 2911 originalName = _json["originalName"]; |
| 2912 } |
| 2861 if (_json.containsKey("outputs")) { | 2913 if (_json.containsKey("outputs")) { |
| 2862 outputs = _json["outputs"].map((value) => new InstructionOutput.fromJson(v
alue)).toList(); | 2914 outputs = _json["outputs"].map((value) => new InstructionOutput.fromJson(v
alue)).toList(); |
| 2863 } | 2915 } |
| 2864 if (_json.containsKey("parDo")) { | 2916 if (_json.containsKey("parDo")) { |
| 2865 parDo = new ParDoInstruction.fromJson(_json["parDo"]); | 2917 parDo = new ParDoInstruction.fromJson(_json["parDo"]); |
| 2866 } | 2918 } |
| 2867 if (_json.containsKey("partialGroupByKey")) { | 2919 if (_json.containsKey("partialGroupByKey")) { |
| 2868 partialGroupByKey = new PartialGroupByKeyInstruction.fromJson(_json["parti
alGroupByKey"]); | 2920 partialGroupByKey = new PartialGroupByKeyInstruction.fromJson(_json["parti
alGroupByKey"]); |
| 2869 } | 2921 } |
| 2870 if (_json.containsKey("read")) { | 2922 if (_json.containsKey("read")) { |
| 2871 read = new ReadInstruction.fromJson(_json["read"]); | 2923 read = new ReadInstruction.fromJson(_json["read"]); |
| 2872 } | 2924 } |
| 2873 if (_json.containsKey("systemName")) { | 2925 if (_json.containsKey("systemName")) { |
| 2874 systemName = _json["systemName"]; | 2926 systemName = _json["systemName"]; |
| 2875 } | 2927 } |
| 2876 if (_json.containsKey("write")) { | 2928 if (_json.containsKey("write")) { |
| 2877 write = new WriteInstruction.fromJson(_json["write"]); | 2929 write = new WriteInstruction.fromJson(_json["write"]); |
| 2878 } | 2930 } |
| 2879 } | 2931 } |
| 2880 | 2932 |
| 2881 core.Map toJson() { | 2933 core.Map toJson() { |
| 2882 var _json = new core.Map(); | 2934 var _json = new core.Map(); |
| 2883 if (flatten != null) { | 2935 if (flatten != null) { |
| 2884 _json["flatten"] = (flatten).toJson(); | 2936 _json["flatten"] = (flatten).toJson(); |
| 2885 } | 2937 } |
| 2886 if (name != null) { | 2938 if (name != null) { |
| 2887 _json["name"] = name; | 2939 _json["name"] = name; |
| 2888 } | 2940 } |
| 2941 if (originalName != null) { |
| 2942 _json["originalName"] = originalName; |
| 2943 } |
| 2889 if (outputs != null) { | 2944 if (outputs != null) { |
| 2890 _json["outputs"] = outputs.map((value) => (value).toJson()).toList(); | 2945 _json["outputs"] = outputs.map((value) => (value).toJson()).toList(); |
| 2891 } | 2946 } |
| 2892 if (parDo != null) { | 2947 if (parDo != null) { |
| 2893 _json["parDo"] = (parDo).toJson(); | 2948 _json["parDo"] = (parDo).toJson(); |
| 2894 } | 2949 } |
| 2895 if (partialGroupByKey != null) { | 2950 if (partialGroupByKey != null) { |
| 2896 _json["partialGroupByKey"] = (partialGroupByKey).toJson(); | 2951 _json["partialGroupByKey"] = (partialGroupByKey).toJson(); |
| 2897 } | 2952 } |
| 2898 if (read != null) { | 2953 if (read != null) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2914 class PartialGroupByKeyInstruction { | 2969 class PartialGroupByKeyInstruction { |
| 2915 /** Describes the input to the partial group-by-key instruction. */ | 2970 /** Describes the input to the partial group-by-key instruction. */ |
| 2916 InstructionInput input; | 2971 InstructionInput input; |
| 2917 /** | 2972 /** |
| 2918 * The codec to use for interpreting an element in the input PTable. | 2973 * The codec to use for interpreting an element in the input PTable. |
| 2919 * | 2974 * |
| 2920 * The values for Object must be JSON objects. It can consist of `num`, | 2975 * The values for Object must be JSON objects. It can consist of `num`, |
| 2921 * `String`, `bool` and `null` as well as `Map` and `List` values. | 2976 * `String`, `bool` and `null` as well as `Map` and `List` values. |
| 2922 */ | 2977 */ |
| 2923 core.Map<core.String, core.Object> inputElementCodec; | 2978 core.Map<core.String, core.Object> inputElementCodec; |
| 2979 /** |
| 2980 * If this instruction includes a combining function this is the name of the |
| 2981 * intermediate store between the GBK and the CombineValues. |
| 2982 */ |
| 2983 core.String originalCombineValuesInputStoreName; |
| 2984 /** |
| 2985 * If this instruction includes a combining function, this is the name of the |
| 2986 * CombineValues instruction lifted into this instruction. |
| 2987 */ |
| 2988 core.String originalCombineValuesStepName; |
| 2924 /** Zero or more side inputs. */ | 2989 /** Zero or more side inputs. */ |
| 2925 core.List<SideInputInfo> sideInputs; | 2990 core.List<SideInputInfo> sideInputs; |
| 2926 /** | 2991 /** |
| 2927 * The value combining function to invoke. | 2992 * The value combining function to invoke. |
| 2928 * | 2993 * |
| 2929 * The values for Object must be JSON objects. It can consist of `num`, | 2994 * The values for Object must be JSON objects. It can consist of `num`, |
| 2930 * `String`, `bool` and `null` as well as `Map` and `List` values. | 2995 * `String`, `bool` and `null` as well as `Map` and `List` values. |
| 2931 */ | 2996 */ |
| 2932 core.Map<core.String, core.Object> valueCombiningFn; | 2997 core.Map<core.String, core.Object> valueCombiningFn; |
| 2933 | 2998 |
| 2934 PartialGroupByKeyInstruction(); | 2999 PartialGroupByKeyInstruction(); |
| 2935 | 3000 |
| 2936 PartialGroupByKeyInstruction.fromJson(core.Map _json) { | 3001 PartialGroupByKeyInstruction.fromJson(core.Map _json) { |
| 2937 if (_json.containsKey("input")) { | 3002 if (_json.containsKey("input")) { |
| 2938 input = new InstructionInput.fromJson(_json["input"]); | 3003 input = new InstructionInput.fromJson(_json["input"]); |
| 2939 } | 3004 } |
| 2940 if (_json.containsKey("inputElementCodec")) { | 3005 if (_json.containsKey("inputElementCodec")) { |
| 2941 inputElementCodec = _json["inputElementCodec"]; | 3006 inputElementCodec = _json["inputElementCodec"]; |
| 2942 } | 3007 } |
| 3008 if (_json.containsKey("originalCombineValuesInputStoreName")) { |
| 3009 originalCombineValuesInputStoreName = _json["originalCombineValuesInputSto
reName"]; |
| 3010 } |
| 3011 if (_json.containsKey("originalCombineValuesStepName")) { |
| 3012 originalCombineValuesStepName = _json["originalCombineValuesStepName"]; |
| 3013 } |
| 2943 if (_json.containsKey("sideInputs")) { | 3014 if (_json.containsKey("sideInputs")) { |
| 2944 sideInputs = _json["sideInputs"].map((value) => new SideInputInfo.fromJson
(value)).toList(); | 3015 sideInputs = _json["sideInputs"].map((value) => new SideInputInfo.fromJson
(value)).toList(); |
| 2945 } | 3016 } |
| 2946 if (_json.containsKey("valueCombiningFn")) { | 3017 if (_json.containsKey("valueCombiningFn")) { |
| 2947 valueCombiningFn = _json["valueCombiningFn"]; | 3018 valueCombiningFn = _json["valueCombiningFn"]; |
| 2948 } | 3019 } |
| 2949 } | 3020 } |
| 2950 | 3021 |
| 2951 core.Map toJson() { | 3022 core.Map toJson() { |
| 2952 var _json = new core.Map(); | 3023 var _json = new core.Map(); |
| 2953 if (input != null) { | 3024 if (input != null) { |
| 2954 _json["input"] = (input).toJson(); | 3025 _json["input"] = (input).toJson(); |
| 2955 } | 3026 } |
| 2956 if (inputElementCodec != null) { | 3027 if (inputElementCodec != null) { |
| 2957 _json["inputElementCodec"] = inputElementCodec; | 3028 _json["inputElementCodec"] = inputElementCodec; |
| 2958 } | 3029 } |
| 3030 if (originalCombineValuesInputStoreName != null) { |
| 3031 _json["originalCombineValuesInputStoreName"] = originalCombineValuesInputS
toreName; |
| 3032 } |
| 3033 if (originalCombineValuesStepName != null) { |
| 3034 _json["originalCombineValuesStepName"] = originalCombineValuesStepName; |
| 3035 } |
| 2959 if (sideInputs != null) { | 3036 if (sideInputs != null) { |
| 2960 _json["sideInputs"] = sideInputs.map((value) => (value).toJson()).toList()
; | 3037 _json["sideInputs"] = sideInputs.map((value) => (value).toJson()).toList()
; |
| 2961 } | 3038 } |
| 2962 if (valueCombiningFn != null) { | 3039 if (valueCombiningFn != null) { |
| 2963 _json["valueCombiningFn"] = valueCombiningFn; | 3040 _json["valueCombiningFn"] = valueCombiningFn; |
| 2964 } | 3041 } |
| 2965 return _json; | 3042 return _json; |
| 2966 } | 3043 } |
| 2967 } | 3044 } |
| 2968 | 3045 |
| (...skipping 2792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5761 var _json = new core.Map(); | 5838 var _json = new core.Map(); |
| 5762 if (input != null) { | 5839 if (input != null) { |
| 5763 _json["input"] = (input).toJson(); | 5840 _json["input"] = (input).toJson(); |
| 5764 } | 5841 } |
| 5765 if (sink != null) { | 5842 if (sink != null) { |
| 5766 _json["sink"] = (sink).toJson(); | 5843 _json["sink"] = (sink).toJson(); |
| 5767 } | 5844 } |
| 5768 return _json; | 5845 return _json; |
| 5769 } | 5846 } |
| 5770 } | 5847 } |
| OLD | NEW |