[BUG] AI Search connection in mlindex_content not detected

Describe the bug
I have a Multi-Round Q&A on Your Data chat flow which queries Azure AI Search and passes the results, along with the chat history and question to Azure OpenAI. After exporting the flow, with the intention of deploying to Azure App Service. I am unable to successfully run a built flow (either as an executable or docker image). I believe this is due to the Azure AI Search connection being ignored.
When running pf flow serve the flow runs correctly and I am able to get responses.
I have tried this with prompt flow verisons 1.9.0, 1.10.0 and 1.11.0.
How To Reproduce the bug
Steps to reproduce the behavior, how frequent can you experience the bug:

Create a Multi-Round Q&A on your data chat flow.
Export the flow locally
Install the requirements pip install -r requirements.txt
Create the AI Search and Open AI connections files
Add the connections to prompt flow pf connection create -f <file>
Build the flow pf flow build --source . --output dist-docker --format docker
Inspect the dist-docker/connections directory and observe that the AI Search connection is missing

Expected behavior
The AI search connection is picked up and connection file created.
Screenshots
If applicable, add screenshots to help explain your problem.
Running Information(please complete the following information):

Promptflow Package Version using pf -v: [e.g. 0.0.102309906]

$ pf -v
{
 "promptflow": "1.9.0",
 "promptflow-core": "1.9.0",
 "promptflow-devkit": "1.9.0",
 "promptflow-tracing": "1.9.0"
}

Operating System: [e.g. Ubuntu 20.04, Windows 11]

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Python Version using python --version: [e.g. python==3.10.12]

$ python --version
Python 3.11.8

Additional context
Example files, click to expand:

A shorterned and redacted example prompt flow
id: bring_your_own_data_chat_qna
name: Bring Your Own Data Chat QnA
inputs:
  chat_history:
    type: list
    default:
    - inputs:
        chat_input: Hi
      outputs:
        chat_output: Hello! How can I assist you today?
    - inputs:
        chat_input: What is Azure compute instance?
      outputs:
        chat_output: An Azure Machine Learning compute instance is a fully managed
          cloud-based workstation for data scientists. It provides a
          pre-configured and managed development environment in the cloud for
          machine learning. Compute instances can also be used as a compute
          target for training and inferencing for development and testing
          purposes. They have a job queue, run jobs securely in a virtual
          network environment, and can run multiple small jobs in parallel.
          Additionally, compute instances support single-node multi-GPU
          distributed training jobs.
    is_chat_input: false
    is_chat_history: true
  chat_input:
    type: string
    default: How can I create one using azureml sdk V2?
    is_chat_input: true
outputs:
  chat_output:
    type: string
    reference: ${chat_with_context.output}
    is_chat_output: true
nodes:
- name: lookup
  type: python
  source:
    type: package
    tool: promptflow_vectordb.tool.common_index_lookup.search
  inputs:
    mlindex_content: >
      embeddings:
        api_base: https://<openai-resource-redacted>.openai.azure.com/
        api_type: azure
        api_version: '2024-02-01'
        batch_size: '1'
        connection:
          id: /subscriptions/<subscription-redacted>/resourceGroups/<resource-group-redacted>/providers/Microsoft.MachineLearningServices/workspaces/<aml-workspace-redacted>/connections/openai_connection
        connection_type: workspace_connection
        deployment: text-embedding-ada-002
        dimension: 1536
        kind: open_ai
        model: text-embedding-ada-002
        schema_version: '2'
      index:
        api_version: '2023-11-01'
        connection:
          id: /subscriptions/<subscription-redacted>/resourceGroups/<resource-group-redacted>/providers/Microsoft.MachineLearningServices/workspaces/<aml-workspace-redacted>/connections/aisearch_connection
        connection_type: workspace_connection
        endpoint: https://<ai-search-resource-redacted>.search.windows.net
        engine: azure-sdk
        field_mapping:
          content: content
          embedding: content_vector
          metadata: metadata
        index: <search-index-redacted>
        kind: acs
        semantic_configuration_name: default
    queries: ${inputs.chat_input}
    query_type: Hybrid (vector + keyword)
    top_k: 2
  use_variants: false
- name: chat_with_context
  type: llm
  source:
    type: code
    path: chat_with_context.jinja2
  inputs:
    deployment_name: gpt-35-turbo-16k
    temperature: 0
    top_p: 1
    max_tokens: 1000
    presence_penalty: 0
    frequency_penalty: 0
    prompt_text: ${Prompt_variants.output}
  provider: AzureOpenAI
  connection: openai_connection
  api: chat
  module: promptflow.tools.aoai
  use_variants: false
node_variants: {}
environment:
  python_requirements_txt: requirements.txt

AI Search Connection
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/CognitiveSearchConnection.schema.json
name: aisearch_connection
type: cognitive_search
api_key:  ${env:AISEARCH_CONNECTION_API_KEY}
api_base: "https://<search-resource-redacted>.search.windows.net"
api_version: "2023-03-15-preview"

I've been playing around with this test with my flow.dag.yml and it looks like where it's falling down is in flow.py:get_connection_names() where it does not inspect the mlindex_content.
I'm not sure if the code has changed to break this, if the generated flow.dag.yml interface has changed or perhaps this has never worked?

Looks like there has been a change to this recently https://learn.microsoft.com/en-us/azure/machine-learning/prompt-flow/tools-reference/index-lookup-tool?view=azureml-api-2#how-to-migrate-from-legacy-tools-to-the-index-lookup-tool.

Pretty sure you hit the same problem I did: https://github.com/microsoft/promptflow/issues/2876
You have to do the metadata account set manually, for whatever reason the activity is not taking the config.json file into consideration:
az login az account set --subscription <subscription_id> az configure --defaults group=<resource_group_name> workspace=<workspace_name>

I've hardcoded a connection in the flow.dag.yml which has got me further.
I am now getting a response of:
{"error":{"code":"UserError","message":"Execution failure in 'index_lookup': (Exception) Exception occured in search_function_construction."}}

I have also deployed this to an AML endpoint using the deploy button in AML and get the same error there.

The response didn't show the full error reason, you could reach the error detail from the app service's container logs.
If the error caused by connection missing, I could explain more about the connections when deploy to app service.
When deploying to Azure App service, promptflow will use connection locally ( here the locally means the connections meta stored in local sqlite ), I took a look at your flow, there are 2 connections, the AI search one and the OpenAI one. If you wanna use Azure AI connections which stored in the Azure AI project, please set the connection provider config to let promptflow fetching Azure AI connections ( you may need to add command in the container startup script, also remember to add the app service as reader roles to your AI project to access the connection keys ). Refer to here for the connection config.

Usually we won't assume user is deploying app service with AzureAI connections, that will cause many problems, like the permission, the service principal role, balabala, so by default we will guide user setup connections again for there app service locally by setting the app service environment variables. The locally setup guides you could reach via the following documentation:
https://microsoft.github.io/promptflow/cloud/azureai/deploy-to-azure-appservice.html#view-and-test-the-web-app

