text:
Mundelein explores options for downtown district
Mundelein resident Cesar Bolanos scrutinizes one of the development plans proposed for the town's downtown area during an open house at village hall. Russell Lissau | Staff Photographer
Posted9/21/2016 5:20 AM
Mundelein officials and municipal planners publicly unveiled three possible plans for the village's downtown district during an open house Tuesday night.
The plans included familiar landmarks -- village hall, the police station and Mundelein's Metra station -- and a variety of hypothetical elements such as parks, a parking garage, a proposed performing arts center, new retail and residential buildings, and public plazas.
About 50 people attended the session at village hall. It was led by representatives from Farr Associates, the Chicago firm the village board hired earlier this year to design a development plan for the downtown area.
The plans were depicted on aerial maps and in architectural drawings that were displayed for the public on easels in the boardroom.
The arts center drew particular attention from the attendees and from Doug Farr, president of the Farr Associates planning firm.
"If this is successful, it could be an anchor in the downtown," Farr said.
Attendees were able to walk from map to map and check out the differences between them.
For example, a plan labeled "Market Park" envisioned a performing art center on Chicago Avenue north of Park Street, a public parking garage on Morris Avenue north of Park Street and a dog park on Morris north of Hawley Street.
But a plan called "Downtown Triangle" put the arts center on Seymour Avenue south of Park Street and the garage on Seymour north of Hawley. The dog park was in the same spot as the other plan.
A third option, labeled "Village Grove," placed the performing arts center south of village hall on Plaza Circle and didn't include a dog park or public garage.
"The pieces move around in key ways," Farr said.
The firm's goal for the night was to gather public feedback on the three plans. After a presentation from Farr's staff, people asked questions about a proposed pedestrian overpass over the railroad, the impact on the Park on Park car show and other issues.
Audience members also were asked to vote on their favorite options. The results won't be binding but could help shape the final recommendation.
"As smart as everybody thinks they are, you always miss something," Farr said.
The maps and architectural drawing will be added to the village's website, mundelein.org.
Mundelein scaling back plans for pedestrian overpass at Metra station
Restaurant promising healthier options opens in Mundelein
Nonprofit group wants to open arts center in Mundelein
New plan for former U.S. Music site in Mundelein
Developer wants to turn vacant Mundelein building into retail, restaurant space
Route 45 being repaved in Mundelein, so expect delays
Tina G's helping to build Mundelein's roster of indie eateries
Mundelein buys land in downtown area for $200,000
Eastbound Hawley Street reopens through downtown Mundelein
Mundelein may split taxing district to help fund developments


A federal judge has dismissed a lawsuit filed by two Native American tribes that sued the federal government after the Department of Interior reorganized its education services for tribes.
The Cheyenne River Sioux Tribe and the Rosebud Sioux Tribe had argued that the department failed to properly consult with them as required by federal law and that the decision to reorganize the Bureau of Indian Education violated the 1868 Fort Laramie Treaty. The treaty, in part, required the United States to furnish teachers on the reservations.
In September 2013, former Interior Secretary Sally Jewell and the former secretary of the Department of Education, Arne Duncan, convened a study group to research challenges faced by Bureau of Indian Education schools and to then recommend solutions. The group visited BIE schools and conducted outreach with six listening sessions across the country, including one in South Dakota.
The next spring, the study group released a draft report and sent a letter to tribal leaders identifying four pillars of reform and announcing additional site visits. The letter solicited feedback from the tribes.
The first formal consultation was held in South Dakota, with representatives of both the Cheyenne River and Rosebud tribes attending. Tribal groups responded with complaints, and the study group incorporated the feedback it received into its final report.
In 2015, the Bureau of Indian Education held 12 regional and individual consultation sessions with tribes, including eight in South Dakota, which included individual consultations with Cheyenne River and Rosebud tribes.
Those were followed by six more national meetings, including one held in Rapid City with representatives from the Cheyenne River and Rosebud tribes in attendance.
But Schreier noted that the government had gone to great lengths to meet with the tribes and to solicit feedback. Far from "going through the motions," the meetings and feedback influenced the decisions that were made to reform BIE.
"These meetings not only built upon one another but had a substantive impact on several BIE decisions," Schreier wrote.


I am new to the car business and had no previous experience in sales, only customer service which I bring to every interaction. In my short time with Northstar Hyundai my knowledge of this great product and inherent value has really impressed me.
A superb choice for your transportation needs, our 2018 Dodge Grand Caravan Crew Plus displayed in Brilliant Black Crystal Pearl is supremely versatile and ready to serve you well! Powered by a 3.6 Litre V6 that offers 283hp while connected to a 6 Speed Automatic transmission that gives you ample power when you need. This Front Wheel Drive Minivan is easy to drive while offering near 9.4 L/100km on the highway plus looks stylish with chrome accents, a distinct grille, a stow 'n place roof rack, power dual sliding doors, and a power liftgate.
Our Dodge Grand Caravan enjoys a superior reputation for safety so you can breathe easy behind the wheel. It's equipped with a backup camera, stability control, anti-lock disc brakes, active front head restraints, and airbags. Everything you're looking for to help you take control of your daily routine, our Grand Caravan is all set to give you miles of smiles! Print this page and call us Now... We Know You Will Enjoy Your Test Drive Towards Ownership! We are a AMVIC Licensed Dealer!
Your inquiry has been submitted to Northstar Hyundai.
Your inquiry has been submitted to at Northstar Hyundai.


Using a special magnetic resonance imaging (MRI) technique to image patients with mild traumatic brain injury (MTBI), researchers have identified a biomarker that may predict which patients will do well over the long term, according to a study presented today at the annual meeting of the Radiological Society of North America (RSNA).
The results of the study showed that in some patients the brain may have changed to compensate for the damage caused by the injury.
"This finding has huge potential implications for preventing and repairing the damage that accompanies traumatic brain injury," said Michael Lipton, M.D., Ph.D., associate director of the Gruss Magnetic Resonance Research Center at the Albert Einstein College of Medicine and medical director of MRI at the Montefiore Medical Center, Bronx, N.Y.
According to the Centers for Disease Control and Prevention, each year in the U.S. 1.7 million people sustain traumatic brain injuries. MTBI, or concussion, accounts for at least 75 percent of all traumatic brain injuries. Following a concussion, some patients experience a brief loss of consciousness. Other symptoms include headache, dizziness, memory loss, attention deficit, depression and anxiety. Some of these conditions may persist for months or even years in as many as 30 percent of patients.
Dr. Lipton and colleagues set out to determine the post-concussion symptoms and health-related quality of life for a group of patients with MTBI one year post-injury. The researchers recruited 17 patients with MTBI from the Emergency Department of Montefiore Medical Center. Within two weeks of their injury, the patients underwent diffusion tensor imaging (DTI), which measures the direction of movement of water molecules within and along axons, which comprise the bundles of nerve fibers in the brain's white matter.
"In a traumatic brain injury, it's not one specific area that is affected but multiple areas of the brain connected with axons," Dr. Lipton said.
Using DTI, the researchers measured the uniformity of water flow (called fractional anisotropy or FA) throughout the brain, pinpointing areas with low FA, which are indicative of axonal injury, and areas with abnormally high FA, as compared to healthy brains.
"Abnormally low FA within white matter has been associated with cognitive impairment in patients with TBI," Dr. Lipton said. "We believe that high FA is evidence not of axonal injury, but of brain changes that are occurring in response to the trauma."
One year after their brain injury, the patients completed two standard questionnaires to assess their post-concussion symptoms and evaluate their health status and quality of life.
Comparing the DTI data to the patient questionnaires, the researchers found that the presence of abnormally high FA was a predictor of fewer post-concussion symptoms and higher functioning. The results suggest that in patients who exhibit areas of high FA on DTI, the brain may be actively compensating for its injuries.
"These results offer us a new opportunity for treatment by finding ways to enhance the brain's compensatory mechanisms." Dr. Lipton said.


This attractive rectangular dining table comes complete with four or six cream upholstered chairs which are not only comfortable but extremley stylish. The table is presented with a Walnut finish with a frosted glass insert. The table has a unique look thanks to the centralised frosted glass insert making it stand out. The rich walnut finish give the Chatsworth dining set a luxuraious classy look while remaining at a afforable price.
The set is completed by a choice of 4 or 6 matching dining chairs. They are upholestered in a cream padded seat which is not only comfortable but extremely stylish. WIth a slattered back for added comfort and back support for a relaxing dining experiance.


How to buy Lisk (LSK) on SimpleSwap?
1. Select BTC in the first drop-down list, enter the amount you would like to exchange. In the second drop-down list select LSK. You will be shown the estimated value that you receive after the exchange.
2. Enter the Recipient's Lisk Address. LSK will be sent to this address. Be careful and make sure you use the correct Lisk address.
That's it! In a few moments, your Lisk will be sent to you.
What is Lisk? What is Bitcoin?What is Ethereum?What is XRP?


text:
Q: How To Add more form using J-Query in MVC I have an Employee profile am trying to create and the employee table, It has a collection of Referees and Education data.
So I will like to see some example on how to repeat form using a button like --Add More Qualification Or Referee-- if only the employee has more than one qualification or referee.
Or is there any other means I can achieve this?

redpajama_set_name: RedPajamaStackExchange


text:
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${CURRENT_DIR}/../integration_test_setup.sh" \
  || { echo "integration_test_setup.sh not found!" >&2; exit 1; }

add_to_bazelrc "build --experimental_build_event_upload_strategy=local"

#### SETUP #############################################################

set -e

function set_up() {
  setup_skylib_support

  mkdir -p pkg
  touch pkg/somesourcefile
  cat > pkg/true.sh <<'EOF'
#!/bin/sh
[ -n "${XML_OUTPUT_FILE}" ] && touch "${XML_OUTPUT_FILE}"
exit 0
EOF
  chmod 755 pkg/true.sh
  cat > pkg/false.sh <<'EOF'
#!/bin/sh
[ -n "${XML_OUTPUT_FILE}" ] && touch "${XML_OUTPUT_FILE}"
exit 1
EOF
  chmod 755 pkg/false.sh
  cat > pkg/slowtest.sh <<'EOF'
#!/bin/sh
sleep 1
exit 0
EOF
  chmod 755 pkg/slowtest.sh
  touch pkg/sourcefileA pkg/sourcefileB pkg/sourcefileC
  cat > pkg/BUILD <<'EOF'
exports_files(["somesourcefile"])
sh_test(
  name = "true",
  srcs = ["true.sh"],
  size = "small",
)
sh_test(
  name = "slow",
  srcs = ["slowtest.sh"],
)
test_suite(
  name = "suite",
  tests = ["true"],
)
sh_test(
  name = "flaky",
  srcs = ["false.sh"],
  flaky = True,
)
genrule(
  name = "fails_to_build",
  outs = ["fails_to_build.txt"],
  cmd = "echo This build will fail && false",
  executable = 1,
)
sh_test(
  name = "test_that_fails_to_build",
  srcs = [":fails_to_build"],
)
genrule(
  name = "output_files_and_tags",
  outs = ["out1.txt"],
  cmd = "echo foo > \"$@\"",
  tags = ["tag1", "tag2"]
)
action_listener(
    name = "listener",
    mnemonics = ["Genrule"],
    extra_actions = [":extra"],
    visibility = ["//visibility:public"],
)
extra_action(
   name = "extra",
   cmd = "echo Hello World",
)
filegroup(
  name = "innergroup",
  srcs = ["sourcefileA", "sourcefileB"],
)
filegroup(
  name = "outergroup",
  srcs = ["sourcefileC", ":innergroup"],
)
genrule(
  name = "not_a_test",
  outs = ["not_a_test.txt"],
  cmd = "touch $@",
)
EOF
cat > simpleaspect.bzl <<'EOF'
def _simple_aspect_impl(target, ctx):
    for orig_out in ctx.rule.attr.outs:
        aspect_out = ctx.actions.declare_file(orig_out.name + ".aspect")
        ctx.actions.write(
            output=aspect_out,
            content = "Hello from aspect")
    return struct(output_groups={
        "aspect-out" : depset([aspect_out]) })

simple_aspect = aspect(implementation=_simple_aspect_impl)
EOF
cat > failingaspect.bzl <<'EOF'
def _failing_aspect_impl(target, ctx):
    for orig_out in ctx.rule.attr.outs.to_list():
        aspect_out = ctx.actions.declare_file(orig_out.name + ".aspect")
        ctx.actions.run_shell(
            inputs = [],
            outputs = [aspect_out],
            command = "false",
        )
    return struct(output_groups={
        "aspect-out" : depset([aspect_out]) })

failing_aspect = aspect(implementation=_failing_aspect_impl)
EOF
cat > semifailingaspect.bzl <<'EOF'
def _semifailing_aspect_impl(target, ctx):
    if not ctx.rule.attr.outs:
        return struct(output_groups = {})
    bad_outputs = list()
    good_outputs = list()
    for out in ctx.rule.attr.outs:
        if out.name[0] == "f":
            aspect_out = ctx.actions.declare_file(out.name + ".aspect.bad")
            bad_outputs.append(aspect_out)
            cmd = "false"
        else:
            aspect_out = ctx.actions.declare_file(out.name + ".aspect.good")
            good_outputs.append(aspect_out)
            cmd = "echo %s > %s" % (out.name, aspect_out.path)
        ctx.actions.run_shell(
            inputs = [],
            outputs = [aspect_out],
            command = cmd,
        )
    return [OutputGroupInfo(**{
        "bad-aspect-out": depset(bad_outputs),
        "good-aspect-out": depset(good_outputs),
    })]

semifailing_aspect = aspect(implementation = _semifailing_aspect_impl)
EOF
mkdir -p semifailingpkg/
cat > semifailingpkg/BUILD <<'EOF'
genrule(
  name = "semifail",
  outs = ["out1.txt", "out2.txt", "failingout1.txt"],
  cmd = "for f in $(OUTS); do echo foo > $(RULEDIR)/$$f; done"
)
EOF
touch BUILD
cat > sample_workspace_status <<'EOF'
#!/bin/sh
echo SAMPLE_WORKSPACE_STATUS workspace_status_value
EOF
chmod  755 sample_workspace_status
mkdir -p visibility/hidden
cat > visibility/hidden/BUILD <<'EOF'
genrule(
    name = "hello",
    outs = ["hello.txt"],
    cmd = "echo Hello World > $@",
)
EOF
cat > visibility/BUILD <<'EOF'
genrule(
    name = "cannotsee",
    outs = ["cannotsee.txt"],
    srcs = ["//visibility/hidden:hello"],
    cmd = "cp $< $@",
)

genrule(
    name = "indirect",
    outs = ["indirect.txt"],
    srcs = [":cannotsee"],
    cmd = "cp $< $@",
)
genrule(
    name = "cannotsee2",
    outs = ["cannotsee2.txt"],
    srcs = ["//visibility/hidden:hello"],
    cmd = "cp $< $@",
)
genrule(
    name = "indirect2",
    outs = ["indirect2.txt"],
    srcs = [":cannotsee2.txt"],
    cmd = "cp $< $@",
)
EOF
mkdir -p failingtool
cat > failingtool/BUILD <<'EOF'
genrule(
    name = "tool",
    outs = ["tool.sh"],
    cmd = "false",
)
genrule(
    name = "usestool",
    outs = ["out.txt"],
    tools = [":tool"],
    cmd = "$(location :tool) > $@",
)
EOF
mkdir -p alias/actual
cat > alias/actual/BUILD <<'EOF'
genrule(
  name = "it",
  outs = ["it.txt"],
  cmd = "touch $@",
  visibility = ["//:__subpackages__"],
)
EOF
cat > alias/BUILD <<'EOF'
alias(
  name = "it",
  actual = "//alias/actual:it",
)
EOF
mkdir -p chain
cat > chain/BUILD <<'EOF'
genrule(
  name = "entry0",
  outs = ["entry0.txt"],
  cmd = "echo Hello0; touch $@",
)
EOF
for i in `seq 1 10`
do
    cat >> chain/BUILD <<EOF
genrule(
  name = "entry$i",
  outs = ["entry$i.txt"],
  srcs = [ "entry$(( $i - 1)).txt" ],
  cmd = "echo Hello$i; cp \$< \$@",
)
EOF
done
mkdir -p outputgroups
cat > outputgroups/rules.bzl <<EOF
def _my_rule_impl(ctx):
    group_kwargs = {}
    for name, exit in (("foo", 0), ("bar", 0), ("baz", 1), ("skip", 0)):
        outfile = ctx.actions.declare_file(ctx.label.name + "-" + name + ".out")
        ctx.actions.run_shell(
            outputs = [outfile],
            command = "printf %s > %s && exit %d" % (name, outfile.path, exit),
        )
        group_kwargs[name + "_outputs"] = depset([outfile])
    for name, exit, suffix in (
      ("foo", 1, ".fail.out"), ("bar", 0, ".ok.out"), ("bar", 0, ".ok.out2"),
      ("bar", 0, ".ok.out3"), ("bar", 0, ".ok.out4"), ("bar", 0, ".ok.out5")):
        outfile = ctx.actions.declare_file(ctx.label.name + "-" + name + suffix)
        ctx.actions.run_shell(
            outputs = [outfile],
            command = "printf %s > %s && exit %d" % (name, outfile.path, exit),
        )
        group_kwargs[name + "_outputs"] = depset(
            [outfile], transitive=[group_kwargs[name + "_outputs"]])
    return [OutputGroupInfo(**group_kwargs)]

my_rule = rule(implementation = _my_rule_impl, attrs = {
    "outs": attr.output_list(),
})
EOF
cat > outputgroups/BUILD <<EOF
load("//outputgroups:rules.bzl", "my_rule")
my_rule(name = "my_lib", outs=[])
EOF
}

#### TESTS #############################################################

function test_basic() {
  # Basic properties of the event stream
  # - a completed target explicitly requested should be reported
  # - after success the stream should close naturally, without any
  #   reports about aborted events
  # - the command line is reported in structured and unstructured form
  # - the target_kind is reported
  # - for single-configuration builds, there is precisely one configuration
  #   event reported; also make variables are shown
  bazel test -k --build_event_text_file=$TEST_log --tool_tag=MyFancyTool pkg:true \
    || fail "bazel test failed"
  expect_log 'pkg:true'
  # Command line
  expect_log_once 'args: "test"'
  expect_log_once 'args: "--build_event_text_file='
  expect_log_once 'args: "-k"'
  expect_log_once 'args: "--tool_tag=MyFancyTool"'
  expect_log_once 'args: "pkg:true"'

  # Options parsed. Since cmd_line lines are a substring of the equivalent
  # explicit_cmd_line lines, we expect 2 instances for these.
  expect_log_n 'cmd_line: "--tool_tag=MyFancyTool"' 2
  expect_log_n 'cmd_line: "--keep_going"' 2
  expect_log_once 'explicit_cmd_line: "--keep_going"'
  expect_log_once 'explicit_cmd_line: "--tool_tag=MyFancyTool"'
  expect_log_once 'tool_tag: "MyFancyTool"'

  # Structured command line. Expect the explicit flags to appear twice,
  # in the canonical and original command lines. We did not pass a tool
  # command line, but still expect an empty report.
  expect_log 'command_line_label: "original"'
  expect_log 'command_line_label: "canonical"'
  expect_log 'command_line_label: "tool"'

  expect_log_n 'combined_form: "-k"' 2
  expect_log_n 'option_name: "keep_going"' 2
  expect_log 'option_value: "1"' # too vague to count.

  expect_log_n 'combined_form: "--tool_tag=MyFancyTool"' 2
  expect_log_n 'option_name: "tool_tag"' 2
  expect_log_n 'option_value: "MyFancyTool"' 2

  expect_log_n "combined_form: \"--build_event_text_file=${TEST_log}\"" 2
  expect_log_n 'option_name: "build_event_text_file"' 2
  expect_log_n "option_value: \"${TEST_log}\"" 2

  expect_log_n 'chunk: "test"' 2
  expect_log_n 'chunk: "pkg:true"' 2

  # Build Finished
  expect_log 'build_finished'
  expect_log 'SUCCESS'
  expect_log 'finish_time'
  expect_log_once 'last_message: true'
  expect_not_log 'aborted'
  expect_log_once '^build_tool_logs'

  # Target kind for the sh_test
  expect_log 'target_kind:.*sh'

  # Test size should be reported
  expect_log 'test_size: SMALL'

  # Configuration reported with make variables
  expect_log_once '^configuration '
  expect_log 'key: "TARGET_CPU"'
}

function test_target_information_early() {
  # Verify that certain information is present in the log as part of
  # the TargetConfigured event (verifying that it comes at least before
  # the first TargetCompleted event, which is fine, if we only ask for
  # a single target).
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "bazel test failed"
  expect_log '^completed'
  ed $TEST_log <<'EOF'
1
/^completed/+1,$d
a
...[cut here]
.
w
q
EOF
  expect_log 'target_kind:.*sh'
  expect_log 'test_size: SMALL'

  bazel build --verbose_failures --build_event_text_file=$TEST_log \
    pkg:output_files_and_tags || fail "bazel build failed"
  expect_log '^completed'
  ed $TEST_log <<'EOF'
1
/^completed/+1,$d
a
...[cut here]
.
w
q
EOF
  expect_log 'tag1'
  expect_log 'tag2'
}

function test_workspace_status() {
  bazel test --build_event_text_file=$TEST_log \
     --workspace_status_command=sample_workspace_status pkg:true \
    || fail "bazel test failed"
  expect_log_once '^workspace_status'
  expect_log 'key.*SAMPLE_WORKSPACE_STATUS'
  expect_log 'value.*workspace_status_value'
}

function test_suite() {
  # ...same true when running a test suite containing that test
  bazel test --build_event_text_file=$TEST_log pkg:suite \
    || fail "bazel test failed"
  expect_log 'pkg:true'
  expect_not_log 'aborted'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_test_summary() {
  # Requesting a test, we expect
  # - precisely one test summary (for the single test we run)
  # - that is properly chained (no additional progress events)
  # - the correct overall status being reported
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "bazel test failed"
  expect_log_once '^test_summary '
  expect_not_log 'aborted'
  expect_log 'status.*PASSED'
  expect_not_log 'status.*FAILED'
  expect_not_log 'status.*FLAKY'
}

function test_test_inidivual_results() {
  # Requesting a test, we expect
  # - precisely one test summary (for the single test we run)
  # - that is properly chained (no additional progress events)
  bazel test --build_event_text_file=$TEST_log \
    --runs_per_test=2 pkg:true \
    || fail "bazel test failed"
  expect_log '^test_result'
  expect_log 'run.*1'
  expect_log 'status.*PASSED'
  expect_log_once '^test_summary '
  expect_not_log 'aborted'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_test_attempts() {
  # Run a failing test declared as flaky.
  # We expect to see 3 attempts to happen, and also find the 3 xml files
  # mentioned in the stream.
  # Moreover, as the test consistently fails, we expect the overall status
  # to be reported as failure.
  (bazel test --build_event_text_file=$TEST_log pkg:flaky \
      && fail "test failure expected" ) || true
  expect_log 'attempt.*1$'
  expect_log 'attempt.*2$'
  expect_log 'attempt.*3$'
  expect_log_once '^test_summary '
  expect_log 'status.*FAILED'
  expect_not_log 'status.*PASSED'
  expect_not_log 'status.*FLAKY'
  expect_not_log 'aborted'
  expect_log '^test_result'
  expect_log 'test_action_output'
  expect_log 'flaky/.*_1.xml'
  expect_log 'flaky/.*_2.xml'
  expect_log 'flaky/.*test.xml'
  expect_log 'name:.*test.log'
  expect_log 'name:.*test.xml'
  expect_log 'name:.*TESTS_FAILED'
  expect_not_log 'name:.*SUCCESS'
}

function test_test_runtime() {
  bazel test --build_event_text_file=$TEST_log pkg:slow \
    || fail "bazel test failed"
  expect_log 'pkg:slow'
  expect_log '^test_result'
  expect_log 'test_attempt_duration_millis.*[1-9]'
  expect_log 'build_finished'
  expect_log 'SUCCESS'
  expect_log 'finish_time'
  expect_not_log 'aborted'
}

function test_test_start_times() {
  # Verify that the start time of a test is reported, regardless whether
  # it was cached or not.
  bazel clean --expunge
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "bazel test failed"
  expect_log 'test_attempt_start_millis_epoch.*[1-9]'
  expect_not_log 'cached_locally'
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "bazel test failed"
  expect_log 'test_attempt_start_millis_epoch.*[1-9]'
  expect_log 'cached_locally.*true'
}

function test_test_attempts_multi_runs() {
  # Check individual test attempts. Even in more complicated
  # situations, with some test rerun and some not, all events are properly
  # announced by the test actions (and not chained into the progress events).
  ( bazel test --build_event_text_file=$TEST_log \
    --runs_per_test=2 pkg:true pkg:flaky \
    && fail "test failure expected" ) || true
  expect_log 'run.*1'
  expect_log 'attempt.*2'
  expect_not_log 'aborted'
}

function test_test_attempts_multi_runs_flake_detection() {
  # Check individual test attempts. Even in more complicated
  # situations, with some test rerun and some not, all events are properly
  # announced by the test actions (and not chained into the progress events).
  ( bazel test --build_event_text_file=$TEST_log \
    --runs_per_test=2 --runs_per_test_detects_flakes pkg:true pkg:flaky \
    && fail "test failure expected" ) || true
  expect_log 'run.*1'
  expect_log 'attempt.*2'
  expect_not_log 'aborted'
}

function test_cached_test_results() {
  # Verify that both, clean and cached test results are reported correctly,
  # including the appropriate reference to log files.
  bazel clean --expunge
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "Clean testing pkg:true failed"
  expect_log '^test_result'
  expect_log 'name:.*test.log'
  expect_log 'name:.*test.xml'
  expect_not_log 'cached_locally'
  expect_not_log 'aborted'
  bazel test --build_event_text_file=$TEST_log pkg:true \
    || fail "Second testing of pkg:true failed"
  expect_log '^test_result'
  expect_log 'name:.*test.log'
  expect_log 'name:.*test.xml'
  expect_log 'cached_locally'
  expect_not_log 'aborted'
}

function test_target_complete() {
  bazel build --verbose_failures --build_event_text_file=$TEST_log \
  pkg:output_files_and_tags || fail "bazel build failed"
  expect_log 'output_group'
  expect_log 'out1.txt'
  expect_log 'tag1'
  expect_log 'tag2'
}

function test_test_target_complete() {
    bazel test --build_event_text_file="${TEST_log}" pkg:true \
          || tail "expected success"
    expect_log_once '^completed'

    cp "${TEST_log}" complete_event
    ed complete_event <<'EOF'
1
/^complete
1,.-1d
/^}
+1,$d
w
q
EOF
    grep -q 'output_group' complete_event \
        || fail "expected reference to output in complete event"

    expect_log 'name: *"pkg/true.sh"'
}

function test_extra_action() {
  # verify that normal successful actions are not reported, but extra actions
  # are
  bazel build --build_event_text_file=$TEST_log \
    pkg:output_files_and_tags || fail "bazel build failed"
  expect_not_log '^action'
  bazel build --build_event_text_file=$TEST_log \
    --experimental_action_listener=pkg:listener \
    pkg:output_files_and_tags || fail "bazel build with listener failed"
  expect_log '^action'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_action_ids() {
  bazel build --build_event_text_file=$TEST_log \
    --experimental_action_listener=pkg:listener \
    pkg:output_files_and_tags || fail "bazel build with listener failed"
  expect_log '^action'

  # Action ids should contain label and configuration if those exist.
  # Assumes action_completed id is 6 lines long
  for id_line in $(grep -n 'action_completed {' $TEST_log | cut -f 1 -d :)
  do
    sed -n "$id_line,$((id_line+6))p" $TEST_log > "$TEST_TMPDIR/event_id.txt"
    assert_contains '.*primary_output: .*' "$TEST_TMPDIR/event_id.txt"
    assert_contains '.*label: .*' "$TEST_TMPDIR/event_id.txt"
    assert_contains '.*configuration.*' "$TEST_TMPDIR/event_id.txt"
    assert_contains '.*id: .*' "$TEST_TMPDIR/event_id.txt"
  done
}

function test_bep_output_groups() {
  # In outputgroups/rules.bzl, the `my_rule` definition defines four output
  # groups with different (successful/failed) action counts:
  #    1. foo_outputs (1 successful/1 failed)
  #    2. bar_outputs (6/0)
  #    3. baz_outputs (0/1)
  #    4. skip_outputs (1/0)
  #
  # We request the first three output groups and expect only bar_outputs to
  # appear in BEP, because all actions contributing to bar_outputs succeeded.
  bazel build //outputgroups:my_lib \
   --keep_going\
   --build_event_text_file=bep_output \
   --build_event_json_file="$TEST_log" \
   --build_event_max_named_set_of_file_entries=1 \
   --output_groups=foo_outputs,bar_outputs,baz_outputs \
    && fail "expected failure" || true

  for name in bar; do
    expect_log "\"name\":\"${name}_outputs\""
    expect_log "\"name\":\"outputgroups/my_lib-${name}.out\""
  done
  # Verify that nested NamedSetOfFiles structure is preserved in BEP.
  expect_log "namedSet.*\"1\".*bar.ok.*fileSets.*\"2\""
  expect_log "namedSet.*\"2\".*bar.ok.*fileSets.*\"3\""
  expect_log "namedSet.*\"3\".*bar.ok.*fileSets.*\"4\""

  for name in foo baz skip; do
    expect_not_log "\"name\":\"${name}_outputs\""
    expect_not_log "\"name\":\"outputgroups/my_lib-${name}.out\""
  done
}

function test_aspect_artifacts() {
  bazel build --build_event_text_file=$TEST_log \
    --aspects=simpleaspect.bzl%simple_aspect \
    --output_groups=aspect-out \
    pkg:output_files_and_tags || fail "bazel build failed"
  expect_log 'aspect.*simple_aspect'
  expect_log 'name.*aspect-out'
  expect_log 'name.*out1.txt.aspect'
  expect_not_log 'aborted'
  expect_log_n '^configured' 2
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_failing_aspect() {
  bazel build --build_event_text_file=$TEST_log \
    --aspects=failingaspect.bzl%failing_aspect \
    --output_groups=aspect-out \
    pkg:output_files_and_tags && fail "expected failure" || true
  expect_log 'aspect.*failing_aspect'
  expect_log '^finished'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_failing_aspect_bep_output_groups() {
  # In outputgroups/rules.bzl, the `my_rule` definition defines four output
  # groups with different (successful/failed) action counts:
  #    1. foo_outputs (1 successful/1 failed)
  #    2. bar_outputs (6/0)
  #    3. baz_outputs (0/1)
  #    4. skip_outputs (1/0)
  #
  # We request the first two output groups and expect only bar_outputs to
  # appear in BEP, because all actions contributing to bar_outputs succeeded.
  #
  # Similarly, in semifailingaspect.bzl, the `semifailing_aspect` definition
  # defines two output groups: good-aspect-out and bad-aspect-out. We only
  # expect to see good-aspect-out in BEP because its actions all succeeded.
  bazel build //semifailingpkg:semifail //outputgroups:my_lib \
   --keep_going \
   --build_event_text_file=bep_output \
   --build_event_json_file="$TEST_log" \
   --build_event_max_named_set_of_file_entries=1 \
   --aspects=semifailingaspect.bzl%semifailing_aspect \
   --output_groups=foo_outputs,bar_outputs,good-aspect-out,bad-aspect-out \
    && fail "expected failure" || true

  for name in bar; do
    expect_log "\"name\":\"${name}_outputs\""
    expect_log "\"name\":\"outputgroups/my_lib-${name}.out\""
  done

  for name in foo baz skip; do
    expect_not_log "\"name\":\"${name}_outputs\""
    expect_not_log "\"name\":\"outputgroups/my_lib-${name}.out\""
  done

  expect_log "\"name\":\"good-aspect-out\""
  expect_not_log "\"name\":\"bad-aspect-out\""
}

function test_build_only() {
  # When building but not testing a test, there won't be a test summary
  # (as nothing was tested), so it should not be announced.
  # Still, no event should only be chained in by progress events.
  bazel build --build_event_text_file=$TEST_log pkg:true \
    || fail "bazel build failed"
  expect_not_log 'aborted'
  expect_not_log 'test_summary '
  # Build Finished
  expect_log 'build_finished'
  expect_log 'finish_time'
  expect_log 'SUCCESS'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_command_whitelisting() {
  # We expect the "help" command to not generate a build-event stream,
  # but the "build" command to do.
  bazel shutdown
  rm -f bep.txt
  bazel help --build_event_text_file=bep.txt || fail "bazel help failed"
  ( [ -f bep.txt ] && fail "bazel help generated a build-event file" ) || :
  bazel version --build_event_text_file=bep.txt || fail "bazel help failed"
  ( [ -f bep.txt ] && fail "bazel version generated a build-event file" ) || :
  bazel build --build_event_text_file=bep.txt //pkg:true \
      || fail "bazel build failed"
  [ -f bep.txt ] || fail "build did not generate requested build-event file"
  bazel shutdown
}

function test_multiple_transports() {
  # Verifies usage of multiple build event transports at the same time
    outdir=$(mktemp -d ${TEST_TMPDIR}/bazel.XXXXXXXX)
    bazel test \
      --build_event_text_file=${outdir}/test_multiple_transports.txt \
      --build_event_binary_file=${outdir}/test_multiple_transports.bin \
      --build_event_json_file=${outdir}/test_multiple_transports.json \
      pkg:suite || fail "bazel test failed"
  [ -f ${outdir}/test_multiple_transports.txt ] || fail "Missing expected file test_multiple_transports.txt"
  [ -f ${outdir}/test_multiple_transports.bin ] || fail "Missing expected file test_multiple_transports.bin"
  [ -f ${outdir}/test_multiple_transports.json ] || fail "Missing expected file test_multiple_transports.bin"
}

function test_basic_json() {
  # Verify that the json transport writes json files
  bazel test --build_event_json_file=$TEST_log pkg:true \
    || fail "bazel test failed"
  # check for some typical fragments that would be encoded differently in the
  # proto text format.
  expect_log '"started"'
  expect_log '"id"'
  expect_log '"children" *: *\['
  expect_log '"overallSuccess": *true'
}

function test_root_cause_early() {
  (bazel build --build_event_text_file=$TEST_log \
         pkg:fails_to_build && fail "build failure expected") || true
  # We expect precisely one action being reported (the failed one) and
  # precisely on report on a completed target; moreover, the action has
  # to be reported first.
  expect_log_once '^action'
  expect_log 'type: "Genrule"'
  expect_log_once '^completed'
  expect_not_log 'success: true'
  local naction=`grep -n '^action' $TEST_log | cut -f 1 -d :`
  local ncomplete=`grep -n '^completed' $TEST_log | cut -f 1 -d :`
  [ $naction -lt $ncomplete ] \
      || fail "failed action not before completed target"
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_action_conf() {
  # Verify that the expected configurations for actions are reported.
  # The example contains a configuration transition (from building for
  # target to building for host). As the action fails, we expect the
  # configuration of the action to be reported as well.
  (bazel build --build_event_text_file=$TEST_log \
         -k failingtool/... && fail "build failure expected") || true
  count=`grep '^configuration' "${TEST_log}" | wc -l`
  [ "${count}" -eq 2 ] || fail "Expected 2 configurations, found $count."
}

function test_loading_failure() {
  # Verify that if loading fails, this is properly reported as the
  # reason for the target expansion event not resulting in targets
  # being expanded.
  (bazel build --build_event_text_file=$TEST_log \
         //does/not/exist && fail "build failure expected") || true
  expect_log_once 'aborted'
  expect_log_once 'reason: LOADING_FAILURE'
  expect_log 'description.*BUILD file not found'
  expect_not_log 'expanded'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_visibility_failure() {
  bazel shutdown
  (bazel build --build_event_text_file=$TEST_log \
         //visibility:cannotsee && fail "build failure expected") || true
  expect_log 'reason: ANALYSIS_FAILURE'
  expect_log '^aborted'

  # The same should hold true, if the server has already analyzed the target
  (bazel build --build_event_text_file=$TEST_log \
         //visibility:cannotsee && fail "build failure expected") || true
  expect_log 'reason: ANALYSIS_FAILURE'
  expect_log '^aborted'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_visibility_indirect() {
  # verify that an indirect visibility error is reported, including the
  # target that violates visibility constraints.
  bazel shutdown
  (bazel build --build_event_text_file=$TEST_log \
         //visibility:indirect && fail "build failure expected") || true
  expect_log 'reason: ANALYSIS_FAILURE'
  expect_log '^aborted'
  expect_log '//visibility:cannotsee'
  # There should be precisely one events with target_completed as event id type
  (echo 'g/^id/+1p'; echo 'q') | ed "${TEST_log}" 2>&1 | tail -n +2 > event_id_types
  [ `grep target_completed event_id_types | wc -l` -eq 1 ] \
      || fail "not precisely one target_completed event id"
}

function test_independent_visibility_failures() {
  bazel shutdown
  (bazel build -k --build_event_text_file=$TEST_log \
         //visibility:indirect //visibility:indirect2 \
       && fail "build failure expected") || true
  (echo 'g/^aborted/.,+2p'; echo 'q') | ed "${TEST_log}" 2>&1 | tail -n +2 \
     > aborted_events
  [ `grep '^aborted' aborted_events | wc -l` \
        -eq `grep ANALYSIS_FAILURE aborted_events | wc -l` ] \
      || fail "events should only be aborted due to analysis failure"
}

function test_loading_failure_keep_going() {
  (bazel build --build_event_text_file=$TEST_log \
         -k //does/not/exist && fail "build failure expected") || true
  expect_log_once 'aborted'
  expect_log_once 'reason: LOADING_FAILURE'
  # We don't expect an expanded message in this case, since all patterns failed.
  expect_log 'description.*BUILD file not found'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_loading_failure_keep_going_two_targets() {
  (bazel build --build_event_text_file=$TEST_log \
         -k //does/not/exist //pkg:somesourcefile && fail "build failure expected") || true
  expect_log_once 'aborted'
  expect_log_once 'reason: LOADING_FAILURE'
  expect_log_once '^expanded'
  expect_log 'description.*BUILD file not found'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

# TODO(aehlig): readd, once we stop reporting the important artifacts
#               for every target completion
#
# function test_artifact_dedup() {
#   bazel build --build_event_text_file=$TEST_log \
#       pkg:innergroup pkg:outergroup \
#   || fail "bazel build failed"
#   expect_log_once "name.*sourcefileA"
#   expect_log_once "name.*sourcefileB"
#   expect_log_once "name.*sourcefileC"
#   expect_not_log 'aborted'
# }

function test_stdout_stderr_reported() {
  # Verify that bazel's stdout/stderr is included in the build event stream.

  # Make sure we generate enough output on stderr
  bazel clean --expunge
  bazel test --build_event_text_file=$TEST_log --curses=no \
        pkg:slow 2>stderr.log || fail "slowtest failed"
  # Take a line that is likely not the output of an action (possibly reported
  # independently in the stream) and still characteristic enough to not occur
  # in the stream by accident. Taking the first line mentioning the test name
  # is likely some form of progress report.
  sample_line=`cat stderr.log | grep 'slow' | head -n 1 | tr '[]\r' '....'`
  echo "Sample regexp of stderr: ${sample_line}"
  expect_log "stderr.*${sample_line}"
}

function test_unbuffered_stdout_stderr() {
   # Verify that the option --bes_outerr_buffer_size ensures that messages are
   # flushed out to the BEP immediately
  bazel clean --expunge
  bazel build --build_event_text_file="${TEST_log}" \
        --bes_outerr_buffer_size=1 chain:entry10
  progress_count=$(grep '^progress' "${TEST_log}" | wc -l )
  # As we requested no buffereing, each action output has to be reported
  # immediately, creating an individual progress event.
  [ "${progress_count}" -gt 10 ] || fail "expected at least 10 progress events"
}

function test_srcfiles() {
  # Even if the build target is a source file, the stream should be correctly
  # and bazel shouldn't crash.
    bazel build --build_event_text_file=$TEST_log \
          pkg:somesourcefile || fail "build failed"
  expect_log 'SUCCESS'
  expect_log_n '^configuration' 2
  expect_not_log 'aborted'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_test_fails_to_build() {
  (bazel test --build_event_text_file=$TEST_log \
         pkg:test_that_fails_to_build && fail "test failure expected") || true
  expect_not_log '^test_summary'
  expect_log 'last_message: true'
  expect_log 'BUILD_FAILURE'
  expect_log 'last_message: true'
  expect_log 'command_line:.*This build will fail'
  expect_log_once '^build_tool_logs'
}

function test_no_tests_found() {
  (bazel test --build_event_text_file=$TEST_log \
         pkg:not_a_test && fail "failure expected") || true
  expect_not_log '^test_summary'
  expect_log 'last_message: true'
  expect_log 'NO_TESTS_FOUND'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_no_tests_found_build_failure() {
  (bazel test -k --build_event_text_file=$TEST_log \
         pkg:not_a_test pkg:fails_to_build && fail "failure expected") || true
  expect_not_log '^test_summary'
  expect_log 'last_message: true'
  expect_log 'yet testing was requested'
  expect_log 'BUILD_FAILURE'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_alias() {
  bazel build --build_event_text_file=$TEST_log alias/... \
    || fail "build failed"
  # If alias:it would be reported as the underlying alias/actual:it, then
  # there would be no event for alias:it. So we can check the correct reporting
  # by checking for aborted events.
  expect_not_log 'aborted'

  (echo 'g/^completed/?label?p'; echo 'q') | ed "${TEST_log}" 2>&1 | tail -n +2 > completed_labels
  cat completed_labels
  grep -q '//alias:it' completed_labels || fail "//alias:it not completed"
  grep -q '//alias/actual:it' completed_labels \
      || fail "//alias/actual:it not completed"
  [ `cat completed_labels | wc -l` -eq 2 ] \
      || fail "more than two targets completed"
  rm -f completed_labels
  bazel build --build_event_text_file=$TEST_log alias:it \
    || fail "build failed"
  expect_log 'label: "//alias:it"'
  expect_not_log 'label: "//alias/actual'
}

function test_circular_dep() {
  touch test.sh
  chmod u+x test.sh
  cat > BUILD <<'EOF'
sh_test(
  name = "circular",
  srcs = ["test.sh"],
  deps = ["circular"],
)
EOF
  (bazel build --build_event_text_file="${TEST_log}" :circular \
      && fail "Expected failure") || :
  expect_log_once 'last_message: true'
  expect_log 'name: "PARSING_FAILURE"'

  (bazel test --build_event_text_file="${TEST_log}" :circular \
      && fail "Expected failure") || :
  expect_log_once 'last_message: true'
  expect_log 'name: "PARSING_FAILURE"'
}

function test_missing_file() {
  cat > BUILD <<'EOF'
filegroup(
  name = "badfilegroup",
  srcs = ["doesnotexist"],
)
EOF
  (bazel build --build_event_text_file="${TEST_log}" :badfilegroup \
    && fail "Expected failure") || :
  # There should be precisely one event with target_completed as event id type
  (echo 'g/^id/+1p'; echo 'q') | ed "${TEST_log}" 2>&1 | tail -n +2 > event_id_types
  [ `grep target_completed event_id_types | wc -l` -eq 1 ] \
      || fail "not precisely one target_completed event id"
  # Moreover, we expect precisely one event identified by an unconfigured label
  [ `grep unconfigured_label event_id_types | wc -l` -eq 1 ] \
      || fail "not precisely one unconfigured_label event id"

  (bazel build --build_event_text_file="${TEST_log}" :badfilegroup :doesnotexist \
    && fail "Expected failure") || :
  # There should be precisely two events with target_completed as event id type
  (echo 'g/^id/+1p'; echo 'q') | ed "${TEST_log}" 2>&1 | tail -n +2 > event_id_types
  [ `grep target_completed event_id_types | wc -l` -eq 2 ] \
      || fail "not precisely one target_completed event id"
  # Moreover, we expect precisely one event identified by an unconfigured label
  [ `grep unconfigured_label event_id_types | wc -l` -eq 1 ] \
      || fail "not precisely one unconfigured_label event id"
}

function test_tool_command_line() {
  bazel build --experimental_tool_command_line="foo bar" --build_event_text_file=$TEST_log \
    || fail "build failed"

  # Check the arglist
  expect_log_once 'args: "build"'
  expect_log_once 'args: "--experimental_tool_command_line='

  # Structured command line. Expect the explicit flags to appear twice,
  # in the canonical and original command lines
  expect_log 'command_line_label: "original"'
  expect_log 'command_line_label: "canonical"'
  expect_log 'command_line_label: "tool"'

  # Expect the actual tool command line flag to appear twice, because of the two
  # bazel command lines that are reported
  expect_log_n 'combined_form: "--experimental_tool_command_line=' 2
  expect_log_n 'option_name: "experimental_tool_command_line"' 2
  expect_log_n 'option_value: "foo bar"' 2

  # Check the contents of the tool command line
  expect_log_once 'chunk: "foo bar"'
}

function test_noanalyze() {
  bazel build --noanalyze --build_event_text_file="${TEST_log}" pkg:true \
    || fail "build failed"
  expect_log_once '^aborted'
  expect_log 'reason: NO_ANALYZE'
  expect_log 'last_message: true'
  expect_log_once '^build_tool_logs'
}

function test_nobuild() {
  bazel build --nobuild --build_event_text_file="${TEST_log}" pkg:true \
    || fail "build failed"
  expect_log_once '^aborted'
  expect_log 'reason: NO_BUILD'
}

function test_server_pid() {
  bazel build --test_output=all --build_event_text_file=bep.txt \
    || fail "Build failed but should have succeeded"
  cat bep.txt | grep server_pid >> "$TEST_log"
  expect_log_once "server_pid:.*$(bazel info server_pid)$"
  rm bep.txt
}

function test_bep_report_only_important_artifacts() {
  bazel build --test_output=all --build_event_text_file=bep.txt \
    //pkg:true || fail "Build failed but should have succeeded"
  cat bep.txt >> "$TEST_log"
  expect_not_log "_hidden_top_level_INTERNAL_"
  rm bep.txt
}

function test_starlark_flags() {
  cat >> build_setting.bzl <<EOF
def _build_setting_impl(ctx):
  return []
int_setting = rule(
  implementation = _build_setting_impl,
  build_setting = config.int(flag=True)
)
EOF
  cat >> BUILD <<EOF
load('//:build_setting.bzl', 'int_setting')
int_setting(name = 'my_int_setting',
  build_setting_default = 42,
)
EOF

  bazel build --build_event_text_file=bep.txt \
    --//:my_int_setting=666 \
    //pkg:true || fail "Build failed but should have succeeded"
  cat bep.txt >> "$TEST_log"
  rm bep.txt

  expect_log 'option_name: "//:my_int_setting"'
  expect_log 'option_value: "666"'
}

function test_empty_tree_in_named_files() {
  mkdir -p foo
  cat > foo/rule.bzl <<'EOF'
def _leaf_impl(ctx):
  ctx.actions.write(output = ctx.outputs.out2, content = 'hello\n')
  ctx.actions.write(output = ctx.outputs.out1, content = 'hello\n')
  return [DefaultInfo(files = depset([ctx.outputs.out1, ctx.outputs.out2]))]

def _top_impl(ctx):
  dir = ctx.actions.declare_directory('dir')
  ctx.actions.run_shell(outputs = [dir], command = 'true')
  return [DefaultInfo(files = depset([dir],
                      transitive = [dep[DefaultInfo].files
                                        for dep in ctx.attr.deps]))]

leaf = rule(
    implementation = _leaf_impl,
    attrs = {"out1": attr.output(), "out2": attr.output()},
)

top = rule(
    implementation = _top_impl,
    attrs = { "deps": attr.label_list()}
)
EOF
  cat > foo/BUILD <<'EOF'
load('//foo:rule.bzl', 'leaf', 'top')

leaf(name = 'leaf', out1 = '1.out', out2 = '2.out')
top(name = 'top', deps = [':leaf'])
EOF

  bazel build --build_event_text_file=bep.txt //foo:top >& "$TEST_log" \
      || fail "Expected success"
  expect_not_log ClassCastException
  cat bep.txt > "$TEST_log"
  expect_log "1.out"
  expect_log "2.out"
}

function test_tree_to_split_in_named_files() {
  mkdir -p foo
  cat > foo/rule.bzl <<'EOF'
def _leaf_impl(ctx):
  ctx.actions.write(output = ctx.outputs.out2, content = 'hello\n')
  ctx.actions.write(output = ctx.outputs.out1, content = 'hello\n')
  return [DefaultInfo(files = depset([ctx.outputs.out1, ctx.outputs.out2]))]

def _top_impl(ctx):
  dir = ctx.actions.declare_directory('dir')
  ctx.actions.run_shell(outputs = [dir],
                        command = 'touch %s/{out1,out2,out3}' % dir.path)
  return [DefaultInfo(files = depset([dir],
                      transitive = [dep[DefaultInfo].files
                                        for dep in ctx.attr.deps]))]

leaf = rule(
    implementation = _leaf_impl,
    attrs = {"out1": attr.output(), "out2": attr.output()},
)

top = rule(
    implementation = _top_impl,
    attrs = { "deps": attr.label_list()}
)
EOF
  cat > foo/BUILD <<'EOF'
load('//foo:rule.bzl', 'leaf', 'top')

leaf(name = 'leaf', out1 = '1.out', out2 = '2.out')
top(name = 'top', deps = [':leaf'])
EOF

  bazel build --build_event_text_file=bep.txt \
      --build_event_max_named_set_of_file_entries=2 //foo:top >& "$TEST_log" \
      || fail "Expected success"
  mv bep.txt "$TEST_log"
  # Depending on a hard-coded index is a bit brittle, but 0 should be the index
  # of the top-level nested set at least.
  # Strip newlines. BSD grep doesn't support -z, so use tr first.
  tr -s <"$TEST_log" '\n' ' ' |
      grep -q \
          'event { id { named_set { id: "0" } } named_set_of_files { file_sets { id: "[0-9]" } file_sets { id: "[0-9]" } } }' \
      || fail "Couldn't find top-level named set"
}

run_suite "Integration tests for the build event stream"

redpajama_set_name: RedPajamaGithub


text:
15-year-old on trial for alleged rape of care worker
A teenager in care subjected his support worker to a night time rape ordeal in her car at an isolated spot near Honiton. Exeter Crown Court heard the 15year-old, who already has a conviction for assaulting another care worker at a previous home, and th
A teenager in care subjected his support worker to a night time rape ordeal in her car at an isolated spot near Honiton.
Exeter Crown Court heard the 15year-old, who already has a conviction for assaulting another care worker at a previous home, and the woman were driving back to the residential care home after a go-karting expedition to North Devon.
He threatened the woman, who was driving, and told her to stop the car in a layby. He then got on top of her in the passenger seat but was so inept that she had to help him take her clothes off. She was later to tell police that she had done this because of his threatening manner and the fact that she "just wanted it all to be over".
Prosecutor Richard Crabb said, when the youth did not manage to complete the sex act, he forced the woman to perform oral sex on her in the driver's seat before raping her again in the passenger seat.
The prosecutor said the victim was so terrified that she even offered to take the teenager to a massage parlour and pay for a prostitute. But that did not save her from the rape ordeal, which went on for some time.
After he had finished, the 15-year-old told the victim: "I can't let you go because you will tell the police and I will be sent to prison."
Mr Crabb said that frightened the care worker even more and she told the youth: "It is all right. I will say it was my fault. I am not going to the police, no one will ever know."
The jury heard that seemed to placate the defendant who allowed the woman to drive him into a nearby town. She managed to escape from the vehicle and tried to flag down two passing motorists without success. She then ran into The Carlton Inn, Honiton, in a distraught condition and the police were called.
The teenager was later discovered hiding in wardrobe back at his care home after he caught a cab and used £10 the woman had given him to pay the fare.
When he was interviewed later, the defendant agreed with what the woman had said as far as the facts of the rapes were concerned but asserted that she had consented to what had happened. He went as far as to suggest that it was all her idea.
"It is absolutely clear that she was not consenting," said Mr Crabb. "There were threats of violence and she made it clear she was not agreeing to what had occurred."
The youth, who cannot be named for legal reasons, has pleaded not guilty to three charges of rape and the trial continues.

redpajama_set_name: RedPajamaCommonCrawl


text:
Sezonul 1996-1997 al Cupei Cupelor a fost câștigat de Barcelona, care a învins-o în finală pe Paris Saint-Germain.

Calificări

|}

Prima manșă

A doua manșă

KR Reykjavík s-a calificat cu scorul general de 3–2.

Brann s-a calificat cu scorul general de 5–2.

Ruch Chorzów s-a calificat cu scorul general de 6–1.

Budapest Honvéd s-a calificat cu scorul general de 2–0.

NK Varteks s-a calificat cu scorul general de 5–1.

Vaduz s-a calificat cu scorul general de 4–2 on penalties.

Sparta Praga s-a calificat cu scorul general de 10–1.

Dinamo Batumi s-a calificat cu scorul general de 9–0.

Nyva Vinnytsia s-a calificat cu scorul general de 2–2 on Regula golului marcat în deplasare.

Chemlon Hummené s-a calificat cu scorul general de 3–0.

Sion s-a calificat cu scorul general de 4–2.

Olimpija Ljubljana s-a calificat cu scorul general de 3–4 on penalties.

Steaua Roșie Belgrad s-a calificat cu scorul general de 1–1 on Regula golului marcat în deplasare.

MyPa s-a calificat cu scorul general de 2–1.

AEK Larnaca s-a calificat cu scorul general de 5–1.

Constructorul Chișinău s-a calificat cu scorul general de 3–3 on Regula golului marcat în deplasare.

Gloria Bistrița s-a calificat cu scorul general de 4–2.

Prima rundă

|}

Prima manșă

A doua manșă

Nîmes s-a calificat cu scorul general de 5–2.

Sparta Praga s-a calificat cu scorul general de 3–3 on Regula golului marcat în deplasare.

Barcelona s-a calificat cu scorul general de 2–0.

Galatasaray s-a calificat cu scorul general de 5–0.

Steaua Roșie Belgrad s-a calificat cu scorul general de 4–1.

Liverpool s-a calificat cu scorul general de 4–1.

Sion s-a calificat cu scorul general de 6–0.

Olimpija Ljubljana s-a calificat cu scorul general de 1–1 on Regula golului marcat în deplasare.

Brann s-a calificat cu scorul general de 6–3.

AIK s-a calificat cu scorul general de 2–1.

Benfica s-a calificat cu scorul general de 5–1.

AEK Atena s-a calificat cu scorul general de 3–1.

Fiorentina s-a calificat cu scorul general de 2–1.

PSV Eindhoven s-a calificat cu scorul general de 4–1.

Paris Saint-Germain s-a calificat cu scorul general de 7–0.

Lokomotiv Moscova s-a calificat cu scorul general de 2–2 on Regula golului marcat în deplasare.

A doua rundă

|}

Prima manșă

A doua manșă

Liverpool s-a calificat cu scorul general de 8–4.

AIK s-a calificat cu scorul general de 3–2.

Fiorentina s-a calificat cu scorul general de 3–2.

AEK Atena s-a calificat cu scorul general de 6–0.

Brann s-a calificat cu scorul general de 4–3.

Barcelona s-a calificat cu scorul general de 4–2.

Benfica s-a calificat cu scorul general de 4–2.

Paris Saint-Germain s-a calificat cu scorul general de 6–4.

Sferturi

|}

Prima manșă

A doua manșă

Fiorentina s-a calificat cu scorul general de 2–1.

Paris Saint-Germain s-a calificat cu scorul general de 3–0.

Liverpool s-a calificat cu scorul general de 4–1.

Barcelona s-a calificat cu scorul general de 4–2.

Semifinale

|}

Prima manșă

A doua manșă

After Barcelona's second goal, de la Peña of Barcelona was hit by an object thrown from the stands and required medical assistance.

Barcelona s-a calificat cu scorul general de 3–1.

Paris Saint-Germain s-a calificat cu scorul general de 3–2.

Finala

Golgheteri
Golgheterii din sezonul 1996–97 sunt:

Legături externe
 Sezonul 1996-97 la site-ul UEFA
 Rezultatele Cupei Cupelor la site-ul RSSSF

1996 în fotbal
1997 în fotbal
Cupa Cupelor UEFA

redpajama_set_name: RedPajamaWikipedia


La Liga 2018/19 Highlights: Barcelona beat Sevilla 4 – 2 but Lionel Messi gets ruled out of next week's El Clasico due to injury.
Barcelona reclaimed the top spot of La Liga with a 4-2 victory over title rivals, Sevilla, as they ended a four-match run in La Liga without a win. Philippe Coutinho put the defending La Liga champions ahead with his trademark goal, curling a first-time shot into the top corner past Tomas Vaclik in the second minute of the game as Messi found him inside the box. Messi doubled the lead ten minutes later, creating enough space to fire the ball into the bottom corner, assisted by Luis Suarez.
However, he was shortly forced off with his right arm in a bandage in the 17th Minute. The Argentinean landed awkwardly during a challenge with Franco Vazquez and it was later announced that he fractured his right arm, ruling him out of the impending Champions League match against Inter Milan, as well as the Clasico next Sunday against Real Madrid. He was replaced by France international Ousmane Dembele.
The incident seemed to take the bite out of Barca's sharp start, and Sevilla were denied a great chance of halving the deficit when Marc-Andre Ter Stegen produced an amazing double-save on the hour-mark to deny Andre Silva and Franco Vazquez. Just three minutes later, Luis Suarez converted from the spot after Vaclik swept the feet of Suarez inside the box.
Sevilla persisted to probe the Barca defence and were quickly rewarded when Pablo Sarabia's shot struck the back of the net after a deflection off Clement Lenglet in the 79th minute.
About 9 minutes later, Ivan Rakitic produced an exquisite half-volley to beat Vaclik in the bottom corner to make it 4-1. The game ended as frantically as it started with Luis Muriel curling in a shot beyond Ter Stegen in the most composed way he could to end the match at 4-2. The Catalan club were indebted to Ter Stegen's contributions in the match as they go to the top of the table with 18 points.
Barcelona face Inter Milan in the UEFA Champions League on Thursday, 25th October before the first Clasico of the season against Real Madrid on Sunday, 29th October. While Sevilla face Turkish side Akhisar in the UEFA Europa League on Thursday before hosting Huesca in La Liga on Sunday.
Lionel Messi is set to miss next week's Clasico against Real Madrid with a fracture in his right arm according to the club's official website. Messi was injured when he fell awkwardly and was withdrawn wit ha bandage on his arm in the first half of their victory over Sevilla, and the Barcelona number 10 is set to spend three whole weeks on the sidelines.
Three weeks on the sidelines means that Messi will not be involved in the coming six matches including Champions League game against Inter Milan, La Liga clash against Real Madrid, Copa del Rey game against Cultural Leonesa, the second leg against Inter and La Liga matches against Rayo Vallecano and Real Betis heading into next international break.
'Barcelona without Messi' has always been a significant topic of discussion among the football fans. The Catalan side will have everything to prove in the coming month of November and all the challenges that come along with it.


text:
$1.75 million Homeland Security grant to aid radio communication for Kent County fire, police
Updated Apr 03, 2019; Posted Mar 09, 2012
By John Tunison | jtunison@mlive.com
GRAND RAPIDS -- In early 2008, when fire ravaged the 100-unit Indian Village Condominiums, Grand Rapids firefighters could have used a cohesive communication system to help them coordinate radio traffic with the numerous responding agencies.
Soon, all Kent Count police, fire and ambulance responders will have that capability.
The U.S. Department of Homeland Security has awarded area authorities a $1.75 million grant to buy equipment and software to foster seamless communication between area police and fire agencies.
The award, given to the Grand Rapids Fire Department, comes through the Assistance to Firefighters grant program.
The equipment essentially will allow for updating dispatching center consoles in Grand Rapids and Kent County to allow dispatchers to link the radio frequencies of every fire, police and ambulance agency in the county, except for state police and airport police.
Grand Rapids Deputy Fire Chief Jerry Salatka said the upgrade -- the first of its kind in Michigan that he knows of -- is expected to be especially useful in large-scale emergency events involving multiple agencies.
Now, each city or township agency is on a different frequency and must use dispatchers as intermediaries in communication.
The Kent County Dispatch Authority is providing a 20 percent funding match for the project, expected to cost more than $2 million.
Salatka said the problems with multiple agencies trying to communicate at a large-scale event was a particular issue with the Sept. 11, 2001 tragedy.
A local example of a similar incident involving multiple agencies was the January 2008 fire at the Indian Village condominiums at 28th Street SE and Breton Avenue, Salatka said.
He said the ability to communicate directly with other fire authorities, as well as police, could have helped coordination.
He said new equipment and software will be installed at the city and county dispatch centers, although a timetable was not immediately known. It could take up to a year to complete the project.
"Right now, other agencies have to have a radio that is compatible with ours and works on the same frequency to be able to communicate with us," he said, speaking about Grand Rapids fire communications.
"This will solve that," he said.
"This is really to help all the people in Kent County," he said. "The benefit is to the entire county."
E-mail John Tunison: jtunison@mlive.com and follow him on Twitter at twitter.com/johntunison


text:
include(CMakeFindDependencyMacro)

find_dependency(Pack1 1.2 EXACTYPO)


text:
$40,000 Awarded for Aggravated Fibromyalgia Condition
Court Awards 65% of Legal Costs to Plaintiff in 50...
$35,000 Awarded for Minor Injuries 70% Resolved a ...
Cyclist Riding on Wrong Side of Road Found 25% Lia...
Costs & Sufficient Reasons for Bringing Proceeding...
Motorcyclist Crossing Centre Line on Hairpin Turn ...
$200,000 Awarded for Mild Traumatic Brain Injury w...
$85,000 in General Damages Awarded for Injuries to Neck & Right Shoulder
In the recently published case of Milliken v. Rowe 2011 BCSC 1458 Mr. Justice Davies awarded a total of $253,666 to a plaintiff injured in a motor vehicle accident in August 2007 in Roberts Creek on the Sunshine Coast. The plaintiff sustained injuries to her neck, right side and right shoulder. In awarding $85,0000 in general damages, the Justice Davies noted the following:
[85] I find that the pain Ms. Milliken has endured has been debilitating
[86] While she has worked through much of it of necessity, the cost to her of doing so has been great.
[87] Her live has become a one-dimensional one in which activities unrelated to work have largely had to be put aside. She no longer has the stamina or physical activity to care for her home as she previously did and has become socially reclusive because of that and her constant tiredness
[91] Ms. Milliken's suffering will not end with this litigation.
[92] At minimum she must endure complex shoulder surgery and a lengthy period of rehabilitation in which she will continue to be unable to enjoy life as she once did. Her likely future enjoyment of life is also compromised by the prospect that the surgery may be wholly or partially unsuccessful.
[93] The totality of the evidence satisfies me that there is no question that Ms. Milliken will continue to suffer pain and suffering as well as loss of her enjoyment of life at least until after rehabilitation from surgery to her shoulder.
[94] There is also a substantial likelihood that she will suffer ongoing pain and suffering and loss of enjoyment into the future after the shoulder surgery.
Loss of Earning Capacity:
Justice Davies also awarded the plaintiff $95,000 for a loss of future earning capacity in doing so he said the following:
[122] In my view, Ms. Milliken really has no option but to attempt to alleviate bother her present difficulties and also improve her future prospects by undergoing shoulder surgery...
[123] In result, her future capacity to earn income will be immediately impacted by the consequences of that shoulder surgery.
[124] Also, because of her physical limitations, it is not realistic to suggest that Ms. Milliken could find employment as a manager in the fast food industry without the surgery.
[125] The fast food industry is the only field in which Ms. Milliken has managerial skills that are marketable, and management positions in that industry require hands-on work involving physical activities she cannot do without significant accommodation both as to hours of work and assistance.
[126] Retraining to more sedentary work might be possible but on the evidence before me, given her age and the potential for jobs for which she would then be suited on the Sunshine Coast, I am satisfied that the result of re-training and the securing of more sedentary employment would be a loss of income in the range of $15,000 to $20,000 per year.


Snsd into the new world piano sheet. I ( 아이오아이) - 소나기 ( Downpour) Piano Cover - Duration: 4: 27. United States: Fort world Worth Posted on January 4 snsd into the new world sheets, in K- Pop , snsd into the new world piano, tagged snsd into the new world snsd into the new world tutorial. Into The New snsd World Chords by Girls' Generation Learn to play guitar by chord tabs , use our crd diagrams, transpose the key more. Includes transpose changing speed , capo hints much more.
Jianpu aka Numbered Musical Notation. i' snsd m looking for snsd - into the new world piano sheets. sheet Chords for SNSD - Into The New World. All piano sheet music are made by piano fans. For anyone familiar with the numbered musical score system and also those with little musical background. Verse] / C Bm Em Jeonhaejugoshipeo seulpeun shigani Am into B Em Da heuteojin hu- eya deulrijiman C Bm Am Nuneul gamgo neukkyeobwa umjikineun maeum D B Neoreul hyanghan nae nunbicheul / C Bm Em T. Depending on your piano skill level, your perceived difficulty for a. A C# m F# m D E G# m] Chords for SNSD - Diamond Lyrics ( Eng) world OFFICIAL HD with capo transposer piano, play along with guitar into ukulele & mandolin. 다시 만난 세계 ( Into the New World) - Girls' Generation sheet - free sheet music for grand piano. Play along with guitar ukulele, piano with new interactive chords , diagrams. United States: Charlotte ( Nc) Nagaoka Guinea- Bissau; Czestochowa, Brazil; Bissau, Japan; Cachoeiro De Itapemirim Poland. Mix - 소녀시대 ( SNSD) - snsd 다시 만난 세계 ( Into the world New World) Piano Cover YouTube I. Play along with youtube video covers. Home / Sheet Music / Difficulty / ★ ★ ★ Moderately Hard SNSD – Into The New World. DooPiano new 1 574 713 views. into Anybody new have the piano sheet music for La Romanesca in Boys Over Flowers?
Chords for SNSD - Into The New World ( Ballad Version) - Piano cover and Sheets. Learn this song on Jellynote with our interactive sheet music and tabs. Bookmark the permalink. Girls' Generation - Into The New World/ 다시 만난 세계 Free Piano Sheet Music Please do not for commercial purposes, Thank you for your cooperation!
SNSD - Into the New World ( English Lyrics/ Chords) Chords ( Coming Soon). As we head into the new world. Don' t waste time just waiting for a miracle. Hot keyword : 50% off Sheet Numbered music notation Free Sheet jason piano Kaikai. SNSD~ Girls' Generation- into the new world 鋼琴團購. 5000 results found, page 1 from 500 for ' piano sheet snsd into the new world s' SNSD Into The New World ( Piano Sheet Music) ( 578.
23 KB) SNSD Into The New World ( Piano Sheet Music). Snsd into the new world piano sheet pdf Posts about snsd into the new world piano written by joycemusic1. snsd into the new world piano sheet music.
Piano Sheet Music. iPhone Android Report.


text:
Seungri Announces Dates for Final Concert Before Military Enlistment
His final concert before enlisting.
Seungri will be holding his final Seoul concert in February 2019, before he begins his mandatory military service.
YG Entertainment dropped a teaser for "SEUNGRI 1st SOLO TOUR [THE GREAT SEUNGRI] FINAL IN SEOUL" which will be held on February 16 and 17 at the SK Olympic Handball Arena.
With the other four members of BIGBANG in the army, Seungri has admittedly enjoyed his moment in the spotlight.
He's been busy recording & promoting his solo album "The Great Seungri", being the big boss of sublabel YGX, running Japanese ramen franchinse Aori Ramen, and starring in YG Entertainment and Netflix's sitcom-variety show YG Future Strategy Office.
It seems that the finale to his "The Great Seungri" tour may be his final schedule before he enlists in the army.
Source: Sports Chosun
BIGBANG's T.O.P Has V.I.Ps Wondering If A Comeback Is In The Works With New Instagram Post
BIGBANG's T.O.P. Only Follows 1 Account On Instagram, And It's Very On Brand For Him
BIGBANG's T.O.P Posts Photo Of The Group Without Seungri On Instagram With The Hashtag "I Love My Band"
Here's How Much It Costs To Have The Full "Single's Inferno" Experience In "Hell" And "Paradise"
See more BIGBANG


Maintaining a property or home can be time consuming and stressful. We at Perth Property Maintenance understand it's a big deal for a property manager thinking about property repairs and required services. Integrity Property Solutions is a 100% Australian owned and operated business in Perth area. We offer services to both residential and commercial customers. We handle any job whether it small or big with complete care at competitive price.


text:
Hobscheid (luxemburguès Habscht) és una comuna i vila a l'est de Luxemburg, que forma part del cantó de Capellen. Comprèn les viles de Hobscheid i Eischen.

Població

Evolució demogràfica

Comunes del cantó de Capellen


This is the announcement you have all been waiting for: the mock awards nominated titles! Thanks to everyone who submitted a suggestions! Don't forget to RSVP if you plan on attending a mock awards discussion.
Everyone is welcome at the mock awards. Please read as many of the books on the discussion list as possible, if there are others you think should be considered please bring them with you and they will be discussed as time allows. Before the discussion, please take a moment to review the criteria for the official Caldecott, King, Newbery and Printz awards.


text:
Eller ist ein Stadtteil Düsseldorfs, der von 1896 bis 1909 eine selbstständige Gemeinde war und heute zum Stadtbezirk 8 gehört. Die Bezirksverwaltung hat ihren Sitz im historischen Rathaus Eller. Der Stadtteil hat mit Stand vom 31. Dezember 2016 rund 31.500 Einwohner und eine Fläche von 5,91 km².

Lage
Eller liegt im Südosten Düsseldorfs in der inneren Peripherie. Benachbarte Stadtteile sind – im Uhrzeigersinn – im Südwesten Oberbilk, im Nordwesten Lierenfeld, im Nordosten Vennhausen, im Südosten Unterbach, im Süden Hassels, Holthausen und Wersten. Durch Eller fließt der südliche Arm der Düssel, die der Stadt Düsseldorf den Namen gab.

Geschichte

Mittelalter und frühe Neuzeit
Archäologische Funde lassen auf eine kontinuierliche Besiedlung des Gebietes seit dem 2. Jahrhundert nach Christus schließen. Die Meinung der Historiker, ob dort eine germanische, romanisierte germanische oder gar römische Siedlung bestanden hat, gehen jedoch auseinander. Es dürfte sich um einzelne Solstätten mit kleinen Gehöften gehandelt haben, die nach germanischer Sitte zerstreut auf trockenen Höhenpunkten lagen. Die erste urkundliche Erwähnung als Flecken erfolgte 1218, danach 1231, in der Heberolle des Stiftes Gerresheim unter dem Namen Elnere, was "Weide am Sumpf" bedeutet. Sowohl 1247 wurden ein Adolphum de Elnere in einer Urkunde zur Besitzverteilung zwischen Gräfin Irmgard von Berg und ihrem Sohn Adolf IV. als auch 1288 Ludwig von Elnere als Zeuge bei der Stadterhebung von Düsseldorf angeführt. 1309 gibt es den ersten urkundlichen Hinweis auf eine Burg Eller (castrum Elnere), die jedoch weit älter gewesen sein dürfte, da sich bereits 1151 ein Gumpert von Elnere als Untervogt eines Hofes bei Hitdorf fand. 1362 folgte ein Konrad von Elner als Amtmann in Monheim. 1368 wurde ein Urteil des Landgerichtes Himmelgeist mit den Siegeln von "Everadum pastorem in Rayde (Benrath) et Rutgerum domicellum (Herr) de Elnere" bekräftigt. Zu dieser Zeit dürfte der Besitz noch ein Allod gewesen sein, da die Herren von Elnere erst 1424 die Herzöge von Berg als ihre Lehensherren akzeptierten. In einer Urkunde von 1447 teilten die Brüder Heinrich und Johann Elner ihren Besitz auf. Heinrich von Elner erhielt Haus Eller mit einem Erbwaldgrafenamt in der Bilker und Reisholzer Gemark und Johann von Elner Haus Elbroich mit dem Erbwaldgrafenamt in der Reisholzer Gemark.

Kurz nach der Aufteilung des Besitzes verkaufte Heinrich von Elner bereits 1448 das Haus Eller an Adolph Quad, der vermutlich sein Schwiegersohn war und der die Burg bis 1469 als Wasserburg neu errichten ließ. Als Kunkellehen wechselte das Rittergut dann bis Anfang des 18. Jahrhunderts häufig den Besitzer. Urkundlich nachweisbare Besitzer waren:
 1490 Johann von Einenberg zu Trimborn, der Adolph Quads Tochter Johanna geheiratet hatte.
 1535 Robert von Plettenberg, der ebenfalls mit der Tochter des letzten Eigentümers verheiratet war. Es folgte
 1572 Herrmann Quad von Wickrath, der Ehemann von Catharina von Plettenberg, und
 1600 der Sohn Bertram Quad. Als dieser ohne Nachkommen starb, wurde
 1621 Johann von Harff, der Ehemann von Irmgard von Plettenberg, nächster Lehensnehmer. Es folgte
 1637 deren Sohn Werner von Harff.
 1711 erwirbt Kurfürst Jan Wellem Haus Eller von den Erben des letzten Lehensnehmers Freiherr von Wrange. Es verbleibt nun als landesherrliche Domäne im Besitz der jeweiligen amtierenden Herzöge von Berg bis zur Übergabe des Herzogtums an die Franzosen 1806.

Der jeweilige Besitzer von Haus Eller war als Mark- oder Waldgraf Vorsitzender des Markengerichtes für das Waldgebiet der Reisholzer Gemark. Dieses Gericht war zuständig für die Überwachung der Nutzung des Waldes für Holzeinschlag und Vieheintrieb. Gleichzeitig war der Markgraf im Besitz des Wildbannes (Jagdrecht).

Gerichtsort war das "Thinghaus an der Aldebrück", heute Altenbrückstraße, im heutigen Stadtteil Hassels, da dieser Bereich seinerzeit zur Gemark Eller gehörte. Die angeführten Rechte bestanden bis zur Einführung einer neuen Gerichtsorganisation am 17. Dezember 1811 durch die damalige französische Verwaltung.

Zu einer geschlossenen Siedlung entwickelte sich Eller um 1300. Siedlungskern des Dorfes waren die heutige Straße Alt-Eller und deren Kreuzungsbereich mit der Gumbertstraße bis zur Düssel, wo sich noch heute das Gebäude der früheren Wassermühle aus dem 18. Jahrhundert befindet. Der Gasthof Holländisches Haus in der Gumbertstraße 188 zwischen Alt-Eller und der Düssel wurde 1648 nach dem Ende des Dreißigjährigen Krieges errichtet und 1813 umgebaut. Es ist nach dem, im Bau des Schlosses erhaltenen, Turm der Wasserburg das älteste, erhaltene Baudenkmal Ellers.

Seit dem 19. Jahrhundert
Am 15. März 1806 wurde das Herzogtum Berg an Napoleon I. abgetreten. Dieser übertrug die Regierungsgewalt für das Großherzogtum Berg an seinen Schwager Joachim Murat. Mit dem Dekret vom 13. Oktober 1807 wurden die kommunalen Zuständigkeiten geändert und festgelegt. Zum neuen Kanton Richrath, Nachfolger des Amtes Monheim, gehörte neben vielen weiteren Ortschaften auch Eller. Nach Ende der französischen Herrschaft übernahm 1814 Preußen die Herrschaft über das ehemalige Herzogtum Berg. Am 15. April 1814 wurde per Verfügung des preußischen Generalgouverneurs Eller der Samtgemeinde Benrath zugeordnet.

1842 wurden Eller und Hilden von der Samtgemeinde Benrath wieder getrennt, blieben aber noch vereint. Erst ab 1861 wurde auch diese Gemeinschaft aufgelöst und beide wieder zu eigenständigen Gemeinden.

Am 17. Januar 1823 wurde die Wasserburg Eller öffentlich versteigert. Erwerber war Carl Franz von Plessen. Aufgrund fortschreitenden Verfalls wurde sie 1826 bis auf den Turm abgetragen und als Schloss Eller neu erbaut. Nachdem seit etwa 1230 lediglich eine Burgkapelle als einziges Gotteshaus in Eller bestand, wurde von 1829 die katholische Pfarrkirche von Eller an der Ecke Alt-Eller/Gumbertstraße nach Plänen von Karl Friedrich Schinkel errichtet. Dieses Gotteshaus wurde wegen eines größeren Neubaus 1901 wieder abgebrochen; die Ellerkirchstraße erinnert noch an den einstigen Standort.

Das Gebiet der Gemeinde Eller, damals Teil der Bürgermeisterei Hilden, war zu Beginn des 19. Jahrhunderts wesentlich größer als aktuell. Es entsprach noch weitgehend der historischen Gemarkung Eller im späten Mittelalter. Im Südosten grenzte es Anfang des 20. Jahrhunderts noch an Benrath, Hilden und Erkrath. In einer amtlichen Auflistung für den damaligen Regierungsbezirk Düsseldorf wurden für 1817 noch folgende Siedlungen und Weiler unter Eller angeführt: Elb, Eller, Haus (Schloss) Eller, Kamp, Klein-Eller, Oersch, Reisholz (als Bauerschaft), Wilkesfurt und Ziegelkamp. Das heutige Gebiet Altenbrück in Hassels, ursprünglich ebenfalls zu der Gemarkung Eller gehörend, ist allerdings bereits 1817 unter Benrath aufgelistet.

Im Jahr 1832 wohnten in Eller 308 Personen, 287 katholischen und 21 evangelischen Glaubens. Das Dorf hatte ein kirchliches und ein öffentliches Gebäude, 50 Wohnhäuser, eine Mühle und 37 landwirtschaftliche Gebäude. Im Rittergut lebten 19 Personen.

Prominente Schlossbewohnerin von 1843 bis zu ihrem Tod 1882 war Prinzessin Luise von Preußen, die mit ihrem sonst in Berlin lebenden Mann Friedrich Wilhelm Ludwig von Preußen den gemeinsamen Geburtstag des Paares, den 30. Oktober, in Eller feierte, an dem die Einwohner des Dorfes ihre Verehrung für das beliebte Prinzenpaar durch festlich geschmückte Straßen, Illumination und Musik zum Ausdruck brachten. In dieser Zeit begann die Industrialisierung, die das Gesicht des Ortes nachhaltig verändert.

Im Jahre 1870 hatte Eller 1000 Einwohner. Seit 1872 verlaufen zwei Bahntrassen durch den Ort, der einen eigenen Bahnhof erhielt. Im Jahr 1896 wurde Eller selbstständige Bürgermeisterei. Die beständig wachsende Bevölkerung erforderte größere öffentliche Bauten und so entstanden mit dem Neubau der katholischen Gertrudiskirche (1901) und dem Rathaus (1901) am neugeschaffenen zentralen Gertrudisplatz (seinerzeit Kaiser-Wilhelm-Platz) sowie der evangelischen Schlosskirche (1905) Anfang des 20. Jahrhunderts Bauten, die heute noch das Bild Ellers prägen. Zugleich entwickelt sich die Gumbertstraße zur Hauptgeschäftsstraße der Gemeinde. Im Jahr 1907 wurde der Friedhof Eller südlich der Gemeinde am Werstener Feld eingerichtet.

Bereits 1896 wurde vertraglich die Wasserversorgung Ellers durch die Stadt Düsseldorf und im Jahr 1899 die Anbindung mit einer Straßenbahnlinie vereinbart, welche am 1. Mai 1902 in Betrieb genommen wurde. Mit Beschluss des Gemeinderates von Eller am 10. Februar 1909 erfolgte die Eingemeindung nach Düsseldorf. Zu diesem Zeitpunkt wurde das Gebiet Steele von Eller abgetrennt und nach Groß-Benrath, Gemeindeteil Hassels ausgegliedert. Eller hatte zu diesem Zeitpunkt eine Größe von 6,15 km² und eine Bürgerschaft von über 10.000 Einwohnern.

Im Zweiten Weltkrieg erlitt Eller beträchtliche Schäden. So wurde die Kirche St. Gertrud 1943 bei Luftangriffen schwer getroffen, 1944 zwischen Ostern und Jahresende kam es zu 861 Fliegeralarmen und 1945 lag Eller unter Artilleriebeschuss. Mit dem Einmarsch der amerikanischen Truppen am 17. April 1945 endete der Zweite Weltkrieg für Düsseldorf und somit auch für Eller. Der Ort wurde wieder aufgebaut und der Schlosspark 1950 öffentlich zugänglich gemacht.

Neue Wohngebiete wurden in den 1950er bis 1970er Jahren insbesondere in Eller-Süd und an der Deutzer Straße erschlossen, was einen erheblichen Anstieg der Bevölkerungszahl bewirkte. Die Einfamilienhaussiedlung nördlich des Dillenburger Wegs wurde auf Grund der früheren Nutzung als "Gurkenland" bezeichnet. Auch wenn genau genommen nur die bereits im angrenzenden Stadtteil Oberbilk liegenden Wege nördlich des Offenbacher Wegs zum Gurkenland gehören, so wird diese Bezeichnung auch erweitert für das Gebiet rund um die Straße "Am Schabernack" genutzt.  Die im Zweiten Weltkrieg beschädigte zweite katholische Pfarrkirche St. Augustinus an der Deutzer Straße aus dem Jahr 1932 wurde 1964 durch einen größeren Neubau des Architekten Emil Steffann ersetzt und mit St. Hedwig entstand 1974 in Nähe des Prozessionskreuzes Straußenkreuz am Werstener Feld eine zusätzliche katholische Filialkirche im südlichen Eller. Wegen zurückgehender Messbesuche wurde die Hedwigskirche im Jahr 2006 jedoch wieder profaniert und anschließend in ein Altenpflegeheim umgebaut. Im Gurkenland errichtete die evangelische Gemeinde 1962 als zweites Gotteshaus die Jakobuskirche nach Plänen des Architekten Eckhard Schulze-Fielitz, die jedoch in der Nacht zum 8. Juni 1978 vollständig niederbrannte und 1983 in völlig veränderter Form wieder aufgebaut wurde.

1976 wurde unweit des Schlosses der Schulkomplex der ersten Düsseldorfer Gesamtschule am Kikweg mitsamt Schwimmbad (heute reines Vereins-Schulbad) errichtet, die allerdings sowohl aufgrund des Lehrkonzeptes als auch ihrer Architektur im Stil des Brutalismus umstritten ist. 2005 wurde sie in Dieter-Forte-Gesamtschule umbenannt. Die zu dem Komplex gehörende, 1977 eröffnete Kollegschule Kikweg wurde 1998 in Lore-Lorentz-Schule umbenannt und erhielt 2007–2009 einen Erweiterungsneubau an der Ecke Schlossallee/Heidelberger Straße. Das alte Gebäude des Berufskollegs aus den 1970er Jahren wird seit 2019 durch einen Neubau ersetzt, dessen Fertigstellung im Herbst 2021 geplant ist.

Im Jahre 1975 wurden die Stadtbezirke und die Bezirksverwaltungen in Düsseldorf eingeführt. Der Stadtteil Eller wurde in den Stadtbezirk 8 eingegliedert, dessen Verwaltung ihren Sitz im Eller Rathaus hat. Zum 1. Januar 2006 wurde die Stadtteilgrenze zwischen Lierenfeld und Eller verändert, was dazu führte, dass Eller um 29 Hektar kleiner wurde.

Im Dezember 2012 gab es am Bahnübergang Am Hackenbruch an der dortigen Güterzugstrecke einen Zusammenstoß zwischen insgesamt drei Güterlokomotiven und einem Linienbus der Rheinbahn. Der Bus wurde dabei komplett zerstört, alle Lokomotiven entgleisten, eine geriet in ein Schrebergartenhäuschen.

Auf dem früheren Parkplatzgelände an der Heidelberger Straße neben Schloss Eller wurde im Juni 2018 Deutschlands größter Skatepark mit 3.800 m² Fläche eröffnet.

Verkehrsanbindung

 Autobahnanschluss: Ausfahrt Düsseldorf-Eller (A 46 Wuppertal–Neuss, A 59 Düsseldorf–Leverkusen)
 S-Bahnen: S1 nach Solingen, Essen und Dortmund, S6 nach Köln und Essen, S68 nach Langenfeld und Wuppertal
 S-Bahn-Stationen: Eller, Eller Süd, Eller Mitte
 Straßenbahnlinien: 705 (bis 2016: 715) nach Unterrath
 Stadtbahnlinien: U75 nach Oberkassel und Neuss
 Buslinien: M1, 721, 722, 723, 724, 730, 731, 732, 735, 736, 815, 891, NE6

(Stand: 29. August 2018)

Sehenswürdigkeiten
 Schloss Eller (1824–1826), klassizistisches Herrenhaus, Adolph von Vagedes zugeschrieben, mit Schlosspark unter Mitwirkung von Maximilian Friedrich Weyhe, 2010 nach Sanierung wiedereröffnet, seit 2011 historisches Stadtteilmuseum "Forum 8" im ehemaligen Chauffeurhaus
 Rathaus (1901), Backsteinbau der Neorenaissance.
 Kath. Kirche St. Gertrud (1900–1901), Dreischiffige neogotische Backsteinbasilika von Wilhelm Sültenfuß
 ev. Schlosskirche (1905), neoromanische weiß getünchte Backsteinbasilika von Moritz Korn
 Kulturbahnhof Eller, ländlicher Vorstadtbahnhof von 1872, seit 1985 Kulturzentrum mit Ausstellungen, Künstlerateliers und Stadtteilarchiv
 Ringlokschuppen (1930–1931) des Bahnbetriebswerkes Düsseldorf Abstellbahnhof, heute Oldtimer-Standort Classic Remise, ehemals Meilenwerk-Standort Düsseldorf (2006–2011). Zur Erbauungszeit befand sich der Ringlokschuppen auf dem Gebiet von Eller, heute nach Grenzveränderungen im Stadtteil Oberbilk.

Persönlichkeiten

Söhne und Töchter des Ortes:
 Heiner Koch (* 1954), römisch-katholischer Erzbischof von Berlin, zuvor Bischof von Dresden-Meißen, davor Weihbischof im Erzbistum Köln. Seine Bischofsprimiz zelebrierte er am 14. Mai 2006 in seiner Heimatgemeinde St. Gertrud zu Eller.
 Jörg Schmadtke (* 1964), Fußballtorhüter bei Fortuna Düsseldorf und Fußballtrainer

Persönlichkeiten mit Beziehung zum Ort (chronologisch):
 Prinzessin Luise von Preußen (1799–1882) geb. Prinzessin von Anhalt-Bernburg, lebte von 1843 bis 1848 und von 1855 bis zu ihrem Tod auf Schloss Eller.
 Friedrich Vohwinkel (1840–1900), Holzgroßhändler und Kommerzienrat, Mitbegründer der Rheinbahn und der RWE, erwarb 1883 Schloss Eller, wo er auch verstarb.
 Berta Schmidt-Eller (1899–1987), christliche Schriftstellerin, eigentlich Berta Schmidt. Sie lebte seit 1915 in Eller und fügte 1924 ihrem Schriftstellernamen die Ortsbezeichnung bei.
 Kurt Borkenhagen (1919–2012), Fußballspieler bei Fortuna Düsseldorf und Fußballnationalspieler, lebte mehr als fünfzig Jahre auf der Vennhauser Allee in Eller
 Fritz Briel (1934–2017), Kanute, lebte in Eller und führte jahrzehntelang das Bäderhaus Briel auf dem Werstener Feld in Eller-Süd
 Heino (* 1938, bürgerlich Heinz Georg Kramm), Schlagersänger, wohnte in den 1960er Jahren im Meisenheimer Weg und wurde 1965 mit seiner zweiten Frau Lilo Dahmen in Eller getraut; Heinos Mutter lebte auf der Sturmstraße in Eller-Süd.
 Inka Grings (* 1978), Fußballnationalspielerin, wuchs im Gurkenland auf und spielte von 1984 bis 1990 beim TSV Eller 04.

Literatur
 Ulrich Brzosa: Die Gumbertstraße von Klein-Eller bis Eller-Mitte; Erfurt: Sutton (Die Reihe Archivbilder) 2012
 Ulrich Brzosa: Düsseldorf-Eller; Erfurt: Sutton (Die Reihe Archivbilder) 2008
 Karl Bernd Heppe: Unser Eller – Vom Rittersitz zum Stadtteil; Düsseldorf: Stadt-Sparkasse 1984
 Gunhild Lehmkuhl: Wo ist dein Bruder Abel? Jüdische Bürger in Eller, Lierenfeld und Vennhausen 1933–45; Düsseldorf: Grupello 1994

Einzelnachweise

Anmerkungen

Weblinks

Stadtteil von Düsseldorf
Ehemalige Gemeinde (Düsseldorf)


text:
Limestone and basalt sequence
Trlb
Upper Triassic, Norian (228 to 208.5 Ma)
Chulitna sequence, undivided
Interlayered limestone and amygdaloidal basalt flows. Limestone is medium-gray, massive to thick-bedded, and locally metamorphosed to fine- to medium-grained marble. Basalt is dark- to greenish-gray, aphanitic, and contains numerous amygdules. Csejtey and others (1992) suggested that the unit was deposited in shallow water and that the chemistry of the basalts suggests an ocean island shield volcano. Unit is mapped as thrust slivers in Chulitna sequence in the Healy quadrangle (Csejtey and others, 1992) and extends a short distance into the Talkeetna and Mount McKinley quadrangles (Wilson and others, 1998). Included here is a slightly metamorphosed and unevenly sheared sequence of shallow marine, interbedded dark-greenish-gray amygdaloidal metabasalt flows and dark-gray to black argillite and slate. Monotis subcircularis and Heterarstridium sp., of late Norian age, have been collected from argillite (Csejtey and others, 1992)
Csejtey, Bela, Jr., Mullen, M.W., Cox, D.P., and Stricker, G.D., 1992, Geology and geochronology of the Healy quadrangle, south-central Alaska: U.S. Geological Survey Miscellaneous Investigations Series Map I-1961, 63 p., 2 sheets, scale 1:250,000.
Trvs
Metavolcanic, metavolcaniclastic, and subordinate metasedimentary rocks
Consists of intercalated sequences several hundreds of meters thick, occurring as thrust slices. Most common rock type is dark-greenish-gray aphanitic metabasalt containing numerous amygdules and occurring in thick, commonly pillowed massive flows. Metavolcaniclastic rocks comprise dark-gray or dark-greenish-gray, generally fine-grained, tuffaceous metasandstones and metasiltstones. Metasedimentary rocks comprise dark-gray, locally greenish-gray slate and argillite and subordinate dark-gray finely crystalline, thinly bedded marble.
Trnm
Metabasalt and slate, Late Triassic
Metabasalt < Metavolcanic < Metaigneous < Metamorphic Major
Slate < Metaclastic < Metasedimentary < Metamorphic Indeterminate, major


On this week's all-new NSFW episode of the show, we're joined in the studio by Columbus punk rock band Waiting For Satellites.
Neil, Matt and Paul crash the studio to premiere their debut EP (available August 20, 2018) in its entirety. Destination: Unknown is full of hooks that will have your blood pumping and your toes tappin'. Although they're a relatively new band, they are quickly making a name for themselves, as they dish on the stories behind the songs and contemplate the fact that they're opening for surf punk icons Agent Orange this Friday.
The show is full of laughter, coarse language, sexual references and in keeping with that most-sacred of punk rock rulez… beer.


text:
Sion/Sitten
Weather in Sion/Sitten, CH (Weather Station)
Avg. wind speed: 1.8 km/h
cloudy with clear intervals
Avg. wind speed 2.2 km/h 4.9 km/h 5.8 km/h 5.3 km/h 3.8 km/h 3.7 km/h 4.7 km/h
Feels like 0 °C -2 °C -2 °C 1 °C 6 °C 7 °C 5 °C
Dewpoint -3 °C -3 °C -3 °C -2 °C -1 °C -1 °C -1 °C
Precipitation 0.4 l/m² 0 l/m² 0.3 l/m² 4 l/m²
Wind gusts 11.5 km/h 12 km/h 13.5 km/h 15.3 km/h 19.2 km/h 20.3 km/h 19.7 km/h 21 km/h
Avg. wind speed 4.7 km/h 4.2 km/h 4.9 km/h 5.5 km/h 5.5 km/h 7.5 km/h 6.9 km/h 6.6 km/h
Dewpoint 0 °C 0 °C -1 °C -1 °C -1 °C 0 °C 1 °C 0 °C
Air pressure 1008 hPa 1006 hPa 1005 hPa 1003 hPa 1000 hPa 998 hPa 998 hPa 1001 hPa
Temperature 1 °C 0 °C -1 °C 1 °C 3 °C 4 °C 3 °C 2 °C
Precipitation 0.4 l/m² 0 l/m² 0 l/m² 4 l/m²
Wind gusts 21.9 km/h 15.1 km/h 13 km/h 13.3 km/h 13.3 km/h 15.3 km/h 15.3 km/h 16.4 km/h
Avg. wind speed 8 km/h 3.5 km/h 4.4 km/h 5.1 km/h 4 km/h 6.2 km/h 6.2 km/h 6.8 km/h
Feels like -1 °C 0 °C -1 °C -1 °C 3 °C 3 °C 1 °C 0 °C
Dewpoint 0 °C -1 °C -3 °C -3 °C -4 °C -3 °C -2 °C -1 °C
intermittent snowfall with partly clear sky
Temperature 1 °C 0 °C -2 °C -1 °C 1 °C 0 °C -1 °C -2 °C
Avg. wind speed 6 km/h 7.1 km/h 6.9 km/h 8.6 km/h 9.3 km/h 7.7 km/h 5.3 km/h 4.2 km/h
Temperature -2 °C -3 °C -3 °C -2 °C 0 °C 0 °C -1 °C -1 °C
Precipitation 2 l/m² 0.7 l/m² 0 l/m² 0 l/m²
Precipitation 0 l/m² 0.1 l/m² 1 l/m²
Data provided by weather station Sion/Sitten, 481m
+5.4 km - Nendaz (VS)
+5.7 km - Savièse (VS)
+8.4 km - Nax
+13 km - Ovronnaz
Weather in Sion/Sitten, 21.01.2021
On Wednesday cloudless weather will dominate. In the evening it will be mostly cloudy. Later mostly cloudy weather will prevail. Morning temperatures will be around -6 °C. During the day they will rise to a maximum of 8 °C. Low temperatures at night will be around -1°C. Easterly winds are weak.
On Thursday it will be widely overcast, but mainly dry for a while. The afternoon will bring overcast, but mainly dry weather. In the late evening clouds with rain or sleet will prevail. Morning temperatures will be around -1 °C. During the day they will rise to a maximum of 8 °C. Low temperatures at night will be around 1°C. We have weak easterly winds.
Webcam with view from Veysonnaz in direction of Sion:
for a new image please reload this page


text:
Q: Do built-in Python classes have attributes, and if so, how do I find those that are available to the class? This feels like a simple question, but I can't seem to figure out the answer after much searching. I'm wondering if, for instance, lists have attributes. By attributes I mean values that are accessed by dot notation (not methods). Do strings have them?
If I assign a string value to a variable:
test = 'test'
I tried dir(test), which returned a long list that included stuff like:
['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 'capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 'expandtabs',
 'find',
 'format',
 'format_map',
 'index',
 ...]

(Note that I cut items off this list to abridge it.) What are the items with underscores? The other items seem to be methods. Are there any attributes? How would I identify an attribute?
Same question for instances of the list class. How do I see all the available attributes of the class?

A: Both methods and attributes are considered attributes in python, dir() lists them all. You can check what they are by doing
test = 'test'
for attr in dir(test):
  print(f"{attr} : {type(getattr(test,attr))}")

Try it on this example, it will be more clear:
class TestClass:
  def __init__(self,a):
    self.a = a
  def add_b(self, b):
    return self.a + b

test = TestClass(10)
for attr in dir(test):
  print(f"{attr} : {type(getattr(test,attr))}")

A: I will add to the previous answer. The underscore methods are known as dunder methods (double underscore). Double underscore is used to prevent name collision with any functions names that a programmer might use.
These methods are usually called by python interpreter. For example __init__ is called by python during object instantiation. You can override these methods to change the functionality of the object. For example you can override __add__ method to add summation functionality to custom data types.


The Palisade is 2 stories of charm and versatility. Entering the home, you are immediately introduced to a study that allows many options including a study or a 5th bedroom with full bath. The light-filled open-floor plan allows for the gathering room and dining room to be shaped as needed for everyday family time or entertaining guests. The kitchen has granite and is open to the entire area adding to the versatility of the space. Light pours into the home from the 16' sliders with extended covered lanai with several available options including a summer kitchen. The owner's suite includes vaulted ceilings and his and hers vanities. Three bedrooms and a bath are located upstairs. The two-car garage, located at the front of the home, conveniently opens into the utility room.