text:
// Copyright 2018 The Bazel Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or Tied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.devtools.build.lib.skylarkbuildapi.android;

import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.FileProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.TransitiveInfoCollectionApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.StarlarkBuiltin;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;

/** Starlark-visible methods for working with Android data (manifests, resources, and assets). */
@StarlarkBuiltin(
    name = "android_data",
    doc =
        "Do not use this module. It is intended for migration purposes only. If you depend on it, "
            + "you will be broken when it is removed."
            + "Utilities for working with Android data (manifests, resources, and assets). "
            + "This API is non-final and subject to change without warning; do not rely on it.",
    documented = false)
public interface AndroidDataProcessingApi<
        AndroidDataContextT extends AndroidDataContextApi,
        TransitiveInfoCollectionT extends TransitiveInfoCollectionApi,
        FileT extends FileApi,
        SpecialFileT extends FileApi,
        AndroidAssetsInfoT extends AndroidAssetsInfoApi<?, ?>,
        AndroidResourcesInfoT extends AndroidResourcesInfoApi<?, ?, ?>,
        AndroidManifestInfoT extends AndroidManifestInfoApi<?>,
        AndroidLibraryAarInfoT extends AndroidLibraryAarInfoApi<?>,
        AndroidBinaryDataInfoT extends AndroidBinaryDataInfoApi<?>,
        ValidatedAndroidDataT extends ValidatedAndroidDataApi<?, ?>>
    extends StarlarkValue {

  @SkylarkCallable(
      name = "assets_from_deps",
      parameters = {
        @Param(
            name = "deps",
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidAssetsInfoApi.class,
            positional = false,
            named = true,
            doc = "Dependencies to inherit assets from."),
        @Param(
            name = "neverlink",
            defaultValue = "False",
            type = Boolean.class,
            positional = false,
            named = true,
            doc =
                "Defaults to False. If true, assets will not be exposed to targets that depend on"
                    + " them.")
      },
      useStarlarkThread = true,
      doc =
          "Creates an AndroidAssetsInfoApi from this target's asset dependencies, ignoring local"
              + " assets. No processing will be done. This method is deprecated and exposed only"
              + " for backwards-compatibility with existing behavior.",
      documented = false)
  AndroidAssetsInfoT assetsFromDeps(
      Sequence<?> deps, // <AndroidAssetsInfoT>
      boolean neverlink,
      StarlarkThread thread)
      throws EvalException;

  @SkylarkCallable(
      name = "resources_from_deps",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "deps",
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidResourcesInfoApi.class,
            positional = false,
            named = true,
            doc = "Dependencies to inherit resources from."),
        @Param(
            name = "assets",
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidAssetsInfoApi.class,
            positional = false,
            named = true,
            doc = "Dependencies to inherit assets from."),
        @Param(
            name = "neverlink",
            defaultValue = "False",
            type = Boolean.class,
            positional = false,
            named = true,
            doc =
                "Defaults to False. If true, resources will not be exposed to targets that depend"
                    + " on them."),
        @Param(
            name = "custom_package",
            positional = false,
            type = String.class,
            noneable = false,
            named = true,
            doc = "The Android application package to stamp the manifest with."),
      },
      doc =
          "Creates an AndroidResourcesInfoApi from this target's resource dependencies, ignoring"
              + " local resources. Only processing of deps will be done. This method is deprecated"
              + " and exposed only for backwards-compatibility with existing behavior. An empty"
              + " manifest will be generated and included in the provider - this path should  not"
              + " be used when an explicit manifest is specified.",
      documented = false)
  AndroidResourcesInfoT resourcesFromDeps(
      AndroidDataContextT ctx,
      Sequence<?> deps, // <AndroidResourcesInfoT>
      Sequence<?> assets, // <AndroidAssetsInfoT>
      boolean neverlink,
      String customPackage)
      throws InterruptedException, EvalException;

  @SkylarkCallable(
      name = "stamp_manifest",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "manifest",
            positional = false,
            defaultValue = "None",
            type = FileApi.class,
            noneable = true,
            named = true,
            doc = "The manifest to stamp. If not passed, a dummy manifest will be generated."),
        @Param(
            name = "custom_package",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "The Android application package to stamp the manifest with. If not provided, the"
                    + " current Java package, derived from the location of this target's BUILD"
                    + " file, will be used. For example, given a BUILD file in"
                    + " 'java/com/foo/bar/BUILD', the package would be 'com.foo.bar'."),
        @Param(
            name = "exports_manifest",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If passed as True, this manifest will be exported to and"
                    + " eventually merged into targets that depend on it. Otherwise, it won't be"
                    + " inherited."),
      },
      doc = "Stamps a manifest with package information.",
      documented = false)
  AndroidManifestInfoT stampAndroidManifest(
      AndroidDataContextT ctx, Object manifest, Object customPackage, boolean exported)
      throws InterruptedException, EvalException;

  @SkylarkCallable(
      name = "merge_assets",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "assets",
            positional = false,
            defaultValue = "None",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            noneable = true,
            named = true,
            doc =
                "Targets containing raw assets for this target. If passed, 'assets_dir' must also"
                    + " be passed."),
        @Param(
            name = "assets_dir",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "Directory the assets are contained in. Must be passed if and only if 'assets' is"
                    + " passed. This path will be split off of the asset paths on the device."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidAssetsInfoApi.class,
            named = true,
            doc =
                "Providers containing assets from dependencies. These assets will be merged"
                    + " together with each other and this target's assets."),
        @Param(
            name = "neverlink",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If passed as True, these assets will not be inherited by"
                    + " targets that depend on this one.")
      },
      doc =
          "Merges this target's assets together with assets inherited from dependencies. Note that,"
              + " by default, actions for validating the merge are created but may not be called."
              + " You may want to force these actions to be called - see the 'validation_result'"
              + " field in AndroidAssetsInfoApi",
      documented = false)
  AndroidAssetsInfoT mergeAssets(
      AndroidDataContextT ctx,
      Object assets,
      Object assetsDir,
      Sequence<?> deps, // <AndroidAssetsInfoT>
      boolean neverlink)
      throws EvalException, InterruptedException;

  @SkylarkCallable(
      name = "merge_res",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "manifest",
            positional = true,
            named = false,
            type = AndroidManifestInfoApi.class,
            doc =
                "The provider of this target's manifest. This provider is produced by, "
                    + "for example, stamp_android_manifest."),
        @Param(
            name = "resources",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = FileProviderApi.class,
            named = true,
            doc = "Providers of this target's resources."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidResourcesInfoApi.class,
            named = true,
            doc =
                "Targets containing raw resources from dependencies. These resources will be merged"
                    + " together with each other and this target's resources."),
        @Param(
            name = "neverlink",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If passed as True, these resources will not be inherited by"
                    + " targets that depend on this one."),
        @Param(
            name = "enable_data_binding",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If True, processes data binding expressions in layout"
                    + " resources."),
      },
      doc =
          "Merges this target's resources together with resources inherited from dependencies."
              + " Returns a dict of provider type to actual info, with elements for"
              + " AndroidResourcesInfoApi (various resource information) and JavaInfoApi (wrapping"
              + " the R.class jar, for use in Java compilation). The passed manifest provider is"
              + " used to get Android package information and to validate that all resources it"
              + " refers to are available. Note that this method might do additional processing to"
              + " this manifest, so in the future, you may want to use the manifest contained in"
              + " this method's output instead of this one.",
      documented = false,
      enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS)
  ValidatedAndroidDataT mergeRes(
      AndroidDataContextT ctx,
      AndroidManifestInfoT manifest,
      Sequence<?> resources, // <TransitiveInfoCollectionT>
      Sequence<?> deps, // <AndroidResourcesInfoT>
      boolean neverlink,
      boolean enableDataBinding)
      throws EvalException, InterruptedException;

  @SkylarkCallable(
      name = "merge_resources",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "manifest",
            positional = true,
            named = false,
            type = AndroidManifestInfoApi.class,
            doc =
                "The provider of this target's manifest. This provider is produced by, "
                    + "for example, stamp_android_manifest."),
        @Param(
            name = "resources",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = FileProviderApi.class,
            named = true,
            doc = "Providers of this target's resources."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = AndroidResourcesInfoApi.class,
            named = true,
            doc =
                "Targets containing raw resources from dependencies. These resources will be merged"
                    + " together with each other and this target's resources."),
        @Param(
            name = "neverlink",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If passed as True, these resources will not be inherited by"
                    + " targets that depend on this one."),
        @Param(
            name = "enable_data_binding",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If True, processes data binding expressions in layout"
                    + " resources."),
      },
      doc =
          "Merges this target's resources together with resources inherited from dependencies."
              + " Returns a dict of provider type to actual info, with elements for"
              + " AndroidResourcesInfoApi (various resource information) and JavaInfoApi (wrapping"
              + " the R.class jar, for use in Java compilation). The passed manifest provider is"
              + " used to get Android package information and to validate that all resources it"
              + " refers to are available. Note that this method might do additional processing to"
              + " this manifest, so in the future, you may want to use the manifest contained in"
              + " this method's output instead of this one.",
      documented = false)
  Dict<? extends ProviderApi, ? extends StructApi> mergeResources(
      AndroidDataContextT ctx,
      AndroidManifestInfoT manifest,
      Sequence<?> resources, // <TransitiveInfoCollectionT>
      Sequence<?> deps, // <AndroidResourcesInfoT>
      boolean neverlink,
      boolean enableDataBinding)
      throws EvalException, InterruptedException;

  @SkylarkCallable(
      name = "make_aar",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "resource_info",
            positional = true,
            named = false,
            type = AndroidResourcesInfoApi.class,
            doc =
                "The provider containing processed resources for this target, produced, "
                    + "for example, by merge_resources."),
        @Param(
            name = "asset_info",
            positional = true,
            named = false,
            type = AndroidAssetsInfoApi.class,
            doc =
                "The provider containing processed assets for this target, produced, "
                    + "for example, by merge_assets."),
        @Param(
            name = "library_class_jar",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The library class jar."),
        @Param(
            name = "local_proguard_specs",
            type = Sequence.class,
            generic1 = FileApi.class,
            defaultValue = "[]",
            positional = false,
            named = true,
            doc =
                "Files to be used as Proguard specification for this target, which will be"
                    + " inherited in the top-level target."),
        @Param(
            name = "deps",
            type = Sequence.class,
            generic1 = AndroidLibraryAarInfoApi.class,
            defaultValue = "[]",
            positional = false,
            named = true,
            doc = "Dependant AAR providers used to build this AAR."),
        @Param(
            name = "neverlink",
            type = Boolean.class,
            defaultValue = "False",
            positional = false,
            named = true,
            doc =
                "Defaults to False. If true, this target's Aar will not be generated or propagated"
                    + " to targets that depend upon it."),
      },
      doc =
          "Builds an AAR and corresponding provider for this target. The resource and asset"
              + " providers from this same target must both be passed, as must the class JAR output"
              + " of building the Android Java library.",
      documented = false)
  AndroidLibraryAarInfoT makeAar(
      AndroidDataContextT ctx,
      AndroidResourcesInfoT resourcesInfo,
      AndroidAssetsInfoT assetsInfo,
      FileT libraryClassJar,
      Sequence<?> localProguardSpecs, // <FileT>
      Sequence<?> deps, // <AndroidLibraryAarInfoT>
      boolean neverlink)
      throws EvalException, InterruptedException;

  @SkylarkCallable(
      name = "process_aar_import_data",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "resource",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The resouce file."),
        @Param(
            name = "assets",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The assets file."),
        @Param(
            name = "manifest",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The manifest file."),
        @Param(
            name = "deps",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            named = true,
            positional = false,
            defaultValue = "[]",
            doc = "Targets to inherit asset and resource dependencies from.")
      },
      doc = "Processes assets, resources, and manifest for aar_import targets",
      documented = false)
  Dict<? extends ProviderApi, ? extends StructApi> processAarImportData(
      AndroidDataContextT ctx,
      SpecialFileT resources,
      SpecialFileT assets,
      FileT androidManifest,
      Sequence<?> deps /* <TransitiveInfoCollectionT> */)
      throws InterruptedException, EvalException;

  @SkylarkCallable(
      name = "process_local_test_data",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "manifest",
            positional = false,
            type = FileApi.class,
            defaultValue = "None",
            named = true,
            noneable = true,
            doc =
                "If passed, the manifest to use for this target. Otherwise, a dummy manifest will"
                    + " be generated."),
        @Param(
            name = "resources",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = FileProviderApi.class,
            named = true,
            doc = "Providers of this target's resources."),
        @Param(
            name = "assets",
            positional = false,
            defaultValue = "None",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            noneable = true,
            named = true,
            doc =
                "Targets containing raw assets for this target. If passed, 'assets_dir' must also"
                    + " be passed."),
        @Param(
            name = "assets_dir",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "Directory the assets are contained in. Must be passed if and only if 'assets' is"
                    + " passed. This path will be split off of the asset paths on the device."),
        @Param(
            name = "custom_package",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "The Android application package to stamp the manifest with. If not provided, the"
                    + " current Java package, derived from the location of this target's BUILD"
                    + " file, will be used. For example, given a BUILD file in"
                    + " 'java/com/foo/bar/BUILD', the package would be 'com.foo.bar'."),
        @Param(
            name = "aapt_version",
            positional = false,
            defaultValue = "'auto'",
            type = String.class,
            named = true,
            doc =
                "The version of aapt to use. Defaults to 'auto'. 'aapt' and 'aapt2' are also"
                    + " supported."),
        @Param(
            name = "manifest_values",
            positional = false,
            defaultValue = "{}",
            type = Dict.class,
            generic1 = String.class,
            named = true,
            doc =
                "A dictionary of values to be overridden in the manifest. You must expand any"
                    + " templates in these values before they are passed to this function."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            named = true,
            doc =
                "Dependency targets. Providers will be extracted from these dependencies for each"
                    + " type of data."),
        @Param(
            name = "nocompress_extensions",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc = "A list of file extensions to leave uncompressed in the resource apk."),
        @Param(
            name = "resource_configuration_filters",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc =
                "A list of resource configuration filters, such as 'en' that will limit the"
                    + " resources in the apk to only the ones in the 'en' configuration."),
        @Param(
            name = "densities",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc =
                "Densities to filter for when building the apk. A corresponding compatible-screens"
                    + " section will also be added to the manifest if it does not already contain a"
                    + " superset listing."),
      },
      doc =
          "Processes resources, assets, and manifests for android_local_test and returns a dict"
              + " from provider type to the appropriate provider.",
      documented = false)
  Dict<? extends ProviderApi, ? extends StructApi> processLocalTestData(
      AndroidDataContextT ctx,
      Object manifest,
      Sequence<?> resources, // <TransitiveInfoCollectionT>
      Object assets,
      Object assetsDir,
      Object customPackage,
      String aaptVersionString,
      Dict<?, ?> manifestValues, // <String, String>
      Sequence<?> deps, // <TransitiveInfoCollectionT>
      Sequence<?> noCompressExtensions, // <String>
      Sequence<?> resourceConfigurationFilters, // <String>
      Sequence<?> densities) // <String>
      throws InterruptedException, EvalException;

  @SkylarkCallable(
      name = "make_binary_settings",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "shrink_resources",
            positional = false,
            noneable = true,
            defaultValue = "None",
            type = Boolean.class,
            named = true,
            doc =
                "Whether to shrink resources. Defaults to the value used in Android"
                    + " configuration."),
        @Param(
            name = "resource_configuration_filters",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc =
                "A list of resource configuration filters, such as 'en' that will limit the"
                    + " resources in the apk to only the ones in the 'en' configuration."),
        @Param(
            name = "densities",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc =
                "Densities to filter for when building the apk. A corresponding compatible-screens"
                    + " section will also be added to the manifest if it does not already contain a"
                    + " superset listing."),
        @Param(
            name = "nocompress_extensions",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = String.class,
            named = true,
            doc =
                "A list of file extension to leave uncompressed in apk. Templates must be"
                    + " expanded before passing this value in."),
      },
      doc =
          "Returns a wrapper object containing various settings shared across multiple methods for"
              + " processing binary data.",
      documented = false)
  AndroidBinaryDataSettingsApi makeBinarySettings(
      AndroidDataContextT ctx,
      Object shrinkResources,
      Sequence<?> resourceConfigurationFilters, // <String>
      Sequence<?> densities, // <String>
      Sequence<?> noCompressExtensions) // <String>
      throws EvalException;

  @SkylarkCallable(
      name = "process_binary_data",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "resources",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = FileProviderApi.class,
            named = true,
            doc = "Providers of this target's resources."),
        @Param(
            name = "assets",
            positional = false,
            defaultValue = "None",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            noneable = true,
            named = true,
            doc =
                "Targets containing raw assets for this target. If passed, 'assets_dir' must also"
                    + " be passed."),
        @Param(
            name = "assets_dir",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "Directory the assets are contained in. Must be passed if and only if 'assets' is"
                    + " passed. This path will be split off of the asset paths on the device."),
        @Param(
            name = "manifest",
            positional = false,
            type = FileApi.class,
            defaultValue = "None",
            named = true,
            noneable = true,
            doc =
                "If passed, the manifest to use for this target. Otherwise, a dummy manifest will"
                    + " be generated."),
        @Param(
            name = "custom_package",
            positional = false,
            defaultValue = "None",
            type = String.class,
            noneable = true,
            named = true,
            doc =
                "The Android application package to stamp the manifest with. If not provided, the"
                    + " current Java package, derived from the location of this target's BUILD"
                    + " file, will be used. For example, given a BUILD file in"
                    + " 'java/com/foo/bar/BUILD', the package would be 'com.foo.bar'."),
        @Param(
            name = "manifest_values",
            positional = false,
            defaultValue = "{}",
            type = Dict.class,
            generic1 = String.class,
            named = true,
            doc =
                "A dictionary of values to be overridden in the manifest. You must expand any"
                    + " templates in the values before calling this function."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            named = true,
            doc =
                "Dependency targets. Providers will be extracted from these dependencies for each"
                    + " type of data."),
        @Param(
            name = "manifest_merger",
            type = String.class,
            defaultValue = "'auto'",
            positional = false,
            named = true,
            doc =
                "The manifest merger to use. Defaults to 'auto', but 'android' and 'legacy' are"
                    + " also supported."),
        @Param(
            name = "binary_settings",
            type = AndroidBinaryDataSettingsApi.class,
            noneable = true,
            defaultValue = "None",
            positional = false,
            named = true,
            doc =
                "Settings common to various binary processing methods, created with"
                    + " make_binary_data_settings."),
        @Param(
            name = "crunch_png",
            positional = false,
            defaultValue = "True",
            type = Boolean.class,
            named = true,
            doc = "Whether PNG crunching should be done. Defaults to True."),
        @Param(
            name = "enable_data_binding",
            positional = false,
            defaultValue = "False",
            type = Boolean.class,
            named = true,
            doc =
                "Defaults to False. If True, processes data binding expressions in layout"
                    + " resources."),
      },
      doc =
          "Processes resources, assets, and manifests for android_binary and returns the"
              + " appropriate providers.",
      documented = false)
  AndroidBinaryDataInfoT processBinaryData(
      AndroidDataContextT ctx,
      Sequence<?> resources, // <TransitiveInfoCollectionT>
      Object assets,
      Object assetsDir,
      Object manifest,
      Object customPackage,
      Dict<?, ?> manifestValues, // <String, String>
      Sequence<?> deps, // <TransitiveInfoCollectionT>
      String manifestMerger,
      Object maybeSettings,
      boolean crunchPng,
      boolean dataBindingEnabled)
      throws InterruptedException, EvalException;

  @SkylarkCallable(
      name = "shrink_data_apk",
      parameters = {
        @Param(
            name = "ctx",
            positional = true,
            named = false,
            type = AndroidDataContextApi.class,
            doc = "The Android data context object for this target."),
        @Param(
            name = "binary_data_info",
            positional = true,
            named = false,
            type = AndroidBinaryDataInfoApi.class,
            doc = "The Info about the binary to shrink, as produced by process_binary_data."),
        @Param(
            name = "proguard_output_jar",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The proguard jar output file."),
        @Param(
            name = "proguard_mapping",
            positional = true,
            named = false,
            type = FileApi.class,
            doc = "The proguard mapping output file."),
        @Param(
            name = "binary_settings",
            type = AndroidBinaryDataSettingsApi.class,
            noneable = true,
            defaultValue = "None",
            positional = false,
            named = true,
            doc =
                "Settings common to various binary processing methods, created with"
                    + " make_binary_data_settings."),
        @Param(
            name = "deps",
            positional = false,
            defaultValue = "[]",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            named = true,
            doc =
                "Dependency targets. Providers will be extracted from these dependencies for each"
                    + " type of data."),
        @Param(
            name = "proguard_specs",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            defaultValue = "[]",
            positional = false,
            named = true,
            doc =
                "Files to be used as Proguard specification for this target, which will be"
                    + " inherited in the top-level target."),
        @Param(
            name = "extra_proguard_specs,",
            type = Sequence.class,
            generic1 = TransitiveInfoCollectionApi.class,
            defaultValue = "[]",
            positional = false,
            named = true,
            doc =
                "Additional proguard specs that should be added for top-level targets. This  value"
                    + " is controlled by Java configuration.")
      },
      doc =
          "Possibly shrinks the data APK by removing resources that were marked as unused during"
              + " proguarding.",
      documented = false)
  AndroidBinaryDataInfoT shrinkDataApk(
      AndroidDataContextT ctx,
      AndroidBinaryDataInfoT binaryDataInfo,
      FileT proguardOutputJar,
      FileT proguardMapping,
      Object maybeSettings,
      Sequence<?> deps, // <TransitiveInfoCollectionT>
      Sequence<?> localProguardSpecs, // <TransitiveInfoCollectionT>
      Sequence<?> extraProguardSpecs) // <TransitiveInfoCollectionT>
      throws EvalException, InterruptedException;

  @SkylarkCallable(
      name = "resources_from_validated_res",
      allowReturnNones = true,
      doc = "Returns an Artifact containing a zip of merged resources.",
      documented = false,
      parameters = {
        @Param(
            name = "validated_res",
            doc = "The validated Android resources.",
            positional = true,
            named = false,
            type = ValidatedAndroidDataApi.class)
      })
  FileT resourcesFromValidatedRes(ValidatedAndroidDataT resources);
}

redpajama_set_name: RedPajamaGithub


Below are a few examples of our blanket boxes. Please note that there are other wood finishes, fabrics, styles and sizes to choose from. We can even have a blanket box made to your measurements using our bespoke service.


When he's a nurse and she's a nurse, love can indeed lead to an incurable disease that will require intensive care. That was the case of Jaclyn and Barry and that made their story so exciting. Now, this is what we call love sick!
Jaclyn and Barry met in early 2008 while working at Mountain View Hospital in Las Vegas. Barry was a new grad RN starting his first day on the job, and Jaclyn was new to the day shift. Soon after, they would work together frequently and have the best conversations. They enjoyed each others company, and it made working a 12-hour shift go by quickly. Barry and Jaclyn discovered they shared a lot in common, including their love of all types of foods, a passion for the outdoors, and both wanted to move to California one day.
Fast forward some time, and Jaclyn and Barry had been living in Southern California for four years. One of their favorite spots was a somewhat secluded part of Laguna Beach, called Thousand Steps beach. On a peaceful Sunday, they walked and talked taking in the fresh ocean breeze. The tide wasn't too high at that time of day, so they walked through a little cove. Barry sat Jaclyn down on a rock in the cove and proposed. At first, Jaclyn thought he was joking, but realized he was serious. Then she said "YES"! It was one of the happiest moments of their lives.
The wedding venue. Las Vegas was the place of choice to celebrate their wedding. More specifically, the beautiful Saint Joseph Catholic Church and the Las Vegas Country Club.
The wedding outfits. Jaclyn showcased an elegant lace gown, and her bridesmaids wore floor-length blush dresses. The guys also looked super sharp and cool wearing their custom made and matching grey Lakai sneakers. And let's not forget about Luke, their adorable toddler, showcasing a red bow tie and suspenders.
The DIY projects. The sign-in wood palette was very special to the couple as her brother-in-law and sister made it. Using their engagement photos as the table numbers also gave a special touch.
Their son. Luke was part of the wedding as ring bearer. He also joined everyone on the dance floor later on and had a blast.
The wrap-up. After they both had said I do at Saint Joseph, we stayed for a few photos and headed to the Las Vegas Country Club. The reception was held indoors, and it featured fantastic views of the golf course. The cupcake tiered cake and florals looked gorgeous with the grey and blush palette. The night was filled with great speeches, lots of love, and kids rocking the dance floor along with the guests.
♥ Have a "day of coordinator" to help ease the events of the day and keep track of time.
♥ Stick to the budget.
♥ Make sure as future husband and wife, you are on the same team, after all the big day is about the happy couple. Plan the wedding and the details according to the couple's own wants, needs, and expectations, not those of everyone else, including parents of the bride and groom!
♥ Most importantly, have fun with it! Unforeseen things WILL happen, just go with it and ask for help when feeling overwhelmed!


To celebrate the launch of stevewalshblog.co.uk we are giving away a dedicated signed 16×12 photo of Steve celebrating the winning goal of the 1994 Play-Off Final Against Derby!
Who was Walshy's roommate the night before the 1999 Worthington Cup Final against Tottenham?
Last saturday I was invited down to the King Power Stadium for the Foxes new Home Kit Launch. Was a brilliant day and to see 5,000 fans cramming into the Family stand was a great sight and just shows what strong support Leicester draws.
The 2012/13 Leicester City home kit by PUMA is NOW ON SALE from the City Fanstore at King Power Stadium and online at www.lcfcdirect.com.
Hi Guys, Welcome to my new blog! Big thanks to City Communications for hosting it for me. We are really excited about the content we can put together for you, so check back soon for news and competitions'!
With the new season just around the corner, it's looking like its going to be promising judging by the excellent game played by LCFC on Tuesday night. There's a jam-packed year ahead of me as I've just agreed with LCFC to be more involved with the hospitality side of the stadium; which means I get to attend every game! I am also co-ordinating exciting new events with K Kong events. And the night with Mike Tyson is getting closer.
On Tuesday night, Leicester kicked-off their pre-season with a convincing 4-1 victory against Hinckley United at the Greene King Stadium. But, not all was lost for Hinckley as they gained a record attendance of 3411. On the night, Nigel Pearson played two different teams in each half giving his lads a good warm up before the coming season starts. There was a good buzz within the team and the 2nd half of the match saw football of pure class. There has been much speculation about the buying of non-league footballer Jamie Vardy, but on the night he proved his worth by scoring one of Leicester's winning goals.
The young players of the club were looking impressive; Liam Moore definitely being one to watch in the future. At only 18 years old, he has worked his way up through the ranks and is looking to be a very promising and fresh-faced member of the Foxes team. Wes Morgan, Neil Danns and David Nugent also put in an impressive performance.
Whilst watching the game on Tuesday night, I was in a prime spot, surrounded by the staff of LCFC and just infront of me was Hinckley United's owner and son. It was great to get the chance to chat to them all about the coming season and there seemed to be a lot of excitement within the Leicester staff about the player's performance against Hinckley.
I had some success of my own the day after the match as I passed my FA coaching badge. This was followed by another great night. On Thursday evening I did a Q+A night with the Birch at the Rosewater Indian Restaurant in Mountsorrel. There was an excellent turn out of fans at the event, with 64 people managing to make it down for a great night of entertainment.
After the great performance by the Foxes on Tuesday, it has made me even more excited about my up-and-coming events. This Sunday is the annual Legends UK 5-A-side football tournament. A few boys from the old Leicester squad and I will be getting our boots back on. I look forward to a great day of football and family fun and hope this great weather holds out for us.
Next week I have been invited to go to the Burton Albion away match to see if Nigel Pearson and the Foxes can pull off another pre-season victory. (A big thanks for the hospitality from Burton Albion). I will also be attending the Carling Cup game in a few weeks away against Torquay United (14th August). I am interested to see what team Nigel Pearson sends onto the pitch with the game being so close to the start of the new season.
Currently, I am working for K Kong events as the events Co-ordinator and on October 11th we are holding a night with Mike Tyson at Leicester Coliseum. I am really pleased with the response to the event so far. K Kong events have some big nights in Leicester and other destinations throughout the UK. A Evening with Mike Tyson only has a few tables left!
Welcome to the Steve Walsh Blog!
Welcome to the new Steve Walsh blog hosted by City Communications. Please check back soon to see the latest blogs by Walshy, Pictures, News and Competitions!


There are lots of means to enhance the fuel economic climate of your car while driving gradually and no sudden accelerations to inflating your vehicle at the best pressure. You need to additionally understand that auto engine oil also contributes as a major factor in assisting your vehicle reach the added mile without any kind of added costs.
There are dozens of brands on the market, but the oil score labelled on the container, like 5W30 informs you that this kind of oil could work in both low and high temperature levels. The W informs you the winter months score and also the 2nd number tells you the summertime score. Completely synthetic ones are indicated for winter problems mostly.
Constantly follow the oil adjustment period vigilantly! These oils can last only up till the moment the manufacturer suggests for them. Then, they will kill your engine gradually. Do not use oil greater than its designated life; your engine may congest irreparable.
275 30 20 Nitto : Finding auto repair parts should not be that hard. I hand pick the best deals for you from search search such as ebay and display them for you below. Go ahead, check it out and see how much you can save.
Spring and summer season is a time of adjustment as well as clean slates. There's something concerning the longer days as well as the warmer weather that draws out of our winter funks and obtains us really feeling inspired to take command of lives and shock their lives right.
Working as a driving teacher offers numerous perks that makes it a popular job of choice when folks are thinking of making a change. For one, you obtain to be your own manager and plan your very own hrs, permitting you to make as little or as much cash as you desire. With the days obtaining longer, you can run sessions whenever you like and enjoy the sunlight while it lasts!
Lots of people locate functioning as a driving trainer fulfilling, yet this kind of role is specifically suited to individuals that require that versatility in their lives whilst earning a liveable income; as an example, you might be a working mommy that wishes to spend even more time in the house. Functioning as a driving trainer allows you to operate within college hrs so you could be residence in the later mid-day. It's also a fantastic career adjustment for folks coming close to retirement who still wish to function but want to wind down from the 9-5 routine and begin taking even more time out for themselves.


Impacts of thermal and buoyancy forces on the thermal comfort and air quality in urban canyons with different H/W ratios and rise/run ratio of rooftops are studied. 18 isothermal and non-isothermal models are studied by CFD modeling validated with experimental data from the literature. Based on the results, thermal buoyancy is observed to be effective in improving human comfort in the urban canyon. The temperature difference between roof surface and air increases the speed of air and contaminant transport in urban canyons. While the increase in height and tilt of structures around urban areas have shown to reduce thermal buoyancy. In broad canyons such as H/W = 0.5, an increase in height and slope of the roof causes the thermal comfort of leeward, windward, and central regions to move away from the neutral comfort conditions. In regular canyons, H/W = 1, the thermal comfort reduces for highly slanted roofs models. Domed roof leads to the lack of thermal comfort in upper levels of passages in leeward, windward, and central regions. In deep canyons, H/W = 2, high level of thermal comfort appears only for flat roofs. With an increase in roof height (rise/run), Predicted Mean Vote PMV index moves away from the comfort range. By increasing H/W ratio, roof height, wind comfort, and air quality inside regular and deep urban canyons, it was observed that the thermal buoyancy force leads to the reduction in thermal comfort.


Thank you, Dana, for the tip. All of you in New Zealand may have heard from me several times about this, as I've just sent off a dozen emails. The trailer alone is a hoot!
Is it old news in the US??
Something Going on with Blogs?


Click on the 'Rental Packages' tab to learn more about what Brightside Photobooth has to offer.
Copyright © BRIGHTSIDEPHOTOBOOTH. All rights reserved.
Northern New Jersey's premier photobooth rental for any party, event, or promotion.
We give you more than a photo, we give you an experience!


For more than 30 years through events such as ASB Polyfest, Diwali and Auckland Lantern Festival, ASB has celebrated diversity through a range of sponsorships which the company is heroing in its latest ad.
Fronted by writer and performer Courtney Sina Meredith, the piece centres on a bespoke poem crafted for ASB by Meredith, encouraging people to celebrate their differences and be who they are.
"When I wrote the poem I was thinking about the connections between us all, and how important it is to keep reaching out - to reach beyond our comfort zones, to be open to new ideas and different ways of being, and to discover the strength that exists in vulnerability," Meredith said.
"I also just approached the text from a place of celebration and abundance - the words flowed from there."
ASB general manager of marketing Shane Evans says Meredith, who is of Samoan, Irish and Cook Island Maori descent, was perfect for the campaign, offering a unique and intelligent perspective on modern New Zealand.
"Our brief for Courtney was really to highlight the work ASB does across our diverse sponsorships," Evans said.
"We have been big supporters of events such as Diwali, Polyfest and Auckland Lantern Festival for a number of years now and we think that's something worth celebrating."
ASB brand campaigns manager Emma-Rose Forrester said it was exciting to include ASB's own people in the ad.
"Everyone highlighted in this piece either works for ASB or is part of our ASB family in some way. I think we have created something really powerful and special."
The piece, which will be running through to mid-March, was created by advertising agency True.
Chief creative officer Craig Pethybridge says the idea behind the campaign was around inclusivity, equality and prosperity.
"We wanted the piece to be an anthem for progress, to encompass the feeling of being included, understood and accepted," Pethybridge says. "Because ultimately this is progress for everyone."
Meredith said the poem spoke to how she felt about the world, adding that there was an alignment of values between herself and ASB.
"We came together to make something special that aims to empower others to be their best selves, I can't think of a more beautiful kaupapa."
ASB has been the naming rights partner for ASB Polyfest for more than 30 years and has helped the festival grow into the major community event it is today. It has also helped as a major sponsor of Diwali and Auckland Lantern Festival for a number of years.


St. Augustine mosaic artist Christie Moore will host Martin Cheek, internationally renowned mosaic artist and author of four books on mosaics as he teaches a workshop on Italian Smalti, Millefiori and glass fusion March 26 and 27 in the Oldest City. Cheek makes his home in the United Kingdom.
There are a very limited number of spaces for this workshop, and a waiting list will be created once spaces are filled.
For course information, accommodations and to register, contact Christie Chancey Moore by e-mail cmmoore28@att.net. Go to www.freestylemosaics.com.


Crafted from a premium blend of luxurious silk, warming wool and lightweight linen, the Dubarry Bramble Jacket is a soft tweed blazer that will look as fantastic at the races as it would for a day in the field. Cut to a slightly longer length for the taller gentleman, this Dubarry blazer features a three button closure with signature horn buttons, and three traditional ticket pockets to the waist and a single pocket to the chest. The peak lapel leads up to a felt lined collar, and the jacket itself is lined with Dubarry's jacquard lining.


text:
std::vector<char> compile_inprocess(const std::string& kernel_src, const std::string& gpu_arch);

#endif


text:
Sports Banquet
Job Match Texas
Mid Valley Town Crier
Miles Bullion, with engineering firm Halff Asscoiates, talks about the methods his firm used to create drainage improvement models during a bond election informational session in Weslaco Thursday. Photo by Dina Arévalo | darevalo@mvtcnews.com
Weslaco officials hold bond election info session
Dina Arévalo
WESLACO — City leaders here are hoping voters will make their voices heard at the ballot box this May and approve a $10 million bond proposal to address lingering drainage issues. To that end, several officials were on hand at the Knapp Medical Conference Center on Thursday to provide information about the bond's five proposed projects.
"The issue for the $10 million is for the voters to decide," City Manager Mike Perez explained to the handful of residents who attended the informational session.
At stake are five projects selected by the Weslaco Citizens Drainage Task Force working in collaboration with the engineering firm the city hired to study the issue in the wake of severe flooding that damaged dozens of homes and businesses in June 2018.
"We came up with what we called the short-term, an intermediate term and a long term projects. The short term is what we're looking at now," explained task force chair Randy Hall.
Hall has been a fixture at public meetings in recent months, often speaking during public comments to urge his fellow residents to vote in favor of the bond.
Through the course of numerous meetings, the task force identified a need for approximately 70 drainage improvement projects that could cost the city upwards of $90 million. Between the city's limited resources and an equally limited availability of other funding sources, city leaders opted to approach the drainage issue in phases.
"The city looked at passing the total package of funding but the city commission decided that was too big a bite to take, so we're going to take little bites and fund it over a 20-year period," Hall said.
The first of the "little bites" involves improvement projects at Westgate Drive and Sugar Cane Drive, Los Torritos Street and North Kansas Avenue, South Texas Boulevard and East 18th Street, Pleasantview Drive and 11th Street, and South International Boulevard and Business 83.
The Westgate and Sugar Cane Project would include the creation of a 10-acre detention pond near Cleckler-Heald Elementary School.
The Los Torritos project would create a drainage system that would funnel storm water to a 30-acre detention pond at Mayor Pablo Peña Park.
The Texas Boulevard and 18th Street project would involve the creation of a 5-acre detention pond, the widening of a canal located at Mile 5 1/2 Road West, and increasing the size of the culverts beneath Texas Boulevard at Trails End Drive.
The fourth project — the Pleasantview Drive project — would create a new storm drain system near Weslaco East High School that would funnel runoff towards an existing canal on East 18th Street.
Finally, the fifth project would widen culverts in a drainage canal by South Pleasantview Drive and Bus. 83.
However, if the bond passes, it still will not provide enough funding for the proposed projects. City leaders hope to fill the gaps by reducing costs through in-house labor, and by seeking state or federal grants.
"I've been tasked with a very difficult job and that's looking for funding for these projects," said Assistant City Manager Andrew Muñoz.
Muñoz explained how strict grant eligibility criteria has limited the city's ability to apply for federal or state funds, but that city leaders are hopeful about applications with the U.S. Army Corps of Engineers and the Texas Department of Emergency Management.
Should the city be awarded funding from either of those sources, however, it will still be years away, making the bond's passage all the more important.
"If the bond doesn't pass, we're kind of stuck in a hard place. We'll just have to see what we can do piecemeal over time," City Manager Perez said. "It's going to be very, very hard. But we can only do what the citizens allow us to do and what they approve us to do."
Perez added that he was neither advocating for or against the bond, but that he hoped voters would turn out to the polls to let city leaders how they should proceed. As of Thursday, only 70 voters had cast their ballots at the city's polling place, the Business Visitor & Event Center, county records show.
"The citizens will make a decision if they want to do it or not and we're going to do what they tell us, but I would hate to see a bond referendum decided by 200 voters," Perez said.
Should the bond pass, it would raise property taxes by approximately 3 cents per $100 valuation, Perez explained. For a home with a taxable value of $50,000, that increase would amount to approximately $15 per year, he said.
PREVIOUS COVERAGE
Weslaco seeks 3-cent tax hike for drainage
Dina Arévalo is the editor of the Mid-Valley Town Crier and covers Weslaco, Donna, Mercedes, Progreso and the Delta area for the Crier and for The Monitor. She can be reached at darevalo@mvtcnews.com or (956) 683-4441.
401 South Kansas Ave
Suite A-7
© 2020 Mid-Valley Town Crier - Part of the AIM Media Network
.td-main-page-wrap { padding-top: 10px; } .td_module_8 { padding-bottom: 14px; margin-bottom: 4px; } .td_module_8 .entry-title { margin-bottom: 0px; } .td-a-rec-id-content_inlineleft { padding: 20px 20px 20px 0px; } .td-a-rec-id-custom_ad_3 > div { margin-bottom: 10px; } .td-a-rec-id-custom_ad_2 > div { margin-bottom: 0px; } .td-a-rec-id-custom_ad_1 > div { margin-bottom: 0px; }

redpajama_set_name: RedPajamaCommonCrawl


The year started more than a month ago, so the classes have taken their usual pace. I am becoming more and more convinced that Mechanical Engineering was the right choice for my major. The thing is that not all ME classes are very interrelated; however every single one of them gives us a different opportunity for our future career. Professors who teach these classes, are generally not that young, but that is not a downside. Actually, I would even say it is good, because they have more experience in the field.
The other day there was a career fair on Goodman Campus, and there were a lot of companies recruiting different engineers, business students etc. A lot of the companies who were recruiting engineers, are looking for smart engineers, and among the different fields of engineering, Mechanical is one of the most desired. There were a lot of ME undergraduate and graduate students there, which once again proves that Mechanical Engineers are very demanded.
← Study Time! These exams are no joke!


Create a TABLECrate from a set of arrays, a dictionary, or a structured array.
The return value is a TABLECrate.
This routine provides a quick means of creating a TABLECrate from a set of arrays, a dictionary, or a NumPy structured array.
If a single argument is given and it acts like a Python dictionary, then it is used to define both the column names and values (the dictionary keys and values respectively). The dictionary values are assumed to be arrays and follow the same rules as if given individually, as described in the "Column contents: separate arguments" section below.
If the argument is a NumPy structured array then it is used to determine the column names and values and the order of the columns. The colnames argument can be used to re-order or subset the columns as with dictionaries.
The data to add to the Crate is given as the col1 to coln arguments; they can be Python arrays (e.g. [1,2,3]) or numpy arrays (e.g. np.arange(4)), can be multi-dimensional (e.g. for vector columns), and can include string vectors. Each column should contain a single datatype, and all will be padded to the length of the longest array. The padding is 0 for numeric columns and "" or "IND" for string arrays.
If the optional colnames argument is not given then the columns will be named "col1" to "coln", where n is the number of columns. To use your own names, supply an array of strings to the colnames argument. This array must match the number of columns.
The write_file() command can be used to write the data out to file in FITS binary or ASCII formats. If you do not need to add metadata to the crate then the write_columns() routine can also be used.
This time the column names are set to "x", "y", and "comment" rather than "col1", "col2", and "col3". The block name is changed from 'TABLE' to 'SRCS'.
and adding additional metadata to the Crate.
and the header keyword was set (the routine automatically sets the CREATOR and DATE keywords).
NORMFLAG             TRUE                           Is the data normalized?
Here we create a new table crate based on the time and rate columns of the file lc.fits. The new table has two columns, "dt" and "rate", and is written out to the file lc2.fits. Since we use a Python dictionary then the order of the columns in the crate is not guaranteed; the easiest way to force an ordering is to use the colnames option; e.g.
Since a FITS table can not start with a TABLE block, an empty PRIMARY block has been automatically created by the write_file command.
The crate has a name of 'TABLE' and contains two keywords, CREATOR and DATE. These can be changed, or other values added, using Crates routines.


text:
Home > issues > COVID-19
As the world grapples with the effects of the COVID-19 pandemic, it is critical that Congress work to protect and strengthen our nation's health, safety and security at every level. The COVID-19 response effort must do more than bailout corporations—it must help those most in need. Chairman Nadler and the House Judiciary Committee are working to guard Americans from price gouging, support small businesses, protect the health and safety of law enforcement and those in federal prisons, ensure humane immigration practices, and more.
COMMITTEE PRESS RELEASES
ADDITIONAL GOVERNMENT RESOURCES
Democratic Virtual Roundtable on ICE's Response to COVID-19
Democratic Virtual Roundtable on COVID-19 in Prisons & Jails
June 25, 2020 - 9:00am
H.R. 6800, The Heroes Act
Criminal Justice Provisions
Emergency Community Supervision Act- During a declared national emergency relating to a communicable disease, mandates the release into community supervision of federal prisoners and pretrial detainees who are non-violent and, for instance, pregnant women, juveniles, older prisoners and detainees, and those with certain medical conditions.
Court Authority to Reduce Sentences and Temporary Release Authority- During the COVID-19 emergency, expands court authority to order compassionate release for federal prisoners and to reduce sentences, and removes administrative barriers that slow the ability of prisoners to seek compassionate release.
Increasing Availability of Home Detention for Elderly Offenders- Increases the availability of home detention for non-violent elderly prisoners by ensuring that participants in the elderly prisoner home confinement pilot program get credit for good conduct time earned and lowers the eligibility for participation during the COVID-19 emergency period.
Effective Assistance of Counsel in the Digital Era Act- Directs the Attorney General to put in place an electronic communication system to be used by persons in federal custody that ensures confidential communication between those in custody and their attorneys.
COVID-19 Correctional Facility Emergency Response Act- Provides $600 million in funding to address the COVID-19 crisis in state and local prisons and jails, including $500 million to states and local governments that operate correctional facilities to provide testing and treatment of COVID-19 for incarcerated individuals by creating two grant programs—one focused on the release of low-risk individuals who are currently incarcerated and another aimed at reducing COVID-19 exposure for those individuals who are arrested; $75 million in funding to a new grant program to encourage states and localities to adopt practices that promote juvenile safety and rehabilitation without unnecessarily exposing youth to incarceration during this crisis; and $25 million for a grant program for state and local governments that operate correctional facilities for rapid testing of inmates who are leaving correctional custody.
Moratorium on Fees and Fines- Authorizes the establishment of a grant program that distributes funds directly to state and local courts, with the condition that they impose a moratorium on the imposition and collection of court-imposed fees and fines during the COVID-19 crisis.
Information Collection by States and Units of Local Government.Authorizes the Attorney General to give grants to local law enforcement agencies to conduct law enforcement activities or crime reduction programs to prevent, address, or otherwise respond to hate crimes, particularly related to reporting hate crimes.
Immigration Provisions
Extension of Filing and Other Deadlines.Creates protections for certain noncitizens in the United States, as well as certain immigrant visa applicants, affected by processing delays and travel restrictions related to the COVID-19 public health emergency.
Temporary Accommodations for Naturalization Oath Ceremonies Due to Public Health Emergency. Requires the Secretary of Homeland Security to establish procedures for remotely administering naturalization oath ceremonies during the COVID-19 emergency. Individuals who have been approved for naturalization may opt to participate in a remote swearing-in ceremony given the current suspension of in-person public ceremonies.
Temporary Protections for Essential Critical Infrastructure Workers. Provides temporary protections to undocumented workers in the United States engaged in essential critical infrastructure work, as defined by DHS-issued guidance, during the COVID-19 emergency.
Supplementing the COVID response workforce.Temporarily eases certain immigration-related restrictions to allow immigrant physicians and other critical healthcare workers to better assist in the fight against COVID-19.
ICE Detention. Requires DHS to review the immigration files of all individuals in the custody of Immigration and Customs Enforcement (ICE) to assess the need for continued detention. Individuals who are not subject to mandatory detention shall be prioritized for release, either on recognizance or into an alternative to detention program, unless the individual is a threat to public safety or national security. DHS shall also ensure that all individuals who continue to be detained by ICE:
Have access to free telephonic and video communications, including unmonitored telephone calls with attorneys.
May receive legal correspondence by fax or email.
Are provided sufficient soap, hand sanitizer and other hygiene products.
Have access to virtual "know your rights" and legal orientation programming conducted by approved nonprofit organizations.
Benefits for Public Safety Officers Impacted by COVID-19
Death and Disability Benefits for Public Safety Officers Impacted by COVID-19- Amends the Public Safety Officers' Benefits Program (PSOB) to establish a presumption that officers who die or are disabled because of COVID-19 infection are eligible to receive disability and death benefits. Ensures that officers who were injured or disabled during or because of the September 11, 2001 attacks, and whose injuries in combination with a COVID-19 illness result in disability or death, may apply for PSOB disability or death benefits.
Bankruptcy Protections for Homeowners
Ensures that families who need to file for bankruptcy in response to the COVID-19 pandemic will be able to keep their homes. Protects federal relief payments from being taken in bankruptcy proceedings; ensuring that homeowners in bankruptcy proceedings can participate in the mortgage forbearance program created by the CARES Act and other COVID-19 mortgage assistance; increases the amount of home equity protected in the bankruptcy process to $100,000; makes it easier for homeowners to exit bankruptcy so they can resume normal economic activity and continue paying off their mortgages; and opens Chapter 13 to more homeowners and small businesses by raising the limits for debt to qualify for a bankruptcy through Chapter 13.
The "Jabara-Heyer National Opposition to Hate, Assault, and Threats to Equality Act of 2019, or "Jabara-Heyer NO HATE Act" provides grant funding incentives to state and local law enforcement agencies for the collection of hate crimes data and reporting it to the Department of Justice, which would report the data to Congress.
Expands Funding for Department of Justice and Related Programs
Bureau of Prisons– $200 million to prevent, prepare for, and respond to coronavirus in Federal prisons, including funding for medical testing and services, personal protective equipment, hygiene supplies and services, and sanitation services
Violence Against Women Act (VAWA) programs– $100 million, with a waiver of the local match requirement, including $30 million for grants to combat violence against women, $15 million for transitional housing assistance grants, $15 million for sexual assault victims assistance, $10 million for rural domestic violence and child abuse enforcement assistance, $10 million for legal assistance for victims, $4 million for assistance to tribal governments, and $16 million to support families in the justice system.
Byrne Justice Assistance Grants– $300 million to help prevent, prepare for, and respond to coronavirus, including for purchasing personal protective equipment and controlling outbreaks of coronavirus at prisons, with waivers of the local match and non-supplanting requirements. Public defender funding is also an authorized use of Byrne-JAG grants. The bill additionally prevents the Department of Justice from preventing these funds from going to sanctuary jurisdictions.
Community Oriented Policing Services (COPS)– $300 million for law enforcement hiring grants and for the purchase of personal protective equipment, with waivers of the local match and non-supplanting requirements.
Second Chance Act grants– $250 million for grants to help facilitate the reintegration of ex-prisoners back into society and to prevent recidivism.
Pandemic Justice Response Act Grants– $600 million, including: (1) $500 million to prevent, detect, and stop the presence of COVID-19 in correctional institutions, and for pre-trial citation and release grants, (2) $25 million for Rapid COVID-19 Testing at correctional institutions, and (3) $75 million for Juvenile Specific Services.
Legal Services Corporation– $50 million to address legal needs arising from coronavirus.
Department of Justice, Office of Inspector General– $3 million to prevent, prepare for, and respond to coronavirus, including by providing auditing and oversight of supplemental funds provided to the Justice Department.
H.R. 748, the Coronavirus Aid, Relief, and Economic Security (CARES) Act
In response to the COVID-19 pandemic, Congress passed the bipartisan Coronavirus Aid, Relief, and Economic Security (CARES) Act, which was signed into law on March 27th, to meet the needs of the American people during this unprecedented time. Provisions enacted in the CARES Act include:
Helping the Creative Community
Expanding the definition of small businesses in the Paycheck Protection Program and Economic Injury Disaster Loans to include independent contractors, gig workers, and freelancers
Bankruptcy Protections for Consumers and Small Businesses
Protecting consumers by extending their payment plans from 5 to 7 years and preventing financial assistance from the federal government related to COVID-19 from being treated as income;
Increasing the threshold for small business debtors who may voluntarily elect to proceed under a new subchapter V of chapter 11 of the Bankruptcy Code
Supporting Public Safety and Protecting Federal Prisons
$850 million in funding for the Byrne JAG program for state and local law enforcement;
$100 million in funding for the Bureau of Prisons for COVID-19 response related to facilities, staff, and inmates
Ensuring Access to Justice
$50 million in funding for the Legal Services Corporation, which helps provide legal assistance to under-resourced individuals;
$500,000 in funding for the Supreme Court, $6 million for other federal courts, and $1 million for Federal Defenders
Maintaining a Humane Immigration System
Ensuring that the Trump Administration could not withhold from sanctuary jurisdictions funds appropriated to state and local law for purchase of materials and equipment to respond to COVID-19
Protecting our Elections
$400 million to prevent, prepare for, and respond to COVID-10 for the 2020 Federal election cycle
Securing the Intellectual Property System
Temporary authority for the U.S. Patent and Trademark Office and U.S. Copyright Office to extend deadlines to ensure that the rights of creators will not be harmed
H.R. 6509, the Public Safety Officer Pandemic Response Act of 2020
ThePublic Safety Officer Pandemic Response Act of 2020ensures that public safety officers who contract COVID-19 in the line of duty are eligible for benefits should they become disabled or die from the virus. Read more here.
H.R. 6472, the COVID-19 Price Gouging Prevention Act
TheCOVID-19 Price Gouging Prevention Actprotects consumers from price gouging by prohibiting the sale of goods and services at an unconscionably excessive price during the public health emergency declared as a result of the COVID-19 pandemic. Read morehere.
TheCOVID–19 Correctional Facility Emergency Response Act of 2020 allocates funds to state and local governments to provide testing and treatment for COVID-19 to individuals in correctional facilities. Read more here.
H.R. 7650, the Coronavirus Containment Act of 2020
The Coronavirus Containment Act of 2020 will help stem the global spread of COVID-19 by requiring Immigration and Customs Enforcement (ICE) to conduct testing for COVID-19 on individuals who are slated for removal or repatriation, and suspending the removal of individuals who test positive for COVID-19 until such individuals test negative for the virus in a manner approved by the CDC. Read more here.
Government Oversight:
May 11 - Nadler, Cohen, Scanlon and Raskin Seek Answers on DOJ Threats Against State Imposed Coronavirus Restrictions
April 24 -Nadler, Cohen Seek Answers from DOJ on President Trump's Use of Emergency Powers During COVID-19 Pandemic
April 15 -Nadler & Cohen Send Letter to Democratic Caucus on President Trump's Assertion of "Total" Authority
Criminal Justice/ Public Safety
May 15 - Nadler & Bass Call on U.S. Marshals Service to Provide Answers Regarding their Handling of COVID-19 for those in Custody
April 24 – House Judiciary Members Seek Answers from ATF Regarding the Surge of Ghost Guns During COVID-19 Pandemic
April 10 - Nadler & Bass Demand Answers, Public Briefings from DOJ on Handling COVID-19 in Federal Prisons & CARES Act Implementation as Infections and Deaths Rise in the System
March 30 - After Rising Numbers of Federal Prisoners Test Positive for COVID-19 & First COVID-19 related Death Reported in Federal Prison, Nadler & Bass Renew Call for DOJ to Take Action
March 19 - Nadler & Bass Demand Answers from DOJ About Federal Bureau of Prisons & U.S. Marshals Service Response to Coronavirus
March 12 - Chairman Nadler Asks DOJ About BOP & U.S. Marshals Service Response to Coronavirus & Seeks Answers Regarding Health & Safety of Those in Federal Prisons
April 14 - House & Senate Judiciary Lawmakers Seek Information on USPTO Operations Amidst COVID-19 Pandemic
Consumer Protection:
June 5 - Nadler, Cicilline, Neguse and Members of the House Judiciary Committee Seek Answers from Trump Administration on its Apparent Exploitation of the COVID-19 Pandemic to Push a Reckless Deregulatory Agenda
April 10 - Nadler, Cicilline, and Antitrust Subcommittee Democrats Demand Answers on FTC Approval of Covidien's Acquisition of Newport Medical Instruments
April 1 - House Committee Chairs Request Extension of Public Comment Periods During Coronavirus National Emergency
March 18 - Chairman Nadler, Congressmen Neguse, Cicilline & Sensenbrenner Urge Federal Action on Price Gouging Amidst COVID-19
March 17 - Nadler, Pallone, Cicilline, & Schakowsky Call on FTC to Protect Americans from Price Gouging During COVID-19 Health Crisis
August 10 - Nadler & Lofgren Lead House Democrats in Opposing Trump Administration Unlawful Rule Exploiting COVID-19 to Restrict Asylum
August 4 - Nadler, Neal, Lofgren Call for Changes to Ease the Admission of Temporary Health Workers During the COVID-19 Emergency
July 10 - House and Senate Democrats Urge ICE and DHS to Immediately Withdraw New Guidance that Threatens International Students with Deportation
May 21 - House Democrats Demand ICE End New "Binary Choice" Policy Amidst COVID-19 Pandemic
May 19 - Nadler, Lofgren, Klobuchar, and Durbin Lead Colleagues to Urge Administration to Ensure Access to Free Telephone Calls for Detainees at ICE Detention Centers
April 7 - Nadler & Lofgren Renew Call on ICE to Protect Migrants & Staff During COVID-19 Pandemic
March 30 - Nadler, Feinstein, Durbin, Lofgren Demand DHS Give Due Process As Required By Law to Unaccompanied Children During COVID-19 Outbreak
March 18 - Chairman Nadler Calls on DOJ, EOIR to Suspend Immigration Court Hearings During COVID-19 Outbreak
March 13 - Chairman Nadler Calls on ICE to Protect Migrants & Staff in Detention Facilities Amidst COVID-19 Outbreak
COMMITTEE PRESS RELEASES:
House Passes Bill Championed by Chairman Nadler, Reps. Rose & Pascrell to Compensate Public Safety Officers Who Are Disabled or Die from COVID-19
Chairman Nadler Statement for Subcommittee Hearing on Protecting the Right to Vote During the COVID-19 Pandemic
Congressman Nadler Floor Statement Before Passage of the Public Safety Officer Pandemic Response Act, H.R. 6509
Chairman Nadler Remarks for Virtual Roundtable on COVID-19 in Prisons & Jails
Nadler, Lofgren Statement on Executive Order Halting Immigration
Nadler, Engel, Thompson Statement on Trump Administration's Suspension of Asylum Processing
Chairman Nadler Statement on the Work of the Judiciary Committee on the Democratic COVID-19 Response Package, The Take Responsibility for Workers and Families Act
Chairman Nadler Remarks for Virtual Roundtable on ICE's Response to COVID-19
Nadler, Engel, Thompson, & Menendez Reject Administration's Legal Explanation for Halting Asylum Processing
Chairman Nadler Statement on the Work of the Judiciary Committee on The Heroes Act
United States Courts
U.S. Citizenship and Immigration Services (USCIS)
U.S. Immigration and Customs Enforcement (ICE)
JUNE 10TH: House Judiciary Committee to Hold Hearing on Police Brutality & Racial Profiling
Jun 3, 2020 | Press Releases
May 22, 2020 | Roundtables
Nadler, Cohen, Scanlon and Raskin Seek Answers on DOJ Threats Against State Imposed Coronavirus Restrictions
May 11, 2020 | Press Releases


What is an educational issue?
Educational Issues » What is an educational issue?
What is an issue depends upon who you ask. Managers and policy makers in government would identify issues that are not the same that parents or students may identify. What appears in published research are something of a mix, i.e. they reflect the interests of researchers who may be funded by government or may be working closely with a school or school system or even a handful of students in a class in a school or in an informal educational setting, like a home.
This is why you need to hasten slowly about deciding what issue you want to pursue in this course. You may have a couple of ideas for it. The best way to work towards your issue is to write about it. Yes. In those things called notebooks.
When thinking about an issue, I'd encourage you not to choose the bleedingly obvious. Remember, this is to be the basis of the draft of your professional paper. If you want your colleagues to pay attention to your work1 then repeating of reproducing ideas and arguments that are well known and understood will likely generate yawns rather than gasps and wows.
what if one or more of them were not as they have been assumed to be?
what is unthinkable in the way this issue has been written about?
In other words, giving your paper a little tweak so that it poses interesting questions from the issue you have chosen is a good way to make your work less easily ignored.
1. And, again, it is not a requirement that you publish the paper but after all that work, why not?


text:
PNGes
Locomotive Builders
Locomotive Tech
Car Builders
Car-Builder's Dictionary
Freight Car Tech
Railroad Manuals
Russia Iron
Period Paint
Railroad Commission Reports
Simulating Russia Iron
Modeler's Pages
Hoefer Design Studio
Shady Grove Design Co.
Herman Darr
John Hall Design
Printer-Friendly Format
California \ Donner and Tahoe Railroad
Donner & Tahoe Railroad.
Pacific Lumber & Wood Company.
By Andrew Brandon
In 1893 the Pacific Lumber & Wood Company entered in an agreement with the Truckee Lumber Company to construct a railroad on land they owned. This railroad brought logs from the woods to the east down to the mill pond of the Truckee Lumber Co.
During June and July of that year, the Pacific Lumber & Wood Co. began disassembling their railroad from the bluff above Clinton to the southern end of the Martis Valley, near Murphy's Meadow.
As the line was disassembled it was reconstructed as a temporary railroad westward to Klondike Meadows. From there the railroad was constructed west towards Truckee. On July 13, the work of dismantling the old railroad was complete.
Three locomotives, all owned by the Pacific Lumber & Wood Co., worked the line. Two came from the Pacific Wood & Lumber Co. operation in the Truckee river canyon at Clinton (Camp 24). A third locomotive acquired a Baldwin 0-6-0T from the Eureka & Palisade Railroad, it was formerly from the Ruby Hill Railroad. On the Donner & Tahoe it was named "Dewey". Locomotive #1 put out of service and sold around 1899.
A second branch line was built west along the Truckee river to Donner Creek. Further branches were constructed to Dry Lake and Monte Carlo Meadow.
Though the railroad connected with the Truckee Lumber Company and Lake Tahoe Railway & Transportation Company tracks in Truckee, it operated separate engine facilities on the south side of the Truckee river adjacent Truckee near the current Foxmead Lane.
Traffic over the line slowed during 1899 and ceased in 1900. In 1901 the Truckee Lumber Co. purchased the Pacific Lumber & Wood Co., and dismantled the railroad. The remaining equipment was stored in Truckee and the locomotives were used switching around the mill. In 1911 the Truckee mill ceased operation and the equipment was moved to Oroville for operation on the Butte & Plumas Railway, and later the Swayne Lumber Company.
Revised:Aug 8, 2017
Beckstrom, Paul and Braun, David (1991). Swayne Lumber Company. Seattle: Pacific Fast Mail Company.
Myrick, David F. (1962). Railroads Of Nevada and Eastern California: Volume 1. Berkeley: Howell-North Books. ISBN 978-0-87417-193-8.Recently reprinted by University of Nevada
Farrell, Mallory Hope (2012). Rails Around Lake Tahoe. Berkeley: Signature Press.
Reference Material Available Online:
PacificNG © 2015 - PacificNG.org respects all rights and copyrights to material submitted by contributors.
Design by Andrew Brandon - Graphics by Craig Hoefer | W3C XHTML 1.0 | W3C CSS 2.0


text:
Plantenstedt var en svensk adelsätt, som levde i ett år och nio dagar.

Ättens stamfader var rådmannen i Gävle stad på 1500-talet Olof Mårtensson eller Matsson, som var gift med Karin Andersdotter Grubb från Grubbe i Umeå. En av deras söner, Martinus Olai Gestricius, var far till ärkebiskop Olaus Martini. En annan son, Laurentius Olai Gestricius, var den förste rektorn över skolan i Gävle.

Den tredje sonen, Petrus Olai Gestricius, blev efter studier och en magisterexamen i Tyskland skolrektor i Gävle, men avsattes sedan han vägrade underteckna Johan III:s liturgi. Han ska då ha suttit fängslad på Stockholms slott och sedan sysslat med jordbruk. Enligt en legend som återberättas  av Gabriel Anrep ska han själv ha plöjt sin åker när en enspännare ska ha nått honom med en fullmakt från kungen på Njurunda pastorat. 1593 undertecknade han beslutet från Uppsala möte, och blev året därpå kyrkoherde i Umeå socken, där han 1607 avled. Anrep uppger att han var gift med Catharina Mårtensdotter, dotter till kyrkoherden Martinus Laurentii i Torp, Medelpad, medan Bygdéns herdaminne uppger att hon hette Malin Nilsdotter och var borgmästardotter från Gävle.

En av deras söner Olaus Petri Njurenius, studerade i Helmstedt och blev sedan skolrektor i Gävle med Hille som prebende, och sist kyrkoherde och prost i Umeå socken. Herdaminnet uppger att det var på hans inrådan som Johan Skytte inrättade lappskolan i Lycksele. Njurenius författade också läroböcker samt Lapplandsbeskrifning. Hans första hustru var Barbara Kenicia, vars far Petrus Kenicius var ärkebiskop. Andra hustrun Malin Zachrisdotter var på mödernet släkt med förra via Bureätten, såsom systerdotter till Olof, Jonas och Anders Bure. Olaus Njurenius barn i båda äktenskapen upptog namnet Plantin och Plantinus.

I Olaus Njurenius andra äktenskap föddes Ericus Olai Plantin, som efter studier i Uppsala och Tyskland blev regementspredikant vid överste Rosenschantz' regemente. Invånarna i Umeå socken begärde sedan honom till sin kyrkoherde och prost, och han antog posten 1661. Den befattningen skötte han parallellt med en tjänst som inspektor över Lycksele lappskola. I sin roll som kyrkoherde hade han en stark ställning, och uteslöt underlagmannen Jacob Grubb från nattvarden för att denne låg i tvist med Plantinus svåger Axel Orm, samt skickades som representant för prästerskapet att bevista kröningen av Karl XI i Uppsala. Plantinus första hustru Anna Larsdotter Burman, faster till professor Eric Burman, var släkt på långt håll. Med henne fick han bland annat sonen Olof Plantin.

Olof Plantin studerade först vid Uppsala universitet och fortsatte studierna som auskultant vid Svea hovrätt 1694. han blev först handlingsskrivare där, 1710 notarie, 1716 assessor och 1718 lagman i Västerås. Han adlades 28 juni 1720 med namnet Plantenstedt och introducerades samma år på nummer 1623. Den 7 juli 1721 omkom Olof Plantenstedt då han fick båda benen överkörda av en vagn, och han slöt då ogift sin adliga ätt, troligen den mest kortlivade adelsätten i Sveriges historia.

Källor
 Gabriel Anrep, Svenska adelns Ättar-taflor
 Leonard Bygdén, Umeå socken i Hernösand stift herdaminne

Svenska adelsätter
Bureätten
Artiklar som behöver faktamallar (Adelsätt)

redpajama_set_name: RedPajamaWikipedia


text:
Bigge Reservoir
Ennepe Reservoir
Henne Reservoir
Möhne Reservoir
Sorpe Reservoir
Verse & Fürwigge Reservoir
Safety and oversight
Historical Backsight
Impounded lakes
Lake Baldeney
Lake Harkort
Lake Hengstey
Lake Kemnade
Lake Kettwig
Energy from hydropower
Hydropower stations
Storm water treatment
Regional distribution
Pump stations and pipes
Selected examples
Sewer networks
Sewer network
Extraneous water
Power from waste water
Build & Operate
Micro-pollution
River basin management
Pooling knowledge
[Translate to Englisch:] Radfahren
Rowing and canoeing
Contact for the press
Assembly of Associates
association's administration
Subsidiaries/holdings
Lake Harkort begins in the tailwater of the weir at Stiftsmühle. The weir has four openings with roller gates and is located underneath the Ruhr bridge, where the B 226 trunk road crosses the River Ruhr in the town of Wetter. A hydropower plant and a lock are situated approx. 800 metres downstream, fed by an outlet channel (head race). In 2004, a natural fish ladder was put into operation near the power plant, enabling fish to pass from the River Ruhr into Lake Harkort.
Lake Harkort provides for fine screening of inflowing water from the River Volme and the wastewater treatment plant in Hagen, mixing with the previously treated water from the River Ruhr and the River Lenne in Lake Hengstey. Moreover, the lake serves as a balancing reservoir for the pumped-storage hydroplant at Lake Hengstey. Regular water discharge from Lake Harkort equals the total inflow from the Ruhr, Lenne and Volme river system.
During pumping operation, no water is discharged from Lake Hengstey into Lake Harkort. As a result, the water level of Lake Harkort decreases by up to 50 cm. As soon as the turbines of the storage power station at Lake Hengstey are activated, Lake Hengstey and Lake Harkort fill up again.
After almost 70 years of operation, large parts of the lake were silted up, and in places, the lake was less than 50 cm deep. Therefore, from 1999 to 2003, a large dredging operation was carried out, during which up to 450,000 cubic metres of sediment were removed. Parallel to the dredging works, comprehensive ecological improvements were made to the lake's surroundings, such as a pike spawning area, establishment of a chain of islands, which serves as a retreat for water birds, and the creation of standing water bodies.


text:
Cool Refrigeration Technology
Home refrigeration remains a major contributor to residential energy consumption. A fridge from the mid-1980s used about 1,400 kWh/year. By comparison, modern energy-efficient units use around 35 kWh/year. Today's refrigerators use about 75% less energy than they did over 30 years ago, but more efficient technologies existed before then. Researchers are re-exploring some of these concepts to develop even more efficient refrigeration technologies than there are today.
Einstein Tackled Greenhouse Gas Emissions
In 1922, two students from the Royal Institute of Technology in Stockholm, Sweden, invented an absorption refrigerator. Swedish company AB Arctic put their invention into production in 1923, and was purchased by Whirlpool in 1925. Albert Einstein modified the design, which had no moving parts and didn't require electricity. The fridge produced cold from a heat source like propane or kerosene, so it required a gas line connection.
Einstein's refrigerator had a condenser, evaporator, boiler, and absorber. Charged with ammonia, water, and butane, it was patented in 1930, but was shelved when freon refrigerants became standard during the Great Depression.
Einstein's Design Revived
A lot has changed since the 1920s and 1930s, but some engineers are going back to the drawing board. One of them is Malcolm McCulloch; the electrical engineer based in Oxford has figured out a way to replace the ammonia gas and increase the efficiency of Einstein's concept four-fold. With no moving parts and a solar powered heat pump, the design would require no maintenance.
Magnetic Refrigeration
Green technology apparently isn't as new as many people think. The idea of magnetic refrigeration stems from research conducted in the early 20th century. Working magnetic refrigerators were built by 1933 and could reach temperatures below -458.86°F. They contained gadolinium metal, which heats up when a magnetic field is applied, and cools down when that field is removed.
A permanent-magnet refrigerator that can function at room temperature, developed by Astronautics Corporation of America, has been demonstrated by the U.S. Department of Energy's Ames Laboratory. It eliminates superconducting magnets used in earlier models. The magnetic field and metal alloy replace the gas used in most refrigerators. First tested in 2004, the technology is undergoing additional testing to determine how to apply it to home refrigerators and other applications such as air conditioning, fluid chilling, and electronics cooling.
A system developed by GE labs uses a magnetic material to achieve cooling at 20% more efficiency than current technologies. A water-based fluid flows through a series of magnets. Heat is transferred in a similar way to how chemical refrigerants accomplish this; thereby providing cooling without adding energy.
The technology has been improving. While a research team achieved 2°F cooling within five years, adding a new nickel-manganese alloy for magnets (able to work at room temperatures) dropped temperatures by 80°F. To achieve this, magnets were combined in a series of 50 cooling stages. The next step is to drop the temperature by 100°F using less power.
Factory-Certified Installation and Service for Sub-Zero Refrigerators
Today's Sub-Zero refrigerators include efficient models and innovative designs that can keep food fresh for longer. Although they're not the future of magnetic refrigeration, these appliances come as built-in and custom-fit models that can be configured to suit any household. And with proper maintenance and service, refrigerators can be made even more efficient and longer lasting to save customers money.
At Wilshire Refrigeration & Appliance, Inc., we offer factory-certified refrigerator repairs in Los Angeles, Southern California, and Las Vegas. Request service online call 800-427-3653 to schedule a visit by our experienced technicians.
By wilshire|2019-11-05T01:33:52+00:00October 31st, 2019|News, Refrigeration, Sub-Zero|
Holiday Mode on Your Sub-Zero Refrigerator
Reasons to Buy a Sub-Zero Refrigerator
The Unmatched Beauty of Sub-Zero Integrated Refrigeration