Heya, thanks for your response! Unfortunately, even after setting the connection.provider=local setting, it does not pick up the AI Search connection unless I manually add it to the flow.dag.yaml.
Regarding the Exception occured in search_function_construction error. I get this both locally and when the flow is deployed as an AML endpoint. Here is the exception from the logs:
[2024-05-21 07:14:14,056][flowinvoker][ERROR] - Flow run failed with error: {'message': "Execution failure in 'index_lookup': (Exception) Exception occured in search_function_construction.", 'messageFormat': "Execution failure in '{node_name}'.", 'messageParameters': {'node_name': 'index_lookup'}, 'referenceCode': 'Tool/promptflow_vectordb.tool.common_index_lookup', 'code': 'UserError', 'innerError': {'code': 'ToolExecutionError', 'innerError': None}, 'additionalInfo': [{'type': 'ToolExecutionErrorDetails', 'info': {'type': 'Exception', 'message': 'Exception occured in search_function_construction.', 'traceback': 'Traceback (most recent call last):
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/utils/profiling.py", line 18, in measure_execution_time
    yield
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 54, in _get_search_func
    search_func = build_search_func(index, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup_extensions/utils.py", line 37, in build_search_func
    store = index.as_langchain_vectorstore()
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/azureml/rag/mlindex.py", line 212, in as_langchain_vectorstore
    return azuresearch.AzureSearch(
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/langchain_community/vectorstores/azuresearch.py", line 268, in __init__
    self.client = _get_search_client(
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/langchain_community/vectorstores/azuresearch.py", line 84, in _get_search_client
    from azure.search.documents.indexes.models import (
ImportError: cannot import name \'ExhaustiveKnnAlgorithmConfiguration\' from \'azure.search.documents.indexes.models\' (/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/azure/search/documents/indexes/models/__init__.py)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/tracing/_trace.py", line 470, in wrapped
    output = func(*args, **kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/core/logging/utils.py", line 98, in wrapper
    res = func(*args, **kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 125, in search
    search_func = _get_search_func(mlindex_content, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 54, in _get_search_func
    search_func = build_search_func(index, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/utils/profiling.py", line 21, in measure_execution_time
    raise Exception(error_msg) from e
Exception: Exception occured in search_function_construction.
', 'filename': '/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/utils/profiling.py', 'lineno': 21, 'name': 'measure_execution_time'}}], 'debugInfo': {'type': 'ToolExecutionError', 'message': "Execution failure in 'index_lookup': (Exception) Exception occured in search_function_construction.", 'stackTrace': '
The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/flow_executor.py", line 1008, in _exec
    output, aggregation_inputs = self._exec_inner_with_trace(
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/flow_executor.py", line 913, in _exec_inner_with_trace
    output, nodes_outputs = self._traverse_nodes(inputs, context)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/flow_executor.py", line 1189, in _traverse_nodes
    nodes_outputs, bypassed_nodes = self._submit_to_scheduler(context, inputs, batch_nodes)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/flow_executor.py", line 1244, in _submit_to_scheduler
    return scheduler.execute(self._line_timeout_sec)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/_flow_nodes_scheduler.py", line 131, in execute
    raise e
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/_flow_nodes_scheduler.py", line 113, in execute
    self._dag_manager.complete_nodes(self._collect_outputs(completed_futures))
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/_flow_nodes_scheduler.py", line 160, in _collect_outputs
    each_node_result = each_future.result()
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/concurrent/futures/_base.py", line 439, in result
    return self.__get_result()
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/concurrent/futures/_base.py", line 391, in __get_result
    raise self._exception
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/executor/_flow_nodes_scheduler.py", line 181, in _exec_single_node_in_thread
    result = context.invoke_tool(node, f, kwargs=kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/_core/flow_execution_context.py", line 90, in invoke_tool
    result = self._invoke_tool_inner(node, f, kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/_core/flow_execution_context.py", line 206, in _invoke_tool_inner
    raise ToolExecutionError(node_name=node_name, module=module) from e
', 'innerException': {'type': 'Exception', 'message': 'Exception occured in search_function_construction.', 'stackTrace': '
The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/_core/flow_execution_context.py", line 182, in _invoke_tool_inner
    return f(**kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow/tracing/_trace.py", line 470, in wrapped
    output = func(*args, **kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/core/logging/utils.py", line 98, in wrapper
    res = func(*args, **kwargs)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 125, in search
    search_func = _get_search_func(mlindex_content, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 54, in _get_search_func
    search_func = build_search_func(index, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/contextlib.py", line 137, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/utils/profiling.py", line 21, in measure_execution_time
    raise Exception(error_msg) from e
', 'innerException': {'type': 'ImportError', 'message': "cannot import name 'ExhaustiveKnnAlgorithmConfiguration' from 'azure.search.documents.indexes.models' (/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/azure/search/documents/indexes/models/__init__.py)", 'stackTrace': 'Traceback (most recent call last):
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/utils/profiling.py", line 18, in measure_execution_time
    yield
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup.py", line 54, in _get_search_func
    search_func = build_search_func(index, top_k, query_type)
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/promptflow_vectordb/tool/common_index_lookup_extensions/utils.py", line 37, in build_search_func
    store = index.as_langchain_vectorstore()
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/azureml/rag/mlindex.py", line 212, in as_langchain_vectorstore
    return azuresearch.AzureSearch(
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/langchain_community/vectorstores/azuresearch.py", line 268, in __init__
    self.client = _get_search_client(
  File "/azureml-envs/prompt-flow/runtime/lib/python3.9/site-packages/langchain_community/vectorstores/azuresearch.py", line 84, in _get_search_client
    from azure.search.documents.indexes.models import (
', 'innerException': None}}}}

Any progress on this? I'm trying to deploy a docker image with Azure Cognitive Search, and im getting stuck with connection problem. I can't seem to find a good solution, I'm missing connection or its not using it properly.


Extend antimalware to use the VirusTotal API

Summary
This is a proposal to extend the AntiMalware cog to automatically submit file links and attachments to the VirusTotal API for testing.
https://developers.virustotal.com/reference/overview
The public API allows up to 500 requests per day, which, after excluding image links and possibly some additional whitelisted domains, would be fairly sufficient for use.
A new command could possibly also be implemented for directed scanning of URLs / file attachments.
Rationale
On more than a few occasions, members were able to post external links to actual malware files. In addition, the current file extension exclusion does not protect against binary text formats (such as .csv, which is also a binary format used by Microsoft Excel, and happens to also be a discord native preview format), possibly allowing remote deployment of malicious binaries without user-interaction.
I am available to work on a PR for this if approved.

I’ve never had good experiences with VT, I’ve always had it flag everything as safe. Is there a specific instance/site this is trying to protect against which can not be achieved with normal blacklists.

I think a few previous incidents involved Mediafire / custom file hosts. Which were removed after some users submitted virus total results. I'm not sure how much additional coverage there would be but it would at least offer some additional protection.
In addition, this addresses the binary/text dual format preview vulnerability, as discord CDN files offer a direct link that Virus Total is able to download and analyze.


Color cycling based animations

Hi!
Not a heavy VSCode user here, basically just installed it to test this pets extension :smiling_imp:
I was thinking to myself, implementing color cycling support for 8-bit palette images would be a great addition.
Something along the lines of http://www.effectgames.com/demos/canvascycle/?sound=1

I was thinking backgrounds in the first place, but maybe pets too (?) :thinking:


Demo with Jygments

Hi
I hacked together an example using Jygments and RichTextFX:
https://github.com/daniel6651/JygPane
And also added some CSS from Pygments I found on various places and tried to adapt them to JavaFX css.
I think adding a more thorough implementation of this would spare many people work if added directly in RichTextFX. Perhaps supporting Sublime Syntax definitions instead of using Jygments?
Cheers,
Daniel

If this is similar to what's already been proposed in #275, please read through that thread. Otherwise, could you clarify how this is different?

They are a bit similar indeed.
Jygments however have the advantage of being simpler to add upport for a new language.
There is also a ton of languages already supported by pygments that doesn't require much effort to include in jygments.
Ontop of that lots of ready themes from pygments to choose from.
A disadvantage might be that the parsing is somewhat slower than for an ANTLR parser/lexer.
But in short - more bang for the buck.
-Daniel

Makes sense. I'm sure a demo showing a way of adding support for languages that is different from ANTLR would be appreciated.

Closing due to being outside the scope of this project. I've also written an explanation of what "out of the scope of this project" means in the wiki


Update Site settings “info”

Automatically generated by Netlify CMS

:construction_worker: Deploy Preview for thar-ai processing.
:hammer: Explore the source changes: 6a9d33026d7e503b911af620f3163c1ef818af87
:mag: Inspect the deploy log: https://app.netlify.com/sites/thar-ai/deploys/60c903de3250720008786b4f


Remove Swagger static configuration and add a template for the login page

New Django login page

I think we should not remove the admin_cohort/.env.example file as it is meant to be a template for who ever wants to contribute to the project and create his own .env file.
Also, we need to updated it to contain the same set of variables as .env and empty the values of some critical variables if necessary.

Perso j'enlèverais le logo APHP Cohort360 étant un projet Open Source, mais bon on peut se reposer la question plus tard.
Sinon c bon pour moi

@Dubrzr we have the APHP logo on the Cohort login page as well.
But yes we can discuss about the usefulness of this logo.

This should then be configurable maybe ^^


[Question] Negative Loss

:question: Question
Hi I am currently trying to train the model on self annotated data. Unfortunately the loss always tends to become negative and the results are very poor. Do you have an idea why this could be the case? The data is just a segmentation of fracture in some bone, it's just one class so there is no instance segmentation mask.
BR Laurenz :)

Hi,

it is normal that the loss becomes negative since nnDetection skips some of the +1 additions to keep the loss positive - the optimization remains the same (e.g. Dice, GIoU loss)
What do you mean by "just a segmentation of fracture"? e.g. Can there be multiple fractures at different positions? An instance segmentation can also contain multiple instances of the same class which need to be assigned different ids - otherwise there is not way to differentiate the different instances from each other.
Are the fractures very large and the low res stage is needed to enclose them in a box within a single patch? What is the patch size determined by nnDetection?

Best,
Michael

Hi thanks for the fast reply!

Ah ok i see i thought there was something wrong with the labelling of the data maybe.
There is at most one fracture visible per slice.
Where would i be able to find this? The fractures are compared to the slice dimension (512 x 512) rather small. In the the file train.log i found this: Loading network patch size [128 192 128] and generator patch size [295, 328, 249].

Maybe for further information, i use this config:
{
    "name": "ForeArm",
    "task": "Task123_ForeArm",
    "target_class": null,
    "test_labels": false,
    "labels": {
        "0": "fracture"
    },
    "modalities": {
        "0": "CT"
    },
    "dim": 3
}

with this:
{
    "instances": {
        "1": 0
    }
}

for each sample.

The patch size looks good to me (I thought maybe something is off there ;) )
"There is at most one fracture visible per slice." -> Is it really slice or scan?
If multiple fractures can occur within the image an instance segmentation (or at least connected components to derive instances) is needed. Otherwise the derived objects are wrong, e.g.
Consider the following example:
If fracture one is in the top left of the image, fracture two is in the bottom right and both fractures have the same number inside the segmentation (i.e. they are treated as the same instance) ==> the derived bounding box will span the entire image which is wrong.
"Image" refers to the whole 3D (CT/MRI) volume, not an individual slice. nnDetection is build to process 3D volumes and thus is uses 3d patches & networks.

Ok initially i had the same concern.. What i mean is that per scan (3D volume) only one fracture, which spans throughout multiple slices, is visible. So if you were to look at an individual slice you would at most see one fracture.

Okey, than a single instance in the segmentation is the correct approach - since there is only a single fracture in the entire volume (it doesn't matter if it spans multiple slices).
How do you currently quantify "poor results"? Are the boxes inaccurate, are many fracture missed completely etc. ? What is the AP @ IoU0.1 and FROC @ IoU0.1 in the val_results folder?

I interrupted the training for the different folds at some point, as during training the achieved metrics were very low and limited resource access.
mAP@0.1:0.5:0.05: 0.122<EMAIL_ADDRESS>0.298<EMAIL_ADDRESS>0.006
Proxy FG Dice: 0.190
I could rerun everything and report more precice results after the training ise finished.

I stopped training after 15 epochs. The dataset contains roughly 30 volumes with fractures.

Hi, i retrained for 25 epochs and i can report the following values in the val_results folder:
AP_IoU_0.10_MaxDet_100": "0.39791311179794886
FROC_score_IoU_0.10": "0.4047619047619047

For reliable inference I would expect higher values. Do you think there is a problem with the data or the configuration files of the training? I cannot really think of any other problem as I reproduced good results on e.g. RibFrac.
BR and have a nice weekend,
Laurenz :)

The results seems rather low indeed, until now I have never tested nnDetection on datasets <100 objects. Even 100 objects is already quite at the low end of the spectrum which I would recommend. Usually aiming for at least ~300 objects in the dataset is a good reference value. (at least without exploring more sophisticated techniques like transfer learning which is currently not supported natively)
There could also be other factors, e.g. objects are very large and do not fit into a single patch which hampers performance significantly -> I don't really think this is the case here though.

Ok thanks a lot, I will try to acquire more training samples in that case. If I manage I'll report back!


How to pip install FCDD ?

Hey there!
I would like to run the windows version of mvtec.py.
But i could not install FCDD after installing the requirements , and got all this errors
when mvtec.py tries to access bases.py
from fcdd.runners.argparse_configs import DefaultConfig
from fcdd.training.setup import trainer_setup
from fcdd.training.super_trainer import SuperTrainer
from fcdd.util.logging import plot_many_roc, time_format
from fcdd.util.metrics import mean_roc
Which is the right pip command to install it?
In the installation instructions says: pip install... (nothing)
Thanks you so much!

Hey.
The installation says pip install ., which is different from pip install nothing.
The dot refers to the current working directory, which should be the python directory (https://github.com/liznerski/fcdd/tree/master/python), as mentioned in the readme. So either you change your directory to this one, or type pip install path/to/my/python/directory/.


⚠ Bofrost.at has degraded performance

In bd32f8a, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1503 ms

Resolved: Bofrost.at performance has improved in c4aad55.


Release file is missing \glsdk\ folder as well as gloadD.lib

System: Windows 10 21H1
IDE: Visual Studio Community Edition 2019
Premake Version: Premake5 5.0.0-alpha16
The release is currently missing the entire glsdk folder which is fairly easy to fix by grabbing the master branch itself.
The main problem is that after grabbing the glsdk folder and running premake you end up with linker issues in VS2019 where the file glloadD.lib is unable to be opened (it doesn't exist). I tried building it by going into the glsdk folder and running premake on that folder but unfortunately it does not seem to work. I get the error:
Error: invalid value 'Unicode' for flags
To clarify I've tried going through the premake wiki to look for an older version of the binary to run (https://github.com/premake/premake-4.x/wiki) but all the links are dead.
Any help would be appreciated, thank you for your time.

To clarify I've tried going through the premake wiki to look for an older version of the binary to run (https://github.com/premake/premake-4.x/wiki) but all the links are dead.
Any help would be appreciated, thank you for your time.

I know I'm replying to an old message. However if someone is still looking for it - premake4 old releases are still available at the old sourceforge site at https://sourceforge.net/projects/premake/files/latest/download
Unlike the source on github, the sourceforge version does have build files to build premake4.

Like @abhishekmishra I found the premake4 on sourceforge. The pre-build binaries are no god because they are only 32 bit.
All I had to do is download the src archive of premake4 and clone this repo as to get the glsdk/ folder.
I build both and now building the tutorials works.


Write implementation instructions

hello @albertyw, can you help me with the instructions please? i'm having problems with the encrypt/decrypt of profiles.
thanks!


Updated composer.json and dependencies

added description
updated keywords
added support links
allow PHPUnit 7
removed minimum-stability and prefer-stable
added colors=always for phpunit runner

Thanks, @webimpress.


more generic, but still very basic, ansible task examples.

Signed-off-by: Thomas Sjögren<EMAIL_ADDRESS>

#sign-off

@konstruktoid Would you be kind to resolve the merge conflicts within the PR? Thank you.

@e0i, fixed.

BTW, was this PR based on any issue ticket feedback?

@illfated, nope.

#sign-off

@mjcaparas Looks like the PR is ready to merge. Thanks.


update stable deps

Coverage remained the same at 100.0% when pulling 8b1da12ed22fb3e520b5b251c3c200051144e2a5 on update-dep into 272c75f64b5a2b1754927d31b90fefcb744a560e on master.


Fix: App wont start because initialy there is not data

Quick and dirty fix to create the data directory and download the data, if it doesn't exist.
Nice dashboard btw!

Thanks @DanielVolz
I'll redeploy in a second :)

You're welcome!
The problem occurred for me on a win10 machine with the newest R and RStudio (I downloaded it today just to try your awesome app).

I did another minor change. The data was downloaded each time now the app was started, which was a bit annoying while coding. Now it only downloads the data if it is older than 30mins.
If the data folder is not available it is created and downloads the data

Yes, this is a much better fix!


Add logging for retry attempts

Similar to some other packages that also handle retrying:

Add log calls in the code.
Add an optional kwarg to allow passing in of logger instance.

duplicate issue, sorry (GitHub 500)


Retain day of month for iteration

This feels wrong
2014 Jan + 1M returns 2014-02-01
april+1M returns 2021-05-02
If I add 72 months will i get 7231 days or 721month

This is indeed controversial. The problem with month/year addition/subtraction is that the total period differs depending on the other operand. I'm having trouble keeping that sane, as you can tell.
This is definitely an enhancement opportunity

I think this discussion is going to return but for now 5327c6e removes this particular inconsistency.


⚠ API - Lens has degraded performance

In 705a387, API - Lens ($LENS_API_URL) experienced degraded performance:

HTTP code: 503
Response time: 404 ms

Resolved: API - Lens performance has improved in 58176dd after 6 minutes.


Schema-tools do not check changes properly for PRs with non-master base

This comes up periodically when we attempt to use feature branches or long-lived version branches like v5 in pulumi-aws. If we are using such a branch and building PRs that use this branch as a base, typically the schema-tools checks will not show what you expect.
https://github.com/pulumi/pulumi-aws/pull/3031 for example.
Does the PR have any schema changes?

Found 1137 breaking changes:

This is not right. I suspect that schema-tools compares the PR against the master or main branch instead of the base branch of the PR like v5.

Here is an example where this is done correctly, although outside of ci-mgmt.


CSS Breaking when used with twitter bootstrap 3.3.6

Hi, i am trying to used jExcel on an application that uses Bootstrap 3.3.6.
I am loading jExcel``s css after bootstrap`s css and i still having jExcel being rendered as bellow:

When i remove bootstrap.css from the page, jExcel renders normally:

Thanks for you awesome component btw.

Hi Rafael,
I have created a fiddle to test and I have just added the box-sizing to fix the corner symbol. I am going to incorporate that in the next commit. One think you should try to do is to load the jExcel css after the boostrap css. Let me know if this helps you.
Please take a look on this:
https://jsfiddle.net/t61bgwf2/1/

Hi Rafael,
Thanks for your inquire. I have updated the plugin to avoid conflict with Bootstrap 3. I have tested and it is working fine. I have already commit the changes. https://jsfiddle.net/t61bgwf2/1/


python310Packages.tubeup: 2023.8.10 -> 2023.8.17

Changelog: https://github.com/bibanon/tubeup/releases/tag/2023.8.17
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 250134 run on x86_64-linux 1

4 packages built:

python310Packages.tubeup
python310Packages.tubeup.dist
python311Packages.tubeup
python311Packages.tubeup.dist


Getting fooof_mat working with Simulink

Working with @frankop-sd, we were trying to get this wrapper working in a simulink context, with the SIM-BSI system. So far this isn't working, and I'm not yet sure the exact extra constraints that Simulink has that create these problems, and what to do about them.
ToDo:

investigate what the problem is
strategize a solution

This isn't really something on our radar t look into, and I don't know how to go about doing it - so I'm going to close this. If anyone is trying to work with Simulink, or has any idea how to go about this, then feel free to re-open this!


ref(README): make it easier to find install instru

*places install instructions higher up for quickstart
resolves #734

nice! LGTM


ERROR render of "page" failed

Describe the bug
After upgrade blowfish to the latest version, the error message occurred when I tried to build a site.
To Reproduce
Try to build a site as follow:

hugo

Expected behavior
Building the site is success.
Screenshots

Desktop (please complete the following information):

OS: Windows 10 22H2

Hugo & Blowfish versions
Hugo : 0.125.7
Blowfish: 2.68.0
Additional context
Detailed error messages are as follows:
hugo v0.125.7-b1d808bc373f53ad37c8966bb02a6aea095db5f8+extended windows/amd64 BuildDate=2024-05-08T14:46:24Z VendorInfo=gohugoio
ERROR render of "page" failed: "C:\blog\innofactory_blog\themes\blowfish\layouts_default\single.html:52:13": execute of template failed: template: _default/single.html:52:13: executing "main" at <partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink)>: error calling partial: "C:\blog\innofactory_blog\themes\blowfish\layouts\partials\author-extra.html:14:40": execute of template failed: template: partials/author-extra.html:14:40: executing "partials/author-extra.html" at <$authorImage.Fill>: error calling Fill: error calling resources.GetRemote: Get "profile.png": unsupported protocol scheme ""
Total in 7106 ms
Error: error building site: render: failed to render pages: render of "page" failed: "C:\blog\innofactory_blog\themes\blowfish\layouts_default\single.html:52:13": execute of template failed: template: _default/single.html:52:13: executing "main" at <partial "author-extra.html" (dict "context" . "data" $authorData "link" $taxonomyLink)>: error calling partial: "C:\blog\innofactory_blog\themes\blowfish\layouts\partials\author-extra.html:14:40": execute of template failed: template: partials/author-extra.html:14:40: executing "partials/author-extra.html" at <$authorImage.Fill>: error calling Fill: error calling resources.GetRemote: Get "profile.png": unsupported protocol scheme ""

This problem appears to occur when the "profile.png" file does not exist.

As you can see here, the partial author-extra.html was not changed between version v2.67.0 and v2.68.0.
What version of Blowfish did you upgrade from? Is profile.png a local asset or are you getting it from a remote URL? Did you recently also upgrade Hugo versions?


Resolve Unicode hotfix

The Unicode parser hotfix can be removed when https://github.com/go-yaml/yaml/issues/737 is closed.

Forked go-yaml and removed the hotfix code in #65


Fix new branch dialog showing the wrong starting point

When currently on a detached head, the detached head is visible and automatically chosen as the starting point even if another commit has been selected from the commit graph

haha I am working on something similar ^^ if only a remote is at a specific commit, the remote gets not selected.


[BUG][OTHER] Meaningful bug description

Required Basic Info

Accelerator Version:  1.5.1-a
Install Type: Clean

Happy to provide more information if it's helpful.
I'm getting an Enrollment failed error in Control Tower for one of my mandatory accounts on initial installation. AWS info says:

Account enrollment can fail for the following reasons:

Your IAM principal lacks the necessary permissions to provision an account. To enroll an existing account, the AWSControlTowerExecution role must be present in the account you're enrolling.
AWS Security Token Service (AWS STS) is disabled in your AWS account in your home region.

Subsequent runs of the state machine fail because of the account in that state.
Here are my cfn parameters which are

Key
Value
-

AcceleratorName
APA
-

AcceleratorPrefix
APA-
-

CodeBuildComputeType
BUILD_GENERAL1_LARGE
-

ConfigBranchName
main
-

ConfigRepositoryName
[company]-Config-Repo
-

ConfigS3Bucket
[company]-config-bucket
-

DeploymentPageSize
680
-

NotificationEmail
<EMAIL_ADDRESS>-

RepositoryBranch
release/v1.5.1-a
-

RepositoryName
aws-secure-environment-accelerator

Hi - Really need more context, but, this message "AWS Security Token Service (AWS STS) is disabled in your AWS account in your home region" - tells me someone has very likely turned off STS in one of the regions - STS Service MUST be Enabled in all regions managed by Control Tower and/or the ASEA, turn it back on: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html

I don't think that's the problem unfortunately because STS is enabled in us-east-1 the only region I'm deploying in. I'm including more details below:

config.json

{
  "replacements": {
    "addl_regions": {
      "a": ["${HOME_REGION}"],
      "b": ["${HOME_REGION}"],
      "c": ["${HOME_REGION}"]
    },
    "range-dev-test": ["<IP_ADDRESS>/0"],
    "range-restrict": ["<IP_ADDRESS>/8", "<IP_ADDRESS>/23", "<IP_ADDRESS>/23"]
  },
  "global-options": {
    "ct-baseline": true,
    "default-s3-retention": 90,
    "central-bucket": "company-config-bucket",
    "organization-admin-role": "AWSControlTowerExecution",
    "default-cwl-retention": 731,
    "workloadaccounts-suffix": 1,
    "workloadaccounts-prefix": "config",
    "workloadaccounts-param-filename": "config.json",
    "ignored-ous": [],
    "additional-global-output-regions": [],
    "supported-regions": ["${HOME_REGION}"],
    "control-tower-supported-regions": ["${HOME_REGION}"],
    "separate-s3-dp-org-trail": true,
    "keep-default-vpc-regions": [],
    "aws-org-management": {
      "account": "management",
      "region": "${HOME_REGION}",
      "add-sns-topics": true
    },
    "central-security-services": {
      "account": "security",
      "region": "${HOME_REGION}",
      "security-hub-excl-regions": [],
      "security-hub": true,
      "guardduty": true,
      "guardduty-excl-regions": [],
      "guardduty-s3": true,
      "guardduty-s3-excl-regions": [],
      "cwl": true,
      "cwl-access-level": "full",
      "access-analyzer": true,
      "config-excl-regions": [],
      "config-aggr-excl-regions": [],
      "fw-mgr-alert-level": "Low",
      "security-hub-findings-sns": "Low",
      "add-sns-topics": true
    },
    "central-operations-services": {
      "account": "security",
      "region": "${HOME_REGION}",
      "cwl": false
    },
    "central-log-services": {
      "account": "log-archive",
      "region": "${HOME_REGION}",
      "s3-retention": 730,
      "cwl-glbl-exclusions": [],
      "cwl-exclusions": [],
      "ssm-to-s3": true,
      "ssm-to-cwl": true,
      "sns-excl-regions": [],
      "sns-subscription-emails": {
        "High"<EMAIL_ADDRESS>        "Medium"<EMAIL_ADDRESS>        "Low"<EMAIL_ADDRESS>      },
      "dynamic-s3-log-partitioning": [
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/MAD",
          "s3Prefix": "managed-ad"
        },
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/rql",
          "s3Prefix": "rql"
        },
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/SecurityHub",
          "s3Prefix": "security-hub"
        },
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/Nfw",
          "s3Prefix": "nfw"
        },
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/rsyslog",
          "s3Prefix": "rsyslog"
        },
        {
          "logGroupPattern": "/${ACCELERATOR_PREFIX_ND}/SSM",
          "s3Prefix": "ssm"
        }
      ]
    },
    "additional-cwl-regions": {},
    "reports": {
      "cost-and-usage-report": {
        "additional-schema-elements": ["RESOURCES"],
        "compression": "Parquet",
        "format": "Parquet",
        "report-name": "Cost-and-Usage-Report",
        "s3-prefix": "cur",
        "time-unit": "HOURLY",
        "additional-artifacts": ["ATHENA"],
        "refresh-closed-reports": true,
        "report-versioning": "OVERWRITE_REPORT"
      }
    },
    "vpc-flow-logs": {
      "filter": "ALL",
      "interval": 600,
      "default-format": false,
      "custom-fields": [
        "version",
        "account-id",
        "interface-id",
        "srcaddr",
        "dstaddr",
        "srcport",
        "dstport",
        "protocol",
        "packets",
        "bytes",
        "start",
        "end",
        "action",
        "log-status",
        "vpc-id",
        "subnet-id",
        "instance-id",
        "tcp-flags",
        "type",
        "pkt-srcaddr",
        "pkt-dstaddr",
        "region",
        "az-id",
        "pkt-src-aws-service",
        "pkt-dst-aws-service",
        "flow-direction",
        "traffic-path"
      ]
    },
    "security-hub-frameworks": {
      "standards": [
        {
          "name": "AWS Foundational Security Best Practices v1.0.0",
          "controls-to-disable": ["EC2.10", "Lambda.4"]
        },
        {
          "name": "CIS AWS Foundations Benchmark v1.2.0",
          "controls-to-disable": ["CIS.1.20", "CIS.1.22", "CIS.2.6"]
        }
      ]
    },
    "iam-password-policies": {
      "allow-users-to-change-password": true,
      "hard-expiry": false,
      "require-uppercase-characters": true,
      "require-lowercase-characters": true,
      "require-symbols": true,
      "require-numbers": true,
      "minimum-password-length": 14,
      "password-reuse-prevention": 24,
      "max-password-age": 90
    },
    "scps": [
      {
        "name": "Guardrails-Part-0",
        "description": "ASEA Guardrails Part 0 Workload Accounts",
        "policy": "ASEA-Guardrails-Part0-WkldOUs.json"
      },
      {
        "name": "Guardrails-Part-1",
        "description": "ASEA Guardrails Part 1",
        "policy": "ASEA-Guardrails-Part1.json"
      },
      {
        "name": "Guardrails-Sensitive",
        "description": "ASEA Guardrails Sensitive Environment Specific",
        "policy": "ASEA-Guardrails-Sensitive.json"
      },
      {
        "name": "Guardrails-Unclass",
        "description": "ASEA Guardrails Unclassified Environment Specific",
        "policy": "ASEA-Guardrails-Unclass.json"
      },
      {
        "name": "Guardrails-Sandbox",
        "description": "ASEA Guardrails Sandbox Environment Specific",
        "policy": "ASEA-Guardrails-Sandbox.json"
      },
      {
        "name": "Quarantine-New-Object",
        "description": "ASEA Quarantine policy - Apply to ACCOUNTS that need to be quarantined",
        "policy": "Quarantine-New-Object.json"
      },
      {
        "name": "Guardrails-Part-0-Core",
        "description": "ASEA Guardrails Part 0 Core Accounts",
        "policy": "ASEA-Guardrails-Part0-CoreOUs.json"
      }
    ],
    "cloudwatch": {
      "metrics": [
        {
          "filter-name": "SecurityGroupChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "SecurityGroupEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "NetworkAclChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = CreateNetworkAcl) || ($.eventName = CreateNetworkAclEntry) || ($.eventName = DeleteNetworkAcl) || ($.eventName = DeleteNetworkAclEntry) || ($.eventName = ReplaceNetworkAclEntry) || ($.eventName = ReplaceNetworkAclAssociation)}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "NetworkAclEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "GatewayChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = CreateCustomerGateway) || ($.eventName = DeleteCustomerGateway) || ($.eventName = AttachInternetGateway) || ($.eventName = CreateInternetGateway) || ($.eventName = DeleteInternetGateway) || ($.eventName = DetachInternetGateway)}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "GatewayEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "VpcChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = CreateVpc) || ($.eventName = DeleteVpc) || ($.eventName = ModifyVpcAttribute) || ($.eventName = AcceptVpcPeeringConnection) || ($.eventName = CreateVpcPeeringConnection) || ($.eventName = DeleteVpcPeeringConnection) || ($.eventName = RejectVpcPeeringConnection) || ($.eventName = AttachClassicLinkVpc) || ($.eventName = DetachClassicLinkVpc) || ($.eventName = DisableVpcClassicLink) || ($.eventName = EnableVpcClassicLink) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "VpcEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "Ec2InstanceChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = RunInstances) || ($.eventName = RebootInstances)|| ($.eventName = StartInstances) || ($.eventName = StopInstances) || ($.eventName= TerminateInstances) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "EC2InstanceEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "Ec2LargeInstanceChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ (($.eventName = RunInstances) || ($.eventName = RebootInstances)|| ($.eventName = StartInstances) || ($.eventName = StopInstances) || ($.eventName= TerminateInstances)) && (($.requestParameters.instanceType= *.32xlarge) || ($.requestParameters.instanceType= *.24xlarge) || ($.requestParameters.instanceType= *.18xlarge) || ($.requestParameters.instanceType= *.16xlarge) || ($.requestParameters.instanceType= *.12xlarge) || ($.requestParameters.instanceType= *.10xlarge) || ($.requestParameters.instanceType= *.9xlarge) || ($.requestParameters.instanceType= *.8xlarge) || ($.requestParameters.instanceType = *.4xlarge)) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "EC2LargeInstanceEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "CloudTrailChangeMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = CreateTrail) || ($.eventName = UpdateTrail)|| ($.eventName = DeleteTrail) || ($.eventName = StartLogging) || ($.eventName= StopLogging) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "CloudTrailEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "ConsoleSignInFailureMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failedauthentication\") }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "ConsoleSignInFailureCount",
          "metric-value": "1"
        },
        {
          "filter-name": "AuthorizationFailureMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ (($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode =\"AccessDenied*\") && ($.userIdentity.principalId != \"*AWSConfig-BucketConfigCheck\")) }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "AuthorizationFailureCount",
          "metric-value": "1"
        },
        {
          "filter-name": "IamPolicyChangesMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "IAMPolicyEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "ConsoleSignInWithoutMfaMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventName=\"ConsoleLogin\") && ($.additionalEventData.MFAUsed !=\"Yes\") && ($.userIdentity.type != \"AssumedRole\")}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "ConsoleSignInWithoutMfaCount",
          "metric-value": "1"
        },
        {
          "filter-name": "RootLoginMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ $.userIdentity.type = \"Root\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != \"AwsServiceEvent\" }",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "RootLoginEventCount",
          "metric-value": "1"
        },
        {
          "filter-name": "DisableOrDeleteCMKMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventSource=kms.amazonaws.com) && (($.eventName=DisableKey) || ($.eventName=ScheduleKeyDeletion))}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "DisableOrDeleteCMKCount",
          "metric-value": "1"
        },
        {
          "filter-name": "AWSConfigChangesMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventSource=config.amazonaws.com) && (($.eventName=StopConfigurationRecorder) || ($.eventName=DeleteDeliveryChannel) || ($.eventName=PutDeliveryChannel) || ($.eventName=PutConfigurationRecorder))}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "AWSConfigChangesCount",
          "metric-value": "1"
        },
        {
          "filter-name": "RouteTableChangesMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventName=CreateRoute) || ($.eventName=CreateRouteTable) || ($.eventName=ReplaceRoute) || ($.eventName=ReplaceRouteTableAssociation) || ($.eventName=DeleteRouteTable) || ($.eventName=DeleteRoute) || ($.eventName=DisassociateRouteTable)}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "RouteTableChangesCount",
          "metric-value": "1"
        },
        {
          "filter-name": "S3BucketPolicyChangesMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventSource=s3.amazonaws.com) && (($.eventName=PutBucketAcl) || ($.eventName=PutBucketPolicy) || ($.eventName=PutBucketCors) || ($.eventName=PutBucketLifecycle) || ($.eventName=PutBucketReplication) || ($.eventName=DeleteBucketPolicy) || ($.eventName=DeleteBucketCors) || ($.eventName=DeleteBucketLifecycle) || ($.eventName=DeleteBucketReplication))}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "S3BucketPolicyChangesCount",
          "metric-value": "1"
        },
        {
          "filter-name": "UnencryptedFilesystemCreatedMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{ ($.eventName = CreateFileSystem) && ($.responseElements.encrypted IS FALSE) } ",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "UnencryptedFilesystemCreatedCount",
          "metric-value": "1"
        },
        {
          "filter-name": "IgnoreAuthorizationFailureMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.errorCode=\"*UnauthorizedOperation\") || ($.errorCode=\"AccessDenied*\")}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "IgnoreAuthorizationFailureCount",
          "metric-value": "1"
        },
        {
          "filter-name": "IgnoreConsoleSignInWithoutMfaMetric",
          "accounts": ["ALL"],
          "regions": ["${HOME_REGION}"],
          "loggroup-name": "aws-controltower/CloudTrailLogs",
          "filter-pattern": "{($.eventName=\"ConsoleLogin\") && ($.additionalEventData.MFAUsed !=\"Yes\")}",
          "metric-namespace": "CloudTrailMetrics",
          "metric-name": "IgnoreConsoleSignInWithoutMfaCount",
          "metric-value": "1"
        }
      ],
      "alarms": {
        "default-accounts": ["ALL"],
        "default-regions": ["${HOME_REGION}"],
        "default-namespace": "CloudTrailMetrics",
        "default-statistic": "Sum",
        "default-period": 300,
        "default-threshold-type": "Static",
        "default-comparison-operator": "GreaterThanOrEqualToThreshold",
        "default-threshold": 1,
        "default-evaluation-periods": 1,
        "default-treat-missing-data": "notBreaching",
        "default-in-org-mgmt-use-lcl-sns": true,
        "definitions": [
          {
            "alarm-name": "AWS-Security-Group-Changed",
            "metric-name": "SecurityGroupEventCount",
            "sns-alert-level": "Low",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a Security Group (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Network-ACL-Changed",
            "metric-name": "NetworkAclEventCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a Network ACL (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Gateway-Changed",
            "metric-name": "GatewayEventCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a Customer or Internet Gateway (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-VPC-Changed",
            "metric-name": "VpcEventCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a VPC, VPC peering connection or VPC connection to classic (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-EC2-Instances-Changed",
            "metric-name": "EC2InstanceEventCount",
            "sns-alert-level": "Low",
            "alarm-description": "Alarms when one or more API calls are made to create, terminate, start, stop or reboot any EC2 instance (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-EC2-Large-Instance-Changed",
            "metric-name": "EC2LargeInstanceEventCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, terminate, start, stop or reboot a 4x, 8x, 9x, 10x, 12x, 16x, 18x, 24x, 32x-large EC2 instance (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-CloudTrail-Changed",
            "metric-name": "CloudTrailEventCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a CloudTrail trail, or to start or stop logging to a trail (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Console-SignIn-Failure",
            "metric-name": "ConsoleSignInFailureCount",
            "sns-alert-level": "High",
            "threshold": 3,
            "alarm-description": "Alarms when one or more unauthenticated API calls are made to sign into the console (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Authorization-Failure",
            "metric-name": "AuthorizationFailureCount",
            "sns-alert-level": "Low",
            "alarm-description": "Alarms when one or more unauthorized API calls are made (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-IAM-Policy-Changed",
            "metric-name": "IAMPolicyEventCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to change an IAM policy (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Console-SignIn-Without-MFA",
            "metric-name": "ConsoleSignInWithoutMfaCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when MFA is NOT used to sign into the console with IAM (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Root-Login",
            "metric-name": "RootLoginEventCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when the root user successfully logs in one or more times (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Disable-Or-Delete-KMS-CMK",
            "metric-name": "DisableOrDeleteCMKCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when one or more Key Management Service Customer Managed Keys are disabled or scheduled for deletion (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Config-Changed",
            "metric-name": "AWSConfigChangesCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when one or more modifications are made to AWS Config Settings (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-Route-Table-Changed",
            "metric-name": "RouteTableChangesCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete a Route table (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-S3-Bucket-Policy-Changed",
            "metric-name": "S3BucketPolicyChangesCount",
            "sns-alert-level": "Medium",
            "alarm-description": "Alarms when one or more API calls are made to create, update or delete an S3 Bucket policy (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "AWS-SSO-Authentication-From-Unapproved-IP",
            "metric-name": "SSOAuthUnapprovedIPCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when someone authenticates using AWS SSO from an unauthorized IP address range."
          },
          {
            "alarm-name": "AWS-IAM-Authentication-From-Unapproved-IP",
            "metric-name": "IAMAuthUnapprovedIPCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when someone authenticates using AWS IAM from an unauthorized IP address range."
          },
          {
            "alarm-name": "AWS-Unencrypted-Filesystem-Created",
            "metric-name": "UnencryptedFilesystemCreatedCount",
            "sns-alert-level": "High",
            "alarm-description": "Alarms when one or more API calls are made to create an Unencrypted filesystem (i.e. EFS) (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "IGNORE-AWS-Authorization-Failure",
            "metric-name": "IgnoreAuthorizationFailureCount",
            "sns-alert-level": "Ignore",
            "alarm-description": "Alarms when one or more unauthorized API calls are made (in any account, any region of your AWS Organization)."
          },
          {
            "alarm-name": "IGNORE-AWS-Console-SignIn-Without-MFA",
            "metric-name": "IgnoreConsoleSignInWithoutMfaCount",
            "sns-alert-level": "Ignore",
            "alarm-description": "Alarms when MFA is NOT used to sign into the console with IAM (in any account, any region of your AWS Organization)."
          }
        ]
      }
    },
    "ssm-automation": [
      {
        "accounts": ["security"],
        "regions": ["${HOME_REGION}"],
        "documents": [
          {
            "name": "SSM-ELB-Enable-Logging",
            "description": "Calls the AWS CLI to enable access logs on a specified ELB.",
            "template": "ssm-elb-enable-logging.yaml"
          },
          {
            "name": "Put-S3-Encryption",
            "description": "Enables S3 encryption using KMS",
            "template": "s3-encryption.yaml"
          }
        ]
      }
    ],
    "aws-config": {
      "defaults": {
        "remediation": false,
        "remediation-attempts": 5,
        "remediation-retry-seconds": 60,
        "remediation-concurrency": 10
      },
      "rules": [
        {
          "name": "ELB_LOGGING_ENABLED",
          "remediation-action": "SSM-ELB-Enable-Logging",
          "remediation": true,
          "parameters": {
            "s3BucketNames": "${SEA::LogArchiveAesBucket}"
          },
          "remediation-params": {
            "LoadBalancerArn": "RESOURCE_ID",
            "LogDestination": "${SEA::LogArchiveAesBucket}"
          }
        },
        {
          "name": "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED",
          "remediation-action": "Put-S3-Encryption",
          "remediation": true,
          "remediation-params": {
            "BucketName": "RESOURCE_ID",
            "KMSMasterKey": "${SEA::S3BucketEncryptionKey}"
          }
        }
      ]
    },
    "cidr-pools": [
      {
        "cidr": "<IP_ADDRESS>/13",
        "pool": "main",
        "description": "The main address pool used to dynamically assign CIDR ranges.",
        "region": "${HOME_REGION}"
      },
      {
        "cidr": "<IP_ADDRESS>/23",
        "pool": "RFC6598b",
        "description": "Address pool used to dynamically assign CIDR ranges for the Perimeter VPC.",
        "region": "${HOME_REGION}"
      }
    ]
  },
  "mandatory-account-configs": {
    "management": {
      "account-name": "management",
      "email"<EMAIL_ADDRESS>      "ou": "Security",
      "src-filename": "config.json",
      "budget": {
        "name": "Account Budget",
        "period": "Monthly",
        "amount": 3000,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "iam": {
        "users": [
          {
            "user-ids": ["bgUser1", "bgUser2"],
            "group": "BreakGlassAdmins",
            "policies": ["AdministratorAccess"],
            "boundary-policy": "Default-Boundary-Policy"
          }
        ],
        "policies": [
          {
            "policy-name": "Default-Boundary-Policy",
            "policy": "boundary-policy.txt"
          }
        ]
      }
    },
    "log-archive": {
      "account-name": "log-archive",
      "ou": "Security",
      "email"<EMAIL_ADDRESS>      "scps": ["Guardrails-Sensitive"],
      "src-filename": "config.json"
    },
    "security": {
      "account-name": "security",
      "ou": "Security",
      "email"<EMAIL_ADDRESS>      "scps": ["Guardrails-Sensitive"],
      "src-filename": "config.json"
    },
    "shared-network": {
      "account-name": "shared-network",
      "email"<EMAIL_ADDRESS>      "ou": "Infrastructure",
      "src-filename": "config.json",
      "description": "This Account is used for centralized or shared networking resources.",
      "iam": {
        "users": [],
        "policies": [
          {
            "policy-name": "Default-Boundary-Policy",
            "policy": "boundary-policy.txt"
          }
        ],
        "roles": []
      },
      "limits": {
        "Amazon VPC/Interface VPC endpoints per VPC": {
          "value": 90,
          "customer-confirm-inplace": false
        },
        "Amazon VPC/VPCs per Region": {
          "value": 10
        }
      }
    }
  },
  "workload-account-configs": {},
  "organizational-units": {
    "Centralized Resources": {
      "type": "ignore",
      "scps": ["Guardrails-Part-0-Core", "Guardrails-Part-1"],
      "default-budgets": {
        "name": "Default Security Budget",
        "period": "Monthly",
        "amount": 500,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "aws-config": [
        {
          "excl-regions": [],
          "rules": ["ELB_LOGGING_ENABLED", "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"],
          "remediate-regions": ["${HOME_REGION}"]
        }
      ]
    },
    "Infrastructure": {
      "type": "ignore",
      "scps": ["Guardrails-Part-0-Core", "Guardrails-Part-1"],
      "default-budgets": {
        "name": "Default Security Budget",
        "period": "Monthly",
        "amount": 2000,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "ssm-automation": [
        {
          "account": "security",
          "regions": ["${HOME_REGION}"],
          "documents": ["SSM-ELB-Enable-Logging", "Put-S3-Encryption"]
        }
      ],
      "aws-config": [
        {
          "excl-regions": [],
          "rules": ["ELB_LOGGING_ENABLED", "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"],
          "remediate-regions": ["${HOME_REGION}"]
        }
      ]
    },
    "Sandbox": {
      "type": "ignore",
      "scps": ["Guardrails-Part-0-Core", "Guardrails-Part-1"],
      "default-budgets": {
        "name": "Default Security Budget",
        "period": "Monthly",
        "amount": 1000,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "aws-config": [
        {
          "excl-regions": [],
          "rules": ["ELB_LOGGING_ENABLED", "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"],
          "remediate-regions": ["${HOME_REGION}"]
        }
      ]
    },
    "Security": {
      "type": "ignore",
      "scps": ["Guardrails-Part-0-Core", "Guardrails-Part-1"],
      "default-budgets": {
        "name": "Default Security Budget",
        "period": "Monthly",
        "amount": 1000,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "ssm-automation": [
        {
          "account": "security",
          "regions": ["${HOME_REGION}"],
          "documents": ["SSM-ELB-Enable-Logging", "Put-S3-Encryption"]
        }
      ],
      "aws-config": [
        {
          "excl-regions": [],
          "rules": ["ELB_LOGGING_ENABLED", "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"],
          "remediate-regions": ["${HOME_REGION}"]
        }
      ]
    },
    "Workloads": {
      "type": "workload",
      "scps": ["Guardrails-Part-0", "Guardrails-Part-1", "Guardrails-Sensitive"],
      "default-budgets": {
        "name": "Default Workload Budget",
        "period": "Monthly",
        "amount": 1000,
        "include": [
          "Upfront-reservation-fees",
          "Recurring-reservation-charges",
          "Other-subscription-costs",
          "Taxes",
          "Support-charges",
          "Discounts"
        ],
        "alerts": [
          {
            "type": "Actual",
            "threshold-percent": 75,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 90,
            "emails"<EMAIL_ADDRESS>          },
          {
            "type": "Actual",
            "threshold-percent": 100,
            "emails"<EMAIL_ADDRESS>          }
        ]
      },
      "ssm-automation": [
        {
          "account": "security",
          "regions": ["${HOME_REGION}"],
          "documents": ["SSM-ELB-Enable-Logging", "Put-S3-Encryption"]
        }
      ],
      "aws-config": [
        {
          "excl-regions": [],
          "rules": ["ELB_LOGGING_ENABLED", "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"],
          "remediate-regions": ["${HOME_REGION}"]
        }
      ]
    }
  }
}
```

The first time the solution was deployed, the shared-netowrk account failed to create.
Control Tower reports the shared-network account had a "Enrollment failed," and the info button says:  Account enrollment can fail for the following reasons:
  Your IAM principal lacks the necessary permissions to provision an account. To enroll an existing account, the AWSControlTowerExecution role must be present in the account you're enrolling.
  AWS Security Token Service (AWS STS) is disabled in your AWS account in your home region.

The account is created in AWS Organizations
The Service Catalog Provisioned Product has an error: " prod-xxxxxxxxxx does not exist or access was denied, and it doesn't seem possible to update that product any more.
There are no errors in CloudFormation StackSets

I've also submitted a support case with the Control Tower team.
Let me know if ther eare any ideas!

The failed service catalog stack will be a problem - either repair or delete the failed provisioned product.


Java equivalent for aws-context:context-resource-loader?

I used the following documentation to wire BasicAWSCredentials, KMSEncryptionMaterialsProvider, ClientConfiguration, and CryptoConfiguration into an AmazonS3EncryptionClient via XML configuration:
Spring Cloud AWS IO Guides
The last line of my XML configuration is something similar to:
<aws-context:context-resource-loader amazon-s3="myAmazonS3EncryptionClientBean"/>
Once I had everything wired-up using XML, I began refactoring in order to use all Java configuration, but couldn't figure out how to express the <aws-context:context-resource-loader> bean above in Java. I took a peek at the documentation and source, but nothing stood out. Any help/suggestions are appreciated!

After some internal research and discussions I was able to express <aws-context:context-resource-loader amazon-s3="myAmazonS3EncryptionClientBean"/> in Java configuration by autowiring a ResourceLoaderBeanPostProcessor that takes an AmazonS3 object in it's constructor.
@Bean
@Autowired
public static ResourceLoaderBeanPostProcessor resourceLoaderBeanPostProcessor(
            AmazonS3Client amazonS3EncryptionClient) {
        AmazonS3 amazonS3 = amazonS3EncryptionClient;
        return new ResourceLoaderBeanPostProcessor(amazonS3);
}

Note: This applies to 1.0.3.RELEASE+

In 1.1.3.RELEASE look at @EnableContextResourceLoader annotation.
I do think this should be covered in reference documentation


Favorite Servers and Recent Items catalog sources moved in El Capitan

The "Favorite Servers" catalog entry reads from ~/Library/Preferences/com.apple.sidebarlists.plist
It appears these settings are now stored in ~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.FavoriteServers.sfl. I pulled this file up in BBEdit and that's where they are.
The "Recent Items" catalog entries (recent Apps/Docs/Servers/Open and Save Folders) have also been moved into sfl files in this directory.
References here:
https://ryanmo.co/2015/10/31/list-server-favorites-in-os-x-1011-el-capitan/
https://gist.github.com/pudquick/4776b4b2075bf9b7e512
And unpacking El Capitan's new sfl files:
http://michaellynn.github.io/2015/10/24/apples-bookmarkdata-exposed/
Hope that helps contributors get a jump on the issue and parsing this new data structure. I'm not sure if this info can be easily read from a Defaults Reader or not, documentation seems poor.
QS 1.3.4 (4016)
OS X 10.11.4 Beta (15E61b)

Looks like some digging around in that directory has already been done to solve #2079


18383.1256 not supported

Hello, I have the following windows OS running, which is listed as not supported in RDPConf:

Thanks so much.

run rdpconf.exe and note the version of the termsvc.dll file, which will be
listed as the version of the 'service state'. Then search other posts here
for that version number, and I am sure that you will find support for it.
On Thu, 17 Dec 2020 at 10:45, brkr24<EMAIL_ADDRESS>wrote:

Hello, I have the following windows OS running, which is listed as not
supported in RDPConf:
[image: Capture]
https://user-images.githubusercontent.com/76136733/102423522-d720dc80-3fce-11eb-91e5-b872107091ef.PNG
Thanks so much.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/stascorp/rdpwrap/issues/1249, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMCGIVO7HMEKYOPOU3OBX3SVFIEFANCNFSM4U6ZSGSQ
.

You are correct- I was able to fix it using this thread: https://github.com/stascorp/rdpwrap/issues/1136#issuecomment-665956506. Thanks!


online testing after training on batch dataset

Hello,
I have dataset where I can train an algo with OpenAI Gym and Keras-rl.
After I have trained my model I would like to test it with online data.
So I would not use .test method but I would like to loop and get data from my sensors and get the correspondent action from the model.
Do you have an example of this?
Thanks.

In Stable Baselines, it can be simple like this:

# After training, watch our agent walk
obs = env.reset()
for i in range(1000):
    action, _states = model.predict(obs)
    obs, rewards, dones, info = env.step(action)
    env.render()


Move Config JSON files to user folder

Should configs save to user://configs, instead of res://configs?
I think saving to the user folder is probably better, because:

It keeps the game directory clean.
It makes it less obvious where the data is held, which should make it less likely that a player will try to modify that data.

+1 for user://configs

I've renamed this issue as we've agreed that this should be done.

Closed by #199


New Chart Requests

New common-based chart requests

created
app
alternate

❌
bookstack
nicholaswilde/bookstack

❌
thelounge
halkeye-helm-charts/thelounge-chart

❌
haste-server
nicholaswilde/haste

Putting it up as a note to self really... if someone gets to something first... great!

I think we can move the bookstack and haste Docker images over too the container-images repo as well.

I think we can move the haste Docker image over too the container-images repo as well.

Nice!. Sounds good.

@DirtyCajunRice I'll take care of moving the haste docker image to container-images.

@DirtyCajunRice haste image has been published. https://github.com/orgs/k8s-at-home/packages/container/package/haste

PR #794 created for thelounge

Created #800 for haste-server

only one left is bookstack 🎉

For bookstack, do we want to use the LSIO image or create our own?

We could use LSIO for the time being.

I can take bookstack.

Created #817 for bookstack.

bookstack has been released.

Issue closed! Good work everyone


Consider delegating date utils to date-fns

date-fns is a date utility library that I use all the time, I think there would be value in using date-fns instead of maintaining date utils just for this package.
From the readme of this package:

Date formatting
NB. This is not very robust at all - use at your own risk! Needs a better implementation.

I'm mostly interested in this because date-fns provides a formatting function that supports more output formats.
It exports every function separately, so you only include what you need in the final bundle, and there's also some stuff about importing only languages you actually use.
This would be a breaking change as the date format syntax is different in date-fns. Happy to work on a pull for this one if you like the idea.

That looks like a really nice library - thanks for the information.
I've been holding off on integrating moment due to the size of it, but with date-fns it looks like you can import specific functions.
I'd definitely be interested in seeing a PR for this if you'd like to work on this @MarcoThePoro

@charliekassel projects that use dates most likely already has moment as a dependency (or should have).
I don't think it's a bad idea to use it for the parsing, formatting, and validation of dates. We would use this package in a flash if it didn't implement that logic itself, so would like to request that you delegate to moment.

@rtheunissen Saying that projects that use date should have Moment as a dependency is a terrible assumption. There are a lot of modern, and better, alternatives out there now such as date-fns that don't require a huge 300kb+ dependency in your project.
Even someone on the Moment team has been working on a modular alternative: http://isaaccambron.com/luxon/docs/
@charliekassel I am currently working through your projects to use date-fns where appropriate - I'll send a pull request when completed.


Missing Files

Hi... this looks like an interesting project; I would like to take a closer look but I'm wondering if maybe you haven't pushed all your recent changes to this repo?  If you take a fresh clone and follow your build instructions (prebuilt etc) does it build for you?
Thanks

Hi @WolfieWerewolf , I just tried on a fresh clone, it passed. Did you fail to build the source? Could you please tell me more details? (Which distribution you are using, the error message etc.)

Hi, thanks for the quick response.  I'm using Debian.  So when I attempted to run /scripts/install-dependencies.sh it complained that my distro was not supported so I modified it to include Debian and it ran and installed all the deb versions of the required packages.
I created build under the project root
Copied the prebuilt into build
from inside build cmake ..
I get this error:

If I add a default constructor to String that doesn't take any args it gets a bit further but then complains about missing methods in Callback... this is why I wondered if all the source was up to date..
Thanks
/W

Debian 9 BTW

ok actually... that was a clone that was not up to date.. if I pull the latest I get this:

I re-ran the script just to be sure, from the latest pull.

Hi @WolfieWerewolf , you need to install dev package of libv4l, in Fedora the package name is libv4l-devel, find and install the corresponding deb package in your Debian. I'm recently programming initial webcam support. I'll add the package name in the install_dependencies.sh in next commit.

Jr call me


Update aws-java-sdk-core to 1.12.369

Updates com.amazonaws:aws-java-sdk-core from 1.12.336 to 1.12.369.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.amazonaws", artifactId = "aws-java-sdk-core" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "com.amazonaws", artifactId = "aws-java-sdk-core" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #166.


Only partial QR content string URL

When I decode this QR code:

With zxing.org I get:
HTTPS://API.NICETOMEET.ME/api/getmecard.php?nuid=9msSjd5YdOSOHxHbbTLlyesPC4V2&mid=9695d152212c894ee74bb07f0f551ea5
With jsQR I get:
api/getmecard.php?nuid=9msSjd5YdOSOHxHbbTLlyesPC4V2&mid=9695d152212c894ee74bb07f0f551ea5
I've verified it as far as: the input to byteArrayToString() does not contain the first part of the URL.

Great report - I'll take a look soon - sorry about any trouble :(


Schematic 1.12.2 keeps crashing whenever I am building

Hi there. I've been trying to use Schematica. I have everything needed for it, I can place the schematic and I can use the print and build using it. But, whenever I use it, it keeps crashing after about 30 seconds of building. I have tried several times and each time I have got the same crash message.
The game crashed whilst unexpected error
Error: java.nio.BufferOverflowException

Hello!
I have this problem to!

Same. It crashed a couple of seconds after loading in the schematic. Also moving it is extremely slow and laggy.


Accessibility Update

Made a small update to the code: Changed outline: none to outline-color: transparent. It's good to always have this in outlines for inputs and buttons and such, since users with higher contrasts and such could have issues using the tab button selector. This could have an unintentional effect of making special animations and attributes of the button disappear. Reference: https://www.youtube.com/shorts/4B_4WLpbyp8

Hi @7agabond - thank you for your contribution.
In this instance, we don't need an outline on the focus style.
This is because the element itself is hidden completely until it is focused upon. You can see an example here: https://nationalarchives.github.io/tna-frontend/iframe.html?args=&id=components-skip-link--standard&viewMode=story
An outline for this component is also superfluous as the component is intended to be used right at the top of the page where three of its four sides touch the edge of the screen, hiding most of the outline.


Add some help about rustup's +toolchain syntax.

This tries to bring more attention to the +toolchain syntax from rustup.
Closes #8058

r? @Eh2406
(rust_highfive has picked a reviewer for you, use r? to override)

Thank you! This feels like a great compromise on how much rustup docs to add to cargo.

@bors r+

:pushpin: Commit 337fd9f0157941d8e75b5199ac094ec8f2bfaa30 has been approved by Eh2406

:hourglass: Testing commit 337fd9f0157941d8e75b5199ac094ec8f2bfaa30 with merge 299514d09252081f0b740e7c490e87fec97f4386...

:sunny: Test successful - checks-azure
Approved by: Eh2406
Pushing 299514d09252081f0b740e7c490e87fec97f4386 to master...


BitMap class consumes double expected memory

Godot version:
3.3 stable
OS/device including version:
Linux Ubuntu 20.04.2
Issue description:
Stable documentation explains the BitMap class as:

A two-dimensional array of boolean values, can be used to efficiently store a binary matrix (every matrix element takes only one bit) and query the values using natural cartesian coordinates.

"Every matrix element takes only one bit."
In Godot 3.3, I created a BitMap of size 1024 x 262,144 and printed the memory stats immediately before and after object creation.  It showed the BitMap consuming double the memory I expected.  The BitMap is 268,435,456 bits = 33,554,432 bytes, i.e. 33.5 MB.

Before creation (MB) - Dynamic: 0.000272; Static: 32.828644
After creation (MB) - Dynamic: 0.000272; Static: 99.940192

So that's 67 MB memory consumed for that one BitMap, which is double what you'd expect if the BitMap is using bits/bytes.  It's like BitMaps actually work with Uint16 instead of bytes, and ignore the extra 8 bits per word.  That would explain why double the memory is being allotted.  But looking at resources/bit_map.h and resources/bit_map.cpp, everything is uint8_t, so I must be missing something here.
Steps to reproduce:
Using the simple code below, memory stats show that creating one BitMap sized to 1024 x 262144 bits, i.e. 33,554,432 bytes, actually consumes 67,109,160 bytes, which is very close to 2 x 33,554,432 (67,108,864).
Minimal reproduction project:
func _ready():
	print("Pre-assign: %s" % Performance.get_monitor(Performance.MEMORY_STATIC))
	var _bm: BitMap = BitMap.new()
	print("BitMap.new() but not created: %s" % Performance.get_monitor(Performance.MEMORY_STATIC))
	_bm.create(Vector2(1024, 262144))
	print("BitMap created: %s" % Performance.get_monitor(Performance.MEMORY_STATIC))
	_bm = null
	print("BitMap nulled: %s" % Performance.get_monitor(Performance.MEMORY_STATIC))

This was only partially fixed by #48549, what's left to fix is maybe to add a note in the documentation that BitMap memory usage grows in powers of two?


[keyvault] Invalid comparison in azure.keyvault.keys.crypto._internal.jose

https://github.com/Azure/azure-sdk-for-python/blob/8c819a4ee566e465b5438da5f987d484a2c6449a/sdk/keyvault/azure-keyvault-keys/azure/keyvault/keys/crypto/_internal/jose.py#L97-L98
In the above code, the if not (tuple-with-any-elements): check will always evaluate to True.
I believe in this case you want if not all((self.protected, ...)) to ensure that each specified element is not empty.

Thanks @zooba, @chlowell can you take a look at this

Looks like a bug to me, thanks @zooba. However, we don't (and may never) use this code. This crypto._internal code began as a prototype largely ported from C#, added wholesale when I needed an adapter between Key Vault and cryptography. I think the best way to resolve this issue is to delete the unused code. I'll assign this issue to myself and leave it on the backlog for now.


TypedJSON.parse without type can be confusing

TypedJSON.parse when called without a type supplied will instantiate a JSON object into a regular Javascript object (Object instance). Therefore due to the potentially misleading 'Typed' part in the call instruction, this might cause some headache when the 'type' parameter is accidentally omitted, and JSON is deserialized into Object instance.
Consider the following example, where the second argument of TypedJSON.parse is accidentally omitted. It's certainly misleading:
var person: Person = TypedJSON.parse(json);
person instanceof Person; // false

It's possible this would result in standard JSON functions (those having nothing to do with typed serialization and deserialization) being stripped from TypedJSON in the future (preceded with a deprecation warning).

The overload of TypedJSON.parse without a type argument will be deprecated starting from v0.2.0. To parse JSON without types, use the JSON.parse instead.
Also, supplying an object that is not an instance of a class decorated with @JsonObject to TypedJSON.stringify is also deprecated starting from v0.2.0.

Why do you even need to supply a type at all? Wouldn't it be much nicer to just encode it in a metadata property and to detect it automatically? This also allows to correctly parse nested Objects with their respective correct type. Are you familiar with the approach taken here? http://cloudmark.github.io/Json-Mapping/

@lgleim
First, because TypedJSON aims to provide a deserialization experience through expected types, not what is present in the JSON string. Once TypedJSON is fleshed out (it's a WIP, and significant progress has been made since its last releases), this is a tool to protect against arbitrary JSON.
Second, because without the constructor of the root data type it is unknown what the type of the deserialized object should be. This is how the return type of TypedJSON.parse is determined:
interface TypedJSON {
    parse<T>(json: string, constructor: new () => T): T;
}

Leaving this out would require a type-assertion, or a generic type, but that would have to be specified at all times, which is almost the same as having to supply the constructor itself.
The new version will provide an optionally instantiable API, through which the root data type only has to be specified once.

May I ask what possible use-case would require deserialization without knowing the root type?

In various document-based databases the type of the document is stored as a json property and validated using json-schema (if at all). E.g. for CouchDB (and alike, such as Couchbase, BarrelDB,...) there is (by default but mostly configurable) a property type at the root of each json document sored in the DB.

I fully understand if TypedJSON is solving a different issue. Nevertheless, how would you handle nested classes of the kind
MapUtils.deserialize(Person, {
     "name": "Mark",
     "surname": "Galea",
     "age": 30,
     "address": [{
         "first-line": "Some where",
         "second-line": "Over Here",
         "city": "In This City"
     }]
})

<Person>{
  name: 'Mark',
  surname: 'Galea',
  age: 30,
  address:
   [ <Address>{
       firstLine: 'Some where',
       secondLine: 'Over Here',
       city: 'In This City'
     }
   ]
}

a property type at the root of each json document sored in the DB

Although this is yet to be tested (in the new version at least, which I'm currently working on), but this should be possible by specifying Object as the root data type, since TypedJSON supports polymorphism.

Good to hear! I will be looking forward for the release. Will nested Objects with different types also be handled with the upcoming release?

@lgleim
Hold on for a sec, TypedJSON supports nested objects right now as well. The constructor you need to specify is only for the root type, from which child objects are traversed automatically. It can handle complex object trees, such as what is defined in https://github.com/JohnWeisz/TypedJSON/blob/master/src/tests/polymorphism.ts

Thanks for pointing this out! Looking forward to the release.

Hey, if you would be interested again, this was released some time ago now.


doc: update quick start

1.Describe what this PR did
clean up the first section of quick start

@allencloud updated

LGTM, merging...


T24860 default levelwindow

Solution for https://phabricator.mitk.org/T24860, providing a default "levelwindow" property for all images (once that they are known to a 2D image mapper).
This introduces a minor change to the 2D image mapper's default properties initialization logic. It will now in any case add a "levelwindow" property. This property will either be fed with DICOM information (if available) or by default inspection of the image pixels (LevelWindow::SetAuto()).

Thank you, @maleike. Did you check that it does not interfere with the misplaced levelwindow initialization in the IOExt module? And is the code over there still relevant or could it be removed with your changes?

Thank you, @maleike. Did you check that it does not interfere with the misplaced levelwindow initialization in the IOExt module? And is the code over there still relevant or could it be removed with your changes?

Very good remark, thank you. The code is actually compatible because both location would check and never overwrite "levelwindow" properties. Hoever, I removed the code in VolumeMapperVtkSmart3D now because it will never be executed because all applications will use mitkCore (right?)

Merged into releases/2018-04.


Implement default version for template and default upgrade version for template version

https://github.com/rancher/rancher/issues/8998

cc/ @cjellick @vincent99


Express server receiving files(.png, .jpeg, .jpg, .pdf) as octet stream.

Adress #2 minimizing the amount of dependencies bisides Turbo, which I'm not convinced the adoption is useful yet.
Execute in this repo's root dir to run the server:
yarn build:api && yarn start:api

#16 did it alredy


oasys onr db

oasys onr db

@wullub Terraform plan evalaution detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform

@wullub Terraform plan evalaution detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform

@wullub Terraform plan evalaution detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform